@syncfusion/ej2-dropdowns 27.2.5 → 28.1.33

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 (222) hide show
  1. package/README.md +2 -2
  2. package/dist/ej2-dropdowns.min.js +3 -3
  3. package/dist/ej2-dropdowns.umd.min.js +3 -3
  4. package/dist/ej2-dropdowns.umd.min.js.map +1 -1
  5. package/dist/es6/ej2-dropdowns.es2015.js +495 -37
  6. package/dist/es6/ej2-dropdowns.es2015.js.map +1 -1
  7. package/dist/es6/ej2-dropdowns.es5.js +494 -35
  8. package/dist/es6/ej2-dropdowns.es5.js.map +1 -1
  9. package/dist/global/ej2-dropdowns.min.js +3 -3
  10. package/dist/global/ej2-dropdowns.min.js.map +1 -1
  11. package/dist/global/index.d.ts +2 -2
  12. package/package.json +13 -13
  13. package/src/auto-complete/auto-complete.js +5 -2
  14. package/src/combo-box/combo-box.js +1 -1
  15. package/src/common/incremental-search.d.ts +1 -1
  16. package/src/common/incremental-search.js +5 -1
  17. package/src/common/virtual-scroll.js +2 -1
  18. package/src/drop-down-base/drop-down-base.js +14 -2
  19. package/src/drop-down-list/drop-down-list-model.d.ts +31 -0
  20. package/src/drop-down-list/drop-down-list.d.ts +44 -1
  21. package/src/drop-down-list/drop-down-list.js +202 -13
  22. package/src/list-box/list-box.d.ts +4 -0
  23. package/src/list-box/list-box.js +9 -4
  24. package/src/mention/mention.js +6 -1
  25. package/src/multi-select/multi-select-model.d.ts +31 -0
  26. package/src/multi-select/multi-select.d.ts +45 -0
  27. package/src/multi-select/multi-select.js +250 -10
  28. package/styles/auto-complete/_tailwind3-definition.scss +2 -0
  29. package/styles/auto-complete/bds.css +75 -0
  30. package/styles/auto-complete/bds.scss +4 -0
  31. package/styles/auto-complete/highcontrast.css +1 -1
  32. package/styles/auto-complete/tailwind3.css +101 -0
  33. package/styles/auto-complete/tailwind3.scss +4 -0
  34. package/styles/bds-lite.css +3013 -0
  35. package/styles/bds-lite.scss +28 -0
  36. package/styles/bds.css +3855 -0
  37. package/styles/bds.scss +33 -0
  38. package/styles/bootstrap-dark-lite.css +41 -2
  39. package/styles/bootstrap-dark.css +41 -2
  40. package/styles/bootstrap-lite.css +30 -1
  41. package/styles/bootstrap.css +30 -1
  42. package/styles/bootstrap4-lite.css +30 -0
  43. package/styles/bootstrap4.css +30 -0
  44. package/styles/bootstrap5-dark-lite.css +30 -0
  45. package/styles/bootstrap5-dark.css +30 -0
  46. package/styles/bootstrap5-lite.css +30 -0
  47. package/styles/bootstrap5.3-lite.css +30 -3
  48. package/styles/bootstrap5.3.css +30 -3
  49. package/styles/bootstrap5.css +30 -0
  50. package/styles/combo-box/_tailwind3-definition.scss +2 -0
  51. package/styles/combo-box/bds.css +75 -0
  52. package/styles/combo-box/bds.scss +4 -0
  53. package/styles/combo-box/highcontrast.css +1 -1
  54. package/styles/combo-box/tailwind3.css +101 -0
  55. package/styles/combo-box/tailwind3.scss +4 -0
  56. package/styles/drop-down-base/_bigger.scss +3 -0
  57. package/styles/drop-down-base/_layout.scss +7 -0
  58. package/styles/drop-down-base/_tailwind3-definition.scss +98 -0
  59. package/styles/drop-down-base/bds.css +496 -0
  60. package/styles/drop-down-base/bds.scss +4 -0
  61. package/styles/drop-down-base/bootstrap-dark.css +4 -0
  62. package/styles/drop-down-base/bootstrap.css +4 -0
  63. package/styles/drop-down-base/bootstrap4.css +4 -0
  64. package/styles/drop-down-base/bootstrap5-dark.css +4 -0
  65. package/styles/drop-down-base/bootstrap5.3.css +4 -0
  66. package/styles/drop-down-base/bootstrap5.css +4 -0
  67. package/styles/drop-down-base/fabric-dark.css +4 -0
  68. package/styles/drop-down-base/fabric.css +4 -0
  69. package/styles/drop-down-base/fluent-dark.css +4 -0
  70. package/styles/drop-down-base/fluent.css +4 -0
  71. package/styles/drop-down-base/fluent2.css +9 -5
  72. package/styles/drop-down-base/highcontrast-light.css +4 -0
  73. package/styles/drop-down-base/highcontrast.css +4 -0
  74. package/styles/drop-down-base/material-dark.css +4 -0
  75. package/styles/drop-down-base/material.css +4 -0
  76. package/styles/drop-down-base/material3-dark.css +4 -0
  77. package/styles/drop-down-base/material3.css +4 -0
  78. package/styles/drop-down-base/tailwind-dark.css +4 -0
  79. package/styles/drop-down-base/tailwind.css +4 -0
  80. package/styles/drop-down-base/tailwind3.css +392 -0
  81. package/styles/drop-down-base/tailwind3.scss +4 -0
  82. package/styles/drop-down-list/_highcontrast-definition.scss +1 -1
  83. package/styles/drop-down-list/_layout.scss +18 -2
  84. package/styles/drop-down-list/_tailwind3-definition.scss +135 -0
  85. package/styles/drop-down-list/_theme.scss +3 -1
  86. package/styles/drop-down-list/bds.css +609 -0
  87. package/styles/drop-down-list/bds.scss +10 -0
  88. package/styles/drop-down-list/bootstrap-dark.css +18 -1
  89. package/styles/drop-down-list/bootstrap.css +13 -1
  90. package/styles/drop-down-list/bootstrap4.css +13 -0
  91. package/styles/drop-down-list/bootstrap5-dark.css +13 -0
  92. package/styles/drop-down-list/bootstrap5.3.css +13 -0
  93. package/styles/drop-down-list/bootstrap5.css +13 -0
  94. package/styles/drop-down-list/fabric-dark.css +18 -1
  95. package/styles/drop-down-list/fabric.css +13 -1
  96. package/styles/drop-down-list/fluent-dark.css +13 -1
  97. package/styles/drop-down-list/fluent.css +13 -1
  98. package/styles/drop-down-list/fluent2.css +13 -1
  99. package/styles/drop-down-list/highcontrast-light.css +9 -1
  100. package/styles/drop-down-list/highcontrast.css +19 -1
  101. package/styles/drop-down-list/icons/_bootstrap-dark.scss +4 -0
  102. package/styles/drop-down-list/icons/_bootstrap.scss +4 -0
  103. package/styles/drop-down-list/icons/_bootstrap4.scss +4 -0
  104. package/styles/drop-down-list/icons/_bootstrap5.3.scss +4 -0
  105. package/styles/drop-down-list/icons/_bootstrap5.scss +4 -0
  106. package/styles/drop-down-list/icons/_fabric-dark.scss +4 -0
  107. package/styles/drop-down-list/icons/_fabric.scss +4 -0
  108. package/styles/drop-down-list/icons/_fluent.scss +4 -0
  109. package/styles/drop-down-list/icons/_fluent2.scss +4 -0
  110. package/styles/drop-down-list/icons/_highcontrast.scss +4 -0
  111. package/styles/drop-down-list/icons/_material-dark.scss +4 -0
  112. package/styles/drop-down-list/icons/_material.scss +4 -0
  113. package/styles/drop-down-list/icons/_material3.scss +4 -0
  114. package/styles/drop-down-list/icons/_tailwind.scss +4 -0
  115. package/styles/drop-down-list/icons/_tailwind3.scss +14 -0
  116. package/styles/drop-down-list/material-dark.css +18 -1
  117. package/styles/drop-down-list/material.css +13 -1
  118. package/styles/drop-down-list/material3-dark.css +13 -1
  119. package/styles/drop-down-list/material3.css +13 -1
  120. package/styles/drop-down-list/tailwind-dark.css +13 -1
  121. package/styles/drop-down-list/tailwind.css +13 -1
  122. package/styles/drop-down-list/tailwind3.css +455 -0
  123. package/styles/drop-down-list/tailwind3.scss +10 -0
  124. package/styles/drop-down-tree/_bigger.scss +41 -7
  125. package/styles/drop-down-tree/_layout.scss +34 -10
  126. package/styles/drop-down-tree/_tailwind3-definition.scss +67 -0
  127. package/styles/drop-down-tree/_theme.scss +3 -3
  128. package/styles/drop-down-tree/bds.css +712 -0
  129. package/styles/drop-down-tree/bds.scss +10 -0
  130. package/styles/drop-down-tree/bootstrap5.3.css +0 -3
  131. package/styles/drop-down-tree/icons/_tailwind3.scss +11 -0
  132. package/styles/drop-down-tree/tailwind3.css +512 -0
  133. package/styles/drop-down-tree/tailwind3.scss +10 -0
  134. package/styles/fabric-dark-lite.css +40 -1
  135. package/styles/fabric-dark.css +40 -1
  136. package/styles/fabric-lite.css +30 -1
  137. package/styles/fabric.css +30 -1
  138. package/styles/fluent-dark-lite.css +30 -1
  139. package/styles/fluent-dark.css +30 -1
  140. package/styles/fluent-lite.css +30 -1
  141. package/styles/fluent.css +30 -1
  142. package/styles/fluent2-lite.css +45 -12
  143. package/styles/fluent2.css +45 -12
  144. package/styles/highcontrast-light-lite.css +22 -1
  145. package/styles/highcontrast-light.css +22 -1
  146. package/styles/highcontrast-lite.css +41 -1
  147. package/styles/highcontrast.css +41 -1
  148. package/styles/list-box/_bigger.scss +18 -1
  149. package/styles/list-box/_layout.scss +29 -3
  150. package/styles/list-box/_tailwind3-definition.scss +123 -0
  151. package/styles/list-box/_theme.scss +11 -0
  152. package/styles/list-box/bds.css +971 -0
  153. package/styles/list-box/bds.scss +6 -0
  154. package/styles/list-box/fluent2.css +1 -1
  155. package/styles/list-box/icons/_tailwind3.scss +25 -0
  156. package/styles/list-box/tailwind3.css +991 -0
  157. package/styles/list-box/tailwind3.scss +6 -0
  158. package/styles/material-dark-lite.css +40 -1
  159. package/styles/material-dark.css +40 -1
  160. package/styles/material-lite.css +30 -1
  161. package/styles/material.css +30 -1
  162. package/styles/material3-dark-lite.css +32 -5
  163. package/styles/material3-dark.css +32 -5
  164. package/styles/material3-lite.css +32 -5
  165. package/styles/material3.css +32 -5
  166. package/styles/mention/_tailwind3-definition.scss +1 -0
  167. package/styles/mention/bds.css +78 -0
  168. package/styles/mention/bds.scss +6 -0
  169. package/styles/mention/tailwind3.css +67 -0
  170. package/styles/mention/tailwind3.scss +6 -0
  171. package/styles/multi-select/_bigger.scss +2 -2
  172. package/styles/multi-select/_bootstrap-dark-definition.scss +1 -1
  173. package/styles/multi-select/_layout.scss +27 -2
  174. package/styles/multi-select/_material3-definition.scss +1 -1
  175. package/styles/multi-select/_tailwind3-definition.scss +227 -0
  176. package/styles/multi-select/_theme.scss +1 -1
  177. package/styles/multi-select/bds.css +1575 -0
  178. package/styles/multi-select/bds.scss +10 -0
  179. package/styles/multi-select/bootstrap-dark.css +19 -1
  180. package/styles/multi-select/bootstrap.css +13 -0
  181. package/styles/multi-select/bootstrap4.css +13 -0
  182. package/styles/multi-select/bootstrap5-dark.css +13 -0
  183. package/styles/multi-select/bootstrap5.3.css +13 -0
  184. package/styles/multi-select/bootstrap5.css +13 -0
  185. package/styles/multi-select/fabric-dark.css +18 -0
  186. package/styles/multi-select/fabric.css +13 -0
  187. package/styles/multi-select/fluent-dark.css +13 -0
  188. package/styles/multi-select/fluent.css +13 -0
  189. package/styles/multi-select/fluent2.css +22 -5
  190. package/styles/multi-select/highcontrast-light.css +9 -0
  191. package/styles/multi-select/highcontrast.css +18 -0
  192. package/styles/multi-select/icons/_bootstrap-dark.scss +4 -0
  193. package/styles/multi-select/icons/_bootstrap.scss +4 -0
  194. package/styles/multi-select/icons/_bootstrap4.scss +4 -0
  195. package/styles/multi-select/icons/_bootstrap5.3.scss +4 -0
  196. package/styles/multi-select/icons/_bootstrap5.scss +4 -0
  197. package/styles/multi-select/icons/_fabric-dark.scss +4 -0
  198. package/styles/multi-select/icons/_fabric.scss +4 -0
  199. package/styles/multi-select/icons/_fluent.scss +4 -0
  200. package/styles/multi-select/icons/_fluent2.scss +4 -0
  201. package/styles/multi-select/icons/_highcontrast.scss +4 -0
  202. package/styles/multi-select/icons/_material-dark.scss +4 -0
  203. package/styles/multi-select/icons/_material.scss +4 -0
  204. package/styles/multi-select/icons/_material3.scss +4 -0
  205. package/styles/multi-select/icons/_tailwind.scss +4 -0
  206. package/styles/multi-select/icons/_tailwind3.scss +26 -0
  207. package/styles/multi-select/material-dark.css +18 -0
  208. package/styles/multi-select/material.css +13 -0
  209. package/styles/multi-select/material3-dark.css +15 -4
  210. package/styles/multi-select/material3.css +15 -4
  211. package/styles/multi-select/tailwind-dark.css +13 -0
  212. package/styles/multi-select/tailwind.css +13 -0
  213. package/styles/multi-select/tailwind3.css +1398 -0
  214. package/styles/multi-select/tailwind3.scss +10 -0
  215. package/styles/tailwind-dark-lite.css +30 -1
  216. package/styles/tailwind-dark.css +30 -1
  217. package/styles/tailwind-lite.css +30 -1
  218. package/styles/tailwind.css +30 -1
  219. package/styles/tailwind3-lite.css +2889 -0
  220. package/styles/tailwind3-lite.scss +28 -0
  221. package/styles/tailwind3.css +3550 -0
  222. package/styles/tailwind3.scss +33 -0
