@refinitiv-ui/efx-grid 6.0.18 → 6.0.20
Sign up to get free protection for your applications and to get access to all the features.
- package/lib/column-format-dialog/themes/elemental/dark/column-format-dialog.js +1 -1
- package/lib/column-format-dialog/themes/elemental/dark/es5/all-elements.js +1 -1
- package/lib/column-format-dialog/themes/elemental/light/column-format-dialog.js +1 -1
- package/lib/column-format-dialog/themes/elemental/light/es5/all-elements.js +1 -1
- package/lib/column-format-dialog/themes/halo/dark/column-format-dialog.js +1 -1
- package/lib/column-format-dialog/themes/halo/dark/es5/all-elements.js +1 -1
- package/lib/column-format-dialog/themes/halo/light/column-format-dialog.js +1 -1
- package/lib/column-format-dialog/themes/halo/light/es5/all-elements.js +1 -1
- package/lib/column-format-dialog/themes/luna/default/column-format-dialog.js +1 -1
- package/lib/column-format-dialog/themes/luna/default/es5/all-elements.js +1 -1
- package/lib/column-format-dialog/themes/solar/charcoal/column-format-dialog.js +1 -1
- package/lib/column-format-dialog/themes/solar/charcoal/es5/all-elements.js +1 -1
- package/lib/column-format-dialog/themes/solar/pearl/column-format-dialog.js +1 -1
- package/lib/column-format-dialog/themes/solar/pearl/es5/all-elements.js +1 -1
- package/lib/column-selection-dialog/lib/column-selection-dialog.d.ts +2 -1
- package/lib/column-selection-dialog/lib/column-selection-dialog.js +89 -8
- package/lib/column-selection-dialog/themes/elemental/dark/column-selection-dialog.js +1 -1
- package/lib/column-selection-dialog/themes/elemental/dark/es5/all-elements.js +1 -1
- package/lib/column-selection-dialog/themes/elemental/light/column-selection-dialog.js +1 -1
- package/lib/column-selection-dialog/themes/elemental/light/es5/all-elements.js +1 -1
- package/lib/column-selection-dialog/themes/halo/dark/column-selection-dialog.js +1 -1
- package/lib/column-selection-dialog/themes/halo/dark/es5/all-elements.js +1 -1
- package/lib/column-selection-dialog/themes/halo/light/column-selection-dialog.js +1 -1
- package/lib/column-selection-dialog/themes/halo/light/es5/all-elements.js +1 -1
- package/lib/column-selection-dialog/themes/solar/charcoal/column-selection-dialog.js +1 -1
- package/lib/column-selection-dialog/themes/solar/charcoal/es5/all-elements.js +1 -1
- package/lib/column-selection-dialog/themes/solar/pearl/column-selection-dialog.js +1 -1
- package/lib/column-selection-dialog/themes/solar/pearl/es5/all-elements.js +1 -1
- package/lib/core/dist/core.js +40 -23
- package/lib/core/dist/core.min.js +1 -1
- package/lib/core/es6/data/DataView.d.ts +4 -0
- package/lib/core/es6/data/DataView.js +19 -1
- package/lib/core/es6/data/SegmentCollection.js +20 -8
- package/lib/core/es6/grid/Core.js +1 -1
- package/lib/core/es6/grid/components/Cell.js +0 -13
- package/lib/filter-dialog/lib/checkbox-list.js +148 -81
- package/lib/filter-dialog/lib/filter-dialog.js +170 -139
- package/lib/filter-dialog/themes/elemental/dark/checkbox-list.js +1 -1
- package/lib/filter-dialog/themes/elemental/dark/es5/all-elements.js +2 -2
- package/lib/filter-dialog/themes/elemental/dark/filter-dialog.js +1 -1
- package/lib/filter-dialog/themes/elemental/light/checkbox-list.js +1 -1
- package/lib/filter-dialog/themes/elemental/light/es5/all-elements.js +2 -2
- package/lib/filter-dialog/themes/elemental/light/filter-dialog.js +1 -1
- package/lib/filter-dialog/themes/halo/dark/checkbox-list.js +1 -1
- package/lib/filter-dialog/themes/halo/dark/es5/all-elements.js +2 -2
- package/lib/filter-dialog/themes/halo/dark/filter-dialog.js +1 -1
- package/lib/filter-dialog/themes/halo/light/checkbox-list.js +1 -1
- package/lib/filter-dialog/themes/halo/light/es5/all-elements.js +2 -2
- package/lib/filter-dialog/themes/halo/light/filter-dialog.js +1 -1
- package/lib/filter-dialog/themes/solar/charcoal/checkbox-list.js +1 -1
- package/lib/filter-dialog/themes/solar/charcoal/es5/all-elements.js +2 -2
- package/lib/filter-dialog/themes/solar/charcoal/filter-dialog.js +1 -1
- package/lib/filter-dialog/themes/solar/pearl/checkbox-list.js +1 -1
- package/lib/filter-dialog/themes/solar/pearl/es5/all-elements.js +2 -2
- package/lib/filter-dialog/themes/solar/pearl/filter-dialog.js +1 -1
- package/lib/grid/index.js +1 -1
- package/lib/rt-grid/dist/rt-grid.js +22 -23
- package/lib/rt-grid/dist/rt-grid.min.js +1 -1
- package/lib/tr-grid-checkbox/es6/Checkbox.js +63 -12
- package/lib/tr-grid-column-grouping/es6/ColumnGrouping.js +70 -110
- package/lib/tr-grid-filter-input/es6/FilterInput.d.ts +1 -1
- package/lib/tr-grid-filter-input/es6/FilterInput.js +10 -9
- package/lib/tr-grid-pagination/es6/Pagination.d.ts +1 -0
- package/lib/tr-grid-pagination/es6/Pagination.js +35 -29
- package/lib/tr-grid-row-dragging/es6/RowDragging.d.ts +15 -14
- package/lib/tr-grid-row-dragging/es6/RowDragging.js +44 -6
- package/lib/tr-grid-row-grouping/es6/RowGrouping.d.ts +5 -0
- package/lib/tr-grid-row-grouping/es6/RowGrouping.js +30 -0
- package/lib/tr-grid-util/es6/Popup.js +5 -1
- package/lib/types/es6/Core/data/DataView.d.ts +4 -0
- package/lib/types/es6/FilterInput.d.ts +1 -0
- package/lib/types/es6/Pagination.d.ts +1 -0
- package/lib/types/es6/RealtimeGrid/Grid.d.ts +1 -1
- package/lib/types/es6/RowDragging.d.ts +15 -14
- package/lib/types/es6/RowGrouping.d.ts +5 -0
- package/lib/versions.json +10 -10
- package/package.json +1 -1
@@ -188,6 +188,10 @@ declare class DataView extends EventDispatcher {
|
|
188
188
|
|
189
189
|
public enableContentAsHeader(bool?: boolean|null): void;
|
190
190
|
|
191
|
+
public setDefaultCollapse(collapse?: boolean|null): void;
|
192
|
+
|
193
|
+
public getDefaultCollapse(): boolean;
|
194
|
+
|
191
195
|
public getVisibleRowCount(): number;
|
192
196
|
|
193
197
|
public isRowDataInGroup(rowData: any, groupID?: string|null): boolean;
|
@@ -1054,7 +1054,7 @@ DataView.prototype.prevPage = DataView.prototype.previousPage;
|
|
1054
1054
|
* @fires DataView#dataChanged
|
1055
1055
|
*/
|
1056
1056
|
DataView.prototype.lastPage = function () {
|
1057
|
-
return this.gotoPage(this._lastPageIndex
|
1057
|
+
return this.gotoPage(this._lastPageIndex);
|
1058
1058
|
};
|
1059
1059
|
/** Goes to the first page
|
1060
1060
|
* @public
|
@@ -1760,6 +1760,20 @@ DataView.prototype.isCollapsed = function() {
|
|
1760
1760
|
DataView.prototype.enableContentAsHeader = function(bool) {
|
1761
1761
|
this._shared.contentAsHeader = bool !== false;
|
1762
1762
|
};
|
1763
|
+
/** set default collapse when new groups added
|
1764
|
+
* @public
|
1765
|
+
* @param {boolean=} collapse=false, if enable it, it will be set collapsing by default
|
1766
|
+
*/
|
1767
|
+
DataView.prototype.setDefaultCollapse = function(collapse) {
|
1768
|
+
this._shared.defaultCollapse = !!collapse;
|
1769
|
+
};
|
1770
|
+
/** get default collapse when new groups added
|
1771
|
+
* @public
|
1772
|
+
* @return {boolean}
|
1773
|
+
*/
|
1774
|
+
DataView.prototype.getDefaultCollapse = function() {
|
1775
|
+
return !!this._shared.defaultCollapse; // it can be null, convert to boolean
|
1776
|
+
};
|
1763
1777
|
/** @private
|
1764
1778
|
* @return {?Array.<string>}
|
1765
1779
|
*/
|
@@ -3678,6 +3692,10 @@ DataView.prototype._addGroup = function (value) {
|
|
3678
3692
|
}
|
3679
3693
|
}
|
3680
3694
|
member = new DataView();
|
3695
|
+
var collapsed = this._shared.defaultCollapse;
|
3696
|
+
if(collapsed != null) {
|
3697
|
+
member._collapsed = collapsed;
|
3698
|
+
}
|
3681
3699
|
member._groupId = groupId;
|
3682
3700
|
if(typeof value == "string") { // TODO: Raw value should not always be a string
|
3683
3701
|
if(value == "null") {
|
@@ -440,26 +440,38 @@ SegmentCollection.prototype.getSegmentValues = function(rids) {
|
|
440
440
|
var prevSegment = null;
|
441
441
|
var segmentValues = new Array(rowCount);
|
442
442
|
var segmentVal = 0;
|
443
|
+
var highestVal = -10;
|
443
444
|
var offset = 0;
|
444
445
|
for(var r = 0; r < rowCount; ++r) {
|
445
446
|
var rid = rids[r];
|
446
447
|
curSegment = segmentSeparators[rid];
|
447
|
-
if(curSegment) {
|
448
|
+
if(curSegment) { // segment separator
|
449
|
+
if(prevSegment !== curSegment) {
|
450
|
+
prevSegment = curSegment;
|
451
|
+
segmentVal = curSegment.getOrder() * 100;
|
452
|
+
if(segmentVal > highestVal) {
|
453
|
+
highestVal = segmentVal;
|
454
|
+
}
|
455
|
+
}
|
448
456
|
offset = 0;
|
449
457
|
} else {
|
450
458
|
var parentId = childToSegmentId[rid];
|
451
|
-
if(parentId) {
|
459
|
+
if(parentId) { // segment member
|
452
460
|
curSegment = segmentSeparators[parentId];
|
461
|
+
if(prevSegment !== curSegment) {
|
462
|
+
prevSegment = curSegment;
|
463
|
+
segmentVal = curSegment.getOrder() * 100;
|
464
|
+
if(segmentVal > highestVal) {
|
465
|
+
highestVal = segmentVal;
|
466
|
+
}
|
467
|
+
}
|
453
468
|
offset = 1;
|
454
|
-
} else {
|
455
|
-
|
469
|
+
} else { // row outside of segments
|
470
|
+
segmentVal = highestVal;
|
471
|
+
offset = 10;
|
456
472
|
}
|
457
473
|
}
|
458
474
|
|
459
|
-
if(curSegment && prevSegment !== curSegment) {
|
460
|
-
prevSegment = curSegment;
|
461
|
-
segmentVal = curSegment.getOrder() * 100;
|
462
|
-
}
|
463
475
|
segmentValues[r] = segmentVal + offset;
|
464
476
|
}
|
465
477
|
|
@@ -13,8 +13,6 @@ import CellFloatingPanel from "../components/CellFloatingPanel.js";
|
|
13
13
|
* @param {ILayoutGrid=} opt_section Parent section
|
14
14
|
*/
|
15
15
|
var Cell = function (opt_element, opt_section) {
|
16
|
-
this._onFocus = this._onFocus.bind(this);
|
17
|
-
|
18
16
|
this._id = Cell._runningId++;
|
19
17
|
this._element = document.createElement("div");
|
20
18
|
this._element.className = "cell";
|
@@ -358,7 +356,6 @@ Cell.prototype.initialize = function () {
|
|
358
356
|
this._aligner = document.createElement("div");
|
359
357
|
} else {
|
360
358
|
this._aligner = document.createElement("button");
|
361
|
-
this._aligner.addEventListener('focus', this._onFocus);
|
362
359
|
}
|
363
360
|
this._aligner.className = "valigner";
|
364
361
|
if(this._frontIcon) {
|
@@ -724,16 +721,6 @@ Cell.prototype._updateDisplay = function () {
|
|
724
721
|
this._element.style.display = "none";
|
725
722
|
}
|
726
723
|
};
|
727
|
-
|
728
|
-
/** @private
|
729
|
-
* @param {Event} e
|
730
|
-
*/
|
731
|
-
Cell.prototype._onFocus = function (e) {
|
732
|
-
if (!this._section) return;
|
733
|
-
|
734
|
-
var core = this._section._getContext();
|
735
|
-
core.getElement().focus({ preventScroll: true });
|
736
|
-
};
|
737
724
|
//#endregion Private Methods
|
738
725
|
|
739
726
|
|
@@ -5,59 +5,72 @@ import "@refinitiv-ui/elements/item";
|
|
5
5
|
import "@refinitiv-ui/elements/checkbox";
|
6
6
|
import translation from "./locale/translation.js";
|
7
7
|
|
8
|
-
/**
|
8
|
+
/** @type {number}
|
9
9
|
* @private
|
10
|
-
* @
|
10
|
+
* @constant
|
11
|
+
*/
|
12
|
+
const ITEM_LIMIT = 500;
|
13
|
+
|
14
|
+
/** @private
|
15
|
+
* @function
|
16
|
+
* @param {*=} val
|
11
17
|
* @return {string}
|
12
18
|
*/
|
13
|
-
const
|
14
|
-
if(typeof
|
15
|
-
return
|
16
|
-
} else if(
|
17
|
-
return
|
19
|
+
const _toLabelText = function(val) {
|
20
|
+
if(typeof val === "string") {
|
21
|
+
return val;
|
22
|
+
} else if(val) {
|
23
|
+
return val.title || val.label || "";
|
18
24
|
}
|
19
25
|
return "";
|
20
26
|
};
|
21
|
-
/**
|
22
|
-
* @
|
23
|
-
* @param {
|
24
|
-
* @param {
|
27
|
+
/** @private
|
28
|
+
* @function
|
29
|
+
* @param {*} val
|
30
|
+
* @param {number} idx
|
31
|
+
* @return {!Object}
|
25
32
|
*/
|
26
|
-
const
|
27
|
-
|
28
|
-
|
33
|
+
const _toItemStates = function(val, idx) {
|
34
|
+
return {
|
35
|
+
label: _toLabelText(val),
|
36
|
+
checked: (val && val.checked) ? true : false,
|
37
|
+
index: idx,
|
38
|
+
elem: null
|
39
|
+
};
|
29
40
|
};
|
30
|
-
/**
|
31
|
-
* @
|
32
|
-
* @param {
|
33
|
-
* @param {
|
34
|
-
* @return {!Array} Array containing filtered data objects
|
41
|
+
/** @private
|
42
|
+
* @function
|
43
|
+
* @param {!Object} state
|
44
|
+
* @param {*} val
|
35
45
|
*/
|
36
|
-
const
|
37
|
-
|
38
|
-
|
39
|
-
|
46
|
+
const _assignItemState = function(state, val) {
|
47
|
+
state.label = _toLabelText(val);
|
48
|
+
state.checked = (val && val.checked) ? true : false;
|
49
|
+
if(state.elem) {
|
50
|
+
_updateElement(state.elem, state.label, state.checked);
|
40
51
|
}
|
41
|
-
|
42
|
-
|
43
|
-
|
44
|
-
|
45
|
-
|
46
|
-
|
47
|
-
|
48
|
-
|
52
|
+
};
|
53
|
+
/** @private
|
54
|
+
* @function
|
55
|
+
* @param {!Object} state
|
56
|
+
* @return {boolean}
|
57
|
+
*/
|
58
|
+
const _getCheckedState = function(state) {
|
59
|
+
return state.elem ? state.elem._checkbox.checked : state.checked;
|
60
|
+
};
|
61
|
+
/** @private
|
62
|
+
* @function
|
63
|
+
* @param {!Element} elem
|
64
|
+
* @param {string} txt
|
65
|
+
* @param {boolean} checked
|
66
|
+
*/
|
67
|
+
const _updateElement = function(elem, txt, checked) {
|
68
|
+
if(elem._label.textContent !== txt) {
|
69
|
+
elem._label.textContent = txt;
|
49
70
|
}
|
50
|
-
|
51
|
-
|
52
|
-
for(var i = 0; i < len; ++i) {
|
53
|
-
var elem = ary[i];
|
54
|
-
var str = elem._label.textContent;
|
55
|
-
if(filterMethod(str, i, ctx)) {
|
56
|
-
filteredList.push(elem);
|
57
|
-
}
|
71
|
+
if(elem._checkbox.checked !== checked) {
|
72
|
+
elem._checkbox.checked = checked;
|
58
73
|
}
|
59
|
-
|
60
|
-
return filteredList;
|
61
74
|
};
|
62
75
|
/** @private
|
63
76
|
* @param {string} str
|
@@ -81,16 +94,19 @@ class CheckboxList extends BasicElement {
|
|
81
94
|
constructor() {
|
82
95
|
super();
|
83
96
|
|
84
|
-
this.lang = "en";
|
85
|
-
this._translation = translation;
|
86
97
|
this.selectAll = this.selectAll.bind(this);
|
87
98
|
this.deselectAll = this.deselectAll.bind(this);
|
88
99
|
this._onItemClicked = this._onItemClicked.bind(this);
|
100
|
+
this._toItemElement = this._toItemElement.bind(this);
|
101
|
+
this._byLabelText = this._byLabelText.bind(this);
|
102
|
+
|
103
|
+
this.lang = "en";
|
104
|
+
this._translation = translation;
|
89
105
|
|
90
106
|
this._config = {};
|
107
|
+
this._states = []; // Item states before filtering
|
91
108
|
this._cachedItems = []; // To avoid repeatedly creating the same item element
|
92
109
|
this._items = []; // Actual existing elements (filtered items)
|
93
|
-
this._origItems = this._items; // Original items before being filtered
|
94
110
|
this._inputFilter = null;
|
95
111
|
}
|
96
112
|
|
@@ -152,38 +168,40 @@ class CheckboxList extends BasicElement {
|
|
152
168
|
|
153
169
|
updated(changedProps) {
|
154
170
|
if (changedProps.has("data")) {
|
155
|
-
var
|
156
|
-
var len =
|
157
|
-
|
171
|
+
var dataList = this.data;
|
172
|
+
var len = dataList ? dataList.length : 0;
|
158
173
|
if (this._cachedItems.length < len) {
|
159
174
|
this._cachedItems.length = len;
|
160
175
|
}
|
161
|
-
this._items = new Array(len);
|
162
|
-
|
163
|
-
for (var i = 0; i < len; i++) {
|
164
|
-
var item = this._cachedItems[i]; // ef-item
|
165
|
-
if (!item) {
|
166
|
-
item = this._cachedItems[i] = this._templateItemEl.cloneNode(true);
|
167
|
-
item.addEventListener("click", this._onItemClicked);
|
168
|
-
|
169
|
-
var itemContainer = item.firstChild; // div.item-container
|
170
|
-
item._checkbox = itemContainer.firstChild; // ef-checkbox
|
171
|
-
item._label = itemContainer.lastChild; // label
|
172
|
-
}
|
173
|
-
this._items[i] = item;
|
174
176
|
|
175
|
-
|
176
|
-
|
177
|
+
this._states = dataList.map(_toItemStates);
|
178
|
+
this._filterItems();
|
179
|
+
this._renderItems();
|
180
|
+
}
|
181
|
+
}
|
177
182
|
|
178
|
-
|
179
|
-
|
180
|
-
|
181
|
-
|
182
|
-
|
183
|
+
/** @private
|
184
|
+
* @param {!Object} state
|
185
|
+
* @return {!Element}
|
186
|
+
*/
|
187
|
+
_toItemElement(state) {
|
188
|
+
var elem = state.elem;
|
189
|
+
if(!elem) {
|
190
|
+
var idx = state.index;
|
191
|
+
elem = this._cachedItems[idx];
|
192
|
+
if(!elem) {
|
193
|
+
elem = this._cachedItems[idx] = this._templateItemEl.cloneNode(true);
|
194
|
+
elem.addEventListener("click", this._onItemClicked);
|
195
|
+
|
196
|
+
var itemContainer = elem.firstChild; // div.item-container
|
197
|
+
elem._checkbox = itemContainer.firstChild; // ef-checkbox
|
198
|
+
elem._label = itemContainer.lastChild; // label
|
183
199
|
}
|
184
200
|
|
185
|
-
|
201
|
+
_updateElement(elem, state.label, state.checked);
|
202
|
+
state.elem = elem;
|
186
203
|
}
|
204
|
+
return elem;
|
187
205
|
}
|
188
206
|
/**
|
189
207
|
* @private
|
@@ -198,9 +216,11 @@ class CheckboxList extends BasicElement {
|
|
198
216
|
while(container.lastChild) {
|
199
217
|
container.removeChild(container.lastChild);
|
200
218
|
}
|
201
|
-
|
219
|
+
|
220
|
+
var ary = this._items;
|
221
|
+
var len = ary.length;
|
202
222
|
for(var i = 0; i < len; ++i) {
|
203
|
-
container.appendChild(
|
223
|
+
container.appendChild(ary[i]);
|
204
224
|
}
|
205
225
|
this._updateSelectAllState();
|
206
226
|
}
|
@@ -228,9 +248,10 @@ class CheckboxList extends BasicElement {
|
|
228
248
|
return;
|
229
249
|
}
|
230
250
|
|
231
|
-
var
|
251
|
+
var states = this._states;
|
252
|
+
var len = states.length;
|
232
253
|
for(var i = 0; i < len; ++i) {
|
233
|
-
|
254
|
+
_assignItemState(states[i], this.data[i]);
|
234
255
|
}
|
235
256
|
|
236
257
|
this._updateSelectAllState();
|
@@ -242,11 +263,13 @@ class CheckboxList extends BasicElement {
|
|
242
263
|
*/
|
243
264
|
getSelectedItems() {
|
244
265
|
var items = [];
|
245
|
-
var
|
266
|
+
var states = this._states;
|
267
|
+
var len = states.length;
|
246
268
|
for(var i = 0; i < len; ++i) {
|
247
|
-
|
269
|
+
var state = states[i];
|
270
|
+
if(_getCheckedState(state)) {
|
248
271
|
items.push({
|
249
|
-
title:
|
272
|
+
title: state.label,
|
250
273
|
index: i
|
251
274
|
});
|
252
275
|
}
|
@@ -260,9 +283,10 @@ class CheckboxList extends BasicElement {
|
|
260
283
|
*/
|
261
284
|
selectAll(selected) {
|
262
285
|
selected = selected !== false;
|
263
|
-
var
|
286
|
+
var ary = this._items;
|
287
|
+
var len = ary.length;
|
264
288
|
for(var i = 0; i < len; ++i) {
|
265
|
-
|
289
|
+
ary[i]._checkbox.checked = selected;
|
266
290
|
}
|
267
291
|
this._updateSelectAllState(selected);
|
268
292
|
}
|
@@ -288,18 +312,60 @@ class CheckboxList extends BasicElement {
|
|
288
312
|
dirty = true;
|
289
313
|
}
|
290
314
|
if(dirty) {
|
291
|
-
this.
|
315
|
+
this._filterItems();
|
292
316
|
this._renderItems();
|
293
317
|
}
|
294
318
|
}
|
295
319
|
|
320
|
+
/**
|
321
|
+
* @private
|
322
|
+
*/
|
323
|
+
_filterItems() {
|
324
|
+
var states = this._states;
|
325
|
+
var len = states ? states.length : 0;
|
326
|
+
if(!len) {
|
327
|
+
this._items.length = 0;
|
328
|
+
return; // No new copy is generated
|
329
|
+
}
|
330
|
+
|
331
|
+
var inputFilter = this._inputFilter;
|
332
|
+
if(inputFilter) {
|
333
|
+
if(typeof inputFilter === "function") {
|
334
|
+
this._filterMethod = inputFilter;
|
335
|
+
this._filterCtx = states;
|
336
|
+
} else {
|
337
|
+
this._filterMethod = _caseInsensitiveFilter;
|
338
|
+
this._filterCtx = (inputFilter + "").toLowerCase(); // Convert to lowercased string for case insensitive comparison
|
339
|
+
}
|
340
|
+
states = states.filter(this._byLabelText);
|
341
|
+
|
342
|
+
this._filterMethod = null;
|
343
|
+
this._filterCtx = null;
|
344
|
+
}
|
345
|
+
|
346
|
+
if(states.length > ITEM_LIMIT) {
|
347
|
+
states = states.slice(0, ITEM_LIMIT);
|
348
|
+
}
|
349
|
+
|
350
|
+
this._items = states.map(this._toItemElement);
|
351
|
+
}
|
352
|
+
/**
|
353
|
+
* @private
|
354
|
+
* @param {Object} state
|
355
|
+
* @param {number} idx
|
356
|
+
* @return {boolean}
|
357
|
+
*/
|
358
|
+
_byLabelText(state, idx) {
|
359
|
+
return this._filterMethod(state.label, idx, this._filterCtx);
|
360
|
+
}
|
361
|
+
|
296
362
|
/**
|
297
363
|
* @private
|
298
364
|
* @param {Event} e
|
299
365
|
*/
|
300
366
|
_onItemClicked(e) {
|
301
|
-
var itemEl = e.currentTarget;
|
302
367
|
if(e.target.tagName !== "EF-CHECKBOX") { // checkbox may already toggle its state
|
368
|
+
var itemEl = e.currentTarget;
|
303
369
|
itemEl._checkbox.checked = !itemEl._checkbox.checked;
|
304
370
|
}
|
305
371
|
this._updateSelectAllState();
|
@@ -315,10 +381,11 @@ class CheckboxList extends BasicElement {
|
|
315
381
|
}
|
316
382
|
|
317
383
|
if(selected == null) {
|
318
|
-
var
|
384
|
+
var ary = this._items;
|
385
|
+
var len = ary.length;
|
319
386
|
selected = len ? false : true;
|
320
387
|
for (var i = 0; i < len; i++) {
|
321
|
-
if (
|
388
|
+
if (ary[i]._checkbox.checked) {
|
322
389
|
selected = true;
|
323
390
|
break;
|
324
391
|
}
|