@syncfusion/ej2-dropdowns 27.2.4 → 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 (223) 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 +507 -39
  6. package/dist/es6/ej2-dropdowns.es2015.js.map +1 -1
  7. package/dist/es6/ej2-dropdowns.es5.js +506 -37
  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 +21 -3
  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/drop-down-tree/drop-down-tree.js +4 -1
  23. package/src/list-box/list-box.d.ts +4 -0
  24. package/src/list-box/list-box.js +9 -4
  25. package/src/mention/mention.js +6 -1
  26. package/src/multi-select/multi-select-model.d.ts +31 -0
  27. package/src/multi-select/multi-select.d.ts +45 -0
  28. package/src/multi-select/multi-select.js +251 -10
  29. package/styles/auto-complete/_tailwind3-definition.scss +2 -0
  30. package/styles/auto-complete/bds.css +75 -0
  31. package/styles/auto-complete/bds.scss +4 -0
  32. package/styles/auto-complete/highcontrast.css +1 -1
  33. package/styles/auto-complete/tailwind3.css +101 -0
  34. package/styles/auto-complete/tailwind3.scss +4 -0
  35. package/styles/bds-lite.css +3013 -0
  36. package/styles/bds-lite.scss +28 -0
  37. package/styles/bds.css +3855 -0
  38. package/styles/bds.scss +33 -0
  39. package/styles/bootstrap-dark-lite.css +41 -2
  40. package/styles/bootstrap-dark.css +41 -2
  41. package/styles/bootstrap-lite.css +30 -1
  42. package/styles/bootstrap.css +30 -1
  43. package/styles/bootstrap4-lite.css +30 -0
  44. package/styles/bootstrap4.css +30 -0
  45. package/styles/bootstrap5-dark-lite.css +30 -0
  46. package/styles/bootstrap5-dark.css +30 -0
  47. package/styles/bootstrap5-lite.css +30 -0
  48. package/styles/bootstrap5.3-lite.css +30 -3
  49. package/styles/bootstrap5.3.css +30 -3
  50. package/styles/bootstrap5.css +30 -0
  51. package/styles/combo-box/_tailwind3-definition.scss +2 -0
  52. package/styles/combo-box/bds.css +75 -0
  53. package/styles/combo-box/bds.scss +4 -0
  54. package/styles/combo-box/highcontrast.css +1 -1
  55. package/styles/combo-box/tailwind3.css +101 -0
  56. package/styles/combo-box/tailwind3.scss +4 -0
  57. package/styles/drop-down-base/_bigger.scss +3 -0
  58. package/styles/drop-down-base/_layout.scss +7 -0
  59. package/styles/drop-down-base/_tailwind3-definition.scss +98 -0
  60. package/styles/drop-down-base/bds.css +496 -0
  61. package/styles/drop-down-base/bds.scss +4 -0
  62. package/styles/drop-down-base/bootstrap-dark.css +4 -0
  63. package/styles/drop-down-base/bootstrap.css +4 -0
  64. package/styles/drop-down-base/bootstrap4.css +4 -0
  65. package/styles/drop-down-base/bootstrap5-dark.css +4 -0
  66. package/styles/drop-down-base/bootstrap5.3.css +4 -0
  67. package/styles/drop-down-base/bootstrap5.css +4 -0
  68. package/styles/drop-down-base/fabric-dark.css +4 -0
  69. package/styles/drop-down-base/fabric.css +4 -0
  70. package/styles/drop-down-base/fluent-dark.css +4 -0
  71. package/styles/drop-down-base/fluent.css +4 -0
  72. package/styles/drop-down-base/fluent2.css +9 -5
  73. package/styles/drop-down-base/highcontrast-light.css +4 -0
  74. package/styles/drop-down-base/highcontrast.css +4 -0
  75. package/styles/drop-down-base/material-dark.css +4 -0
  76. package/styles/drop-down-base/material.css +4 -0
  77. package/styles/drop-down-base/material3-dark.css +4 -0
  78. package/styles/drop-down-base/material3.css +4 -0
  79. package/styles/drop-down-base/tailwind-dark.css +4 -0
  80. package/styles/drop-down-base/tailwind.css +4 -0
  81. package/styles/drop-down-base/tailwind3.css +392 -0
  82. package/styles/drop-down-base/tailwind3.scss +4 -0
  83. package/styles/drop-down-list/_highcontrast-definition.scss +1 -1
  84. package/styles/drop-down-list/_layout.scss +18 -2
  85. package/styles/drop-down-list/_tailwind3-definition.scss +135 -0
  86. package/styles/drop-down-list/_theme.scss +3 -1
  87. package/styles/drop-down-list/bds.css +609 -0
  88. package/styles/drop-down-list/bds.scss +10 -0
  89. package/styles/drop-down-list/bootstrap-dark.css +18 -1
  90. package/styles/drop-down-list/bootstrap.css +13 -1
  91. package/styles/drop-down-list/bootstrap4.css +13 -0
  92. package/styles/drop-down-list/bootstrap5-dark.css +13 -0
  93. package/styles/drop-down-list/bootstrap5.3.css +13 -0
  94. package/styles/drop-down-list/bootstrap5.css +13 -0
  95. package/styles/drop-down-list/fabric-dark.css +18 -1
  96. package/styles/drop-down-list/fabric.css +13 -1
  97. package/styles/drop-down-list/fluent-dark.css +13 -1
  98. package/styles/drop-down-list/fluent.css +13 -1
  99. package/styles/drop-down-list/fluent2.css +13 -1
  100. package/styles/drop-down-list/highcontrast-light.css +9 -1
  101. package/styles/drop-down-list/highcontrast.css +19 -1
  102. package/styles/drop-down-list/icons/_bootstrap-dark.scss +4 -0
  103. package/styles/drop-down-list/icons/_bootstrap.scss +4 -0
  104. package/styles/drop-down-list/icons/_bootstrap4.scss +4 -0
  105. package/styles/drop-down-list/icons/_bootstrap5.3.scss +4 -0
  106. package/styles/drop-down-list/icons/_bootstrap5.scss +4 -0
  107. package/styles/drop-down-list/icons/_fabric-dark.scss +4 -0
  108. package/styles/drop-down-list/icons/_fabric.scss +4 -0
  109. package/styles/drop-down-list/icons/_fluent.scss +4 -0
  110. package/styles/drop-down-list/icons/_fluent2.scss +4 -0
  111. package/styles/drop-down-list/icons/_highcontrast.scss +4 -0
  112. package/styles/drop-down-list/icons/_material-dark.scss +4 -0
  113. package/styles/drop-down-list/icons/_material.scss +4 -0
  114. package/styles/drop-down-list/icons/_material3.scss +4 -0
  115. package/styles/drop-down-list/icons/_tailwind.scss +4 -0
  116. package/styles/drop-down-list/icons/_tailwind3.scss +14 -0
  117. package/styles/drop-down-list/material-dark.css +18 -1
  118. package/styles/drop-down-list/material.css +13 -1
  119. package/styles/drop-down-list/material3-dark.css +13 -1
  120. package/styles/drop-down-list/material3.css +13 -1
  121. package/styles/drop-down-list/tailwind-dark.css +13 -1
  122. package/styles/drop-down-list/tailwind.css +13 -1
  123. package/styles/drop-down-list/tailwind3.css +455 -0
  124. package/styles/drop-down-list/tailwind3.scss +10 -0
  125. package/styles/drop-down-tree/_bigger.scss +41 -7
  126. package/styles/drop-down-tree/_layout.scss +34 -10
  127. package/styles/drop-down-tree/_tailwind3-definition.scss +67 -0
  128. package/styles/drop-down-tree/_theme.scss +3 -3
  129. package/styles/drop-down-tree/bds.css +712 -0
  130. package/styles/drop-down-tree/bds.scss +10 -0
  131. package/styles/drop-down-tree/bootstrap5.3.css +0 -3
  132. package/styles/drop-down-tree/icons/_tailwind3.scss +11 -0
  133. package/styles/drop-down-tree/tailwind3.css +512 -0
  134. package/styles/drop-down-tree/tailwind3.scss +10 -0
  135. package/styles/fabric-dark-lite.css +40 -1
  136. package/styles/fabric-dark.css +40 -1
  137. package/styles/fabric-lite.css +30 -1
  138. package/styles/fabric.css +30 -1
  139. package/styles/fluent-dark-lite.css +30 -1
  140. package/styles/fluent-dark.css +30 -1
  141. package/styles/fluent-lite.css +30 -1
  142. package/styles/fluent.css +30 -1
  143. package/styles/fluent2-lite.css +45 -12
  144. package/styles/fluent2.css +45 -12
  145. package/styles/highcontrast-light-lite.css +22 -1
  146. package/styles/highcontrast-light.css +22 -1
  147. package/styles/highcontrast-lite.css +41 -1
  148. package/styles/highcontrast.css +41 -1
  149. package/styles/list-box/_bigger.scss +18 -1
  150. package/styles/list-box/_layout.scss +29 -3
  151. package/styles/list-box/_tailwind3-definition.scss +123 -0
  152. package/styles/list-box/_theme.scss +11 -0
  153. package/styles/list-box/bds.css +971 -0
  154. package/styles/list-box/bds.scss +6 -0
  155. package/styles/list-box/fluent2.css +1 -1
  156. package/styles/list-box/icons/_tailwind3.scss +25 -0
  157. package/styles/list-box/tailwind3.css +991 -0
  158. package/styles/list-box/tailwind3.scss +6 -0
  159. package/styles/material-dark-lite.css +40 -1
  160. package/styles/material-dark.css +40 -1
  161. package/styles/material-lite.css +30 -1
  162. package/styles/material.css +30 -1
  163. package/styles/material3-dark-lite.css +36 -9
  164. package/styles/material3-dark.css +36 -9
  165. package/styles/material3-lite.css +36 -9
  166. package/styles/material3.css +36 -9
  167. package/styles/mention/_tailwind3-definition.scss +1 -0
  168. package/styles/mention/bds.css +78 -0
  169. package/styles/mention/bds.scss +6 -0
  170. package/styles/mention/tailwind3.css +67 -0
  171. package/styles/mention/tailwind3.scss +6 -0
  172. package/styles/multi-select/_bigger.scss +2 -2
  173. package/styles/multi-select/_bootstrap-dark-definition.scss +1 -1
  174. package/styles/multi-select/_layout.scss +27 -2
  175. package/styles/multi-select/_material3-definition.scss +2 -2
  176. package/styles/multi-select/_tailwind3-definition.scss +227 -0
  177. package/styles/multi-select/_theme.scss +1 -1
  178. package/styles/multi-select/bds.css +1575 -0
  179. package/styles/multi-select/bds.scss +10 -0
  180. package/styles/multi-select/bootstrap-dark.css +19 -1
  181. package/styles/multi-select/bootstrap.css +13 -0
  182. package/styles/multi-select/bootstrap4.css +13 -0
  183. package/styles/multi-select/bootstrap5-dark.css +13 -0
  184. package/styles/multi-select/bootstrap5.3.css +13 -0
  185. package/styles/multi-select/bootstrap5.css +13 -0
  186. package/styles/multi-select/fabric-dark.css +18 -0
  187. package/styles/multi-select/fabric.css +13 -0
  188. package/styles/multi-select/fluent-dark.css +13 -0
  189. package/styles/multi-select/fluent.css +13 -0
  190. package/styles/multi-select/fluent2.css +22 -5
  191. package/styles/multi-select/highcontrast-light.css +9 -0
  192. package/styles/multi-select/highcontrast.css +18 -0
  193. package/styles/multi-select/icons/_bootstrap-dark.scss +4 -0
  194. package/styles/multi-select/icons/_bootstrap.scss +4 -0
  195. package/styles/multi-select/icons/_bootstrap4.scss +4 -0
  196. package/styles/multi-select/icons/_bootstrap5.3.scss +4 -0
  197. package/styles/multi-select/icons/_bootstrap5.scss +4 -0
  198. package/styles/multi-select/icons/_fabric-dark.scss +4 -0
  199. package/styles/multi-select/icons/_fabric.scss +4 -0
  200. package/styles/multi-select/icons/_fluent.scss +4 -0
  201. package/styles/multi-select/icons/_fluent2.scss +4 -0
  202. package/styles/multi-select/icons/_highcontrast.scss +4 -0
  203. package/styles/multi-select/icons/_material-dark.scss +4 -0
  204. package/styles/multi-select/icons/_material.scss +4 -0
  205. package/styles/multi-select/icons/_material3.scss +4 -0
  206. package/styles/multi-select/icons/_tailwind.scss +4 -0
  207. package/styles/multi-select/icons/_tailwind3.scss +26 -0
  208. package/styles/multi-select/material-dark.css +18 -0
  209. package/styles/multi-select/material.css +13 -0
  210. package/styles/multi-select/material3-dark.css +19 -8
  211. package/styles/multi-select/material3.css +19 -8
  212. package/styles/multi-select/tailwind-dark.css +13 -0
  213. package/styles/multi-select/tailwind.css +13 -0
  214. package/styles/multi-select/tailwind3.css +1398 -0
  215. package/styles/multi-select/tailwind3.scss +10 -0
  216. package/styles/tailwind-dark-lite.css +30 -1
  217. package/styles/tailwind-dark.css +30 -1
  218. package/styles/tailwind-lite.css +30 -1
  219. package/styles/tailwind.css +30 -1
  220. package/styles/tailwind3-lite.css +2889 -0
  221. package/styles/tailwind3-lite.scss +28 -0
  222. package/styles/tailwind3.css +3550 -0
  223. 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,11 +2005,23 @@ 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');