@@ -132,7 +132,7 @@ function incrementalSearch(keyCode, items, selectedIndex, ignoreCase, elementId,
132
132
  * @param {string} [type] - Specifies the type.
133
133
  * @returns {{ item: Element | null, index: number | null }} Returns the search matched items.
134
134
  */
135
- function Search(inputVal, items, searchType, ignoreCase, dataSource, fields, type) {
135
+ function Search(inputVal, items, searchType, ignoreCase, dataSource, fields, type, ignoreAccent) {
136
136
  const listItems = items;
137
137
  ignoreCase = ignoreCase !== undefined && ignoreCase !== null ? ignoreCase : true;
138
138
  const itemData = { item: null, index: null };
@@ -156,8 +156,12 @@ function Search(inputVal, items, searchType, ignoreCase, dataSource, fields, typ
156
156
  });
157
157
  });
158
158
  }
159
- const text = dataSource && filterValue ? (ignoreCase ? filterValue.toString().toLocaleLowerCase() : filterValue).replace(/^\s+|\s+$/g, '') : (ignoreCase ? item.textContent.toLocaleLowerCase() : item.textContent).replace(/^\s+|\s+$/g, '');
159
+ let text = dataSource && filterValue ? (ignoreCase ? filterValue.toString().toLocaleLowerCase() : filterValue).replace(/^\s+|\s+$/g, '') : (ignoreCase ? item.textContent.toLocaleLowerCase() : item.textContent).replace(/^\s+|\s+$/g, '');
160
160
  /* eslint-disable security/detect-non-literal-regexp */
161
+ if (ignoreAccent && text && queryStr) {
162
+ text = text.normalize('NFD').replace(/[\u0300-\u036f]/g, '');
163
+ queryStr = queryStr.normalize('NFD').replace(/[\u0300-\u036f]/g, '');
164
+ }
161
165
  if ((searchType === 'Equal' && text === queryStr) || (searchType === 'StartsWith' && text.substr(0, strLength) === queryStr) || (searchType === 'EndsWith' && text.substr(text.length - queryStr.length) === queryStr) || (searchType === 'Contains' && new RegExp(queryStr, 'g').test(text))) {
162
166
  itemData.item = item;
163
167
  itemData.index = i;
@@ -689,7 +693,8 @@ class VirtualScroll {
689
693
  direction: direction, sentinelInfo: info, offsets: e,
690
694
  startIndex: this.parent.previousStartIndex, endIndex: this.parent.previousEndIndex
691
695
  };
692
- const vHeight = this.parent.popupContentElement.getBoundingClientRect().height;
696
+ const vHeight = this.parent.popupContentElement ?
697
+ this.parent.popupContentElement.getBoundingClientRect().height : 0;
693
698
  //Row Start and End Index calculation
694
699
  const rowHeight = this.parent.listItemHeight;
695
700
  const exactTopIndex = e.top / rowHeight;
@@ -1775,10 +1780,16 @@ let DropDownBase = class DropDownBase extends Component {
1775
1780
  }
1776
1781
  }
1777
1782
  /* eslint-enable @typescript-eslint/no-unused-vars */
1778
- const focusItem = this.fields.disabled ? listElement.querySelector('.' + dropDownBaseClasses.li + ':not(.e-disabled') : listElement.querySelector('.' + dropDownBaseClasses.li);
1783
+ let focusItem = this.fields.disabled ? listElement.querySelector('.' + dropDownBaseClasses.li + ':not(.e-disabled') : listElement.querySelector('.' + dropDownBaseClasses.li);
1779
1784
  const selectedItem = listElement.querySelector('.' + dropDownBaseClasses.selected);
1780
1785
  if (focusItem && !selectedItem) {
1781
- focusItem.classList.add(dropDownBaseClasses.focus);
1786
+ if (this.isVirtualizationEnabled && this.viewPortInfo.startIndex !== 0) {
1787
+ const elements = this.ulElement.querySelectorAll('li.' + dropDownBaseClasses.li + ':not(.e-virtual-list)' + ':not(.e-hide-listitem)');
1788
+ focusItem = elements && elements.length > 0 ? elements[2] : focusItem;
1789
+ }
1790
+ if (focusItem) {
1791
+ focusItem.classList.add(dropDownBaseClasses.focus);
1792
+ }
1782
1793
  }
