@syncfusion/ej2-dropdowns 29.1.41 → 29.2.4
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/ej2-dropdowns.min.js +2 -2
- package/dist/ej2-dropdowns.umd.min.js +2 -2
- package/dist/ej2-dropdowns.umd.min.js.map +1 -1
- package/dist/es6/ej2-dropdowns.es2015.js +229 -96
- package/dist/es6/ej2-dropdowns.es2015.js.map +1 -1
- package/dist/es6/ej2-dropdowns.es5.js +240 -105
- package/dist/es6/ej2-dropdowns.es5.js.map +1 -1
- package/dist/global/ej2-dropdowns.min.js +2 -2
- package/dist/global/ej2-dropdowns.min.js.map +1 -1
- package/dist/global/index.d.ts +1 -1
- package/package.json +12 -12
- package/src/auto-complete/auto-complete.d.ts +1 -0
- package/src/auto-complete/auto-complete.js +9 -1
- package/src/combo-box/combo-box-model.d.ts +0 -8
- package/src/combo-box/combo-box.d.ts +0 -7
- package/src/combo-box/combo-box.js +0 -3
- package/src/common/virtual-scroll.js +8 -3
- package/src/drop-down-base/drop-down-base.d.ts +5 -1
- package/src/drop-down-base/drop-down-base.js +54 -10
- package/src/drop-down-list/drop-down-list-model.d.ts +7 -0
- package/src/drop-down-list/drop-down-list.d.ts +7 -0
- package/src/drop-down-list/drop-down-list.js +52 -28
- package/src/drop-down-tree/drop-down-tree.d.ts +1 -0
- package/src/drop-down-tree/drop-down-tree.js +11 -0
- package/src/mention/mention-model.d.ts +7 -0
- package/src/mention/mention.d.ts +8 -0
- package/src/mention/mention.js +29 -16
- package/src/multi-select/multi-select-model.d.ts +7 -0
- package/src/multi-select/multi-select.d.ts +9 -0
- package/src/multi-select/multi-select.js +77 -44
- package/styles/bds-lite.css +1 -1
- package/styles/bds.css +1 -1
- package/styles/multi-select/_bds-definition.scss +1 -0
- package/styles/multi-select/_layout.scss +6 -1
- package/styles/multi-select/_tailwind-definition.scss +1 -0
- package/styles/multi-select/bds.css +1 -1
- package/styles/multi-select/tailwind-dark.css +1 -1
- package/styles/multi-select/tailwind.css +1 -1
- package/styles/tailwind-dark-lite.css +1 -1
- package/styles/tailwind-dark.css +1 -1
- package/styles/tailwind-lite.css +1 -1
- package/styles/tailwind.css +1 -1
package/dist/global/index.d.ts
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
/*!
|
|
2
2
|
* filename: index.d.ts
|
|
3
|
-
* version : 29.
|
|
3
|
+
* version : 29.2.4
|
|
4
4
|
* Copyright Syncfusion Inc. 2001 - 2024. All rights reserved.
|
|
5
5
|
* Use of this code is subject to the terms of our license.
|
|
6
6
|
* A copy of the current license can be obtained at any time by e-mailing
|
package/package.json
CHANGED
|
@@ -1,8 +1,8 @@
|
|
|
1
1
|
{
|
|
2
2
|
"_from": "@syncfusion/ej2-dropdowns@*",
|
|
3
|
-
"_id": "@syncfusion/ej2-dropdowns@29.1.
|
|
3
|
+
"_id": "@syncfusion/ej2-dropdowns@29.1.41",
|
|
4
4
|
"_inBundle": false,
|
|
5
|
-
"_integrity": "sha512-
|
|
5
|
+
"_integrity": "sha512-MguJkedxJ1fsjo2kpSIDWlIMg4AM/9Sivaogd+NwxyxjKdkn5jg5325cmvC/cO1A+ZenI0w5fwOotB1ANtPDiA==",
|
|
6
6
|
"_location": "/@syncfusion/ej2-dropdowns",
|
|
7
7
|
"_phantomChildren": {},
|
|
8
8
|
"_requested": {
|
|
@@ -36,8 +36,8 @@
|
|
|
36
36
|
"/@syncfusion/ej2-spreadsheet",
|
|
37
37
|
"/@syncfusion/ej2-vue-dropdowns"
|
|
38
38
|
],
|
|
39
|
-
"_resolved": "https://nexus.syncfusioninternal.com/repository/ej2-hotfix-new/@syncfusion/ej2-dropdowns/-/ej2-dropdowns-29.1.
|
|
40
|
-
"_shasum": "
|
|
39
|
+
"_resolved": "https://nexus.syncfusioninternal.com/repository/ej2-hotfix-new/@syncfusion/ej2-dropdowns/-/ej2-dropdowns-29.1.41.tgz",
|
|
40
|
+
"_shasum": "7a112cc2e360ea39ea9a4c681a580cdffa9ef3ff",
|
|
41
41
|
"_spec": "@syncfusion/ej2-dropdowns@*",
|
|
42
42
|
"_where": "/jenkins/workspace/elease-automation_release_29.1.1/packages/included",
|
|
43
43
|
"author": {
|
|
@@ -45,13 +45,13 @@
|
|
|
45
45
|
},
|
|
46
46
|
"bundleDependencies": false,
|
|
47
47
|
"dependencies": {
|
|
48
|
-
"@syncfusion/ej2-base": "~29.
|
|
49
|
-
"@syncfusion/ej2-data": "~29.
|
|
50
|
-
"@syncfusion/ej2-inputs": "~29.
|
|
51
|
-
"@syncfusion/ej2-lists": "~29.
|
|
52
|
-
"@syncfusion/ej2-navigations": "~29.
|
|
53
|
-
"@syncfusion/ej2-notifications": "~29.
|
|
54
|
-
"@syncfusion/ej2-popups": "~29.
|
|
48
|
+
"@syncfusion/ej2-base": "~29.2.4",
|
|
49
|
+
"@syncfusion/ej2-data": "~29.2.4",
|
|
50
|
+
"@syncfusion/ej2-inputs": "~29.2.4",
|
|
51
|
+
"@syncfusion/ej2-lists": "~29.2.4",
|
|
52
|
+
"@syncfusion/ej2-navigations": "~29.2.4",
|
|
53
|
+
"@syncfusion/ej2-notifications": "~29.2.4",
|
|
54
|
+
"@syncfusion/ej2-popups": "~29.2.4"
|
|
55
55
|
},
|
|
56
56
|
"deprecated": false,
|
|
57
57
|
"description": "Essential JS 2 DropDown Components",
|
|
@@ -76,7 +76,7 @@
|
|
|
76
76
|
"module": "./index.js",
|
|
77
77
|
"name": "@syncfusion/ej2-dropdowns",
|
|
78
78
|
"typings": "index.d.ts",
|
|
79
|
-
"version": "29.
|
|
79
|
+
"version": "29.2.4",
|
|
80
80
|
"sideEffects": false,
|
|
81
81
|
"homepage": "https://www.syncfusion.com/javascript-ui-controls"
|
|
82
82
|
}
|
|
@@ -217,6 +217,7 @@ export declare class AutoComplete extends ComboBox {
|
|
|
217
217
|
protected getNgDirective(): string;
|
|
218
218
|
protected getQuery(query: Query): Query;
|
|
219
219
|
protected searchLists(e: KeyboardEventArgs | MouseEvent): void;
|
|
220
|
+
protected performFiltering(e: KeyboardEventArgs | MouseEvent): void;
|
|
220
221
|
/**
|
|
221
222
|
* To filter the data from given data source by using query
|
|
222
223
|
*
|
|
@@ -163,7 +163,6 @@ var AutoComplete = /** @class */ (function (_super) {
|
|
|
163
163
|
return filterQuery;
|
|
164
164
|
};
|
|
165
165
|
AutoComplete.prototype.searchLists = function (e) {
|
|
166
|
-
var _this_1 = this;
|
|
167
166
|
this.isTyped = true;
|
|
168
167
|
this.isDataFetched = this.isSelectCustom = false;
|
|
169
168
|
this.firstItem = this.dataSource && this.dataSource.length > 0 ? this.dataSource[0] : null;
|
|
@@ -181,6 +180,15 @@ var AutoComplete = /** @class */ (function (_super) {
|
|
|
181
180
|
this.isSelected = false;
|
|
182
181
|
this.activeIndex = null;
|
|
183
182
|
this.isRequesting = false;
|
|
183
|
+
if (this.queryString !== '' && this.debounceDelay > 0) {
|
|
184
|
+
this.debouncedFiltering(e, this.debounceDelay);
|
|
185
|
+
}
|
|
186
|
+
else {
|
|
187
|
+
this.performFiltering(e);
|
|
188
|
+
}
|
|
189
|
+
};
|
|
190
|
+
AutoComplete.prototype.performFiltering = function (e) {
|
|
191
|
+
var _this_1 = this;
|
|
184
192
|
var eventArgs = {
|
|
185
193
|
preventDefaultAction: false,
|
|
186
194
|
text: this.filterInput.value,
|
|
@@ -86,14 +86,6 @@ export interface ComboBoxModel extends DropDownListModel{
|
|
|
86
86
|
*/
|
|
87
87
|
showClearButton?: boolean;
|
|
88
88
|
|
|
89
|
-
/**
|
|
90
|
-
* Enable or disable rendering component in right to left direction.
|
|
91
|
-
*
|
|
92
|
-
* @default false
|
|
93
|
-
|
|
94
|
-
*/
|
|
95
|
-
enableRtl?: boolean;
|
|
96
|
-
|
|
97
89
|
/**
|
|
98
90
|
* Triggers on set a
|
|
99
91
|
* [`custom value`](../../combo-box/getting-started#custom-values) to this component.
|
|
@@ -96,13 +96,6 @@ export declare class ComboBox extends DropDownList {
|
|
|
96
96
|
* @default true
|
|
97
97
|
*/
|
|
98
98
|
showClearButton: boolean;
|
|
99
|
-
/**
|
|
100
|
-
* Enable or disable rendering component in right to left direction.
|
|
101
|
-
*
|
|
102
|
-
* @default false
|
|
103
|
-
|
|
104
|
-
*/
|
|
105
|
-
enableRtl: boolean;
|
|
106
99
|
/**
|
|
107
100
|
* Triggers on set a
|
|
108
101
|
* [`custom value`](../../combo-box/getting-started#custom-values) to this component.
|
|
@@ -1028,9 +1028,6 @@ var ComboBox = /** @class */ (function (_super) {
|
|
|
1028
1028
|
__decorate([
|
|
1029
1029
|
Property(true)
|
|
1030
1030
|
], ComboBox.prototype, "showClearButton", void 0);
|
|
1031
|
-
__decorate([
|
|
1032
|
-
Property(false)
|
|
1033
|
-
], ComboBox.prototype, "enableRtl", void 0);
|
|
1034
1031
|
__decorate([
|
|
1035
1032
|
Event()
|
|
1036
1033
|
], ComboBox.prototype, "customValueSpecifier", void 0);
|
|
@@ -286,6 +286,7 @@ var VirtualScroll = /** @class */ (function () {
|
|
|
286
286
|
query = query.skip(this.parent.viewPortInfo.startIndex);
|
|
287
287
|
}
|
|
288
288
|
this.parent.setCurrentView = false;
|
|
289
|
+
this.parent.isPreventScrollAction = true;
|
|
289
290
|
this.parent.resetList(this.parent.dataSource, this.parent.fields, query);
|
|
290
291
|
isResetListCalled = true;
|
|
291
292
|
break;
|
|
@@ -333,6 +334,7 @@ var VirtualScroll = /** @class */ (function () {
|
|
|
333
334
|
}
|
|
334
335
|
}
|
|
335
336
|
this.parent.renderItems(currentData, this.parent.fields, this.component === 'multiselect' && this.parent.mode === 'CheckBox');
|
|
337
|
+
this.parent.updateSelectionList();
|
|
336
338
|
}
|
|
337
339
|
if (this.component === 'multiselect') {
|
|
338
340
|
this.parent.updatevirtualizationList();
|
|
@@ -344,7 +346,8 @@ var VirtualScroll = /** @class */ (function () {
|
|
|
344
346
|
(this.parent.totalItemCount <= this.parent.itemCount))) ? 0 : this.parent.skeletonCount;
|
|
345
347
|
// eslint-disable-next-line @typescript-eslint/no-explicit-any
|
|
346
348
|
var virtualTrackElement = this.parent.list.getElementsByClassName('e-virtual-ddl')[0];
|
|
347
|
-
|
|
349
|
+
var preventAction = this.component !== 'multiselect' || (this.component === 'multiselect' && ((!(this.parent.dataSource instanceof DataManager))) || (this.parent.dataSource instanceof DataManager && !isResetListCalled));
|
|
350
|
+
if (virtualTrackElement && preventAction) {
|
|
348
351
|
virtualTrackElement.style = this.parent.GetVirtualTrackHeight();
|
|
349
352
|
}
|
|
350
353
|
else if (!virtualTrackElement && this.parent.skeletonCount > 0 && this.parent.popupWrapper) {
|
|
@@ -353,11 +356,13 @@ var VirtualScroll = /** @class */ (function () {
|
|
|
353
356
|
});
|
|
354
357
|
this.parent.popupWrapper.querySelector('.e-dropdownbase').appendChild(virualElement);
|
|
355
358
|
}
|
|
356
|
-
this.parent.
|
|
359
|
+
if (this.component !== 'multiselect' || (this.component === 'multiselect' && ((!(this.parent.dataSource instanceof DataManager))) || (this.parent.dataSource instanceof DataManager && (!isResetListCalled || this.parent.viewPortInfo.startIndex === 0)))) {
|
|
360
|
+
this.parent.UpdateSkeleton();
|
|
361
|
+
}
|
|
357
362
|
this.parent.liCollections = this.parent.list.querySelectorAll('.e-list-item');
|
|
358
363
|
// eslint-disable-next-line @typescript-eslint/no-explicit-any
|
|
359
364
|
var virtualContentElement = this.parent.list.getElementsByClassName('e-virtual-ddl-content')[0];
|
|
360
|
-
if (virtualContentElement) {
|
|
365
|
+
if (virtualContentElement && preventAction) {
|
|
361
366
|
(virtualContentElement).style = this.parent.getTransformValues();
|
|
362
367
|
}
|
|
363
368
|
if (this.parent.fields.groupBy) {
|
|
@@ -296,6 +296,7 @@ export declare class DropDownBase extends Component<HTMLElement> implements INot
|
|
|
296
296
|
protected isDynamicData: boolean;
|
|
297
297
|
protected isPrimitiveData: boolean;
|
|
298
298
|
protected isCustomFiltering: boolean;
|
|
299
|
+
protected debounceTimer: ReturnType<typeof setTimeout> | null;
|
|
299
300
|
protected virtualListInfo: VirtualInfo;
|
|
300
301
|
protected viewPortInfo: VirtualInfo;
|
|
301
302
|
protected selectedValueInfo: VirtualInfo;
|
|
@@ -605,6 +606,8 @@ export declare class DropDownBase extends Component<HTMLElement> implements INot
|
|
|
605
606
|
* @returns {Query} Returns the query to do the data query operation.
|
|
606
607
|
*/
|
|
607
608
|
protected getQuery(query: Query): Query;
|
|
609
|
+
protected performFiltering(e: KeyboardEventArgs | MouseEvent): void;
|
|
610
|
+
protected debouncedFiltering(e: KeyboardEventArgs | MouseEvent, debounceDelay: number): void;
|
|
608
611
|
protected updateVirtualizationProperties(itemCount: number, filtering: boolean, isCheckbox?: boolean): void;
|
|
609
612
|
/**
|
|
610
613
|
* To render the template content for group header element.
|
|
@@ -638,11 +641,12 @@ export declare class DropDownBase extends Component<HTMLElement> implements INot
|
|
|
638
641
|
* @param {object[]} listData - Specifies the list of array of data.
|
|
639
642
|
* @param {FieldSettingsModel} fields - Maps the columns of the data table and binds the data to the component.
|
|
640
643
|
* @param {boolean} isCheckBoxUpdate - Specifies whether the list item is updated with checkbox.
|
|
644
|
+
* @param {boolean} isClearAll - Specifies whether the current action is clearAll.
|
|
641
645
|
* @returns {HTMLElement} Return the list items.
|
|
642
646
|
*/
|
|
643
647
|
protected renderItems(listData: {
|
|
644
648
|
[key: string]: Object;
|
|
645
|
-
}[], fields: FieldSettingsModel, isCheckBoxUpdate?: boolean): HTMLElement;
|
|
649
|
+
}[], fields: FieldSettingsModel, isCheckBoxUpdate?: boolean, isClearAll?: boolean): HTMLElement;
|
|
646
650
|
private createVirtualContent;
|
|
647
651
|
private updateListElements;
|
|
648
652
|
protected templateListItem(dataSource: {
|
|
@@ -138,6 +138,7 @@ var DropDownBase = /** @class */ (function (_super) {
|
|
|
138
138
|
_this.isDynamicData = false;
|
|
139
139
|
_this.isPrimitiveData = false;
|
|
140
140
|
_this.isCustomFiltering = false;
|
|
141
|
+
_this.debounceTimer = null;
|
|
141
142
|
_this.virtualListInfo = {
|
|
142
143
|
currentPageNumber: null,
|
|
143
144
|
direction: null,
|
|
@@ -499,6 +500,29 @@ var DropDownBase = /** @class */ (function (_super) {
|
|
|
499
500
|
isContainSkeleton.firstChild.insertBefore(liElement, isContainSkeleton.firstChild.children[0]);
|
|
500
501
|
}
|
|
501
502
|
}
|
|
503
|
+
if (this.getModuleName() === 'multiselect') {
|
|
504
|
+
for (var i = 0; i < totalSkeletonCount && this.totalItemCount !== this.viewPortInfo.endIndex; i++) {
|
|
505
|
+
var liElement = this.createElement('li', { className: dropDownBaseClasses.virtualList + " e-virtual-list-end", styles: 'overflow: inherit' });
|
|
506
|
+
if (this.isVirtualizationEnabled && this.itemTemplate) {
|
|
507
|
+
liElement.style.height = (this.listItemHeight - parseInt(window.getComputedStyle(this.getItems()[1]).marginBottom, 10)) + 'px';
|
|
508
|
+
}
|
|
509
|
+
var skeleton = new Skeleton({
|
|
510
|
+
shape: 'Text',
|
|
511
|
+
height: '10px',
|
|
512
|
+
width: '95%',
|
|
513
|
+
cssClass: 'e-skeleton-text-end'
|
|
514
|
+
});
|
|
515
|
+
skeleton.appendTo(this.createElement('div'));
|
|
516
|
+
liElement.appendChild(skeleton.element);
|
|
517
|
+
if (isContainSkeleton.firstChild) {
|
|
518
|
+
// eslint-disable-next-line @typescript-eslint/no-explicit-any
|
|
519
|
+
isContainSkeleton.firstChild.appendChild(liElement);
|
|
520
|
+
}
|
|
521
|
+
}
|
|
522
|
+
if (this.totalItemCount === this.viewPortInfo.endIndex) {
|
|
523
|
+
isContainSkeleton.querySelectorAll('.e-virtual-list-end').forEach(function (el) { return el.remove(); });
|
|
524
|
+
}
|
|
525
|
+
}
|
|
502
526
|
}
|
|
503
527
|
};
|
|
504
528
|
DropDownBase.prototype.getLocaleName = function () {
|
|
@@ -779,7 +803,9 @@ var DropDownBase = /** @class */ (function (_super) {
|
|
|
779
803
|
_this.preventPopupOpen = false;
|
|
780
804
|
return;
|
|
781
805
|
}
|
|
806
|
+
var isSetCurrentcall = false;
|
|
782
807
|
if (_this.isVirtualizationEnabled && _this.setCurrentView) {
|
|
808
|
+
isSetCurrentcall = true;
|
|
783
809
|
_this.notify('setCurrentViewDataAsync', {
|
|
784
810
|
module: 'VirtualScroll'
|
|
785
811
|
});
|
|
@@ -787,7 +813,8 @@ var DropDownBase = /** @class */ (function (_super) {
|
|
|
787
813
|
if (_this.keyboardEvent != null) {
|
|
788
814
|
_this.handleVirtualKeyboardActions(_this.keyboardEvent, _this.pageCount);
|
|
789
815
|
}
|
|
790
|
-
|
|
816
|
+
var preventSkeleton = _this.getModuleName() !== 'multiselect' || (_this.getModuleName() === 'multiselect' && (!(_this.dataSource instanceof DataManager) || (_this.dataSource instanceof DataManager && !isSetCurrentcall)));
|
|
817
|
+
if (_this.isVirtualizationEnabled && preventSkeleton) {
|
|
791
818
|
_this.getFilteringSkeletonCount();
|
|
792
819
|
_this.updatePopupPosition();
|
|
793
820
|
}
|
|
@@ -1032,10 +1059,12 @@ var DropDownBase = /** @class */ (function (_super) {
|
|
|
1032
1059
|
DropDownBase.prototype.postRender = function (listElement, list, bindEvent) {
|
|
1033
1060
|
if (this.fields.disabled) {
|
|
1034
1061
|
var liCollections = listElement.querySelectorAll('.' + dropDownBaseClasses.li);
|
|
1062
|
+
var data = this.sortOrder !== 'None' ? !isNullOrUndefined(this.fields.groupBy) ?
|
|
1063
|
+
this.sortedData.filter(function (item) { return !('isHeader' in item) || item.isHeader !== true; }) : this.sortedData : this.listData;
|
|
1035
1064
|
for (var index = 0; index < liCollections.length; index++) {
|
|
1036
|
-
if (JSON.parse(JSON.stringify(
|
|
1065
|
+
if (JSON.parse(JSON.stringify(data[index]))[this.fields.disabled]) {
|
|
1037
1066
|
if (!isNullOrUndefined(this.fields.groupBy)) {
|
|
1038
|
-
var item =
|
|
1067
|
+
var item = data[index];
|
|
1039
1068
|
var value = getValue((this.fields.value ? this.fields.value : 'value'), item);
|
|
1040
1069
|
var li = listElement.querySelector('li[data-value="' + value + '"]');
|
|
1041
1070
|
if (!isNullOrUndefined(li)) {
|
|
@@ -1077,6 +1106,18 @@ var DropDownBase = /** @class */ (function (_super) {
|
|
|
1077
1106
|
DropDownBase.prototype.getQuery = function (query) {
|
|
1078
1107
|
return query ? query : this.query ? this.query : new Query();
|
|
1079
1108
|
};
|
|
1109
|
+
DropDownBase.prototype.performFiltering = function (e) {
|
|
1110
|
+
// this is for component wise
|
|
1111
|
+
};
|
|
1112
|
+
DropDownBase.prototype.debouncedFiltering = function (e, debounceDelay) {
|
|
1113
|
+
var _this = this;
|
|
1114
|
+
if (this.debounceTimer !== null) {
|
|
1115
|
+
clearTimeout(this.debounceTimer);
|
|
1116
|
+
}
|
|
1117
|
+
this.debounceTimer = setTimeout(function () {
|
|
1118
|
+
_this.performFiltering(e);
|
|
1119
|
+
}, debounceDelay);
|
|
1120
|
+
};
|
|
1080
1121
|
DropDownBase.prototype.updateVirtualizationProperties = function (itemCount, filtering, isCheckbox) {
|
|
1081
1122
|
this.isVirtualizationEnabled = true;
|
|
1082
1123
|
this.virtualizedItemsCount = itemCount;
|
|
@@ -1258,9 +1299,10 @@ var DropDownBase = /** @class */ (function (_super) {
|
|
|
1258
1299
|
* @param {object[]} listData - Specifies the list of array of data.
|
|
1259
1300
|
* @param {FieldSettingsModel} fields - Maps the columns of the data table and binds the data to the component.
|
|
1260
1301
|
* @param {boolean} isCheckBoxUpdate - Specifies whether the list item is updated with checkbox.
|
|
1302
|
+
* @param {boolean} isClearAll - Specifies whether the current action is clearAll.
|
|
1261
1303
|
* @returns {HTMLElement} Return the list items.
|
|
1262
1304
|
*/
|
|
1263
|
-
DropDownBase.prototype.renderItems = function (listData, fields, isCheckBoxUpdate) {
|
|
1305
|
+
DropDownBase.prototype.renderItems = function (listData, fields, isCheckBoxUpdate, isClearAll) {
|
|
1264
1306
|
var ulElement;
|
|
1265
1307
|
if (this.itemTemplate && listData) {
|
|
1266
1308
|
if (this.getModuleName() === 'multiselect' && this.virtualSelectAll) {
|
|
@@ -1314,7 +1356,7 @@ var DropDownBase = /** @class */ (function (_super) {
|
|
|
1314
1356
|
}
|
|
1315
1357
|
}
|
|
1316
1358
|
else {
|
|
1317
|
-
if (this.getModuleName() === 'multiselect' && this.virtualSelectAll) {
|
|
1359
|
+
if (this.getModuleName() === 'multiselect' && (this.virtualSelectAll && !isClearAll)) {
|
|
1318
1360
|
this.virtualSelectAllData = listData;
|
|
1319
1361
|
listData = listData.slice(this.virtualItemStartIndex, this.virtualItemEndIndex);
|
|
1320
1362
|
}
|
|
@@ -1333,11 +1375,13 @@ var DropDownBase = /** @class */ (function (_super) {
|
|
|
1333
1375
|
oldUlElement = this.list.querySelector('.e-list-parent' + '.e-reorder');
|
|
1334
1376
|
}
|
|
1335
1377
|
if ((listData.length >= this.virtualizedItemsCount && oldUlElement && virtualUlElement) || (oldUlElement && virtualUlElement && this.isAllowFiltering) || (oldUlElement && virtualUlElement && (this.getModuleName() === 'autocomplete' || this.getModuleName() === 'multiselect')) || isRemovedUlelement) {
|
|
1336
|
-
if (!this.
|
|
1337
|
-
|
|
1338
|
-
|
|
1339
|
-
|
|
1340
|
-
|
|
1378
|
+
if (this.getModuleName() !== 'multiselect' || (this.getModuleName() === 'multiselect' && (!(this.dataSource instanceof DataManager) || (this.dataSource instanceof DataManager && !this.setCurrentView)))) {
|
|
1379
|
+
if (!this.appendUncheckList) {
|
|
1380
|
+
virtualUlElement.replaceChild(ulElement, oldUlElement);
|
|
1381
|
+
}
|
|
1382
|
+
else {
|
|
1383
|
+
virtualUlElement.appendChild(ulElement);
|
|
1384
|
+
}
|
|
1341
1385
|
}
|
|
1342
1386
|
this.updateListElements(listData);
|
|
1343
1387
|
}
|
|
@@ -145,6 +145,13 @@ export interface DropDownListModel extends DropDownBaseModel{
|
|
|
145
145
|
*/
|
|
146
146
|
allowFiltering?: boolean;
|
|
147
147
|
|
|
148
|
+
/**
|
|
149
|
+
* Specifies the delay time in milliseconds for filtering operations.
|
|
150
|
+
*
|
|
151
|
+
* @default 300
|
|
152
|
+
*/
|
|
153
|
+
debounceDelay?: number;
|
|
154
|
+
|
|
148
155
|
/**
|
|
149
156
|
* Defines whether the popup opens in fullscreen mode on mobile devices when filtering is enabled. When set to false, the popup will display similarly on both mobile and desktop devices.
|
|
150
157
|
*
|
|
@@ -248,6 +248,12 @@ export declare class DropDownList extends DropDownBase implements IInput {
|
|
|
248
248
|
* @default false
|
|
249
249
|
*/
|
|
250
250
|
allowFiltering: boolean;
|
|
251
|
+
/**
|
|
252
|
+
* Specifies the delay time in milliseconds for filtering operations.
|
|
253
|
+
*
|
|
254
|
+
* @default 300
|
|
255
|
+
*/
|
|
256
|
+
debounceDelay: number;
|
|
251
257
|
/**
|
|
252
258
|
* Defines whether the popup opens in fullscreen mode on mobile devices when filtering is enabled. When set to false, the popup will display similarly on both mobile and desktop devices.
|
|
253
259
|
*
|
|
@@ -549,6 +555,7 @@ export declare class DropDownList extends DropDownBase implements IInput {
|
|
|
549
555
|
protected getSelectionPoints(): {
|
|
550
556
|
[key: string]: number;
|
|
551
557
|
};
|
|
558
|
+
protected performFiltering(e: KeyboardEventArgs | MouseEvent): void;
|
|
552
559
|
protected searchLists(e: KeyboardEventArgs | MouseEvent): void;
|
|
553
560
|
/**
|
|
554
561
|
* To filter the data from given data source by using query
|
|
@@ -2064,8 +2064,31 @@ var DropDownList = /** @class */ (function (_super) {
|
|
|
2064
2064
|
var input = this.inputElement;
|
|
2065
2065
|
return { start: Math.abs(input.selectionStart), end: Math.abs(input.selectionEnd) };
|
|
2066
2066
|
};
|
|
2067
|
-
DropDownList.prototype.
|
|
2067
|
+
DropDownList.prototype.performFiltering = function (e) {
|
|
2068
2068
|
var _this = this;
|
|
2069
|
+
this.checkAndResetCache();
|
|
2070
|
+
this.isRequesting = false;
|
|
2071
|
+
var eventArgs = {
|
|
2072
|
+
preventDefaultAction: false,
|
|
2073
|
+
text: this.filterInput.value,
|
|
2074
|
+
updateData: function (dataSource, query, fields) {
|
|
2075
|
+
if (eventArgs.cancel) {
|
|
2076
|
+
return;
|
|
2077
|
+
}
|
|
2078
|
+
_this.isCustomFilter = true;
|
|
2079
|
+
_this.customFilterQuery = query ? query.clone() : query;
|
|
2080
|
+
_this.filteringAction(dataSource, query, fields);
|
|
2081
|
+
},
|
|
2082
|
+
baseEventArgs: e,
|
|
2083
|
+
cancel: false
|
|
2084
|
+
};
|
|
2085
|
+
this.trigger('filtering', eventArgs, function (eventArgs) {
|
|
2086
|
+
if (!eventArgs.cancel && !_this.isCustomFilter && !eventArgs.preventDefaultAction) {
|
|
2087
|
+
_this.filteringAction(_this.dataSource, null, _this.fields);
|
|
2088
|
+
}
|
|
2089
|
+
});
|
|
2090
|
+
};
|
|
2091
|
+
DropDownList.prototype.searchLists = function (e) {
|
|
2069
2092
|
this.isTyped = true;
|
|
2070
2093
|
this.activeIndex = null;
|
|
2071
2094
|
this.isListSearched = true;
|
|
@@ -2075,27 +2098,12 @@ var DropDownList = /** @class */ (function (_super) {
|
|
|
2075
2098
|
}
|
|
2076
2099
|
this.isDataFetched = false;
|
|
2077
2100
|
if (this.isFiltering()) {
|
|
2078
|
-
this.
|
|
2079
|
-
|
|
2080
|
-
|
|
2081
|
-
|
|
2082
|
-
|
|
2083
|
-
|
|
2084
|
-
if (eventArgs_1.cancel) {
|
|
2085
|
-
return;
|
|
2086
|
-
}
|
|
2087
|
-
_this.isCustomFilter = true;
|
|
2088
|
-
_this.customFilterQuery = query ? query.clone() : query;
|
|
2089
|
-
_this.filteringAction(dataSource, query, fields);
|
|
2090
|
-
},
|
|
2091
|
-
baseEventArgs: e,
|
|
2092
|
-
cancel: false
|
|
2093
|
-
};
|
|
2094
|
-
this.trigger('filtering', eventArgs_1, function (eventArgs) {
|
|
2095
|
-
if (!eventArgs.cancel && !_this.isCustomFilter && !eventArgs.preventDefaultAction) {
|
|
2096
|
-
_this.filteringAction(_this.dataSource, null, _this.fields);
|
|
2097
|
-
}
|
|
2098
|
-
});
|
|
2101
|
+
if (this.typedString !== '' && this.debounceDelay > 0) {
|
|
2102
|
+
this.debouncedFiltering(e, this.debounceDelay);
|
|
2103
|
+
}
|
|
2104
|
+
else {
|
|
2105
|
+
this.performFiltering(e);
|
|
2106
|
+
}
|
|
2099
2107
|
}
|
|
2100
2108
|
};
|
|
2101
2109
|
/**
|
|
@@ -2365,7 +2373,19 @@ var DropDownList = /** @class */ (function (_super) {
|
|
|
2365
2373
|
this.dataSource.executeQuery(this.getQuery(this.query).where(new Predicate(checkField_1, 'equal', value_1)))
|
|
2366
2374
|
.then(function (e) {
|
|
2367
2375
|
if (e.result.length > 0) {
|
|
2368
|
-
_this.
|
|
2376
|
+
if (!_this.enableVirtualization) {
|
|
2377
|
+
_this.addItem(e.result, list.length);
|
|
2378
|
+
}
|
|
2379
|
+
else {
|
|
2380
|
+
_this.itemData = e.result[0];
|
|
2381
|
+
var dataItem = _this.getItemData();
|
|
2382
|
+
var value_2 = _this.allowObjectBinding ?
|
|
2383
|
+
_this.getDataByValue(dataItem.value) : dataItem.value;
|
|
2384
|
+
if ((_this.value === dataItem.value && _this.text !== dataItem.text) ||
|
|
2385
|
+
(_this.value !== dataItem.value && _this.text === dataItem.text)) {
|
|
2386
|
+
_this.setProperties({ 'text': dataItem.text ? dataItem.text.toString() : dataItem.text, 'value': value_2 });
|
|
2387
|
+
}
|
|
2388
|
+
}
|
|
2369
2389
|
_this.updateValues();
|
|
2370
2390
|
}
|
|
2371
2391
|
else {
|
|
@@ -2492,10 +2512,10 @@ var DropDownList = /** @class */ (function (_super) {
|
|
|
2492
2512
|
DropDownList.prototype.addNewItem = function (listData, newElement) {
|
|
2493
2513
|
var _this = this;
|
|
2494
2514
|
if (!isNullOrUndefined(this.itemData) && !isNullOrUndefined(newElement)) {
|
|
2495
|
-
var
|
|
2515
|
+
var value_3 = this.getItemData().value;
|
|
2496
2516
|
var isExist = listData.some(function (data) {
|
|
2497
|
-
return (((typeof data === 'string' || typeof data === 'number' || typeof data === 'boolean') && data ===
|
|
2498
|
-
(getValue(_this.fields.value, data) ===
|
|
2517
|
+
return (((typeof data === 'string' || typeof data === 'number' || typeof data === 'boolean') && data === value_3) ||
|
|
2518
|
+
(getValue(_this.fields.value, data) === value_3));
|
|
2499
2519
|
});
|
|
2500
2520
|
if (!isExist) {
|
|
2501
2521
|
this.addItem(this.itemData);
|
|
@@ -3872,9 +3892,9 @@ var DropDownList = /** @class */ (function (_super) {
|
|
|
3872
3892
|
var listLength_2 = this_1.getItems().length;
|
|
3873
3893
|
var checkField = isNullOrUndefined(this_1.fields.value) ? this_1.fields.text : this_1.fields.value;
|
|
3874
3894
|
this_1.typedString = '';
|
|
3875
|
-
var
|
|
3895
|
+
var value_4 = this_1.allowObjectBinding && !isNullOrUndefined(newProp.value) ?
|
|
3876
3896
|
getValue(checkField, newProp.value) : newProp.value;
|
|
3877
|
-
this_1.dataSource.executeQuery(this_1.getQuery(this_1.query).where(new Predicate(checkField, 'equal',
|
|
3897
|
+
this_1.dataSource.executeQuery(this_1.getQuery(this_1.query).where(new Predicate(checkField, 'equal', value_4)))
|
|
3878
3898
|
.then(function (e) {
|
|
3879
3899
|
if (e.result.length > 0) {
|
|
3880
3900
|
_this.addItem(e.result, listLength_2);
|
|
@@ -4331,6 +4351,7 @@ var DropDownList = /** @class */ (function (_super) {
|
|
|
4331
4351
|
this.inputElement.classList.remove('e-input');
|
|
4332
4352
|
Input.setValue('', this.inputElement, this.floatLabelType, this.showClearButton);
|
|
4333
4353
|
}
|
|
4354
|
+
this.element.removeAttribute('tabindex');
|
|
4334
4355
|
this.element.style.display = 'block';
|
|
4335
4356
|
if (this.inputWrapper.container && this.inputWrapper.container.parentElement) {
|
|
4336
4357
|
if (this.inputWrapper.container.parentElement.tagName === this.getNgDirective()) {
|
|
@@ -4450,6 +4471,9 @@ var DropDownList = /** @class */ (function (_super) {
|
|
|
4450
4471
|
__decorate([
|
|
4451
4472
|
Property(false)
|
|
4452
4473
|
], DropDownList.prototype, "allowFiltering", void 0);
|
|
4474
|
+
__decorate([
|
|
4475
|
+
Property(300)
|
|
4476
|
+
], DropDownList.prototype, "debounceDelay", void 0);
|
|
4453
4477
|
__decorate([
|
|
4454
4478
|
Property(true)
|
|
4455
4479
|
], DropDownList.prototype, "isDeviceFullScreen", void 0);
|
|
@@ -778,6 +778,7 @@ export declare class DropDownTree extends Component<HTMLElement> implements INot
|
|
|
778
778
|
private wireTreeEvents;
|
|
779
779
|
private wireCheckAllWrapperEvents;
|
|
780
780
|
private unWireEvents;
|
|
781
|
+
private handleIosTouch;
|
|
781
782
|
private dropDownClick;
|
|
782
783
|
private mouseIn;
|
|
783
784
|
private onMouseLeave;
|
|
@@ -647,6 +647,9 @@ var DropDownTree = /** @class */ (function (_super) {
|
|
|
647
647
|
};
|
|
648
648
|
/* To wire events for the dropdown tree */
|
|
649
649
|
DropDownTree.prototype.wireEvents = function () {
|
|
650
|
+
if (Browser.isIos) {
|
|
651
|
+
EventHandler.add(this.inputWrapper, 'touchstart', this.handleIosTouch, this);
|
|
652
|
+
}
|
|
650
653
|
EventHandler.add(this.inputWrapper, 'mouseup', this.dropDownClick, this);
|
|
651
654
|
EventHandler.add(this.inputWrapper, 'focus', this.focusIn, this);
|
|
652
655
|
EventHandler.add(this.inputWrapper, 'blur', this.focusOut, this);
|
|
@@ -680,6 +683,9 @@ var DropDownTree = /** @class */ (function (_super) {
|
|
|
680
683
|
};
|
|
681
684
|
/* To unwire events for the dropdown tree */
|
|
682
685
|
DropDownTree.prototype.unWireEvents = function () {
|
|
686
|
+
if (Browser.isIos) {
|
|
687
|
+
EventHandler.remove(this.inputWrapper, 'touchstart', this.handleIosTouch);
|
|
688
|
+
}
|
|
683
689
|
EventHandler.remove(this.inputWrapper, 'mouseup', this.dropDownClick);
|
|
684
690
|
EventHandler.remove(this.inputWrapper, 'focus', this.focusIn);
|
|
685
691
|
EventHandler.remove(this.inputWrapper, 'blur', this.focusOut);
|
|
@@ -697,6 +703,11 @@ var DropDownTree = /** @class */ (function (_super) {
|
|
|
697
703
|
}
|
|
698
704
|
document.removeEventListener('mousedown', this.documentClickContext);
|
|
699
705
|
};
|
|
706
|
+
/* Handles touch events specifically for iOS devices */
|
|
707
|
+
DropDownTree.prototype.handleIosTouch = function (e) {
|
|
708
|
+
e.preventDefault();
|
|
709
|
+
this.dropDownClick(e);
|
|
710
|
+
};
|
|
700
711
|
/* Trigger when the dropdown is clicked */
|
|
701
712
|
DropDownTree.prototype.dropDownClick = function (e) {
|
|
702
713
|
if (!this.enabled || this.readonly) {
|
|
@@ -116,6 +116,13 @@ export interface MentionModel {
|
|
|
116
116
|
*/
|
|
117
117
|
popupHeight?: string | number;
|
|
118
118
|
|
|
119
|
+
/**
|
|
120
|
+
* Specifies the delay time in milliseconds for filtering operations.
|
|
121
|
+
*
|
|
122
|
+
* @default 300
|
|
123
|
+
*/
|
|
124
|
+
debounceDelay?: number;
|
|
125
|
+
|
|
119
126
|
/**
|
|
120
127
|
* Specifies the template for the selected value from the suggestion list.
|
|
121
128
|
*
|
package/src/mention/mention.d.ts
CHANGED
|
@@ -59,6 +59,7 @@ export declare class Mention extends DropDownBase {
|
|
|
59
59
|
private isUpDownKey;
|
|
60
60
|
private isRTE;
|
|
61
61
|
private keyEventName;
|
|
62
|
+
protected debounceTimer: ReturnType<typeof setTimeout> | null;
|
|
62
63
|
/**
|
|
63
64
|
* Defines class/multiple classes separated by a space for the mention component.
|
|
64
65
|
*
|
|
@@ -155,6 +156,12 @@ export declare class Mention extends DropDownBase {
|
|
|
155
156
|
* @aspType string
|
|
156
157
|
*/
|
|
157
158
|
popupHeight: string | number;
|
|
159
|
+
/**
|
|
160
|
+
* Specifies the delay time in milliseconds for filtering operations.
|
|
161
|
+
*
|
|
162
|
+
* @default 300
|
|
163
|
+
*/
|
|
164
|
+
debounceDelay: number;
|
|
158
165
|
/**
|
|
159
166
|
* Specifies the template for the selected value from the suggestion list.
|
|
160
167
|
*
|
|
@@ -373,6 +380,7 @@ export declare class Mention extends DropDownBase {
|
|
|
373
380
|
private onKeyUp;
|
|
374
381
|
private isMatchedText;
|
|
375
382
|
private getCurrentRange;
|
|
383
|
+
protected performFiltering(e: KeyboardEventArgs | MouseEvent): void;
|
|
376
384
|
private searchLists;
|
|
377
385
|
private filterAction;
|
|
378
386
|
protected onActionComplete(ulElement: HTMLElement, list: {
|