@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.
Files changed (42) hide show
  1. package/dist/ej2-dropdowns.min.js +2 -2
  2. package/dist/ej2-dropdowns.umd.min.js +2 -2
  3. package/dist/ej2-dropdowns.umd.min.js.map +1 -1
  4. package/dist/es6/ej2-dropdowns.es2015.js +229 -96
  5. package/dist/es6/ej2-dropdowns.es2015.js.map +1 -1
  6. package/dist/es6/ej2-dropdowns.es5.js +240 -105
  7. package/dist/es6/ej2-dropdowns.es5.js.map +1 -1
  8. package/dist/global/ej2-dropdowns.min.js +2 -2
  9. package/dist/global/ej2-dropdowns.min.js.map +1 -1
  10. package/dist/global/index.d.ts +1 -1
  11. package/package.json +12 -12
  12. package/src/auto-complete/auto-complete.d.ts +1 -0
  13. package/src/auto-complete/auto-complete.js +9 -1
  14. package/src/combo-box/combo-box-model.d.ts +0 -8
  15. package/src/combo-box/combo-box.d.ts +0 -7
  16. package/src/combo-box/combo-box.js +0 -3
  17. package/src/common/virtual-scroll.js +8 -3
  18. package/src/drop-down-base/drop-down-base.d.ts +5 -1
  19. package/src/drop-down-base/drop-down-base.js +54 -10
  20. package/src/drop-down-list/drop-down-list-model.d.ts +7 -0
  21. package/src/drop-down-list/drop-down-list.d.ts +7 -0
  22. package/src/drop-down-list/drop-down-list.js +52 -28
  23. package/src/drop-down-tree/drop-down-tree.d.ts +1 -0
  24. package/src/drop-down-tree/drop-down-tree.js +11 -0
  25. package/src/mention/mention-model.d.ts +7 -0
  26. package/src/mention/mention.d.ts +8 -0
  27. package/src/mention/mention.js +29 -16
  28. package/src/multi-select/multi-select-model.d.ts +7 -0
  29. package/src/multi-select/multi-select.d.ts +9 -0
  30. package/src/multi-select/multi-select.js +77 -44
  31. package/styles/bds-lite.css +1 -1
  32. package/styles/bds.css +1 -1
  33. package/styles/multi-select/_bds-definition.scss +1 -0
  34. package/styles/multi-select/_layout.scss +6 -1
  35. package/styles/multi-select/_tailwind-definition.scss +1 -0
  36. package/styles/multi-select/bds.css +1 -1
  37. package/styles/multi-select/tailwind-dark.css +1 -1
  38. package/styles/multi-select/tailwind.css +1 -1
  39. package/styles/tailwind-dark-lite.css +1 -1
  40. package/styles/tailwind-dark.css +1 -1
  41. package/styles/tailwind-lite.css +1 -1
  42. package/styles/tailwind.css +1 -1
@@ -545,6 +545,7 @@ var VirtualScroll = /** @__PURE__ @class */ (function () {
545
545
  query = query.skip(this.parent.viewPortInfo.startIndex);
546
546
  }
547
547
  this.parent.setCurrentView = false;
548
+ this.parent.isPreventScrollAction = true;
548
549
  this.parent.resetList(this.parent.dataSource, this.parent.fields, query);
549
550
  isResetListCalled = true;
550
551
  break;
@@ -592,6 +593,7 @@ var VirtualScroll = /** @__PURE__ @class */ (function () {
592
593
  }
593
594
  }
594
595
  this.parent.renderItems(currentData, this.parent.fields, this.component === 'multiselect' && this.parent.mode === 'CheckBox');
596
+ this.parent.updateSelectionList();
595
597
  }