1783
1794
  if (list.length <= 0) {
1784
1795
  this.l10nUpdate();
@@ -1994,6 +2005,12 @@ let DropDownBase = class DropDownBase extends Component {
1994
2005
  new DataManager(dataSource).executeLocal(new Query().take(100))
1995
2006
  : dataSource;
1996
2007
  ulElement = this.templateListItem((this.getModuleName() === 'autocomplete') ? spliceData : dataSource, fields);
2008
+ if (this.isIncrementalRequest) {
2009
+ this.incrementalLiCollections = ulElement.querySelectorAll('.' + dropDownBaseClasses.li);
2010
+ this.incrementalUlElement = ulElement;
2011
+ this.incrementalListData = listData;
2012
+ return ulElement;
2013
+ }
1997
2014
  if (this.isVirtualizationEnabled) {
1998
2015
  const oldUlElement = this.list.querySelector('.e-list-parent');
1999
2016
  const virtualUlElement = this.list.querySelector('.e-virtual-ddl-content');
@@ -2281,7 +2298,7 @@ let DropDownBase = class DropDownBase extends Component {
2281
2298
  updateData.dataSource = this.dataSource;
2282
2299
  }
2283
2300
  if (this.getModuleName() === 'listbox') {
2284
- if (!this.isReact || (this.isReact && !isNullOrUndefined(newProp.dataSource))) {
2301
+ if (!this.isReact || (this.isReact && (!isNullOrUndefined(newProp.dataSource) || !isNullOrUndefined(newProp.sortOrder)))) {
2285
2302
  this.updateDataSource(updateData, oldProp);
2286
2303
  }
2287
2304
  }
@@ -2757,6 +2774,7 @@ const dropDownListClasses = {
2757
2774
  backIcon: 'e-input-group-icon e-back-icon e-icons',
2758
2775
  filterBarClearIcon: 'e-input-group-icon e-clear-icon e-icons',
2759
2776
  filterInput: 'e-input-filter',
2777
+ resizeIcon: 'e-resizer-right e-icons',
2760
2778
  filterParent: 'e-filter-parent',
2761
2779
  mobileFilter: 'e-ddl-device-filter',
2762
2780
  footer: 'e-ddl-footer',
@@ -2798,6 +2816,8 @@ let DropDownList = class DropDownList extends DropDownBase {
2798
2816
  this.isTouched = false;
2799
2817
  this.isFocused = false;
2800
2818
  this.autoFill = false;
2819
+ this.isUpdateHeaderHeight = false;
2820
+ this.isUpdateFooterHeight = false;
2801
2821
  }
2802
2822
  /**
2803
2823
  * Initialize the event handler.
@@ -2939,6 +2959,10 @@ let DropDownList = class DropDownList extends DropDownBase {
2939
2959
  (this.allowObjectBinding && this.previousValue &&
2940
2960
  this.isObjectInArray(this.previousValue, [this.allowCustom ? this.value ? this.value : dataItem :
2941
2961
  dataItem.value ? this.getDataByValue(dataItem.value) : dataItem]))) {
2962
+ this.checkAndResetCache();
2963
+ if (this.enableVirtualization && this.list) {
2964
+ this.updateInitialData();
2965
+ }
2942
2966
  return;
2943
2967
  }
2944
2968
  this.onChangeEvent(e);
@@ -3253,6 +3277,22 @@ let DropDownList = class DropDownList extends DropDownBase {
3253
3277
  this.updateIconState();
3254
3278
  this.isFocused = true;
3255
3279
  }
3280
+ resizingWireEvent() {
3281
+ // Mouse events
3282
+ EventHandler.add(document, 'mousemove', this.resizePopup, this);
3283
+ EventHandler.add(document, 'mouseup', this.stopResizing, this);
3284
+ // Touch events
3285
+ EventHandler.add(document, 'touchmove', this.resizePopup, this);
3286
+ EventHandler.add(document, 'touchend', this.stopResizing, this);
3287
+ }
3288
+ resizingUnWireEvent() {
3289
+ // Mouse events
3290
+ EventHandler.remove(document, 'mousemove', this.resizePopup);
3291
+ EventHandler.remove(document, 'mouseup', this.stopResizing);
3292
+ // Touch events
3293
+ EventHandler.remove(document, 'touchmove', this.resizePopup);
3294
+ EventHandler.remove(document, 'touchend', this.stopResizing);
3295
+ }
3256
3296
  resetValueHandler(e) {
3257
3297
  const formElement = closest(this.inputElement, 'form');
3258
3298
  if (formElement && e.target === formElement) {
@@ -3347,6 +3387,68 @@ let DropDownList = class DropDownList extends DropDownBase {
3347
3387
  this.incrementalSearch(e);
3348
3388
  }
3349
3389
  }
3390
+ startResizing(event) {
3391
+ this.isResizing = true;
3392
+ this.trigger('resizeStart', event);
3393
+ // Get initial touch or mouse coordinates
3394
+ const clientX = (event instanceof MouseEvent) ? event.clientX : event.touches[0].clientX;
3395
+ const clientY = (event instanceof MouseEvent) ? event.clientY : event.touches[0].clientY;
3396
+ // Store the initial dimensions of the popup
3397
+ if (this.list && this.list.parentElement) {
3398
+ this.originalWidth = this.list.parentElement.offsetWidth;
3399
+ this.originalHeight = this.list.parentElement.offsetHeight;
3400
+ this.originalMouseX = clientX;
3401
+ this.originalMouseY = clientY;
3402
+ }
3403
+ // Wire up events for resizing
3404
+ this.resizingWireEvent();
3405
+ if (event) {
3406
+ event.preventDefault(); // Prevent selection behavior if event exists
3407
+ }
3408
+ }
3409
+ resizePopup(event) {
3410
+ if (!this.isResizing) {
3411
+ return;
3412
+ }
3413
+ this.trigger('resizing', event);
3414
+ // Get the current touch or mouse position
3415
+ const clientX = (event instanceof MouseEvent) ? event.clientX : event.touches[0].clientX;
3416
+ const clientY = (event instanceof MouseEvent) ? event.clientY : event.touches[0].clientY;
3417
+ // Calculate the new width and height based on drag
3418
+ const dx = clientX - this.originalMouseX;
3419
+ const dy = clientY - this.originalMouseY;
3420
+ if (this.list && this.list.parentElement) {
3421
+ // Minimum width and height (100px)
3422
+ let minWidth = parseInt(window.getComputedStyle(this.list.parentElement).minWidth, 10);
3423
+ let minHeight = parseInt(window.getComputedStyle(this.list.parentElement).minHeight, 10);
3424
+ minWidth = minWidth || 100;
3425
+ minHeight = minHeight || 120;
3426
+ // Ensure the new width and height are not less than the minimum
3427
+ this.resizeWidth = Math.max(this.originalWidth + dx, minWidth);
3428
+ this.resizeHeight = Math.max(this.originalHeight + dy, minHeight);
3429
+ this.list.parentElement.style.width = `${this.resizeWidth}px`;
3430
+ this.list.parentElement.style.height = `${this.resizeHeight}px`;
3431
+ this.list.parentElement.style.maxHeight = `${this.resizeHeight}px`;
3432
+ this.list.style.maxHeight = `${this.resizeHeight}px`;
3433
+ if (this.fixedHeaderElement && this.ulElement) {
3434
+ this.fixedHeaderElement.style.width = `${this.ulElement.offsetWidth}px`;
3435
+ }
3436
+ }
3437
+ if (event) {
3438
+ event.preventDefault(); // Prevent selection behavior if event exists
3439
+ }
3440
+ }
3441
+ stopResizing(event) {
3442
+ if (this.isResizing) {
3443
+ this.isResizing = false;
3444
+ this.trigger('resizeStop', event);
3445
+ // Unwire the resize event listeners
3446
+ this.resizingUnWireEvent();
3447
+ }
3448
+ if (event) {
3449
+ event.preventDefault(); // Prevent selection behavior if event exists
3450
+ }
3451
+ }
3350
3452
  onMouseClick(e) {
3351
3453
  const target = e.target;
3352
3454
  this.keyboardEvent = null;
@@ -3818,6 +3920,9 @@ let DropDownList = class DropDownList extends DropDownBase {
3818
3920
  }
3819
3921
  return;
3820
3922
  }
3923
+ if (!this.enableVirtualization && this.liCollections[findLi] && this.liCollections[findLi].classList.contains('e-disabled')) {
3924
+ return;
3925
+ }
3821
3926
  this.setSelection(this.liCollections[findLi], e);
3822
3927
  }
3823
3928
  }
@@ -3913,6 +4018,19 @@ let DropDownList = class DropDownList extends DropDownBase {
3913
4018
  }
3914
4019
  pageUpSelection(steps, event, isVirtualKeyAction) {
3915
4020
  let previousItem = steps >= 0 ? this.liCollections[steps + 1] : this.liCollections[0];
4021
+ if (!this.enableVirtualization && previousItem && previousItem.classList.contains('e-disabled')) {
4022
+ let validIndex = steps >= 0 ? steps + 1 : 0;
4023
+ while (validIndex < this.liCollections.length) {
4024
+ previousItem = this.liCollections[validIndex];
4025
+ if (previousItem && !previousItem.classList.contains('e-disabled')) {
4026
+ break;
4027
+ }
4028
+ validIndex--;
4029
+ if (validIndex < 0) {
4030
+ return;
4031
+ }
4032
+ }
4033
+ }
3916
4034
  if ((this.enableVirtualization && this.activeIndex == null)) {
3917
4035
  previousItem = (this.liCollections.length >= steps && steps >= 0) ?
3918
4036
  this.liCollections[steps + this.skeletonCount + 1] : this.liCollections[0];
@@ -3945,6 +4063,15 @@ let DropDownList = class DropDownList extends DropDownBase {
3945
4063
  pageDownSelection(steps, event, isVirtualKeyAction) {
3946
4064
  const list = this.getItems();
3947
4065
  let previousItem = steps <= list.length ? this.liCollections[steps - 1] : this.liCollections[list.length - 1];
4066
+ if (!this.enableVirtualization && previousItem && previousItem.classList.contains('e-disabled')) {
4067
+ while (steps >= 0 && steps < this.liCollections.length) {
4068
+ previousItem = steps <= list.length ? this.liCollections[steps - 1] : this.liCollections[list.length - 1];
4069
+ if (previousItem && !previousItem.classList.contains('e-disabled')) {
4070
+ break;
4071
+ }
4072
+ steps++;
4073
+ }
4074
+ }
3948
4075
  if (this.enableVirtualization && this.skeletonCount > 0) {
3949
4076
  steps = this.getModuleName() === 'dropdownlist' && this.allowFiltering ? steps + 1 : steps;
3950
4077
  previousItem = steps < list.length ? this.liCollections[steps] : this.liCollections[list.length - 1];
@@ -4717,7 +4844,7 @@ let DropDownList = class DropDownList extends DropDownBase {
4717
4844
  const virualElement = this.createElement('div', {
4718
4845
  id: this.element.id + '_popup', className: 'e-virtual-ddl', styles: this.GetVirtualTrackHeight()
4719
4846
  });
4720
- document.getElementsByClassName('e-popup')[0].querySelector('.e-dropdownbase').appendChild(virualElement);
4847
+ this.list.parentElement.querySelector('.e-dropdownbase').appendChild(virualElement);
4721
4848
  }
4722
4849
  }
4723
4850
  }
@@ -4756,7 +4883,7 @@ let DropDownList = class DropDownList extends DropDownBase {
4756
4883
  const virualElement = this.createElement('div', {
4757
4884
  id: this.element.id + '_popup', className: 'e-virtual-ddl', styles: this.GetVirtualTrackHeight()
4758
4885
  });
4759
- document.getElementsByClassName('e-popup')[0].querySelector('.e-dropdownbase').appendChild(virualElement);
4886
+ this.list.parentElement.querySelector('.e-dropdownbase').appendChild(virualElement);
4760
4887
  }
4761
4888
  }
4762
4889
  }
@@ -5107,7 +5234,7 @@ let DropDownList = class DropDownList extends DropDownBase {
5107
5234
  }
5108
5235
  updateSelectionList() {
5109
5236
  const selectedItem = this.list && this.list.querySelector('.' + 'e-active');
5110
- if (!selectedItem && !isNullOrUndefined(this.value)) {
5237
+ if (!selectedItem && !isNullOrUndefined(this.value) && this.getModuleName() !== 'autocomplete') {
5111
5238
  const value = this.allowObjectBinding ? getValue((this.fields.value) ? this.fields.value : '', this.value) : this.value;
5112
5239
  const findEle = this.findListElement(this.list, 'li', 'data-value', value);
5113
5240
  if (findEle) {
@@ -5139,10 +5266,12 @@ let DropDownList = class DropDownList extends DropDownBase {
5139
5266
  formatUnit(Math.round(window.outerHeight).toString() + 'px') : formatUnit(this.popupHeight);
5140
5267
  if (this.headerTemplate) {
5141
5268
  this.setHeaderTemplate(popupEle);
5269
+ this.isUpdateHeaderHeight = this.header.offsetHeight !== 0;
5142
5270
  }
5143
5271
  append([this.list], popupEle);
5144
5272
  if (this.footerTemplate) {
5145
5273
  this.setFooterTemplate(popupEle);
5274
+ this.isUpdateFooterHeight = this.footer.offsetHeight !== 0;
5146
5275
  }
5147
5276
  document.body.appendChild(popupEle);
5148
5277
  popupEle.style.top = '0px';
@@ -5306,12 +5435,57 @@ let DropDownList = class DropDownList extends DropDownBase {
5306
5435
  if (!isNullOrUndefined(this.popupObj)) {
5307
5436
  this.popupObj.show(new Animation(eventArgs.animation), (this.zIndex === 1000) ? this.element : null);
5308
5437
  }
5438
+ if (this.isReact) {
5439
+ setTimeout(() => {
5440
+ if (this.popupHeight && this.list && this.popupHeight !== 'auto' && !(this.getModuleName() === 'dropdownlist' && this.allowFiltering)) {
5441
+ const popupHeightValue = typeof this.popupHeight === 'string' ? parseInt(this.popupHeight, 10) : this.popupHeight;
5442
+ if (!this.isUpdateHeaderHeight && this.headerTemplate && this.header) {
5443
+ const listHeight = this.list.style.maxHeight === '' ? popupHeightValue : parseInt(this.list.style.maxHeight, 10);
5444
+ this.list.style.maxHeight = (listHeight - this.header.offsetHeight).toString() + 'px';
5445
+ this.isUpdateHeaderHeight = true;
5446
+ }
5447
+ if (!this.isUpdateFooterHeight && this.footerTemplate && this.footer) {
5448
+ const listHeight = this.list.style.maxHeight === '' ? popupHeightValue : parseInt(this.list.style.maxHeight, 10);
5449
+ this.list.style.maxHeight = (listHeight - this.footer.offsetHeight).toString() + 'px';
5450
+ this.isUpdateFooterHeight = true;
5451
+ }
5452
+ }
5453
+ }, 15);
5454
+ }
5309
5455
  }
5310
5456
  else {
5311
5457
  this.beforePopupOpen = false;
5312
5458
  this.destroyPopup();
5313
5459
  }
5314
5460
  });
5461
+ if (this.allowResize) {
5462
+ const resizePaddingBottom = 16;
5463
+ // Create the resizer div
5464
+ this.resizer = this.createElement('div', {
5465
+ id: this.element.id + '_resize-popup',
5466
+ className: dropDownListClasses.resizeIcon // Adding class for styling
5467
+ });
5468
+ // Add the resizer div to the popup
5469
+ if (this.list && this.list.parentElement) {
5470
+ this.list.parentElement.classList.add('e-resize');
5471
+ if (this.popupHeight.toString().toLowerCase() !== 'auto') {
5472
+ this.list.parentElement.style.height = '100%';
5473
+ }
5474
+ this.list.parentElement.style.paddingBottom = (this.getModuleName() === 'dropdownlist' && this.allowFiltering && this.searchBoxHeight) ? (this.searchBoxHeight + resizePaddingBottom).toString() + 'px' : resizePaddingBottom.toString() + 'px';
5475
+ if (this.header || this.footer || this.itemTemplate) {
5476
+ this.list.parentElement.style.paddingBottom = ((parseInt(this.list.parentElement.style.maxHeight, 10) - parseInt(this.list.style.maxHeight, 10)) + resizePaddingBottom).toString() + 'px';
5477
+ }
5478
+ this.list.parentElement.appendChild(this.resizer);
5479
+ //hold the popup resize
5480
+ this.list.parentElement.style.width = `${this.resizeWidth}px`;
5481
+ this.list.parentElement.style.height = `${this.resizeHeight}px`;
5482
+ this.list.parentElement.style.maxHeight = `${this.resizeHeight}px`;
5483
+ this.list.style.maxHeight = `${this.resizeHeight}px`;
5484
+ }
5485
+ // Attach mouse and touch events to the resizer
5486
+ EventHandler.add(this.resizer, 'mousedown', this.startResizing, this);
5487
+ EventHandler.add(this.resizer, 'touchstart', this.startResizing, this);
5488
+ }
5315
5489
  }
5316
5490
  else {
5317
5491
  this.beforePopupOpen = false;
@@ -5545,7 +5719,8 @@ let DropDownList = class DropDownList extends DropDownBase {
5545
5719
  }
5546
5720
  else {
5547
5721
  this.list.scrollTop = this.virtualListInfo && this.virtualListInfo.startIndex ?
5548
- this.virtualListInfo.startIndex * this.listItemHeight : 0;
5722
+ isInitial && this.virtualListInfo.startIndex ? this.virtualListInfo.startIndex * this.listItemHeight +
5723
+ (this.listItemHeight * 2) : this.virtualListInfo.startIndex * this.listItemHeight : 0;
5549
5724
  }
5550
5725
  isScrollerCHanged = this.isKeyBoardAction;
5551
5726
  }
@@ -5692,15 +5867,6 @@ let DropDownList = class DropDownList extends DropDownBase {
5692
5867
  this.keyboardEvent = null;
5693
5868
  EventHandler.remove(document, 'mousedown', this.onDocumentClick);
5694
5869
  this.isActive = false;
5695
- if (this.getModuleName() === 'dropdownlist') {
5696
- Input.destroy({
5697
- element: this.filterInput,
5698
- floatLabelType: this.floatLabelType,
5699
- properties: { placeholder: this.filterBarPlaceholder },
5700
- buttons: this.clearIconElement
5701
- }, this.clearIconElement);
5702
- }
5703
- this.filterInputObj = null;
5704
5870
  this.isDropDownClick = false;
5705
5871
  this.preventAutoFill = false;
5706
5872
  const scrollableParentElements = this.popupObj.getScrollableParent(this.inputWrapper.container);
@@ -5772,6 +5938,15 @@ let DropDownList = class DropDownList extends DropDownBase {
5772
5938
  const popupInstance = this.popupObj;
5773
5939
  const eventArgs = { popup: popupInstance, cancel: false, animation: animModel, event: e || null };
5774
5940
  this.trigger('close', eventArgs, (eventArgs) => {
5941
+ if (this.getModuleName() === 'dropdownlist') {
5942
+ Input.destroy({
5943
+ element: this.filterInput,
5944
+ floatLabelType: this.floatLabelType,
5945
+ properties: { placeholder: this.filterBarPlaceholder },
5946
+ buttons: this.clearIconElement
5947
+ }, this.clearIconElement);
5948
+ }
5949
+ this.filterInputObj = null;
5775
5950
  if (!isNullOrUndefined(this.popupObj) &&
5776
5951
  !isNullOrUndefined(this.popupObj.element.querySelector('.e-fixed-head'))) {
5777
5952
  const fixedHeader = this.popupObj.element.querySelector('.e-fixed-head');
@@ -5842,6 +6017,12 @@ let DropDownList = class DropDownList extends DropDownBase {
5842
6017
  // eslint-disable-next-line @typescript-eslint/no-explicit-any
5843
6018
  this.list.getElementsByClassName('e-virtual-ddl')[0].style = this.GetVirtualTrackHeight();
5844
6019
  }
6020
+ else if (!this.list.querySelector('.e-virtual-ddl')) {
6021
+ const virualElement = this.createElement('div', {
6022
+ id: this.element.id + '_popup', className: 'e-virtual-ddl', styles: this.GetVirtualTrackHeight()
6023
+ });
6024
+ this.list.parentElement.querySelector('.e-dropdownbase').appendChild(virualElement);
6025
+ }
5845
6026
  if (this.getModuleName() !== 'autocomplete' && this.totalItemCount !== 0 && this.totalItemCount > (this.itemCount * 2)) {
5846
6027
  this.getSkeletonCount();
5847
6028
  }
@@ -5860,6 +6041,10 @@ let DropDownList = class DropDownList extends DropDownBase {
5860
6041
  this.isFilterFocus = false;
5861
6042
  this.inputElement.removeAttribute('aria-controls');
5862
6043
  if (this.popupObj) {
6044
+ if (this.resizer) {
6045
+ EventHandler.remove(this.resizer, 'mousedown', this.startResizing);
6046
+ EventHandler.remove(this.resizer, 'touchstart', this.startResizing);
6047
+ }
5863
6048
  this.popupObj.destroy();
5864
6049
  detach(this.popupObj.element);
5865
6050
  }
@@ -6570,6 +6755,15 @@ let DropDownList = class DropDownList extends DropDownBase {
6570
6755
  isOpen: true
6571
6756
  });
6572
6757
  }
6758
+ // eslint-disable-next-line @typescript-eslint/no-this-alias
6759
+ const proxy = this;
6760
+ const duration = (this.element.tagName === this.getNgDirective() && this.itemTemplate) ? 500 : 100;
6761
+ if (!this.isSecondClick && this.isReact && !this.isDropDownClick && this.isFiltering() && this.itemTemplate != null) {
6762
+ setTimeout(() => {
6763
+ proxy.cloneElements();
6764
+ proxy.isSecondClick = true;
6765
+ }, duration);
6766
+ }
6573
6767
  }
6574
6768
  invokeRenderPopup(e) {
6575
6769
  if (Browser.isDevice && this.isFilterLayout()) {
@@ -6907,6 +7101,9 @@ __decorate$1([
6907
7101
  __decorate$1([
6908
7102
  Property(false)
6909
7103
  ], DropDownList.prototype, "enableVirtualization", void 0);
7104
+ __decorate$1([
7105
+ Property(false)
7106
+ ], DropDownList.prototype, "allowResize", void 0);
6910
7107
  __decorate$1([
6911
7108
  Property(null)
6912
7109
  ], DropDownList.prototype, "text", void 0);
@@ -6946,6 +7143,15 @@ __decorate$1([
6946
7143
  __decorate$1([
6947
7144
  Event()
6948
7145
  ], DropDownList.prototype, "focus", void 0);
7146
+ __decorate$1([
7147
+ Event()
7148
+ ], DropDownList.prototype, "resizeStop", void 0);
7149
+ __decorate$1([
7150
+ Event()
7151
+ ], DropDownList.prototype, "resizing", void 0);
7152
+ __decorate$1([
7153
+ Event()
7154
+ ], DropDownList.prototype, "resizeStart", void 0);
6949
7155
  DropDownList = __decorate$1([
6950
7156
  NotifyPropertyChanges
6951
7157
  ], DropDownList);
@@ -10715,7 +10921,7 @@ let ComboBox = class ComboBox extends DropDownList {
10715
10921
  const inputValue = this.inputElement.value;
10716
10922
  const dataSource = this.sortedData;
10717
10923
  const type = this.typeOfData(dataSource).typeof;
10718
- let activeItem = Search(inputValue, this.liCollections, this.filterType, true, dataSource, this.fields, type);
10924
+ let activeItem = Search(inputValue, this.liCollections, this.filterType, true, dataSource, this.fields, type, this.ignoreAccent);
10719
10925
  if (this.enableVirtualization && inputValue !== '' && this.getModuleName() !== 'autocomplete' && this.isTyped && !this.allowFiltering) {
10720
10926
  let updatingincrementalindex = false;
10721
10927
  const isEndIndexValid = this.viewPortInfo.endIndex >= this.incrementalEndIndex &&
@@ -11671,11 +11877,11 @@ let AutoComplete = class AutoComplete extends ComboBox {
11671
11877
  });
11672
11878
  this.list.appendChild(virtualElement).appendChild(this.list.querySelector('.e-list-parent'));
11673
11879
  }
11674
- if (!this.list.querySelector('.e-virtual-ddl') && document.getElementsByClassName('e-popup') && document.getElementsByClassName('e-popup')[0]) {
11880
+ if (!this.list.querySelector('.e-virtual-ddl') && this.list.parentElement) {
11675
11881
  const virtualElement = this.createElement('div', {
11676
11882
  id: this.element.id + '_popup', className: 'e-virtual-ddl', styles: this.GetVirtualTrackHeight()
11677
11883
  });
11678
- document.getElementsByClassName('e-popup')[0].querySelector('.e-dropdownbase').appendChild(virtualElement);
11884
+ this.list.parentElement.querySelector('.e-dropdownbase').appendChild(virtualElement);
11679
11885
  }
11680
11886
  }
11681
11887
  if ((this.getModuleName() === 'autocomplete' && !(this.dataSource instanceof DataManager)) || (this.getModuleName() === 'autocomplete' && (this.dataSource instanceof DataManager) && this.totalItemCount !== 0)) {
@@ -11710,6 +11916,9 @@ let AutoComplete = class AutoComplete extends ComboBox {
11710
11916
  if (!isNullOrUndefined(item)) {
11711
11917
  removeClass([item], dropDownListClasses.focus);
11712
11918
  }
11919
+ if (!isNullOrUndefined(this.itemData) && !this.enableVirtualization) {
11920
+ this.focusIndexItem();
11921
+ }
11713
11922
  this.postBackAction();
11714
11923
  }
11715
11924
  postBackAction() {
@@ -12202,6 +12411,7 @@ const BOX_ELEMENT = 'e-multiselect-box';
12202
12411
  const FILTERPARENT = 'e-filter-parent';
12203
12412
  const CUSTOM_WIDTH = 'e-search-custom-width';
12204
12413
  const FILTERINPUT = 'e-input-filter';
12414
+ const RESIZE_ICON = 'e-resizer-right e-icons';
12205
12415
  /**
12206
12416
  * The Multiselect allows the user to pick a more than one value from list of predefined values.
12207
12417
  * ```html
@@ -12232,6 +12442,9 @@ let MultiSelect = class MultiSelect extends DropDownBase {
12232
12442
  super(option, element);
12233
12443
  this.clearIconWidth = 0;
12234
12444
  this.previousFilterText = '';
12445
+ this.storedSelectAllHeight = 0;
12446
+ this.isUpdateHeaderHeight = false;
12447
+ this.isUpdateFooterHeight = false;
12235
12448
  this.isValidKey = false;
12236
12449
  this.selectAllEventData = [];
12237
12450
  this.selectAllEventEle = [];
@@ -12379,7 +12592,7 @@ let MultiSelect = class MultiSelect extends DropDownBase {
12379
12592
  const eventArgs = { popup: this.popupObj, event: e, cancel: false, animation: animModel };
12380
12593
  this.trigger('open', eventArgs, (eventArgs) => {
12381
12594
  if (!eventArgs.cancel) {
12382
- this.focusAtFirstListItem();
12595
+ this.focusAtFirstListItem(true);
12383
12596
  if (this.popupObj) {
12384
12597
  document.body.appendChild(this.popupObj.element);
12385
12598
  }
@@ -12394,6 +12607,23 @@ let MultiSelect = class MultiSelect extends DropDownBase {
12394
12607
  if (this.popupObj) {
12395
12608
  this.popupObj.show(eventArgs.animation, (this.zIndex === 1000) ? this.element : null);
12396
12609
  }
12610
+ if (this.isReact) {
12611
+ setTimeout(() => {
12612
+ if (this.popupHeight && this.list && this.popupHeight !== 'auto') {
12613
+ const popupHeightValue = typeof this.popupHeight === 'string' ? parseInt(this.popupHeight, 10) : this.popupHeight;
12614
+ if (!this.isUpdateHeaderHeight && this.headerTemplate && this.header) {
12615
+ const listHeight = this.list.style.maxHeight === '' ? popupHeightValue : parseInt(this.list.style.maxHeight, 10);
12616
+ this.list.style.maxHeight = (listHeight - this.header.offsetHeight).toString() + 'px';
12617
+ this.isUpdateHeaderHeight = true;
12618
+ }
12619
+ if (!this.isUpdateFooterHeight && this.footerTemplate && this.footer) {
12620
+ const listHeight = this.list.style.maxHeight === '' ? popupHeightValue : parseInt(this.list.style.maxHeight, 10);
12621
+ this.list.style.maxHeight = (listHeight - this.footer.offsetHeight).toString() + 'px';
12622
+ this.isUpdateFooterHeight = true;
12623
+ }
12624
+ }
12625
+ }, 15);
12626
+ }
12397
12627
  attributes(this.inputElement, {
12398
12628
  'aria-expanded': 'true', 'aria-owns': this.element.id + '_popup', 'aria-controls': this.element.id
12399
12629
  });
@@ -12470,16 +12700,16 @@ let MultiSelect = class MultiSelect extends DropDownBase {
12470
12700
  : this.value[this.value.length - 1];
12471
12701
  const valueEle = this.findListElement((this.hideSelectedItem ? this.ulElement : this.list), 'li', 'data-value', value);
12472
12702
  if (!isNullOrUndefined(valueEle)) {
12473
- this.scrollBottom(valueEle);
12703
+ this.scrollBottom(valueEle, undefined, false, null, true);
12474
12704
  }
12475
12705
  }
12476
12706
  if (this.enableVirtualization) {
12477
12707
  const focusedItem = this.list.querySelector('.' + dropDownBaseClasses.focus);
12478
12708
  this.isKeyBoardAction = false;
12479
- this.scrollBottom(focusedItem);
12709
+ this.scrollBottom(focusedItem, undefined, false, null, true);
12480
12710
  }
12481
12711
  }
12482
- focusAtFirstListItem() {
12712
+ focusAtFirstListItem(isOpen) {
12483
12713
  if (this.ulElement && this.ulElement.querySelector('li.'
12484
12714
  + dropDownBaseClasses.li)) {
12485
12715
  let element;
@@ -12492,10 +12722,18 @@ let MultiSelect = class MultiSelect extends DropDownBase {
12492
12722
  if (this.fields.disabled) {
12493
12723
  element = this.ulElement.querySelector('li.'
12494
12724
  + dropDownBaseClasses.li + ':not(.e-virtual-list)' + ':not(.e-hide-listitem)' + ':not(.' + DISABLED$1 + ')');
12725
+ if (isOpen && this.viewPortInfo && this.viewPortInfo.startIndex !== 0) {
12726
+ const elements = this.ulElement.querySelectorAll('li.' + dropDownBaseClasses.li + ':not(.e-virtual-list)' + ':not(.e-hide-listitem)');
12727
+ element = elements && elements.length > 0 ? elements[2] : element;
12728
+ }
12495
12729
  }
12496
12730
  else {
12497
12731
  element = this.ulElement.querySelector('li.'
12498
12732
  + dropDownBaseClasses.li + ':not(.e-virtual-list)' + ':not(.e-hide-listitem)');
12733
+ if (isOpen && this.viewPortInfo && this.viewPortInfo.startIndex !== 0) {
12734
+ const elements = this.ulElement.querySelectorAll('li.' + dropDownBaseClasses.li + ':not(.e-virtual-list)' + ':not(.e-hide-listitem)');
12735
+ element = elements && elements.length > 0 ? elements[2] : element;
12736
+ }
12499
12737
  }
12500
12738
  }
12501
12739
  else {
@@ -12792,7 +13030,7 @@ let MultiSelect = class MultiSelect extends DropDownBase {
12792
13030
  if (this.hideSelectedItem && element.classList.contains(dropDownBaseClasses.focus)) {
12793
13031
  removeClass([element], dropDownBaseClasses.focus);
12794
13032
  const listEle = element.parentElement.querySelectorAll('.' +
12795
- dropDownBaseClasses.li + ':not(.' + HIDE_LIST + ')');
13033
+ dropDownBaseClasses.li + ':not(.' + HIDE_LIST + ')' + ':not(.' + DISABLED$1 + ')');
12796
13034
  if (listEle.length > 0) {
12797
13035
  addClass([listEle[0]], dropDownBaseClasses.focus);
12798
13036
  this.updateAriaActiveDescendant();
@@ -12961,7 +13199,7 @@ let MultiSelect = class MultiSelect extends DropDownBase {
12961
13199
  if (!(this.dataSource instanceof DataManager) && dataType === 'string' || dataType === 'number') {
12962
13200
  filterQuery.where('', this.filterType, this.targetElement(), this.ignoreCase, this.ignoreAccent);
12963
13201
  }
12964
- else if ((this.enableVirtualization && this.targetElement() !== '') || !this.enableVirtualization) {
13202
+ else if ((this.enableVirtualization && this.targetElement() !== '' && !this.isClearAllAction) || !this.enableVirtualization) {
12965
13203
  const fields = this.fields;
12966
13204
  filterQuery.where(!isNullOrUndefined(fields.text) ? fields.text : '', this.filterType, this.targetElement(), this.ignoreCase, this.ignoreAccent);
12967
13205
  }
@@ -12969,6 +13207,11 @@ let MultiSelect = class MultiSelect extends DropDownBase {
12969
13207
  if (this.enableVirtualization && (this.viewPortInfo.endIndex !== 0) && !this.virtualSelectAll) {
12970
13208
  return this.virtualFilterQuery(filterQuery);
12971
13209
  }
13210
+ if (this.virtualSelectAll) {
13211
+ return query ? query.take(this.maximumSelectionLength).requiresCount() : this.query ?
13212
+ this.query.take(this.maximumSelectionLength).requiresCount() :
13213
+ new Query().take(this.maximumSelectionLength).requiresCount();
13214
+ }
12972
13215
  return filterQuery;
12973
13216
  }
12974
13217
  else {
@@ -13154,6 +13397,9 @@ let MultiSelect = class MultiSelect extends DropDownBase {
13154
13397
  this.getFilteringSkeletonCount();
13155
13398
  }
13156
13399
  this.refreshPopup();
13400
+ if (this.allowResize) {
13401
+ this.setResize();
13402
+ }
13157
13403
  if (this.mode === 'CheckBox') {
13158
13404
  this.removeFocus();
13159
13405
  }
@@ -13487,6 +13733,15 @@ let MultiSelect = class MultiSelect extends DropDownBase {
13487
13733
  ':not(.' + HIDE_LIST + ')' +
13488
13734
  ':not(.e-reorder-hide)');
13489
13735
  let previousItem = steps >= 0 ? collection[steps + 1] : collection[0];
13736
+ if (this.fields.disabled && previousItem && !this.enableVirtualization) {
13737
+ while (previousItem && (previousItem.classList.contains('e-disabled') || previousItem.classList.contains(HIDE_LIST) ||
13738
+ previousItem.classList.contains('.e-reorder-hide') || previousItem.classList.contains('e-list-group-item'))) {
13739
+ previousItem = previousItem.previousElementSibling;
13740
+ }
13741
+ if (!previousItem) {
13742
+ return;
13743
+ }
13744
+ }
13490
13745
  if (this.enableVirtualization && isVirtualKeyAction) {
13491
13746
  previousItem = (this.liCollections.length >= steps && steps >= 0)
13492
13747
  ? this.liCollections[steps]
@@ -13518,6 +13773,15 @@ let MultiSelect = class MultiSelect extends DropDownBase {
13518
13773
  const collection = this.list.querySelectorAll('li.'
13519
13774
  + dropDownBaseClasses.li + ':not(.' + HIDE_LIST + ')' + ':not(.e-reorder-hide)');
13520
13775
  let previousItem = steps <= collection.length ? collection[steps - 1] : collection[collection.length - 1];
13776
+ if (this.fields.disabled && previousItem && !this.enableVirtualization) {
13777
+ while (previousItem && (previousItem.classList.contains('e-disabled') || previousItem.classList.contains(HIDE_LIST) ||
13778
+ previousItem.classList.contains('.e-reorder-hide') || previousItem.classList.contains('e-list-group-item'))) {
13779
+ previousItem = previousItem.nextElementSibling;
13780
+ }
13781
+ if (!previousItem) {
13782
+ return;
13783
+ }
13784
+ }
13521
13785
  if (this.enableVirtualization && this.skeletonCount > 0) {
13522
13786
  previousItem = steps < list.length ? this.liCollections[steps] : this.liCollections[list.length - 1];
13523
13787
  }
@@ -13568,6 +13832,9 @@ let MultiSelect = class MultiSelect extends DropDownBase {
13568
13832
  if (this.isPopupOpen()) {
13569
13833
  this.refreshPopup();
13570
13834
  }
13835
+ if (this.allowResize) {
13836
+ this.setResize();
13837
+ }
13571
13838
  setTimeout(() => {
13572
13839
  this.calculateWidth();
13573
13840
  }, 150);
@@ -13804,6 +14071,7 @@ let MultiSelect = class MultiSelect extends DropDownBase {
13804
14071
  if (this.mode === 'CheckBox') {
13805
14072
  this.inputElement.focus();
13806
14073
  }
14074
+ this.isKeyBoardAction = false;
13807
14075
  return;
13808
14076
  case 13:
13809
14077
  e.preventDefault();
@@ -13812,10 +14080,12 @@ let MultiSelect = class MultiSelect extends DropDownBase {
13812
14080
  this.selectByKey(e);
13813
14081
  }
13814
14082
  this.checkPlaceholderSize();
14083
+ this.isKeyBoardAction = false;
13815
14084
  return;
13816
14085
  case 32:
13817
14086
  this.isKeyBoardAction = true;
13818
14087
  this.spaceKeySelection(e);
14088
+ this.isKeyBoardAction = false;
13819
14089
  return;
13820
14090
  case 9:
13821
14091
  e.preventDefault();
@@ -13857,6 +14127,9 @@ let MultiSelect = class MultiSelect extends DropDownBase {
13857
14127
  if (!(this.mode === 'CheckBox' && this.showSelectAll)) {
13858
14128
  this.refreshPopup();
13859
14129
  }
14130
+ if (this.allowResize) {
14131
+ this.setResize();
14132
+ }
13860
14133
  this.isKeyBoardAction = false;
13861
14134
  }
13862
14135
  arrowDown(e, isVirtualKeyAction) {
@@ -13981,7 +14254,7 @@ let MultiSelect = class MultiSelect extends DropDownBase {
13981
14254
  }
13982
14255
  this.makeTextBoxEmpty();
13983
14256
  }
13984
- scrollBottom(selectedLI, activeIndex, isInitialSelection = false, keyCode = null) {
14257
+ scrollBottom(selectedLI, activeIndex, isInitialSelection = false, keyCode = null, isInitial = false) {
13985
14258
  if ((!isNullOrUndefined(selectedLI) && selectedLI.classList.contains('e-virtual-list')) ||
13986
14259
  (this.enableVirtualization && isNullOrUndefined(selectedLI))) {
13987
14260
  selectedLI = this.liCollections[this.skeletonCount];
@@ -14035,8 +14308,9 @@ let MultiSelect = class MultiSelect extends DropDownBase {
14035
14308
  }
14036
14309
  }
14037
14310
  else {
14038
- this.list.scrollTop = this.virtualListInfo &&
14039
- this.virtualListInfo.startIndex ? this.virtualListInfo.startIndex * this.listItemHeight : 0;
14311
+ this.list.scrollTop = this.virtualListInfo && this.virtualListInfo.startIndex ?
14312
+ isInitial && this.virtualListInfo.startIndex ? this.virtualListInfo.startIndex * this.listItemHeight +
14313
+ (this.listItemHeight * 2) : this.virtualListInfo.startIndex * this.listItemHeight : 0;
14040
14314
  }
14041
14315
  isScrollerCHanged = this.isKeyBoardAction;
14042
14316
  }
@@ -14237,6 +14511,7 @@ let MultiSelect = class MultiSelect extends DropDownBase {
14237
14511
  this.getDataByValue(this.getFormattedValue(selectedElem.getAttribute('data-value'))) :
14238
14512
  selectedElem.getAttribute('data-value');
14239
14513
  this.removeValue(currentChip, e);
14514
+ this.updateDelimeter(this.delimiterChar, e);
14240
14515
  this.makeTextBoxEmpty();
14241
14516
  }
14242
14517
  if (this.closePopupOnSelect) {
@@ -14359,7 +14634,7 @@ let MultiSelect = class MultiSelect extends DropDownBase {
14359
14634
  return;
14360
14635
  }
14361
14636
  const index = this.getIndexByValue(focusedLi.getAttribute('data-value'));
14362
- if (index === 0 && this.mode !== 'CheckBox') {
14637
+ if (index === 0) {
14363
14638
  position = 1;
14364
14639
  }
14365
14640
  if (index === (this.list.querySelectorAll('.e-list-item:not(.e-hide-listitem)').length - 1)) {
@@ -15005,6 +15280,7 @@ let MultiSelect = class MultiSelect extends DropDownBase {
15005
15280
  if (this.headerTemplate) {
15006
15281
  this.setHeaderTemplate();
15007
15282
  overAllHeight -= this.header.offsetHeight;
15283
+ this.isUpdateHeaderHeight = this.header.offsetHeight !== 0;
15008
15284
  }
15009
15285
  append([this.list], this.popupWrapper);
15010
15286
  if (!this.list.classList.contains(dropDownBaseClasses.noData) && this.getItems()[1]) {
@@ -15042,6 +15318,7 @@ let MultiSelect = class MultiSelect extends DropDownBase {
15042
15318
  if (this.footerTemplate) {
15043
15319
  this.setFooterTemplate();
15044
15320
  overAllHeight -= this.footer.offsetHeight;
15321
+ this.isUpdateFooterHeight = this.footer.offsetHeight !== 0;
15045
15322
  }
15046
15323
  if (this.mode === 'CheckBox' && this.showSelectAll) {
15047
15324
  this.notify('selectAll', { module: 'CheckBoxSelection', enable: this.mode === 'CheckBox' });
@@ -15159,6 +15436,9 @@ let MultiSelect = class MultiSelect extends DropDownBase {
15159
15436
  if (this.mode === 'CheckBox' && Browser.isDevice && this.allowFiltering && this.isDeviceFullScreen) {
15160
15437
  this.notify('deviceSearchBox', { module: 'CheckBoxSelection', enable: this.mode === 'CheckBox' });
15161
15438
  }
15439
+ if (this.allowResize) {
15440
+ this.setResize();
15441
+ }
15162
15442
  this.popupObj.close();
15163
15443
  this.popupWrapper.style.visibility = '';
15164
15444
  }
@@ -15282,6 +15562,7 @@ let MultiSelect = class MultiSelect extends DropDownBase {
15282
15562
  if (this.enabled && !this.readonly) {
15283
15563
  let temp;
15284
15564
  this.setDynValue = false;
15565
+ this.isClearAllAction = true;
15285
15566
  if (this.value && this.value.length > 0) {
15286
15567
  if (this.allowFiltering) {
15287
15568
  this.refreshListItems(null);
@@ -15328,6 +15609,7 @@ let MultiSelect = class MultiSelect extends DropDownBase {
15328
15609
  this.previousStartIndex = 0;
15329
15610
  this.previousEndIndex = 0;
15330
15611
  }
15612
+ this.isClearAllAction = false;
15331
15613
  }
15332
15614
  this.isClearAllItem = true;
15333
15615
  EventHandler.add(document, 'mouseup', this.preventSelection, this);
@@ -15358,6 +15640,9 @@ let MultiSelect = class MultiSelect extends DropDownBase {
15358
15640
  if (this.isPopupOpen()) {
15359
15641
  this.refreshPopup();
15360
15642
  }
15643
+ if (this.allowResize) {
15644
+ this.setResize();
15645
+ }
15361
15646
  if (!this.inputFocus) {
15362
15647
  if (this.changeOnBlur) {
15363
15648
  this.updateValueState(e, this.value, tempValues);
@@ -16160,6 +16445,9 @@ let MultiSelect = class MultiSelect extends DropDownBase {
16160
16445
  }
16161
16446
  this.checkSelectAll();
16162
16447
  this.refreshPopup();
16448
+ if (this.allowResize) {
16449
+ this.setResize();
16450
+ }
16163
16451
  if (this.hideSelectedItem) {
16164
16452
  this.focusAtFirstListItem();
16165
16453
  }
@@ -16674,6 +16962,22 @@ let MultiSelect = class MultiSelect extends DropDownBase {
16674
16962
  EventHandler.remove(this.inputElement, 'paste', this.pasteHandler);
16675
16963
  }
16676
16964
  }
16965
+ resizingWireEvent() {
16966
+ // Mouse events
16967
+ EventHandler.add(document, 'mousemove', this.resizePopup, this);
16968
+ EventHandler.add(document, 'mouseup', this.stopResizing, this);
16969
+ // Touch events
16970
+ EventHandler.add(document, 'touchmove', this.resizePopup, this);
16971
+ EventHandler.add(document, 'touchend', this.stopResizing, this);
16972
+ }
16973
+ resizingUnWireEvent() {
16974
+ // Mouse events
16975
+ EventHandler.remove(document, 'mousemove', this.resizePopup);
16976
+ EventHandler.remove(document, 'mouseup', this.stopResizing);
16977
+ // Touch events
16978
+ EventHandler.remove(document, 'touchmove', this.resizePopup);
16979
+ EventHandler.remove(document, 'touchend', this.stopResizing);
16980
+ }
16677
16981
  selectAllItem(state, event, list) {
16678
16982
  let li;
16679
16983
  if (!isNullOrUndefined(this.list)) {
@@ -17195,6 +17499,20 @@ let MultiSelect = class MultiSelect extends DropDownBase {
17195
17499
  this.enableRTL(newProp.enableRtl);
17196
17500
  super.onPropertyChanged(newProp, oldProp);
17197
17501
  break;
17502
+ case 'allowResize':
17503
+ this.allowResize = newProp.allowResize;
17504
+ if (!this.allowResize && this.popupObj) {
17505
+ const overAllHeight = parseInt(this.popupHeight, 10);
17506
+ if (this.popupHeight !== 'auto') {
17507
+ this.list.style.maxHeight = formatUnit(overAllHeight);
17508
+ this.popupWrapper.style.height = formatUnit(this.popupHeight);
17509
+ this.popupWrapper.style.maxHeight = formatUnit(this.popupHeight);
17510
+ }
17511
+ else {
17512
+ this.list.style.maxHeight = formatUnit(this.popupHeight);
17513
+ }
17514
+ }
17515
+ break;
17198
17516
  case 'readonly':
17199
17517
  this.updateReadonly(newProp.readonly);
17200
17518
  this.hidePopup();
@@ -17437,6 +17755,24 @@ let MultiSelect = class MultiSelect extends DropDownBase {
17437
17755
  if (this.mode === 'CheckBox' && this.showSelectAll) {
17438
17756
  EventHandler.remove(this.popupObj.element, 'click', this.clickHandler);
17439
17757
  }
17758
+ if (this.list && this.list.parentElement && this.allowResize) {
17759
+ if (this.resizer && this.list.parentElement.contains(this.resizer)) {
17760
+ this.list.parentElement.removeChild(this.resizer);
17761
+ }
17762
+ if (this.list.parentElement.classList.contains('e-resize')) {
17763
+ this.list.parentElement.classList.remove('e-resize');
17764
+ }
17765
+ this.list.parentElement.style.boxSizing = '';
17766
+ this.list.parentElement.style.paddingBottom = '';
17767
+ const overAllHeight = parseInt(this.popupHeight, 10);
17768
+ this.list.style.maxHeight = formatUnit(overAllHeight);
17769
+ this.list.parentElement.style.height = formatUnit(this.popupHeight);
17770
+ this.list.parentElement.style.maxHeight = formatUnit(this.popupHeight);
17771
+ }
17772
+ if (this.resizer) {
17773
+ EventHandler.remove(this.resizer, 'mousedown', this.startResizing);
17774
+ this.resizer.remove();
17775
+ }
17440
17776
  if (this.enableVirtualization && this.mode === 'CheckBox' && this.value && this.value.length > 0 &&
17441
17777
  this.enableSelectionOrder) {
17442
17778
  this.viewPortInfo.startIndex = this.virtualItemStartIndex = 0;
@@ -17552,6 +17888,9 @@ let MultiSelect = class MultiSelect extends DropDownBase {
17552
17888
  }
17553
17889
  }
17554
17890
  }
17891
+ if (this.allowResize) {
17892
+ this.setResize();
17893
+ }
17555
17894
  this.preventSetCurrentData = true;
17556
17895
  }
17557
17896
  });
@@ -17736,6 +18075,102 @@ let MultiSelect = class MultiSelect extends DropDownBase {
17736
18075
  }
17737
18076
  this.renderComplete();
17738
18077
  }
18078
+ setResize() {
18079
+ const resizePaddingBottom = 16;
18080
+ if (this.list && this.list.parentElement && isNullOrUndefined(this.list.parentElement.querySelector('.e-resizer-right.e-icons'))) {
18081
+ this.resizer = this.createElement('div', {
18082
+ id: this.element.id + '_resize-popup',
18083
+ className: RESIZE_ICON
18084
+ });
18085
+ }
18086
+ if (this.mode === 'CheckBox' && this.showSelectAll && this.selectAllHeight && this.selectAllHeight !== 0) {
18087
+ this.storedSelectAllHeight = this.selectAllHeight;
18088
+ }
18089
+ if (this.list && this.list.parentElement) {
18090
+ this.list.parentElement.classList.add('e-resize');
18091
+ if (this.popupHeight.toString().toLowerCase() !== 'auto') {
18092
+ this.list.parentElement.style.height = '100%';
18093
+ }
18094
+ this.list.parentElement.style.boxSizing = 'border-box'; // Ensures padding doesn't affect element size
18095
+ const paddingBottom = this.mode === 'CheckBox' && this.searchBoxHeight ? this.searchBoxHeight + resizePaddingBottom + (this.showSelectAll ? this.storedSelectAllHeight : 0) : resizePaddingBottom;
18096
+ this.list.parentElement.style.paddingBottom = `${paddingBottom}px`;
18097
+ this.list.parentElement.appendChild(this.resizer);
18098
+ this.list.parentElement.style.width = this.resizeWidth + 'px';
18099
+ this.list.parentElement.style.height = this.resizeHeight + 'px';
18100
+ this.list.parentElement.style.maxHeight = this.resizeHeight + 'px';
18101
+ this.list.style.maxHeight = `${this.resizeHeight}px`;
18102
+ }
18103
+ if (this.resizer) {
18104
+ EventHandler.add(this.resizer, 'mousedown', this.startResizing, this);
18105
+ EventHandler.add(this.resizer, 'touchstart', this.startResizing, this);
18106
+ }
18107
+ }
18108
+ startResizing(event) {
18109
+ this.isResizing = true;
18110
+ this.trigger('resizeStart', event);
18111
+ // Get initial touch or mouse coordinates
18112
+ const clientX = (event instanceof MouseEvent) ? event.clientX : event.touches[0].clientX;
18113
+ const clientY = (event instanceof MouseEvent) ? event.clientY : event.touches[0].clientY;
18114
+ if (this.list && this.list.parentElement) {
18115
+ this.originalWidth = this.list.parentElement.offsetWidth;
18116
+ this.originalHeight = this.list.parentElement.offsetHeight;
18117
+ this.originalMouseX = clientX;
18118
+ this.originalMouseY = clientY;
18119
+ }
18120
+ this.resizingWireEvent();
18121
+ // Prevent default behavior like text selection
18122
+ if (event) {
18123
+ event.preventDefault();
18124
+ }
18125
+ }
18126
+ resizePopup(event) {
18127
+ if (!this.isResizing) {
18128
+ return;
18129
+ }
18130
+ this.trigger('resizing', event);
18131
+ // Get the current touch or mouse position
18132
+ const clientX = (event instanceof MouseEvent) ? event.clientX : event.touches[0].clientX;
18133
+ const clientY = (event instanceof MouseEvent) ? event.clientY : event.touches[0].clientY;
18134
+ // Calculate the new width and height based on drag
18135
+ const dx = clientX - this.originalMouseX;
18136
+ const dy = clientY - this.originalMouseY;
18137
+ // Set minimum width and height (100px)
18138
+ const minWidth = 100;
18139
+ const minHeight = 130;
18140
+ // Ensure the new width and height are not smaller than the minimum
18141
+ this.resizeWidth = Math.max(this.originalWidth + dx, minWidth);
18142
+ this.resizeHeight = Math.max(this.originalHeight + dy, minHeight);
18143
+ if (this.list && this.list.parentElement) {
18144
+ // Set minimum width and height (100px)
18145
+ let minWidth = parseInt(window.getComputedStyle(this.list.parentElement).minWidth, 10);
18146
+ let minHeight = parseInt(window.getComputedStyle(this.list.parentElement).minHeight, 10);
18147
+ minWidth = minWidth || 100;
18148
+ minHeight = minHeight || 120;
18149
+ // Ensure the new width and height are not smaller than the minimum
18150
+ this.resizeWidth = Math.max(this.originalWidth + dx, minWidth);
18151
+ this.resizeHeight = Math.max(this.originalHeight + dy, minHeight);
18152
+ this.list.parentElement.style.width = `${this.resizeWidth}px`;
18153
+ this.list.parentElement.style.height = `${this.resizeHeight}px`;
18154
+ this.list.parentElement.style.maxHeight = `${this.resizeHeight}px`;
18155
+ this.list.style.maxHeight = `${this.resizeHeight}px`;
18156
+ if (this.fixedHeaderElement && this.ulElement) {
18157
+ this.fixedHeaderElement.style.width = `${this.ulElement.offsetWidth}px`;
18158
+ }
18159
+ }
18160
+ if (event) {
18161
+ event.preventDefault();
18162
+ }
18163
+ }
18164
+ stopResizing(event) {
18165
+ if (this.isResizing) {
18166
+ this.isResizing = false;
18167
+ this.trigger('resizeStop', event);
18168
+ this.resizingUnWireEvent();
18169
+ }
18170
+ if (event) {
18171
+ event.preventDefault();
18172
+ }
18173
+ }
17739
18174
  getListHeight() {
17740
18175
  const listParent = this.createElement('div', {
17741
18176
  className: 'e-dropdownbase'
@@ -18121,6 +18556,7 @@ let MultiSelect = class MultiSelect extends DropDownBase {
18121
18556
  this.inputElement = null;
18122
18557
  this.delimiterWrapper = null;
18123
18558
  this.liCollections = null;
18559
+ this.popupContentElement = null;
18124
18560
  this.header = null;
18125
18561
  this.mainList = null;
18126
18562
  this.mainListCollection = null;
@@ -18231,6 +18667,9 @@ __decorate$5([
18231
18667
  __decorate$5([
18232
18668
  Property(false)
18233
18669
  ], MultiSelect.prototype, "readonly", void 0);
18670
+ __decorate$5([
18671
+ Property(false)
18672
+ ], MultiSelect.prototype, "allowResize", void 0);
18234
18673
  __decorate$5([
18235
18674
  Property(null)
18236
18675
  ], MultiSelect.prototype, "text", void 0);
@@ -18312,6 +18751,15 @@ __decorate$5([
18312
18751
  __decorate$5([
18313
18752
  Event()
18314
18753
  ], MultiSelect.prototype, "chipSelection", void 0);
18754
+ __decorate$5([
18755
+ Event()
18756
+ ], MultiSelect.prototype, "resizeStop", void 0);
18757
+ __decorate$5([
18758
+ Event()
18759
+ ], MultiSelect.prototype, "resizing", void 0);
18760
+ __decorate$5([
18761
+ Event()
18762
+ ], MultiSelect.prototype, "resizeStart", void 0);
18315
18763
  __decorate$5([
18316
18764
  Event()
18317
18765
  ], MultiSelect.prototype, "filtering", void 0);
@@ -19029,7 +19477,7 @@ let ListBox = ListBox_1 = class ListBox extends DropDownBase {
19029
19477
  new Sortable(this.ulElement, {
19030
19478
  scope: this.scope,
19031
19479
  itemClass: 'e-list-item',
19032
- dragStart: this.triggerDragStart.bind(this),
19480
+ beforeDragStart: this.triggerDragStart.bind(this),
19033
19481
  drag: this.triggerDrag.bind(this),
19034
19482
  beforeDrop: this.beforeDragEnd.bind(this),
19035
19483
  drop: this.dragEnd.bind(this),
@@ -19277,11 +19725,11 @@ let ListBox = ListBox_1 = class ListBox extends DropDownBase {
19277
19725
  }
19278
19726
  triggerDragStart(args) {
19279
19727
  let badge;
19280
- args = extend(this.getDragArgs(args), { dragSelected: true });
19728
+ const extendedArgs = extend(this.getDragArgs(args), { dragSelected: true }, { cancel: false });
19281
19729
  if (Browser.isIos) {
19282
19730
  this.list.style.overflow = 'hidden';
19283
19731
  }
19284
- this.trigger('dragStart', args, (dragEventArgs) => {
19732
+ this.trigger('dragStart', extendedArgs, (dragEventArgs) => {
19285
19733
  this.allowDragAll = dragEventArgs.dragSelected;
19286
19734
  if (!this.allowDragAll) {
19287
19735
  badge = this.ulElement.getElementsByClassName('e-list-badge')[0];
@@ -19289,6 +19737,9 @@ let ListBox = ListBox_1 = class ListBox extends DropDownBase {
19289
19737
  detach(badge);
19290
19738
  }
19291
19739
  }
19740
+ if (dragEventArgs.cancel) {
19741
+ args.cancel = true;
19742
+ }
19292
19743
  });
19293
19744
  }
19294
19745
  triggerDrag(args) {
@@ -19517,7 +19968,9 @@ let ListBox = ListBox_1 = class ListBox extends DropDownBase {
19517
19968
  listObj.liCollections = liColl;
19518
19969
  listObj.jsonData = extend([], [], jsonData, false);
19519
19970
  listObj.listData = extend([], [], listData, false);
19520
- listObj.sortedData = extend([], [], sortedData, false);
19971
+ if (listObj.sortOrder === 'None') {
19972
+ listObj.sortedData = extend([], [], sortedData, false);
19973
+ }
19521
19974
  if (this.listData.length === 0) {
19522
19975
  this.l10nUpdate();
19523
19976
  }
@@ -21822,6 +22275,9 @@ let Mention = class Mention extends DropDownBase {
21822
22275
  this.hidePopup();
21823
22276
  this.lineBreak = true;
21824
22277
  }
22278
+ else if ((e.key === 'Backspace' || e.key === 'Delete') && this.range && this.range.startOffset !== this.range.endOffset) {
22279
+ this.range.deleteContents();
22280
+ }
21825
22281
  return;
21826
22282
  }
21827
22283
  if (lastWordRange.includes(this.mentionChar)) {
@@ -22593,7 +23049,9 @@ let Mention = class Mention extends DropDownBase {
22593
23049
  }
22594
23050
  scrollTop() {
22595
23051
  if (!isNullOrUndefined(this.selectedLI)) {
22596
- let nextOffset = this.selectedLI.offsetTop - this.list.scrollTop;
23052
+ let nextOffset = !isNullOrUndefined(this.fields.groupBy) && !isNullOrUndefined(this.fixedHeaderElement) ?
23053
+ this.selectedLI.offsetTop - (this.list.scrollTop + this.fixedHeaderElement.offsetHeight) :
23054
+ this.selectedLI.offsetTop - this.list.scrollTop;
22597
23055
  nextOffset = this.fields.groupBy && nextOffset;
22598
23056
  const boxRange = (this.selectedLI.offsetTop + this.selectedLI.offsetHeight - this.list.scrollTop);
22599
23057
  if (this.activeIndex === 0) {