2000
2017
  if ((listData.length >= this.virtualizedItemsCount && oldUlElement && virtualUlElement) || (oldUlElement && virtualUlElement && this.isAllowFiltering) || (oldUlElement && virtualUlElement && this.getModuleName() === 'autocomplete')) {
2001
- virtualUlElement.replaceChild(ulElement, oldUlElement);
2018
+ if (this.getModuleName() === 'multiselect' && this.isCheckBoxSelection && this.appendUncheckList && this.list && this.list.querySelector('.e-active')) {
2019
+ virtualUlElement.appendChild(ulElement);
2020
+ isCheckBoxUpdate = true;
2021
+ }
2022
+ else {
2023
+ virtualUlElement.replaceChild(ulElement, oldUlElement);
2024
+ }
2002
2025
  const reOrderList = this.list.querySelectorAll('.e-reorder');
2003
2026
  if (this.list.querySelector('.e-virtual-ddl-content') && reOrderList && reOrderList.length > 0 && !isCheckBoxUpdate) {
2004
2027
  this.list.querySelector('.e-virtual-ddl-content').removeChild(reOrderList[0]);
@@ -2275,7 +2298,7 @@ let DropDownBase = class DropDownBase extends Component {
2275
2298
  updateData.dataSource = this.dataSource;
2276
2299
  }
2277
2300
  if (this.getModuleName() === 'listbox') {
2278
- if (!this.isReact || (this.isReact && !isNullOrUndefined(newProp.dataSource))) {
2301
+ if (!this.isReact || (this.isReact && (!isNullOrUndefined(newProp.dataSource) || !isNullOrUndefined(newProp.sortOrder)))) {
2279
2302
  this.updateDataSource(updateData, oldProp);
2280
2303
  }
2281
2304
  }
@@ -2751,6 +2774,7 @@ const dropDownListClasses = {
2751
2774
  backIcon: 'e-input-group-icon e-back-icon e-icons',
2752
2775
  filterBarClearIcon: 'e-input-group-icon e-clear-icon e-icons',
2753
2776
  filterInput: 'e-input-filter',
2777
+ resizeIcon: 'e-resizer-right e-icons',
2754
2778
  filterParent: 'e-filter-parent',
2755
2779
  mobileFilter: 'e-ddl-device-filter',
2756
2780
  footer: 'e-ddl-footer',
@@ -2792,6 +2816,8 @@ let DropDownList = class DropDownList extends DropDownBase {
2792
2816
  this.isTouched = false;
2793
2817
  this.isFocused = false;
2794
2818
  this.autoFill = false;
2819
+ this.isUpdateHeaderHeight = false;
2820
+ this.isUpdateFooterHeight = false;
2795
2821
  }
2796
2822
  /**
2797
2823
  * Initialize the event handler.
@@ -2933,6 +2959,10 @@ let DropDownList = class DropDownList extends DropDownBase {
2933
2959
  (this.allowObjectBinding && this.previousValue &&
2934
2960
  this.isObjectInArray(this.previousValue, [this.allowCustom ? this.value ? this.value : dataItem :
2935
2961
  dataItem.value ? this.getDataByValue(dataItem.value) : dataItem]))) {
2962
+ this.checkAndResetCache();
2963
+ if (this.enableVirtualization && this.list) {
2964
+ this.updateInitialData();
2965
+ }
2936
2966
  return;
2937
2967
  }
2938
2968
  this.onChangeEvent(e);
@@ -3247,6 +3277,22 @@ let DropDownList = class DropDownList extends DropDownBase {
3247
3277
  this.updateIconState();
3248
3278
  this.isFocused = true;
3249
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
+ }
3250
3296
  resetValueHandler(e) {
3251
3297
  const formElement = closest(this.inputElement, 'form');
3252
3298
  if (formElement && e.target === formElement) {
@@ -3341,6 +3387,68 @@ let DropDownList = class DropDownList extends DropDownBase {
3341
3387
  this.incrementalSearch(e);
3342
3388
  }
3343
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
+ }
3344
3452
  onMouseClick(e) {
3345
3453
  const target = e.target;
3346
3454
  this.keyboardEvent = null;
@@ -3812,6 +3920,9 @@ let DropDownList = class DropDownList extends DropDownBase {
3812
3920
  }
3813
3921
  return;
3814
3922
  }
3923
+ if (!this.enableVirtualization && this.liCollections[findLi] && this.liCollections[findLi].classList.contains('e-disabled')) {
3924
+ return;
3925
+ }
3815
3926
  this.setSelection(this.liCollections[findLi], e);
3816
3927
  }
3817
3928
  }
@@ -3907,6 +4018,19 @@ let DropDownList = class DropDownList extends DropDownBase {
3907
4018
  }
3908
4019
  pageUpSelection(steps, event, isVirtualKeyAction) {
3909
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
+ }
3910
4034
  if ((this.enableVirtualization && this.activeIndex == null)) {
3911
4035
  previousItem = (this.liCollections.length >= steps && steps >= 0) ?
3912
4036
  this.liCollections[steps + this.skeletonCount + 1] : this.liCollections[0];
@@ -3939,6 +4063,15 @@ let DropDownList = class DropDownList extends DropDownBase {
3939
4063
  pageDownSelection(steps, event, isVirtualKeyAction) {
3940
4064
  const list = this.getItems();
3941
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
+ }
3942
4075
  if (this.enableVirtualization && this.skeletonCount > 0) {
3943
4076
  steps = this.getModuleName() === 'dropdownlist' && this.allowFiltering ? steps + 1 : steps;
3944
4077
  previousItem = steps < list.length ? this.liCollections[steps] : this.liCollections[list.length - 1];
@@ -4711,7 +4844,7 @@ let DropDownList = class DropDownList extends DropDownBase {
4711
4844
  const virualElement = this.createElement('div', {
4712
4845
  id: this.element.id + '_popup', className: 'e-virtual-ddl', styles: this.GetVirtualTrackHeight()
4713
4846
  });
4714
- document.getElementsByClassName('e-popup')[0].querySelector('.e-dropdownbase').appendChild(virualElement);
4847
+ this.list.parentElement.querySelector('.e-dropdownbase').appendChild(virualElement);
4715
4848
  }
4716
4849
  }
4717
4850
  }
@@ -4750,7 +4883,7 @@ let DropDownList = class DropDownList extends DropDownBase {
4750
4883
  const virualElement = this.createElement('div', {
4751
4884
  id: this.element.id + '_popup', className: 'e-virtual-ddl', styles: this.GetVirtualTrackHeight()
4752
4885
  });
4753
- document.getElementsByClassName('e-popup')[0].querySelector('.e-dropdownbase').appendChild(virualElement);
4886
+ this.list.parentElement.querySelector('.e-dropdownbase').appendChild(virualElement);
4754
4887
  }
4755
4888
  }
4756
4889
  }
@@ -5101,7 +5234,7 @@ let DropDownList = class DropDownList extends DropDownBase {
5101
5234
  }
5102
5235
  updateSelectionList() {
5103
5236
  const selectedItem = this.list && this.list.querySelector('.' + 'e-active');
5104
- if (!selectedItem && !isNullOrUndefined(this.value)) {
5237
+ if (!selectedItem && !isNullOrUndefined(this.value) && this.getModuleName() !== 'autocomplete') {
5105
5238
  const value = this.allowObjectBinding ? getValue((this.fields.value) ? this.fields.value : '', this.value) : this.value;
5106
5239
  const findEle = this.findListElement(this.list, 'li', 'data-value', value);
5107
5240
  if (findEle) {
@@ -5133,10 +5266,12 @@ let DropDownList = class DropDownList extends DropDownBase {
5133
5266
  formatUnit(Math.round(window.outerHeight).toString() + 'px') : formatUnit(this.popupHeight);
5134
5267
  if (this.headerTemplate) {
5135
5268
  this.setHeaderTemplate(popupEle);
5269
+ this.isUpdateHeaderHeight = this.header.offsetHeight !== 0;
5136
5270
  }
5137
5271
  append([this.list], popupEle);
5138
5272
  if (this.footerTemplate) {
5139
5273
  this.setFooterTemplate(popupEle);
5274
+ this.isUpdateFooterHeight = this.footer.offsetHeight !== 0;
5140
5275
  }
5141
5276
  document.body.appendChild(popupEle);
5142
5277
  popupEle.style.top = '0px';
@@ -5300,12 +5435,57 @@ let DropDownList = class DropDownList extends DropDownBase {
5300
5435
  if (!isNullOrUndefined(this.popupObj)) {
5301
5436
  this.popupObj.show(new Animation(eventArgs.animation), (this.zIndex === 1000) ? this.element : null);
5302
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
+ }
5303
5455
  }
5304
5456
  else {
5305
5457
  this.beforePopupOpen = false;
5306
5458
  this.destroyPopup();
5307
5459
  }
5308
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
+ }
5309
5489
  }
5310
5490
  else {
5311
5491
  this.beforePopupOpen = false;
@@ -5539,7 +5719,8 @@ let DropDownList = class DropDownList extends DropDownBase {
5539
5719
  }
5540
5720
  else {
5541
5721
  this.list.scrollTop = this.virtualListInfo && this.virtualListInfo.startIndex ?
5542
- 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;
5543
5724
  }
5544
5725
  isScrollerCHanged = this.isKeyBoardAction;
5545
5726
  }
@@ -5686,15 +5867,6 @@ let DropDownList = class DropDownList extends DropDownBase {
5686
5867
  this.keyboardEvent = null;
5687
5868
  EventHandler.remove(document, 'mousedown', this.onDocumentClick);
5688
5869
  this.isActive = false;
5689
- if (this.getModuleName() === 'dropdownlist') {
5690
- Input.destroy({
5691
- element: this.filterInput,
5692
- floatLabelType: this.floatLabelType,
5693
- properties: { placeholder: this.filterBarPlaceholder },
5694
- buttons: this.clearIconElement
5695
- }, this.clearIconElement);
5696
- }
5697
- this.filterInputObj = null;
5698
5870
  this.isDropDownClick = false;
5699
5871
  this.preventAutoFill = false;
5700
5872
  const scrollableParentElements = this.popupObj.getScrollableParent(this.inputWrapper.container);
@@ -5766,6 +5938,15 @@ let DropDownList = class DropDownList extends DropDownBase {
5766
5938
  const popupInstance = this.popupObj;
5767
5939
  const eventArgs = { popup: popupInstance, cancel: false, animation: animModel, event: e || null };
5768
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;
5769
5950
  if (!isNullOrUndefined(this.popupObj) &&
5770
5951
  !isNullOrUndefined(this.popupObj.element.querySelector('.e-fixed-head'))) {
5771
5952
  const fixedHeader = this.popupObj.element.querySelector('.e-fixed-head');
@@ -5836,6 +6017,12 @@ let DropDownList = class DropDownList extends DropDownBase {
5836
6017
  // eslint-disable-next-line @typescript-eslint/no-explicit-any
5837
6018
  this.list.getElementsByClassName('e-virtual-ddl')[0].style = this.GetVirtualTrackHeight();
5838
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
+ }
5839
6026
  if (this.getModuleName() !== 'autocomplete' && this.totalItemCount !== 0 && this.totalItemCount > (this.itemCount * 2)) {
5840
6027
  this.getSkeletonCount();
5841
6028
  }
@@ -5854,6 +6041,10 @@ let DropDownList = class DropDownList extends DropDownBase {
5854
6041
  this.isFilterFocus = false;
5855
6042
  this.inputElement.removeAttribute('aria-controls');
5856
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
+ }
5857
6048
  this.popupObj.destroy();
5858
6049
  detach(this.popupObj.element);
5859
6050
  }
@@ -6564,6 +6755,15 @@ let DropDownList = class DropDownList extends DropDownBase {
6564
6755
  isOpen: true
6565
6756
  });
6566
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
+ }
6567
6767
  }
6568
6768
  invokeRenderPopup(e) {
6569
6769
  if (Browser.isDevice && this.isFilterLayout()) {
@@ -6901,6 +7101,9 @@ __decorate$1([
6901
7101
  __decorate$1([
6902
7102
  Property(false)
6903
7103
  ], DropDownList.prototype, "enableVirtualization", void 0);
7104
+ __decorate$1([
7105
+ Property(false)
7106
+ ], DropDownList.prototype, "allowResize", void 0);
6904
7107
  __decorate$1([
6905
7108
  Property(null)
6906
7109
  ], DropDownList.prototype, "text", void 0);
@@ -6940,6 +7143,15 @@ __decorate$1([
6940
7143
  __decorate$1([
6941
7144
  Event()
6942
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);
6943
7155
  DropDownList = __decorate$1([
6944
7156
  NotifyPropertyChanges
6945
7157
  ], DropDownList);
@@ -7182,7 +7394,7 @@ let DropDownTree = class DropDownTree extends Component {
7182
7394
  }
7183
7395
  else {
7184
7396
  if (!isNullOrUndefined(this.element.id)) {
7185
- this.inputEle = this.createElement('input', { attrs: { role: 'textbox', type: 'text', id: this.element.id } });
7397
+ this.inputEle = this.createElement('input', { attrs: { role: 'textbox', type: 'text', id: this.element.id + '_textbox' } });
7186
7398
  }
7187
7399
  else {
7188
7400
  this.inputEle = this.createElement('input', { attrs: { role: 'textbox', type: 'text' } });
@@ -8409,6 +8621,9 @@ let DropDownTree = class DropDownTree extends Component {
8409
8621
  const id = this.value[0].toString();
8410
8622
  if (this.treeObj.selectedNodes[0] !== id) {
8411
8623
  setValue('selectedNodes', [id], this.treeObj);
8624
+ if (this.fields.dataSource instanceof DataManager) {
8625
+ this.updateSelectedValues();
8626
+ }
8412
8627
  }
8413
8628
  }
8414
8629
  else {
@@ -10706,7 +10921,7 @@ let ComboBox = class ComboBox extends DropDownList {
10706
10921
  const inputValue = this.inputElement.value;
10707
10922
  const dataSource = this.sortedData;
10708
10923
  const type = this.typeOfData(dataSource).typeof;
10709
- 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);
10710
10925
  if (this.enableVirtualization && inputValue !== '' && this.getModuleName() !== 'autocomplete' && this.isTyped && !this.allowFiltering) {
10711
10926
  let updatingincrementalindex = false;
10712
10927
  const isEndIndexValid = this.viewPortInfo.endIndex >= this.incrementalEndIndex &&
@@ -11662,11 +11877,11 @@ let AutoComplete = class AutoComplete extends ComboBox {
11662
11877
  });
11663
11878
  this.list.appendChild(virtualElement).appendChild(this.list.querySelector('.e-list-parent'));
11664
11879
  }
11665
- 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) {
11666
11881
  const virtualElement = this.createElement('div', {
11667
11882
  id: this.element.id + '_popup', className: 'e-virtual-ddl', styles: this.GetVirtualTrackHeight()
11668
11883
  });
11669
- document.getElementsByClassName('e-popup')[0].querySelector('.e-dropdownbase').appendChild(virtualElement);
11884
+ this.list.parentElement.querySelector('.e-dropdownbase').appendChild(virtualElement);
11670
11885
  }
11671
11886
  }
11672
11887
  if ((this.getModuleName() === 'autocomplete' && !(this.dataSource instanceof DataManager)) || (this.getModuleName() === 'autocomplete' && (this.dataSource instanceof DataManager) && this.totalItemCount !== 0)) {
@@ -11701,6 +11916,9 @@ let AutoComplete = class AutoComplete extends ComboBox {
11701
11916
  if (!isNullOrUndefined(item)) {
11702
11917
  removeClass([item], dropDownListClasses.focus);
11703
11918
  }
11919
+ if (!isNullOrUndefined(this.itemData) && !this.enableVirtualization) {
11920
+ this.focusIndexItem();
11921
+ }
11704
11922
  this.postBackAction();
11705
11923
  }
11706
11924
  postBackAction() {
@@ -12193,6 +12411,7 @@ const BOX_ELEMENT = 'e-multiselect-box';
12193
12411
  const FILTERPARENT = 'e-filter-parent';
12194
12412
  const CUSTOM_WIDTH = 'e-search-custom-width';
12195
12413
  const FILTERINPUT = 'e-input-filter';
12414
+ const RESIZE_ICON = 'e-resizer-right e-icons';
12196
12415
  /**
12197
12416
  * The Multiselect allows the user to pick a more than one value from list of predefined values.
12198
12417
  * ```html
@@ -12223,6 +12442,9 @@ let MultiSelect = class MultiSelect extends DropDownBase {
12223
12442
  super(option, element);
12224
12443
  this.clearIconWidth = 0;
12225
12444
  this.previousFilterText = '';
12445
+ this.storedSelectAllHeight = 0;
12446
+ this.isUpdateHeaderHeight = false;
12447
+ this.isUpdateFooterHeight = false;
12226
12448
  this.isValidKey = false;
12227
12449
  this.selectAllEventData = [];
12228
12450
  this.selectAllEventEle = [];
@@ -12370,7 +12592,7 @@ let MultiSelect = class MultiSelect extends DropDownBase {
12370
12592
  const eventArgs = { popup: this.popupObj, event: e, cancel: false, animation: animModel };
12371
12593
  this.trigger('open', eventArgs, (eventArgs) => {
12372
12594
  if (!eventArgs.cancel) {
12373
- this.focusAtFirstListItem();
12595
+ this.focusAtFirstListItem(true);
12374
12596
  if (this.popupObj) {
12375
12597
  document.body.appendChild(this.popupObj.element);
12376
12598
  }
@@ -12385,6 +12607,23 @@ let MultiSelect = class MultiSelect extends DropDownBase {
12385
12607
  if (this.popupObj) {
12386
12608
  this.popupObj.show(eventArgs.animation, (this.zIndex === 1000) ? this.element : null);
12387
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
+ }
12388
12627
  attributes(this.inputElement, {
12389
12628
  'aria-expanded': 'true', 'aria-owns': this.element.id + '_popup', 'aria-controls': this.element.id
12390
12629
  });
@@ -12461,16 +12700,16 @@ let MultiSelect = class MultiSelect extends DropDownBase {
12461
12700
  : this.value[this.value.length - 1];
12462
12701
  const valueEle = this.findListElement((this.hideSelectedItem ? this.ulElement : this.list), 'li', 'data-value', value);
12463
12702
  if (!isNullOrUndefined(valueEle)) {
12464
- this.scrollBottom(valueEle);
12703
+ this.scrollBottom(valueEle, undefined, false, null, true);
12465
12704
  }
12466
12705
  }
12467
12706
  if (this.enableVirtualization) {
12468
12707
  const focusedItem = this.list.querySelector('.' + dropDownBaseClasses.focus);
12469
12708
  this.isKeyBoardAction = false;
12470
- this.scrollBottom(focusedItem);
12709
+ this.scrollBottom(focusedItem, undefined, false, null, true);
12471
12710
  }
12472
12711
  }
12473
- focusAtFirstListItem() {
12712
+ focusAtFirstListItem(isOpen) {
12474
12713
  if (this.ulElement && this.ulElement.querySelector('li.'
12475
12714
  + dropDownBaseClasses.li)) {
12476
12715
  let element;
@@ -12483,10 +12722,18 @@ let MultiSelect = class MultiSelect extends DropDownBase {
12483
12722
  if (this.fields.disabled) {
12484
12723
  element = this.ulElement.querySelector('li.'
12485
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
+ }
12486
12729
  }
12487
12730
  else {
12488
12731
  element = this.ulElement.querySelector('li.'
12489
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
+ }
12490
12737
  }
12491
12738
  }
12492
12739
  else {
@@ -12783,7 +13030,7 @@ let MultiSelect = class MultiSelect extends DropDownBase {
12783
13030
  if (this.hideSelectedItem && element.classList.contains(dropDownBaseClasses.focus)) {
12784
13031
  removeClass([element], dropDownBaseClasses.focus);
12785
13032
  const listEle = element.parentElement.querySelectorAll('.' +
12786
- dropDownBaseClasses.li + ':not(.' + HIDE_LIST + ')');
13033
+ dropDownBaseClasses.li + ':not(.' + HIDE_LIST + ')' + ':not(.' + DISABLED$1 + ')');
12787
13034
  if (listEle.length > 0) {
12788
13035
  addClass([listEle[0]], dropDownBaseClasses.focus);
12789
13036
  this.updateAriaActiveDescendant();
@@ -12952,7 +13199,7 @@ let MultiSelect = class MultiSelect extends DropDownBase {
12952
13199
  if (!(this.dataSource instanceof DataManager) && dataType === 'string' || dataType === 'number') {
12953
13200
  filterQuery.where('', this.filterType, this.targetElement(), this.ignoreCase, this.ignoreAccent);
12954
13201
  }
12955
- else if ((this.enableVirtualization && this.targetElement() !== '') || !this.enableVirtualization) {
13202
+ else if ((this.enableVirtualization && this.targetElement() !== '' && !this.isClearAllAction) || !this.enableVirtualization) {
12956
13203
  const fields = this.fields;
12957
13204
  filterQuery.where(!isNullOrUndefined(fields.text) ? fields.text : '', this.filterType, this.targetElement(), this.ignoreCase, this.ignoreAccent);
12958
13205
  }
@@ -12960,6 +13207,11 @@ let MultiSelect = class MultiSelect extends DropDownBase {
12960
13207
  if (this.enableVirtualization && (this.viewPortInfo.endIndex !== 0) && !this.virtualSelectAll) {
12961
13208
  return this.virtualFilterQuery(filterQuery);
12962
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
+ }
12963
13215
  return filterQuery;
12964
13216
  }
12965
13217
  else {
@@ -13145,6 +13397,9 @@ let MultiSelect = class MultiSelect extends DropDownBase {
13145
13397
  this.getFilteringSkeletonCount();
13146
13398
  }
13147
13399
  this.refreshPopup();
13400
+ if (this.allowResize) {
13401
+ this.setResize();
13402
+ }
13148
13403
  if (this.mode === 'CheckBox') {
13149
13404
  this.removeFocus();
13150
13405
  }
@@ -13478,6 +13733,15 @@ let MultiSelect = class MultiSelect extends DropDownBase {
13478
13733
  ':not(.' + HIDE_LIST + ')' +
13479
13734
  ':not(.e-reorder-hide)');
13480
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
+ }
13481
13745
  if (this.enableVirtualization && isVirtualKeyAction) {
13482
13746
  previousItem = (this.liCollections.length >= steps && steps >= 0)
13483
13747
  ? this.liCollections[steps]
@@ -13509,6 +13773,15 @@ let MultiSelect = class MultiSelect extends DropDownBase {
13509
13773
  const collection = this.list.querySelectorAll('li.'
13510
13774
  + dropDownBaseClasses.li + ':not(.' + HIDE_LIST + ')' + ':not(.e-reorder-hide)');
13511
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
+ }
13512
13785
  if (this.enableVirtualization && this.skeletonCount > 0) {
13513
13786
  previousItem = steps < list.length ? this.liCollections[steps] : this.liCollections[list.length - 1];
13514
13787
  }
@@ -13559,6 +13832,9 @@ let MultiSelect = class MultiSelect extends DropDownBase {
13559
13832
  if (this.isPopupOpen()) {
13560
13833
  this.refreshPopup();
13561
13834
  }
13835
+ if (this.allowResize) {
13836
+ this.setResize();
13837
+ }
13562
13838
  setTimeout(() => {
13563
13839
  this.calculateWidth();
13564
13840
  }, 150);
@@ -13795,6 +14071,7 @@ let MultiSelect = class MultiSelect extends DropDownBase {
13795
14071
  if (this.mode === 'CheckBox') {
13796
14072
  this.inputElement.focus();
13797
14073
  }
14074
+ this.isKeyBoardAction = false;
13798
14075
  return;
13799
14076
  case 13:
13800
14077
  e.preventDefault();
@@ -13803,10 +14080,12 @@ let MultiSelect = class MultiSelect extends DropDownBase {
13803
14080
  this.selectByKey(e);
13804
14081
  }
13805
14082
  this.checkPlaceholderSize();
14083
+ this.isKeyBoardAction = false;
13806
14084
  return;
13807
14085
  case 32:
13808
14086
  this.isKeyBoardAction = true;
13809
14087
  this.spaceKeySelection(e);
14088
+ this.isKeyBoardAction = false;
13810
14089
  return;
13811
14090
  case 9:
13812
14091
  e.preventDefault();
@@ -13848,6 +14127,9 @@ let MultiSelect = class MultiSelect extends DropDownBase {
13848
14127
  if (!(this.mode === 'CheckBox' && this.showSelectAll)) {
13849
14128
  this.refreshPopup();
13850
14129
  }
14130
+ if (this.allowResize) {
14131
+ this.setResize();
14132
+ }
13851
14133
  this.isKeyBoardAction = false;
13852
14134
  }
13853
14135
  arrowDown(e, isVirtualKeyAction) {
@@ -13972,7 +14254,7 @@ let MultiSelect = class MultiSelect extends DropDownBase {
13972
14254
  }
13973
14255
  this.makeTextBoxEmpty();
13974
14256
  }
13975
- scrollBottom(selectedLI, activeIndex, isInitialSelection = false, keyCode = null) {
14257
+ scrollBottom(selectedLI, activeIndex, isInitialSelection = false, keyCode = null, isInitial = false) {
13976
14258
  if ((!isNullOrUndefined(selectedLI) && selectedLI.classList.contains('e-virtual-list')) ||
13977
14259
  (this.enableVirtualization && isNullOrUndefined(selectedLI))) {
13978
14260
  selectedLI = this.liCollections[this.skeletonCount];
@@ -14026,8 +14308,9 @@ let MultiSelect = class MultiSelect extends DropDownBase {
14026
14308
  }
14027
14309
  }
14028
14310
  else {
14029
- this.list.scrollTop = this.virtualListInfo &&
14030
- 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;
14031
14314
  }
14032
14315
  isScrollerCHanged = this.isKeyBoardAction;
14033
14316
  }
@@ -14228,6 +14511,7 @@ let MultiSelect = class MultiSelect extends DropDownBase {
14228
14511
  this.getDataByValue(this.getFormattedValue(selectedElem.getAttribute('data-value'))) :
14229
14512
  selectedElem.getAttribute('data-value');
14230
14513
  this.removeValue(currentChip, e);
14514
+ this.updateDelimeter(this.delimiterChar, e);
14231
14515
  this.makeTextBoxEmpty();
14232
14516
  }
14233
14517
  if (this.closePopupOnSelect) {
@@ -14350,7 +14634,7 @@ let MultiSelect = class MultiSelect extends DropDownBase {
14350
14634
  return;
14351
14635
  }
14352
14636
  const index = this.getIndexByValue(focusedLi.getAttribute('data-value'));
14353
- if (index === 0 && this.mode !== 'CheckBox') {
14637
+ if (index === 0) {
14354
14638
  position = 1;
14355
14639
  }
14356
14640
  if (index === (this.list.querySelectorAll('.e-list-item:not(.e-hide-listitem)').length - 1)) {
@@ -14996,6 +15280,7 @@ let MultiSelect = class MultiSelect extends DropDownBase {
14996
15280
  if (this.headerTemplate) {
14997
15281
  this.setHeaderTemplate();
14998
15282
  overAllHeight -= this.header.offsetHeight;
15283
+ this.isUpdateHeaderHeight = this.header.offsetHeight !== 0;
14999
15284
  }
15000
15285
  append([this.list], this.popupWrapper);
15001
15286
  if (!this.list.classList.contains(dropDownBaseClasses.noData) && this.getItems()[1]) {
@@ -15033,6 +15318,7 @@ let MultiSelect = class MultiSelect extends DropDownBase {
15033
15318
  if (this.footerTemplate) {
15034
15319
  this.setFooterTemplate();
15035
15320
  overAllHeight -= this.footer.offsetHeight;
15321
+ this.isUpdateFooterHeight = this.footer.offsetHeight !== 0;
15036
15322
  }
15037
15323
  if (this.mode === 'CheckBox' && this.showSelectAll) {
15038
15324
  this.notify('selectAll', { module: 'CheckBoxSelection', enable: this.mode === 'CheckBox' });
@@ -15150,6 +15436,9 @@ let MultiSelect = class MultiSelect extends DropDownBase {
15150
15436
  if (this.mode === 'CheckBox' && Browser.isDevice && this.allowFiltering && this.isDeviceFullScreen) {
15151
15437
  this.notify('deviceSearchBox', { module: 'CheckBoxSelection', enable: this.mode === 'CheckBox' });
15152
15438
  }
15439
+ if (this.allowResize) {
15440
+ this.setResize();
15441
+ }
15153
15442
  this.popupObj.close();
15154
15443
  this.popupWrapper.style.visibility = '';
15155
15444
  }
@@ -15272,6 +15561,8 @@ let MultiSelect = class MultiSelect extends DropDownBase {
15272
15561
  clearAll(e) {
15273
15562
  if (this.enabled && !this.readonly) {
15274
15563
  let temp;
15564
+ this.setDynValue = false;
15565
+ this.isClearAllAction = true;
15275
15566
  if (this.value && this.value.length > 0) {
15276
15567
  if (this.allowFiltering) {
15277
15568
  this.refreshListItems(null);
@@ -15318,6 +15609,7 @@ let MultiSelect = class MultiSelect extends DropDownBase {
15318
15609
  this.previousStartIndex = 0;
15319
15610
  this.previousEndIndex = 0;
15320
15611
  }
15612
+ this.isClearAllAction = false;
15321
15613
  }
15322
15614
  this.isClearAllItem = true;
15323
15615
  EventHandler.add(document, 'mouseup', this.preventSelection, this);
@@ -15348,6 +15640,9 @@ let MultiSelect = class MultiSelect extends DropDownBase {
15348
15640
  if (this.isPopupOpen()) {
15349
15641
  this.refreshPopup();
15350
15642
  }
15643
+ if (this.allowResize) {
15644
+ this.setResize();
15645
+ }
15351
15646
  if (!this.inputFocus) {
15352
15647
  if (this.changeOnBlur) {
15353
15648
  this.updateValueState(e, this.value, tempValues);
@@ -16150,6 +16445,9 @@ let MultiSelect = class MultiSelect extends DropDownBase {
16150
16445
  }
16151
16446
  this.checkSelectAll();
16152
16447
  this.refreshPopup();
16448
+ if (this.allowResize) {
16449
+ this.setResize();
16450
+ }
16153
16451
  if (this.hideSelectedItem) {
16154
16452
  this.focusAtFirstListItem();
16155
16453
  }
@@ -16664,6 +16962,22 @@ let MultiSelect = class MultiSelect extends DropDownBase {
16664
16962
  EventHandler.remove(this.inputElement, 'paste', this.pasteHandler);
16665
16963
  }
16666
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
+ }
16667
16981
  selectAllItem(state, event, list) {
16668
16982
  let li;
16669
16983
  if (!isNullOrUndefined(this.list)) {
@@ -17185,6 +17499,20 @@ let MultiSelect = class MultiSelect extends DropDownBase {
17185
17499
  this.enableRTL(newProp.enableRtl);
17186
17500
  super.onPropertyChanged(newProp, oldProp);
17187
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;
17188
17516
  case 'readonly':
17189
17517
  this.updateReadonly(newProp.readonly);
17190
17518
  this.hidePopup();
@@ -17427,6 +17755,24 @@ let MultiSelect = class MultiSelect extends DropDownBase {
17427
17755
  if (this.mode === 'CheckBox' && this.showSelectAll) {
17428
17756
  EventHandler.remove(this.popupObj.element, 'click', this.clickHandler);
17429
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
+ }
17430
17776
  if (this.enableVirtualization && this.mode === 'CheckBox' && this.value && this.value.length > 0 &&
17431
17777
  this.enableSelectionOrder) {
17432
17778
  this.viewPortInfo.startIndex = this.virtualItemStartIndex = 0;
@@ -17542,6 +17888,9 @@ let MultiSelect = class MultiSelect extends DropDownBase {
17542
17888
  }
17543
17889
  }
17544
17890
  }
17891
+ if (this.allowResize) {
17892
+ this.setResize();
17893
+ }
17545
17894
  this.preventSetCurrentData = true;
17546
17895
  }
17547
17896
  });
@@ -17726,6 +18075,102 @@ let MultiSelect = class MultiSelect extends DropDownBase {
17726
18075
  }
17727
18076
  this.renderComplete();
17728
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
+ }
17729
18174
  getListHeight() {
17730
18175
  const listParent = this.createElement('div', {
17731
18176
  className: 'e-dropdownbase'
@@ -18111,6 +18556,7 @@ let MultiSelect = class MultiSelect extends DropDownBase {
18111
18556
  this.inputElement = null;
18112
18557
  this.delimiterWrapper = null;
18113
18558
  this.liCollections = null;
18559
+ this.popupContentElement = null;
18114
18560
  this.header = null;
18115
18561
  this.mainList = null;
18116
18562
  this.mainListCollection = null;
@@ -18221,6 +18667,9 @@ __decorate$5([
18221
18667
  __decorate$5([
18222
18668
  Property(false)
18223
18669
  ], MultiSelect.prototype, "readonly", void 0);
18670
+ __decorate$5([
18671
+ Property(false)
18672
+ ], MultiSelect.prototype, "allowResize", void 0);
18224
18673
  __decorate$5([
18225
18674
  Property(null)
18226
18675
  ], MultiSelect.prototype, "text", void 0);
@@ -18302,6 +18751,15 @@ __decorate$5([
18302
18751
  __decorate$5([
18303
18752
  Event()
18304
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);
18305
18763
  __decorate$5([
18306
18764
  Event()
18307
18765
  ], MultiSelect.prototype, "filtering", void 0);
@@ -19019,7 +19477,7 @@ let ListBox = ListBox_1 = class ListBox extends DropDownBase {
19019
19477
  new Sortable(this.ulElement, {
19020
19478
  scope: this.scope,
19021
19479
  itemClass: 'e-list-item',
19022
- dragStart: this.triggerDragStart.bind(this),
19480
+ beforeDragStart: this.triggerDragStart.bind(this),
19023
19481
  drag: this.triggerDrag.bind(this),
19024
19482
  beforeDrop: this.beforeDragEnd.bind(this),
19025
19483
  drop: this.dragEnd.bind(this),
@@ -19267,11 +19725,11 @@ let ListBox = ListBox_1 = class ListBox extends DropDownBase {
19267
19725
  }
19268
19726
  triggerDragStart(args) {
19269
19727
  let badge;
19270
- args = extend(this.getDragArgs(args), { dragSelected: true });
19728
+ const extendedArgs = extend(this.getDragArgs(args), { dragSelected: true }, { cancel: false });
19271
19729
  if (Browser.isIos) {
19272
19730
  this.list.style.overflow = 'hidden';
19273
19731
  }
19274
- this.trigger('dragStart', args, (dragEventArgs) => {
19732
+ this.trigger('dragStart', extendedArgs, (dragEventArgs) => {
19275
19733
  this.allowDragAll = dragEventArgs.dragSelected;
19276
19734
  if (!this.allowDragAll) {
19277
19735
  badge = this.ulElement.getElementsByClassName('e-list-badge')[0];
@@ -19279,6 +19737,9 @@ let ListBox = ListBox_1 = class ListBox extends DropDownBase {
19279
19737
  detach(badge);
19280
19738
  }
19281
19739
  }
19740
+ if (dragEventArgs.cancel) {
19741
+ args.cancel = true;
19742
+ }
19282
19743
  });
19283
19744
  }
19284
19745
  triggerDrag(args) {
@@ -19507,7 +19968,9 @@ let ListBox = ListBox_1 = class ListBox extends DropDownBase {
19507
19968
  listObj.liCollections = liColl;
19508
19969
  listObj.jsonData = extend([], [], jsonData, false);
19509
19970
  listObj.listData = extend([], [], listData, false);
19510
- listObj.sortedData = extend([], [], sortedData, false);
19971
+ if (listObj.sortOrder === 'None') {
19972
+ listObj.sortedData = extend([], [], sortedData, false);
19973
+ }
19511
19974
  if (this.listData.length === 0) {
19512
19975
  this.l10nUpdate();
19513
19976
  }
@@ -21812,6 +22275,9 @@ let Mention = class Mention extends DropDownBase {
21812
22275
  this.hidePopup();
21813
22276
  this.lineBreak = true;
21814
22277
  }
22278
+ else if ((e.key === 'Backspace' || e.key === 'Delete') && this.range && this.range.startOffset !== this.range.endOffset) {
22279
+ this.range.deleteContents();
22280
+ }
21815
22281
  return;
21816
22282
  }
21817
22283
  if (lastWordRange.includes(this.mentionChar)) {
@@ -22583,7 +23049,9 @@ let Mention = class Mention extends DropDownBase {
22583
23049
  }
22584
23050
  scrollTop() {
22585
23051
  if (!isNullOrUndefined(this.selectedLI)) {
22586
- 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;
22587
23055
  nextOffset = this.fields.groupBy && nextOffset;
22588
23056
  const boxRange = (this.selectedLI.offsetTop + this.selectedLI.offsetHeight - this.list.scrollTop);
22589
23057
  if (this.activeIndex === 0) {