596
598
  if (this.component === 'multiselect') {
597
599
  this.parent.updatevirtualizationList();
@@ -603,7 +605,8 @@ var VirtualScroll = /** @__PURE__ @class */ (function () {
603
605
  (this.parent.totalItemCount <= this.parent.itemCount))) ? 0 : this.parent.skeletonCount;
604
606
  // eslint-disable-next-line @typescript-eslint/no-explicit-any
605
607
  var virtualTrackElement = this.parent.list.getElementsByClassName('e-virtual-ddl')[0];
606
- if (virtualTrackElement) {
608
+ var preventAction = this.component !== 'multiselect' || (this.component === 'multiselect' && ((!(this.parent.dataSource instanceof DataManager))) || (this.parent.dataSource instanceof DataManager && !isResetListCalled));
609
+ if (virtualTrackElement && preventAction) {
607
610
  virtualTrackElement.style = this.parent.GetVirtualTrackHeight();
608
611
  }
609
612
  else if (!virtualTrackElement && this.parent.skeletonCount > 0 && this.parent.popupWrapper) {
@@ -612,11 +615,13 @@ var VirtualScroll = /** @__PURE__ @class */ (function () {
612
615
  });
613
616
  this.parent.popupWrapper.querySelector('.e-dropdownbase').appendChild(virualElement);
614
617
  }
615
- this.parent.UpdateSkeleton();
618
+ if (this.component !== 'multiselect' || (this.component === 'multiselect' && ((!(this.parent.dataSource instanceof DataManager))) || (this.parent.dataSource instanceof DataManager && (!isResetListCalled || this.parent.viewPortInfo.startIndex === 0)))) {
619
+ this.parent.UpdateSkeleton();
620
+ }
616
621
  this.parent.liCollections = this.parent.list.querySelectorAll('.e-list-item');
617
622
  // eslint-disable-next-line @typescript-eslint/no-explicit-any
618
623
  var virtualContentElement = this.parent.list.getElementsByClassName('e-virtual-ddl-content')[0];
619
- if (virtualContentElement) {
624
+ if (virtualContentElement && preventAction) {
620
625
  (virtualContentElement).style = this.parent.getTransformValues();
621
626
  }
622
627
  if (this.parent.fields.groupBy) {
@@ -989,6 +994,7 @@ var DropDownBase = /** @__PURE__ @class */ (function (_super) {
989
994
  _this.isDynamicData = false;
990
995
  _this.isPrimitiveData = false;
991
996
  _this.isCustomFiltering = false;
997
+ _this.debounceTimer = null;
992
998
  _this.virtualListInfo = {
993
999
  currentPageNumber: null,
994
1000
  direction: null,
@@ -1350,6 +1356,29 @@ var DropDownBase = /** @__PURE__ @class */ (function (_super) {
1350
1356
  isContainSkeleton.firstChild.insertBefore(liElement, isContainSkeleton.firstChild.children[0]);
1351
1357
  }
1352
1358
  }
1359
+ if (this.getModuleName() === 'multiselect') {
1360
+ for (var i = 0; i < totalSkeletonCount && this.totalItemCount !== this.viewPortInfo.endIndex; i++) {
1361
+ var liElement = this.createElement('li', { className: dropDownBaseClasses.virtualList + " e-virtual-list-end", styles: 'overflow: inherit' });
1362
+ if (this.isVirtualizationEnabled && this.itemTemplate) {
1363
+ liElement.style.height = (this.listItemHeight - parseInt(window.getComputedStyle(this.getItems()[1]).marginBottom, 10)) + 'px';
1364
+ }
1365
+ var skeleton = new Skeleton({
1366
+ shape: 'Text',
1367
+ height: '10px',
1368
+ width: '95%',
1369
+ cssClass: 'e-skeleton-text-end'
1370
+ });
1371
+ skeleton.appendTo(this.createElement('div'));
1372
+ liElement.appendChild(skeleton.element);
1373
+ if (isContainSkeleton.firstChild) {
1374
+ // eslint-disable-next-line @typescript-eslint/no-explicit-any
1375
+ isContainSkeleton.firstChild.appendChild(liElement);
1376
+ }
1377
+ }
1378
+ if (this.totalItemCount === this.viewPortInfo.endIndex) {
1379
+ isContainSkeleton.querySelectorAll('.e-virtual-list-end').forEach(function (el) { return el.remove(); });
1380
+ }
1381
+ }
1353
1382
  }
1354
1383
  };
1355
1384
  DropDownBase.prototype.getLocaleName = function () {
@@ -1630,7 +1659,9 @@ var DropDownBase = /** @__PURE__ @class */ (function (_super) {
1630
1659
  _this.preventPopupOpen = false;
1631
1660
  return;
1632
1661
  }
1662
+ var isSetCurrentcall = false;
1633
1663
  if (_this.isVirtualizationEnabled && _this.setCurrentView) {
1664
+ isSetCurrentcall = true;
1634
1665
  _this.notify('setCurrentViewDataAsync', {
1635
1666
  module: 'VirtualScroll'
1636
1667
  });
@@ -1638,7 +1669,8 @@ var DropDownBase = /** @__PURE__ @class */ (function (_super) {
1638
1669
  if (_this.keyboardEvent != null) {
1639
1670
  _this.handleVirtualKeyboardActions(_this.keyboardEvent, _this.pageCount);
1640
1671
  }
1641
- if (_this.isVirtualizationEnabled) {
1672
+ var preventSkeleton = _this.getModuleName() !== 'multiselect' || (_this.getModuleName() === 'multiselect' && (!(_this.dataSource instanceof DataManager) || (_this.dataSource instanceof DataManager && !isSetCurrentcall)));
1673
+ if (_this.isVirtualizationEnabled && preventSkeleton) {
1642
1674
  _this.getFilteringSkeletonCount();
1643
1675
  _this.updatePopupPosition();
1644
1676
  }
@@ -1883,10 +1915,12 @@ var DropDownBase = /** @__PURE__ @class */ (function (_super) {
1883
1915
  DropDownBase.prototype.postRender = function (listElement, list, bindEvent) {
1884
1916
  if (this.fields.disabled) {
1885
1917
  var liCollections = listElement.querySelectorAll('.' + dropDownBaseClasses.li);
1918
+ var data = this.sortOrder !== 'None' ? !isNullOrUndefined(this.fields.groupBy) ?
1919
+ this.sortedData.filter(function (item) { return !('isHeader' in item) || item.isHeader !== true; }) : this.sortedData : this.listData;
1886
1920
  for (var index = 0; index < liCollections.length; index++) {
1887
- if (JSON.parse(JSON.stringify(this.listData[index]))[this.fields.disabled]) {
1921
+ if (JSON.parse(JSON.stringify(data[index]))[this.fields.disabled]) {
1888
1922
  if (!isNullOrUndefined(this.fields.groupBy)) {
1889
- var item = this.listData[index];
1923
+ var item = data[index];
1890
1924
  var value = getValue((this.fields.value ? this.fields.value : 'value'), item);
1891
1925
  var li = listElement.querySelector('li[data-value="' + value + '"]');
1892
1926
  if (!isNullOrUndefined(li)) {
@@ -1928,6 +1962,18 @@ var DropDownBase = /** @__PURE__ @class */ (function (_super) {
1928
1962
  DropDownBase.prototype.getQuery = function (query) {
1929
1963
  return query ? query : this.query ? this.query : new Query();
1930
1964
  };
1965
+ DropDownBase.prototype.performFiltering = function (e) {
1966
+ // this is for component wise
1967
+ };
1968
+ DropDownBase.prototype.debouncedFiltering = function (e, debounceDelay) {
1969
+ var _this = this;
1970
+ if (this.debounceTimer !== null) {
1971
+ clearTimeout(this.debounceTimer);
1972
+ }
1973
+ this.debounceTimer = setTimeout(function () {
1974
+ _this.performFiltering(e);
1975
+ }, debounceDelay);
1976
+ };
1931
1977
  DropDownBase.prototype.updateVirtualizationProperties = function (itemCount, filtering, isCheckbox) {
1932
1978
  this.isVirtualizationEnabled = true;
1933
1979
  this.virtualizedItemsCount = itemCount;
@@ -2101,9 +2147,10 @@ var DropDownBase = /** @__PURE__ @class */ (function (_super) {
2101
2147
  * @param {object[]} listData - Specifies the list of array of data.
2102
2148
  * @param {FieldSettingsModel} fields - Maps the columns of the data table and binds the data to the component.
2103
2149
  * @param {boolean} isCheckBoxUpdate - Specifies whether the list item is updated with checkbox.
2150
+ * @param {boolean} isClearAll - Specifies whether the current action is clearAll.
2104
2151
  * @returns {HTMLElement} Return the list items.
2105
2152
  */
2106
- DropDownBase.prototype.renderItems = function (listData, fields, isCheckBoxUpdate) {
2153
+ DropDownBase.prototype.renderItems = function (listData, fields, isCheckBoxUpdate, isClearAll) {
2107
2154
  var ulElement;
2108
2155
  if (this.itemTemplate && listData) {
2109
2156
  if (this.getModuleName() === 'multiselect' && this.virtualSelectAll) {
@@ -2157,7 +2204,7 @@ var DropDownBase = /** @__PURE__ @class */ (function (_super) {
2157
2204
  }
2158
2205
  }
2159
2206
  else {
2160
- if (this.getModuleName() === 'multiselect' && this.virtualSelectAll) {
2207
+ if (this.getModuleName() === 'multiselect' && (this.virtualSelectAll && !isClearAll)) {
2161
2208
  this.virtualSelectAllData = listData;
2162
2209
  listData = listData.slice(this.virtualItemStartIndex, this.virtualItemEndIndex);
2163
2210
  }
@@ -2176,11 +2223,13 @@ var DropDownBase = /** @__PURE__ @class */ (function (_super) {
2176
2223
  oldUlElement = this.list.querySelector('.e-list-parent' + '.e-reorder');
2177
2224
  }
2178
2225
  if ((listData.length >= this.virtualizedItemsCount && oldUlElement && virtualUlElement) || (oldUlElement && virtualUlElement && this.isAllowFiltering) || (oldUlElement && virtualUlElement && (this.getModuleName() === 'autocomplete' || this.getModuleName() === 'multiselect')) || isRemovedUlelement) {
2179
- if (!this.appendUncheckList) {
2180
- virtualUlElement.replaceChild(ulElement, oldUlElement);
2181
- }
2182
- else {
2183
- virtualUlElement.appendChild(ulElement);
2226
+ if (this.getModuleName() !== 'multiselect' || (this.getModuleName() === 'multiselect' && (!(this.dataSource instanceof DataManager) || (this.dataSource instanceof DataManager && !this.setCurrentView)))) {
2227
+ if (!this.appendUncheckList) {
2228
+ virtualUlElement.replaceChild(ulElement, oldUlElement);
2229
+ }
2230
+ else {
2231
+ virtualUlElement.appendChild(ulElement);
2232
+ }
2184
2233
  }
2185
2234
  this.updateListElements(listData);
2186
2235
  }
@@ -4949,8 +4998,31 @@ var DropDownList = /** @__PURE__ @class */ (function (_super) {
4949
4998
  var input = this.inputElement;
4950
4999
  return { start: Math.abs(input.selectionStart), end: Math.abs(input.selectionEnd) };
4951
5000
  };
4952
- DropDownList.prototype.searchLists = function (e) {
5001
+ DropDownList.prototype.performFiltering = function (e) {
4953
5002
  var _this = this;
5003
+ this.checkAndResetCache();
5004
+ this.isRequesting = false;
5005
+ var eventArgs = {
5006
+ preventDefaultAction: false,
5007
+ text: this.filterInput.value,
5008
+ updateData: function (dataSource, query, fields) {
5009
+ if (eventArgs.cancel) {
5010
+ return;
5011
+ }
5012
+ _this.isCustomFilter = true;
5013
+ _this.customFilterQuery = query ? query.clone() : query;
5014
+ _this.filteringAction(dataSource, query, fields);
5015
+ },
5016
+ baseEventArgs: e,
5017
+ cancel: false
5018
+ };
5019
+ this.trigger('filtering', eventArgs, function (eventArgs) {
5020
+ if (!eventArgs.cancel && !_this.isCustomFilter && !eventArgs.preventDefaultAction) {
5021
+ _this.filteringAction(_this.dataSource, null, _this.fields);
5022
+ }
5023
+ });
5024
+ };
5025
+ DropDownList.prototype.searchLists = function (e) {
4954
5026
  this.isTyped = true;
4955
5027
  this.activeIndex = null;
4956
5028
  this.isListSearched = true;
@@ -4960,27 +5032,12 @@ var DropDownList = /** @__PURE__ @class */ (function (_super) {
4960
5032
  }
4961
5033
  this.isDataFetched = false;
4962
5034
  if (this.isFiltering()) {
4963
- this.checkAndResetCache();
4964
- this.isRequesting = false;
4965
- var eventArgs_1 = {
4966
- preventDefaultAction: false,
4967
- text: this.filterInput.value,
4968
- updateData: function (dataSource, query, fields) {
4969
- if (eventArgs_1.cancel) {
4970
- return;
4971
- }
4972
- _this.isCustomFilter = true;
4973
- _this.customFilterQuery = query ? query.clone() : query;
4974
- _this.filteringAction(dataSource, query, fields);
4975
- },
4976
- baseEventArgs: e,
4977
- cancel: false
4978
- };
4979
- this.trigger('filtering', eventArgs_1, function (eventArgs) {
4980
- if (!eventArgs.cancel && !_this.isCustomFilter && !eventArgs.preventDefaultAction) {
4981
- _this.filteringAction(_this.dataSource, null, _this.fields);
4982
- }
4983
- });
5035
+ if (this.typedString !== '' && this.debounceDelay > 0) {
5036
+ this.debouncedFiltering(e, this.debounceDelay);
5037
+ }
5038
+ else {
5039
+ this.performFiltering(e);
5040
+ }
4984
5041
  }
4985
5042
  };
4986
5043
  /**
@@ -5250,7 +5307,19 @@ var DropDownList = /** @__PURE__ @class */ (function (_super) {
5250
5307
  this.dataSource.executeQuery(this.getQuery(this.query).where(new Predicate(checkField_1, 'equal', value_1)))
5251
5308
  .then(function (e) {
5252
5309
  if (e.result.length > 0) {
5253
- _this.addItem(e.result, list.length);
5310
+ if (!_this.enableVirtualization) {
5311
+ _this.addItem(e.result, list.length);
5312
+ }
5313
+ else {
5314
+ _this.itemData = e.result[0];
5315
+ var dataItem = _this.getItemData();
5316
+ var value_2 = _this.allowObjectBinding ?
5317
+ _this.getDataByValue(dataItem.value) : dataItem.value;
5318
+ if ((_this.value === dataItem.value && _this.text !== dataItem.text) ||
5319
+ (_this.value !== dataItem.value && _this.text === dataItem.text)) {
5320
+ _this.setProperties({ 'text': dataItem.text ? dataItem.text.toString() : dataItem.text, 'value': value_2 });
5321
+ }
5322
+ }
5254
5323
  _this.updateValues();
5255
5324
  }
5256
5325
  else {
@@ -5377,10 +5446,10 @@ var DropDownList = /** @__PURE__ @class */ (function (_super) {
5377
5446
  DropDownList.prototype.addNewItem = function (listData, newElement) {
5378
5447
  var _this = this;
5379
5448
  if (!isNullOrUndefined(this.itemData) && !isNullOrUndefined(newElement)) {
5380
- var value_2 = this.getItemData().value;
5449
+ var value_3 = this.getItemData().value;
5381
5450
  var isExist = listData.some(function (data) {
5382
- return (((typeof data === 'string' || typeof data === 'number' || typeof data === 'boolean') && data === value_2) ||
5383
- (getValue(_this.fields.value, data) === value_2));
5451
+ return (((typeof data === 'string' || typeof data === 'number' || typeof data === 'boolean') && data === value_3) ||
5452
+ (getValue(_this.fields.value, data) === value_3));
5384
5453
  });
5385
5454
  if (!isExist) {
5386
5455
  this.addItem(this.itemData);
@@ -6755,9 +6824,9 @@ var DropDownList = /** @__PURE__ @class */ (function (_super) {
6755
6824
  var listLength_2 = this_1.getItems().length;
6756
6825
  var checkField = isNullOrUndefined(this_1.fields.value) ? this_1.fields.text : this_1.fields.value;
6757
6826
  this_1.typedString = '';
6758
- var value_3 = this_1.allowObjectBinding && !isNullOrUndefined(newProp.value) ?
6827
+ var value_4 = this_1.allowObjectBinding && !isNullOrUndefined(newProp.value) ?
6759
6828
  getValue(checkField, newProp.value) : newProp.value;
6760
- this_1.dataSource.executeQuery(this_1.getQuery(this_1.query).where(new Predicate(checkField, 'equal', value_3)))
6829
+ this_1.dataSource.executeQuery(this_1.getQuery(this_1.query).where(new Predicate(checkField, 'equal', value_4)))
6761
6830
  .then(function (e) {
6762
6831
  if (e.result.length > 0) {
6763
6832
  _this.addItem(e.result, listLength_2);
@@ -7214,6 +7283,7 @@ var DropDownList = /** @__PURE__ @class */ (function (_super) {
7214
7283
  this.inputElement.classList.remove('e-input');
7215
7284
  Input.setValue('', this.inputElement, this.floatLabelType, this.showClearButton);
7216
7285
  }
7286
+ this.element.removeAttribute('tabindex');
7217
7287
  this.element.style.display = 'block';
7218
7288
  if (this.inputWrapper.container && this.inputWrapper.container.parentElement) {
7219
7289
  if (this.inputWrapper.container.parentElement.tagName === this.getNgDirective()) {
@@ -7333,6 +7403,9 @@ var DropDownList = /** @__PURE__ @class */ (function (_super) {
7333
7403
  __decorate$1([
7334
7404
  Property(false)
7335
7405
  ], DropDownList.prototype, "allowFiltering", void 0);
7406
+ __decorate$1([
7407
+ Property(300)
7408
+ ], DropDownList.prototype, "debounceDelay", void 0);
7336
7409
  __decorate$1([
7337
7410
  Property(true)
7338
7411
  ], DropDownList.prototype, "isDeviceFullScreen", void 0);
@@ -8036,6 +8109,9 @@ var DropDownTree = /** @__PURE__ @class */ (function (_super) {
8036
8109
  };
8037
8110
  /* To wire events for the dropdown tree */
8038
8111
  DropDownTree.prototype.wireEvents = function () {
8112
+ if (Browser.isIos) {
8113
+ EventHandler.add(this.inputWrapper, 'touchstart', this.handleIosTouch, this);
8114
+ }
8039
8115
  EventHandler.add(this.inputWrapper, 'mouseup', this.dropDownClick, this);
8040
8116
  EventHandler.add(this.inputWrapper, 'focus', this.focusIn, this);
8041
8117
  EventHandler.add(this.inputWrapper, 'blur', this.focusOut, this);
@@ -8069,6 +8145,9 @@ var DropDownTree = /** @__PURE__ @class */ (function (_super) {
8069
8145
  };
8070
8146
  /* To unwire events for the dropdown tree */
8071
8147
  DropDownTree.prototype.unWireEvents = function () {
8148
+ if (Browser.isIos) {
8149
+ EventHandler.remove(this.inputWrapper, 'touchstart', this.handleIosTouch);
8150
+ }
8072
8151
  EventHandler.remove(this.inputWrapper, 'mouseup', this.dropDownClick);
8073
8152
  EventHandler.remove(this.inputWrapper, 'focus', this.focusIn);
8074
8153
  EventHandler.remove(this.inputWrapper, 'blur', this.focusOut);
@@ -8086,6 +8165,11 @@ var DropDownTree = /** @__PURE__ @class */ (function (_super) {
8086
8165
  }
8087
8166
  document.removeEventListener('mousedown', this.documentClickContext);
8088
8167
  };
8168
+ /* Handles touch events specifically for iOS devices */
8169
+ DropDownTree.prototype.handleIosTouch = function (e) {
8170
+ e.preventDefault();
8171
+ this.dropDownClick(e);
8172
+ };
8089
8173
  /* Trigger when the dropdown is clicked */
8090
8174
  DropDownTree.prototype.dropDownClick = function (e) {
8091
8175
  if (!this.enabled || this.readonly) {
@@ -11984,9 +12068,6 @@ var ComboBox = /** @__PURE__ @class */ (function (_super) {
11984
12068
  __decorate$3([
11985
12069
  Property(true)
11986
12070
  ], ComboBox.prototype, "showClearButton", void 0);
11987
- __decorate$3([
11988
- Property(false)
11989
- ], ComboBox.prototype, "enableRtl", void 0);
11990
12071
  __decorate$3([
11991
12072
  Event()
11992
12073
  ], ComboBox.prototype, "customValueSpecifier", void 0);
@@ -12194,7 +12275,6 @@ var AutoComplete = /** @__PURE__ @class */ (function (_super) {
12194
12275
  return filterQuery;
12195
12276
  };
12196
12277
  AutoComplete.prototype.searchLists = function (e) {
12197
- var _this_1 = this;
12198
12278
  this.isTyped = true;
12199
12279
  this.isDataFetched = this.isSelectCustom = false;
12200
12280
  this.firstItem = this.dataSource && this.dataSource.length > 0 ? this.dataSource[0] : null;
@@ -12212,6 +12292,15 @@ var AutoComplete = /** @__PURE__ @class */ (function (_super) {
12212
12292
  this.isSelected = false;
12213
12293
  this.activeIndex = null;
12214
12294
  this.isRequesting = false;
12295
+ if (this.queryString !== '' && this.debounceDelay > 0) {
12296
+ this.debouncedFiltering(e, this.debounceDelay);
12297
+ }
12298
+ else {
12299
+ this.performFiltering(e);
12300
+ }
12301
+ };
12302
+ AutoComplete.prototype.performFiltering = function (e) {
12303
+ var _this_1 = this;
12215
12304
  var eventArgs = {
12216
12305
  preventDefaultAction: false,
12217
12306
  text: this.filterInput.value,
@@ -13363,7 +13452,7 @@ var MultiSelect = /** @__PURE__ @class */ (function (_super) {
13363
13452
  valuecheck = this.presentItemValue(this.ulElement);
13364
13453
  }
13365
13454
  if (valuecheck.length > 0 && this.dataSource instanceof DataManager && !isNullOrUndefined(this.value)
13366
- && this.listData != null) {
13455
+ && this.listData != null && !(valuecheck.length === 1 && valuecheck[0] == null)) {
13367
13456
  this.isaddNonPresentItems = true;
13368
13457
  this.addNonPresentItems(valuecheck, this.ulElement, this.listData);
13369
13458
  this.isaddNonPresentItems = false;
@@ -14238,7 +14327,7 @@ var MultiSelect = /** @__PURE__ @class */ (function (_super) {
14238
14327
  MultiSelect.prototype.pageDownSelection = function (steps, isVirtualKeyAction) {
14239
14328
  var list = this.getItems();
14240
14329
  var collection = this.list.querySelectorAll('li.'
14241
- + dropDownBaseClasses.li + ':not(.' + HIDE_LIST + ')' + ':not(.e-reorder-hide)');
14330
+ + dropDownBaseClasses.li + ':not(.' + HIDE_LIST + ')' + ':not(.e-reorder-hide)' + ':not(.e-virtual-list-end)');
14242
14331
  var previousItem = steps <= collection.length ? collection[steps - 1] : collection[collection.length - 1];
14243
14332
  if (this.fields.disabled && previousItem && !this.enableVirtualization) {
14244
14333
  while (previousItem && (previousItem.classList.contains('e-disabled') || previousItem.classList.contains(HIDE_LIST) ||
@@ -14255,6 +14344,9 @@ var MultiSelect = /** @__PURE__ @class */ (function (_super) {
14255
14344
  if (this.enableVirtualization && isVirtualKeyAction) {
14256
14345
  previousItem = steps <= list.length ? this.liCollections[steps] : this.liCollections[list.length - 1];
14257
14346
  }
14347
+ if (this.enableVirtualization && previousItem && previousItem.classList.contains('e-virtual-list-end')) {
14348
+ previousItem = collection[collection.length - 1];
14349
+ }
14258
14350
  this.isKeyBoardAction = true;
14259
14351
  this.addListFocus(previousItem);
14260
14352
  this.previousFocusItem = previousItem;
@@ -14739,9 +14831,10 @@ var MultiSelect = /** @__PURE__ @class */ (function (_super) {
14739
14831
  var selectedListMargin = selectedLI && !isNaN(parseInt(window.getComputedStyle(selectedLI).marginBottom, 10)) ?
14740
14832
  parseInt(window.getComputedStyle(selectedLI).marginBottom, 10) : 0;
14741
14833
  this.isUpwardScrolling = false;
14742
- var virtualListCount = this.list.querySelectorAll('.e-virtual-list').length;
14743
- var lastElementValue = this.list.querySelector('li:last-of-type') ?
14744
- this.list.querySelector('li:last-of-type').getAttribute('data-value') : null;
14834
+ var virtualListCount = this.list.querySelectorAll('.e-virtual-list:not(.e-virtual-list-end)').length;
14835
+ var liItems = this.list.querySelectorAll('li:not(.e-virtual-list-end)');
14836
+ var lastElementValue = liItems && liItems.length > 0 && liItems[liItems.length - 1] ?
14837
+ liItems[liItems.length - 1].getAttribute('data-value') : null;
14745
14838
  var selectedLiOffsetTop = this.virtualListInfo && this.virtualListInfo.startIndex ?
14746
14839
  selectedLI.offsetTop + (this.virtualListInfo.startIndex * (selectedLI.offsetHeight + selectedListMargin))
14747
14840
  : selectedLI.offsetTop;
@@ -14795,7 +14888,7 @@ var MultiSelect = /** @__PURE__ @class */ (function (_super) {
14795
14888
  };
14796
14889
  MultiSelect.prototype.scrollTop = function (selectedLI, activeIndex, keyCode) {
14797
14890
  if (keyCode === void 0) { keyCode = null; }
14798
- var virtualListCount = this.list.querySelectorAll('.e-virtual-list').length;
14891
+ var virtualListCount = this.list.querySelectorAll('.e-virtual-list:not(.e-virtual-list-end)').length;
14799
14892
  var selectedListMargin = selectedLI && !isNaN(parseInt(window.getComputedStyle(selectedLI).marginBottom, 10)) ?
14800
14893
  parseInt(window.getComputedStyle(selectedLI).marginBottom, 10) : 0;
14801
14894
  var selectedLiOffsetTop = (this.virtualListInfo && this.virtualListInfo.startIndex) ?
@@ -15024,11 +15117,11 @@ var MultiSelect = /** @__PURE__ @class */ (function (_super) {
15024
15117
  if (this.list) {
15025
15118
  var elements = this.list.querySelectorAll('li.'
15026
15119
  + dropDownBaseClasses.li
15027
- + ':not(.' + HIDE_LIST + ')' + ':not(.e-reorder-hide)');
15120
+ + ':not(.' + HIDE_LIST + ')' + ':not(.e-reorder-hide)' + ':not(.e-virtual-list-end)');
15028
15121
  if (this.mode === 'CheckBox' && this.enableGroupCheckBox && !isNullOrUndefined(this.fields.groupBy)) {
15029
15122
  elements = this.list.querySelectorAll('li.'
15030
15123
  + dropDownBaseClasses.li + ',li.' + dropDownBaseClasses.group
15031
- + ':not(.' + HIDE_LIST + ')' + ':not(.e-reorder-hide)');
15124
+ + ':not(.' + HIDE_LIST + ')' + ':not(.e-reorder-hide)' + ':not(.e-virtual-list-end)');
15032
15125
  }
15033
15126
  var selectedElem = this.list.querySelector('li.' + dropDownBaseClasses.focus);
15034
15127
  if (this.enableVirtualization && isVirtualKeyAction && !isNullOrUndefined(this.currentFocuedListElement)) {
@@ -15727,7 +15820,7 @@ var MultiSelect = /** @__PURE__ @class */ (function (_super) {
15727
15820
  var inputWidth = (this.componentWrapper.offsetWidth) * parseFloat(width) / 100;
15728
15821
  width = inputWidth.toString() + 'px';
15729
15822
  }
15730
- return width;
15823
+ return (this.allowResize && this.resizeWidth) ? this.resizeWidth + 'px' : width;
15731
15824
  };
15732
15825
  MultiSelect.prototype.mouseIn = function () {
15733
15826
  if (this.enabled && !this.readonly) {
@@ -16002,7 +16095,7 @@ var MultiSelect = /** @__PURE__ @class */ (function (_super) {
16002
16095
  MultiSelect.prototype.updateInitialData = function () {
16003
16096
  // eslint-disable-next-line @typescript-eslint/no-explicit-any
16004
16097
  var currentData = this.selectData;
16005
- var ulElement = this.renderItems(currentData, this.fields);
16098
+ var ulElement = this.renderItems(currentData, this.fields, false, this.isClearAllAction);
16006
16099
  this.list.scrollTop = 0;
16007
16100
  this.virtualListInfo = {
16008
16101
  currentPageNumber: null,
@@ -16223,8 +16316,40 @@ var MultiSelect = /** @__PURE__ @class */ (function (_super) {
16223
16316
  _this.search(event);
16224
16317
  });
16225
16318
  };
16226
- MultiSelect.prototype.search = function (e) {
16319
+ MultiSelect.prototype.performFiltering = function (e) {
16227
16320
  var _this = this;
16321
+ var eventArgs = {
16322
+ preventDefaultAction: false,
16323
+ text: this.targetElement(),
16324
+ updateData: function (dataSource, query, fields) {
16325
+ if (eventArgs.cancel) {
16326
+ return;
16327
+ }
16328
+ _this.isFiltered = true;
16329
+ _this.customFilterQuery = query;
16330
+ _this.remoteFilterAction = true;
16331
+ _this.isCustomFiltering = true;
16332
+ _this.dataUpdater(dataSource, query, fields);
16333
+ },
16334
+ event: e,
16335
+ cancel: false
16336
+ };
16337
+ this.trigger('filtering', eventArgs, function (eventArgs) {
16338
+ _this.isFilterPrevented = eventArgs.cancel;
16339
+ if (!eventArgs.cancel) {
16340
+ if (!_this.isFiltered && !eventArgs.preventDefaultAction) {
16341
+ _this.filterAction = true;
16342
+ _this.isFilteringAction = true;
16343
+ if (_this.dataSource instanceof DataManager && _this.allowCustomValue) {
16344
+ _this.isCustomRendered = false;
16345
+ }
16346
+ _this.dataUpdater(_this.dataSource, null, _this.fields);
16347
+ _this.isFilteringAction = false;
16348
+ }
16349
+ }
16350
+ });
16351
+ };
16352
+ MultiSelect.prototype.search = function (e) {
16228
16353
  this.preventSetCurrentData = false;
16229
16354
  this.firstItem = this.dataSource && this.dataSource.length > 0 ? this.dataSource[0] : null;
16230
16355
  if (!isNullOrUndefined(e)) {
@@ -16245,36 +16370,12 @@ var MultiSelect = /** @__PURE__ @class */ (function (_super) {
16245
16370
  }
16246
16371
  this.checkAndResetCache();
16247
16372
  this.isRequesting = false;
16248
- var eventArgs_1 = {
16249
- preventDefaultAction: false,
16250
- text: this.targetElement(),
16251
- updateData: function (dataSource, query, fields) {
16252
- if (eventArgs_1.cancel) {
16253
- return;
16254
- }
16255
- _this.isFiltered = true;
16256
- _this.customFilterQuery = query;
16257
- _this.remoteFilterAction = true;
16258
- _this.isCustomFiltering = true;
16259
- _this.dataUpdater(dataSource, query, fields);
16260
- },
16261
- event: e,
16262
- cancel: false
16263
- };
16264
- this.trigger('filtering', eventArgs_1, function (eventArgs) {
16265
- _this.isFilterPrevented = eventArgs.cancel;
16266
- if (!eventArgs.cancel) {
16267
- if (!_this.isFiltered && !eventArgs.preventDefaultAction) {
16268
- _this.filterAction = true;
16269
- _this.isFilteringAction = true;
16270
- if (_this.dataSource instanceof DataManager && _this.allowCustomValue) {
16271
- _this.isCustomRendered = false;
16272
- }
16273
- _this.dataUpdater(_this.dataSource, null, _this.fields);
16274
- _this.isFilteringAction = false;
16275
- }
16276
- }
16277
- });
16373
+ if (this.targetElement() !== '' && this.debounceDelay > 0) {
16374
+ this.debouncedFiltering(e, this.debounceDelay);
16375
+ }
16376
+ else {
16377
+ this.performFiltering(e);
16378
+ }
16278
16379
  }
16279
16380
  else if (this.allowCustomValue) {
16280
16381
  var query = new Query();
@@ -17388,7 +17489,7 @@ var MultiSelect = /** @__PURE__ @class */ (function (_super) {
17388
17489
  };
17389
17490
  MultiSelect.prototype.checkClearIconWidth = function () {
17390
17491
  if (this.showClearButton) {
17391
- this.clearIconWidth = parseInt(window.getComputedStyle(this.overAllClear).width, 10);
17492
+ this.clearIconWidth = parseInt(window.getComputedStyle(this.overAllClear).width, 10) || this.overAllClear.offsetWidth;
17392
17493
  }
17393
17494
  };
17394
17495
  MultiSelect.prototype.updateRemainWidth = function (viewWrapper, totalWidth) {
@@ -18307,7 +18408,9 @@ var MultiSelect = /** @__PURE__ @class */ (function (_super) {
18307
18408
  _this.list.parentElement.style.paddingBottom = '';
18308
18409
  var overAllHeight = parseInt(_this.popupHeight, 10);
18309
18410
  _this.list.style.maxHeight = formatUnit(overAllHeight);
18310
- _this.list.parentElement.style.height = formatUnit(_this.popupHeight);
18411
+ if (_this.popupHeight.toString().toLowerCase() !== 'auto' && _this.initialPopupHeight >= (parseInt(_this.popupHeight.toString(), 10) - 2)) {
18412
+ _this.list.parentElement.style.height = formatUnit(_this.popupHeight);
18413
+ }
18311
18414
  _this.list.parentElement.style.maxHeight = formatUnit(_this.popupHeight);
18312
18415
  }
18313
18416
  if (_this.resizer) {
@@ -18635,7 +18738,8 @@ var MultiSelect = /** @__PURE__ @class */ (function (_super) {
18635
18738
  }
18636
18739
  if (this.list && this.list.parentElement) {
18637
18740
  this.list.parentElement.classList.add('e-resize');
18638
- if (this.popupHeight.toString().toLowerCase() !== 'auto') {
18741
+ this.initialPopupHeight = this.list.parentElement.clientHeight;
18742
+ if (this.popupHeight.toString().toLowerCase() !== 'auto' && this.initialPopupHeight >= (parseInt(this.popupHeight.toString(), 10) - 2)) {
18639
18743
  this.list.parentElement.style.height = '100%';
18640
18744
  }
18641
18745
  this.list.parentElement.style.boxSizing = 'border-box'; // Ensures padding doesn't affect element size
@@ -18646,6 +18750,18 @@ var MultiSelect = /** @__PURE__ @class */ (function (_super) {
18646
18750
  this.list.parentElement.style.height = this.resizeHeight + 'px';
18647
18751
  this.list.parentElement.style.maxHeight = this.resizeHeight + 'px';
18648
18752
  this.list.style.maxHeight = this.resizeHeight + "px";
18753
+ if (this.headerTemplate) {
18754
+ var headerElem = this.list.parentElement.querySelector('.e-ddl-header');
18755
+ if (headerElem && headerElem.offsetHeight) {
18756
+ this.headerTemplateHeight = headerElem.offsetHeight;
18757
+ }
18758
+ if (this.resizeHeight) {
18759
+ this.list.style.maxHeight = this.resizeHeight - this.headerTemplateHeight - 16 + "px";
18760
+ }
18761
+ else {
18762
+ this.list.style.maxHeight = parseInt(this.list.style.maxHeight, 10) - 16 + "px";
18763
+ }
18764
+ }
18649
18765
  }
18650
18766
  if (this.resizer) {
18651
18767
  EventHandler.add(this.resizer, 'mousedown', this.startResizing, this);
@@ -18700,6 +18816,9 @@ var MultiSelect = /** @__PURE__ @class */ (function (_super) {
18700
18816
  this.list.parentElement.style.height = this.resizeHeight + "px";
18701
18817
  this.list.parentElement.style.maxHeight = this.resizeHeight + "px";
18702
18818
  this.list.style.maxHeight = this.resizeHeight + "px";
18819
+ if (this.headerTemplate) {
18820
+ this.list.style.maxHeight = this.resizeHeight - this.headerTemplateHeight - 16 + "px";
18821
+ }
18703
18822
  if (this.fixedHeaderElement && this.ulElement) {
18704
18823
  this.fixedHeaderElement.style.width = this.ulElement.offsetWidth + "px";
18705
18824
  }
@@ -19199,6 +19318,9 @@ var MultiSelect = /** @__PURE__ @class */ (function (_super) {
19199
19318
  __decorate$5([
19200
19319
  Property(null)
19201
19320
  ], MultiSelect.prototype, "allowFiltering", void 0);
19321
+ __decorate$5([
19322
+ Property(300)
19323
+ ], MultiSelect.prototype, "debounceDelay", void 0);
19202
19324
  __decorate$5([
19203
19325
  Property(true)
19204
19326
  ], MultiSelect.prototype, "isDeviceFullScreen", void 0);
@@ -22575,7 +22697,9 @@ var Mention = /** @__PURE__ @class */ (function (_super) {
22575
22697
  * @private
22576
22698
  */
22577
22699
  function Mention(options, element) {
22578
- return _super.call(this, options, element) || this;
22700
+ var _this = _super.call(this, options, element) || this;
22701
+ _this.debounceTimer = null;
22702
+ return _this;
22579
22703
  }
22580
22704
  /**
22581
22705
  * When property value changes happened, then onPropertyChanged method will execute the respective changes in this component.
@@ -23010,22 +23134,8 @@ var Mention = /** @__PURE__ @class */ (function (_super) {
23010
23134
  this.range = this.inputElement.ownerDocument.getSelection().getRangeAt(0);
23011
23135
  return this.range;
23012
23136
  };
23013
- Mention.prototype.searchLists = function (e) {
23137
+ Mention.prototype.performFiltering = function (e) {
23014
23138
  var _this = this;
23015
- this.isDataFetched = false;
23016
- if (isNullOrUndefined(this.list)) {
23017
- _super.prototype.render.call(this);
23018
- this.unWireListEvents();
23019
- this.wireListEvents();
23020
- }
23021
- if (e.type !== 'mousedown' && (e.keyCode === 40 || e.keyCode === 38)) {
23022
- this.queryString = this.queryString === '' ? null : this.queryString;
23023
- this.beforePopupOpen = true;
23024
- this.resetList(this.dataSource, this.fields);
23025
- return;
23026
- }
23027
- this.isSelected = false;
23028
- this.activeIndex = null;
23029
23139
  var eventArgs = {
23030
23140
  preventDefaultAction: false,
23031
23141
  text: this.queryString,
@@ -23044,6 +23154,28 @@ var Mention = /** @__PURE__ @class */ (function (_super) {
23044
23154
  }
23045
23155
  });
23046
23156
  };
23157
+ Mention.prototype.searchLists = function (e) {
23158
+ this.isDataFetched = false;
23159
+ if (isNullOrUndefined(this.list)) {
23160
+ _super.prototype.render.call(this);
23161
+ this.unWireListEvents();
23162
+ this.wireListEvents();
23163
+ }
23164
+ if (e.type !== 'mousedown' && (e.keyCode === 40 || e.keyCode === 38)) {
23165
+ this.queryString = this.queryString === '' ? null : this.queryString;
23166
+ this.beforePopupOpen = true;
23167
+ this.resetList(this.dataSource, this.fields);
23168
+ return;
23169
+ }
23170
+ this.isSelected = false;
23171
+ this.activeIndex = null;
23172
+ if (this.queryString !== '' && this.debounceDelay > 0) {
23173
+ this.debouncedFiltering(e, this.debounceDelay);
23174
+ }
23175
+ else {
23176
+ this.performFiltering(e);
23177
+ }
23178
+ };
23047
23179
  Mention.prototype.filterAction = function (dataSource, query, fields) {
23048
23180
  this.beforePopupOpen = true;
23049
23181
  if (this.queryString.length >= this.minLength) {
@@ -24241,6 +24373,9 @@ var Mention = /** @__PURE__ @class */ (function (_super) {
24241
24373
  __decorate$7([
24242
24374
  Property('300px')
24243
24375
  ], Mention.prototype, "popupHeight", void 0);
24376
+ __decorate$7([
24377
+ Property(300)
24378
+ ], Mention.prototype, "debounceDelay", void 0);
24244
24379
  __decorate$7([
24245
24380
  Property(null)
24246
24381
  ], Mention.prototype, "displayTemplate", void 0);