1 |
|
2 |
|
3 |
|
4 |
|
5 |
|
6 |
|
7 | "use strict";
|
8 | var __extends = (this && this.__extends) || (function () {
|
9 | var extendStatics = Object.setPrototypeOf ||
|
10 | ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||
|
11 | function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };
|
12 | return function (d, b) {
|
13 | extendStatics(d, b);
|
14 | function __() { this.constructor = d; }
|
15 | d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());
|
16 | };
|
17 | })();
|
18 | var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {
|
19 | var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
|
20 | if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
|
21 | else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;
|
22 | return c > 3 && r && Object.defineProperty(target, key, r), r;
|
23 | };
|
24 | var __metadata = (this && this.__metadata) || function (k, v) {
|
25 | if (typeof Reflect === "object" && typeof Reflect.metadata === "function") return Reflect.metadata(k, v);
|
26 | };
|
27 | Object.defineProperty(exports, "__esModule", { value: true });
|
28 | var component_1 = require("../../widgets/component");
|
29 | var column_1 = require("../../entities/column");
|
30 | var utils_1 = require("../../utils");
|
31 | var context_1 = require("../../context/context");
|
32 | var gridOptionsWrapper_1 = require("../../gridOptionsWrapper");
|
33 | var sortController_1 = require("../../sortController");
|
34 | var touchListener_1 = require("../../widgets/touchListener");
|
35 | var eventService_1 = require("../../eventService");
|
36 | var componentAnnotations_1 = require("../../widgets/componentAnnotations");
|
37 | var events_1 = require("../../events");
|
38 | var HeaderComp = (function (_super) {
|
39 | __extends(HeaderComp, _super);
|
40 | function HeaderComp() {
|
41 | var _this = _super !== null && _super.apply(this, arguments) || this;
|
42 | _this.lastMovingChanged = 0;
|
43 | return _this;
|
44 | }
|
45 | HeaderComp.prototype.init = function (params) {
|
46 | var template = utils_1.Utils.firstExistingValue(params.template, HeaderComp.TEMPLATE);
|
47 | this.setTemplate(template);
|
48 | this.params = params;
|
49 | this.setupTap();
|
50 | this.setupIcons(params.column);
|
51 | this.setupMenu();
|
52 | this.setupSort();
|
53 | this.setupFilterIcon();
|
54 | this.setupText(params.displayName);
|
55 | };
|
56 | HeaderComp.prototype.setupText = function (displayName) {
|
57 | if (this.eText) {
|
58 | this.eText.innerHTML = displayName;
|
59 | }
|
60 | };
|
61 | HeaderComp.prototype.setupIcons = function (column) {
|
62 | this.addInIcon('sortAscending', this.eSortAsc, column);
|
63 | this.addInIcon('sortDescending', this.eSortDesc, column);
|
64 | this.addInIcon('sortUnSort', this.eSortNone, column);
|
65 | this.addInIcon('menu', this.eMenu, column);
|
66 | this.addInIcon('filter', this.eFilter, column);
|
67 | };
|
68 | HeaderComp.prototype.addInIcon = function (iconName, eParent, column) {
|
69 | if (eParent == null)
|
70 | return;
|
71 | var eIcon = utils_1.Utils.createIconNoSpan(iconName, this.gridOptionsWrapper, column);
|
72 | eParent.appendChild(eIcon);
|
73 | };
|
74 | HeaderComp.prototype.setupTap = function () {
|
75 | var _this = this;
|
76 | if (this.gridOptionsWrapper.isSuppressTouch()) {
|
77 | return;
|
78 | }
|
79 | var touchListener = new touchListener_1.TouchListener(this.getGui());
|
80 | if (this.params.enableMenu) {
|
81 | var longTapListener = function (event) {
|
82 | _this.gridOptionsWrapper.getApi().showColumnMenuAfterMouseClick(_this.params.column, event.touchStart);
|
83 | };
|
84 | this.addDestroyableEventListener(touchListener, touchListener_1.TouchListener.EVENT_LONG_TAP, longTapListener);
|
85 | }
|
86 | if (this.params.enableSorting) {
|
87 | var tapListener = function () {
|
88 | _this.sortController.progressSort(_this.params.column, false, "uiColumnSorted");
|
89 | };
|
90 | this.addDestroyableEventListener(touchListener, touchListener_1.TouchListener.EVENT_TAP, tapListener);
|
91 | }
|
92 | this.addDestroyFunc(function () { return touchListener.destroy(); });
|
93 | };
|
94 | HeaderComp.prototype.setupMenu = function () {
|
95 | var _this = this;
|
96 |
|
97 | if (!this.eMenu) {
|
98 | return;
|
99 | }
|
100 |
|
101 |
|
102 | var dontShowMenu = !this.params.enableMenu || utils_1.Utils.isUserAgentIPad();
|
103 | if (dontShowMenu) {
|
104 | utils_1.Utils.removeFromParent(this.eMenu);
|
105 | return;
|
106 | }
|
107 | this.eMenu.addEventListener('click', function () { return _this.showMenu(_this.eMenu); });
|
108 | if (!this.gridOptionsWrapper.isSuppressMenuHide()) {
|
109 | this.eMenu.style.opacity = '0';
|
110 | this.addGuiEventListener('mouseover', function () {
|
111 | _this.eMenu.style.opacity = '1';
|
112 | });
|
113 | this.addGuiEventListener('mouseout', function () {
|
114 | _this.eMenu.style.opacity = '0';
|
115 | });
|
116 | }
|
117 | var style = this.eMenu.style;
|
118 | style['transition'] = 'opacity 0.2s, border 0.2s';
|
119 | style['-webkit-transition'] = 'opacity 0.2s, border 0.2s';
|
120 | };
|
121 | HeaderComp.prototype.showMenu = function (eventSource) {
|
122 | this.menuFactory.showMenuAfterButtonClick(this.params.column, eventSource);
|
123 | };
|
124 | HeaderComp.prototype.removeSortIcons = function () {
|
125 | utils_1.Utils.removeFromParent(this.eSortAsc);
|
126 | utils_1.Utils.removeFromParent(this.eSortDesc);
|
127 | utils_1.Utils.removeFromParent(this.eSortNone);
|
128 | utils_1.Utils.removeFromParent(this.eSortOrder);
|
129 | };
|
130 | HeaderComp.prototype.setupSort = function () {
|
131 | var _this = this;
|
132 | var enableSorting = this.params.enableSorting;
|
133 | if (!enableSorting) {
|
134 | this.removeSortIcons();
|
135 | return;
|
136 | }
|
137 | var sortUsingCtrl = this.gridOptionsWrapper.isMultiSortKeyCtrl();
|
138 |
|
139 | this.addDestroyableEventListener(this.params.column, column_1.Column.EVENT_MOVING_CHANGED, function () {
|
140 | _this.lastMovingChanged = new Date().getTime();
|
141 | });
|
142 |
|
143 | if (this.eLabel) {
|
144 | this.addDestroyableEventListener(this.eLabel, 'click', function (event) {
|
145 |
|
146 |
|
147 |
|
148 | var moving = _this.params.column.isMoving();
|
149 | var nowTime = new Date().getTime();
|
150 |
|
151 | var movedRecently = (nowTime - _this.lastMovingChanged) < 50;
|
152 | var columnMoving = moving || movedRecently;
|
153 | if (!columnMoving) {
|
154 | var multiSort = sortUsingCtrl ? (event.ctrlKey || event.metaKey) : event.shiftKey;
|
155 | _this.params.progressSort(multiSort);
|
156 | }
|
157 | else {
|
158 | console.log("kipping sort cos of moving " + _this.lastMovingChanged);
|
159 | }
|
160 | });
|
161 | }
|
162 | this.addDestroyableEventListener(this.params.column, column_1.Column.EVENT_SORT_CHANGED, this.onSortChanged.bind(this));
|
163 | this.onSortChanged();
|
164 | this.addDestroyableEventListener(this.eventService, events_1.Events.EVENT_SORT_CHANGED, this.setMultiSortOrder.bind(this));
|
165 | this.setMultiSortOrder();
|
166 | };
|
167 | HeaderComp.prototype.onSortChanged = function () {
|
168 | utils_1.Utils.addOrRemoveCssClass(this.getGui(), 'ag-header-cell-sorted-asc', this.params.column.isSortAscending());
|
169 | utils_1.Utils.addOrRemoveCssClass(this.getGui(), 'ag-header-cell-sorted-desc', this.params.column.isSortDescending());
|
170 | utils_1.Utils.addOrRemoveCssClass(this.getGui(), 'ag-header-cell-sorted-none', this.params.column.isSortNone());
|
171 | if (this.eSortAsc) {
|
172 | utils_1.Utils.addOrRemoveCssClass(this.eSortAsc, 'ag-hidden', !this.params.column.isSortAscending());
|
173 | }
|
174 | if (this.eSortDesc) {
|
175 | utils_1.Utils.addOrRemoveCssClass(this.eSortDesc, 'ag-hidden', !this.params.column.isSortDescending());
|
176 | }
|
177 | if (this.eSortNone) {
|
178 | var alwaysHideNoSort = !this.params.column.getColDef().unSortIcon && !this.gridOptionsWrapper.isUnSortIcon();
|
179 | utils_1.Utils.addOrRemoveCssClass(this.eSortNone, 'ag-hidden', alwaysHideNoSort || !this.params.column.isSortNone());
|
180 | }
|
181 | };
|
182 |
|
183 |
|
184 |
|
185 | HeaderComp.prototype.setMultiSortOrder = function () {
|
186 | if (!this.eSortOrder) {
|
187 | return;
|
188 | }
|
189 | var col = this.params.column;
|
190 | var allColumnsWithSorting = this.sortController.getColumnsWithSortingOrdered();
|
191 | var indexThisCol = allColumnsWithSorting.indexOf(col);
|
192 | var moreThanOneColSorting = allColumnsWithSorting.length > 1;
|
193 | var showIndex = col.isSorting() && moreThanOneColSorting;
|
194 | utils_1.Utils.setVisible(this.eSortOrder, showIndex);
|
195 | if (indexThisCol >= 0) {
|
196 | this.eSortOrder.innerHTML = (indexThisCol + 1).toString();
|
197 | }
|
198 | else {
|
199 | this.eSortOrder.innerHTML = '';
|
200 | }
|
201 | };
|
202 | HeaderComp.prototype.setupFilterIcon = function () {
|
203 | if (!this.eFilter) {
|
204 | return;
|
205 | }
|
206 | this.addDestroyableEventListener(this.params.column, column_1.Column.EVENT_FILTER_CHANGED, this.onFilterChanged.bind(this));
|
207 | this.onFilterChanged();
|
208 | };
|
209 | HeaderComp.prototype.onFilterChanged = function () {
|
210 | var filterPresent = this.params.column.isFilterActive();
|
211 | utils_1.Utils.addOrRemoveCssClass(this.eFilter, 'ag-hidden', !filterPresent);
|
212 | };
|
213 | HeaderComp.TEMPLATE = '<div class="ag-cell-label-container" role="presentation">' +
|
214 | ' <span ref="eMenu" class="ag-header-icon ag-header-cell-menu-button" aria-hidden="true"></span>' +
|
215 | ' <div ref="eLabel" class="ag-header-cell-label" role="presentation">' +
|
216 | ' <span ref="eText" class="ag-header-cell-text" role="columnheader"></span>' +
|
217 | ' <span ref="eFilter" class="ag-header-icon ag-filter-icon" aria-hidden="true"></span>' +
|
218 | ' <span ref="eSortOrder" class="ag-header-icon ag-sort-order" aria-hidden="true"></span>' +
|
219 | ' <span ref="eSortAsc" class="ag-header-icon ag-sort-ascending-icon" aria-hidden="true"></span>' +
|
220 | ' <span ref="eSortDesc" class="ag-header-icon ag-sort-descending-icon" aria-hidden="true"></span>' +
|
221 | ' <span ref="eSortNone" class="ag-header-icon ag-sort-none-icon" aria-hidden="true"></span>' +
|
222 | ' </div>' +
|
223 | '</div>';
|
224 | __decorate([
|
225 | context_1.Autowired('gridOptionsWrapper'),
|
226 | __metadata("design:type", gridOptionsWrapper_1.GridOptionsWrapper)
|
227 | ], HeaderComp.prototype, "gridOptionsWrapper", void 0);
|
228 | __decorate([
|
229 | context_1.Autowired('sortController'),
|
230 | __metadata("design:type", sortController_1.SortController)
|
231 | ], HeaderComp.prototype, "sortController", void 0);
|
232 | __decorate([
|
233 | context_1.Autowired('menuFactory'),
|
234 | __metadata("design:type", Object)
|
235 | ], HeaderComp.prototype, "menuFactory", void 0);
|
236 | __decorate([
|
237 | context_1.Autowired('eventService'),
|
238 | __metadata("design:type", eventService_1.EventService)
|
239 | ], HeaderComp.prototype, "eventService", void 0);
|
240 | __decorate([
|
241 | componentAnnotations_1.RefSelector('eFilter'),
|
242 | __metadata("design:type", HTMLElement)
|
243 | ], HeaderComp.prototype, "eFilter", void 0);
|
244 | __decorate([
|
245 | componentAnnotations_1.RefSelector('eSortAsc'),
|
246 | __metadata("design:type", HTMLElement)
|
247 | ], HeaderComp.prototype, "eSortAsc", void 0);
|
248 | __decorate([
|
249 | componentAnnotations_1.RefSelector('eSortDesc'),
|
250 | __metadata("design:type", HTMLElement)
|
251 | ], HeaderComp.prototype, "eSortDesc", void 0);
|
252 | __decorate([
|
253 | componentAnnotations_1.RefSelector('eSortNone'),
|
254 | __metadata("design:type", HTMLElement)
|
255 | ], HeaderComp.prototype, "eSortNone", void 0);
|
256 | __decorate([
|
257 | componentAnnotations_1.RefSelector('eSortOrder'),
|
258 | __metadata("design:type", HTMLElement)
|
259 | ], HeaderComp.prototype, "eSortOrder", void 0);
|
260 | __decorate([
|
261 | componentAnnotations_1.RefSelector('eMenu'),
|
262 | __metadata("design:type", HTMLElement)
|
263 | ], HeaderComp.prototype, "eMenu", void 0);
|
264 | __decorate([
|
265 | componentAnnotations_1.RefSelector('eLabel'),
|
266 | __metadata("design:type", HTMLElement)
|
267 | ], HeaderComp.prototype, "eLabel", void 0);
|
268 | __decorate([
|
269 | componentAnnotations_1.RefSelector('eText'),
|
270 | __metadata("design:type", HTMLElement)
|
271 | ], HeaderComp.prototype, "eText", void 0);
|
272 | return HeaderComp;
|
273 | }(component_1.Component));
|
274 | exports.HeaderComp = HeaderComp;
|