@syncfusion/ej2-dropdowns 27.2.5 → 28.1.35

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 (224) 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 +511 -40
  6. package/dist/es6/ej2-dropdowns.es2015.js.map +1 -1
  7. package/dist/es6/ej2-dropdowns.es5.js +510 -38
  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 +2 -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 +45 -1
  21. package/src/drop-down-list/drop-down-list.js +213 -13
  22. package/src/drop-down-tree/drop-down-tree.d.ts +1 -0
  23. package/src/drop-down-tree/drop-down-tree.js +4 -3
  24. package/src/list-box/list-box.d.ts +4 -0
  25. package/src/list-box/list-box.js +9 -4
  26. package/src/mention/mention.js +6 -1
  27. package/src/multi-select/multi-select-model.d.ts +31 -0
  28. package/src/multi-select/multi-select.d.ts +45 -0
  29. package/src/multi-select/multi-select.js +250 -10
  30. package/styles/auto-complete/_tailwind3-definition.scss +2 -0
  31. package/styles/auto-complete/bds.css +75 -0
  32. package/styles/auto-complete/bds.scss +4 -0
  33. package/styles/auto-complete/highcontrast.css +1 -1
  34. package/styles/auto-complete/tailwind3.css +101 -0
  35. package/styles/auto-complete/tailwind3.scss +4 -0
  36. package/styles/bds-lite.css +3013 -0
  37. package/styles/bds-lite.scss +28 -0
  38. package/styles/bds.css +3855 -0
  39. package/styles/bds.scss +33 -0
  40. package/styles/bootstrap-dark-lite.css +41 -2
  41. package/styles/bootstrap-dark.css +41 -2
  42. package/styles/bootstrap-lite.css +30 -1
  43. package/styles/bootstrap.css +30 -1
  44. package/styles/bootstrap4-lite.css +30 -0
  45. package/styles/bootstrap4.css +30 -0
  46. package/styles/bootstrap5-dark-lite.css +31 -0
  47. package/styles/bootstrap5-dark.css +31 -0
  48. package/styles/bootstrap5-lite.css +31 -0
  49. package/styles/bootstrap5.3-lite.css +31 -3
  50. package/styles/bootstrap5.3.css +31 -3
  51. package/styles/bootstrap5.css +31 -0
  52. package/styles/combo-box/_tailwind3-definition.scss +2 -0
  53. package/styles/combo-box/bds.css +75 -0
  54. package/styles/combo-box/bds.scss +4 -0
  55. package/styles/combo-box/highcontrast.css +1 -1
  56. package/styles/combo-box/tailwind3.css +101 -0
  57. package/styles/combo-box/tailwind3.scss +4 -0
  58. package/styles/drop-down-base/_bigger.scss +3 -0
  59. package/styles/drop-down-base/_layout.scss +7 -0
  60. package/styles/drop-down-base/_tailwind3-definition.scss +98 -0
  61. package/styles/drop-down-base/bds.css +496 -0
  62. package/styles/drop-down-base/bds.scss +4 -0
  63. package/styles/drop-down-base/bootstrap-dark.css +4 -0
  64. package/styles/drop-down-base/bootstrap.css +4 -0
  65. package/styles/drop-down-base/bootstrap4.css +4 -0
  66. package/styles/drop-down-base/bootstrap5-dark.css +4 -0
  67. package/styles/drop-down-base/bootstrap5.3.css +4 -0
  68. package/styles/drop-down-base/bootstrap5.css +4 -0
  69. package/styles/drop-down-base/fabric-dark.css +4 -0
  70. package/styles/drop-down-base/fabric.css +4 -0
  71. package/styles/drop-down-base/fluent-dark.css +4 -0
  72. package/styles/drop-down-base/fluent.css +4 -0
  73. package/styles/drop-down-base/fluent2.css +9 -5
  74. package/styles/drop-down-base/highcontrast-light.css +4 -0
  75. package/styles/drop-down-base/highcontrast.css +4 -0
  76. package/styles/drop-down-base/material-dark.css +4 -0
  77. package/styles/drop-down-base/material.css +4 -0
  78. package/styles/drop-down-base/material3-dark.css +4 -0
  79. package/styles/drop-down-base/material3.css +4 -0
  80. package/styles/drop-down-base/tailwind-dark.css +4 -0
  81. package/styles/drop-down-base/tailwind.css +4 -0
  82. package/styles/drop-down-base/tailwind3.css +392 -0
  83. package/styles/drop-down-base/tailwind3.scss +4 -0
  84. package/styles/drop-down-list/_highcontrast-definition.scss +1 -1
  85. package/styles/drop-down-list/_layout.scss +18 -2
  86. package/styles/drop-down-list/_tailwind3-definition.scss +135 -0
  87. package/styles/drop-down-list/_theme.scss +3 -1
  88. package/styles/drop-down-list/bds.css +609 -0
  89. package/styles/drop-down-list/bds.scss +10 -0
  90. package/styles/drop-down-list/bootstrap-dark.css +18 -1
  91. package/styles/drop-down-list/bootstrap.css +13 -1
  92. package/styles/drop-down-list/bootstrap4.css +13 -0
  93. package/styles/drop-down-list/bootstrap5-dark.css +13 -0
  94. package/styles/drop-down-list/bootstrap5.3.css +13 -0
  95. package/styles/drop-down-list/bootstrap5.css +13 -0
  96. package/styles/drop-down-list/fabric-dark.css +18 -1
  97. package/styles/drop-down-list/fabric.css +13 -1
  98. package/styles/drop-down-list/fluent-dark.css +13 -1
  99. package/styles/drop-down-list/fluent.css +13 -1
  100. package/styles/drop-down-list/fluent2.css +13 -1
  101. package/styles/drop-down-list/highcontrast-light.css +9 -1
  102. package/styles/drop-down-list/highcontrast.css +19 -1
  103. package/styles/drop-down-list/icons/_bootstrap-dark.scss +4 -0
  104. package/styles/drop-down-list/icons/_bootstrap.scss +4 -0
  105. package/styles/drop-down-list/icons/_bootstrap4.scss +4 -0
  106. package/styles/drop-down-list/icons/_bootstrap5.3.scss +4 -0
  107. package/styles/drop-down-list/icons/_bootstrap5.scss +4 -0
  108. package/styles/drop-down-list/icons/_fabric-dark.scss +4 -0
  109. package/styles/drop-down-list/icons/_fabric.scss +4 -0
  110. package/styles/drop-down-list/icons/_fluent.scss +4 -0
  111. package/styles/drop-down-list/icons/_fluent2.scss +4 -0
  112. package/styles/drop-down-list/icons/_highcontrast.scss +4 -0
  113. package/styles/drop-down-list/icons/_material-dark.scss +4 -0
  114. package/styles/drop-down-list/icons/_material.scss +4 -0
  115. package/styles/drop-down-list/icons/_material3.scss +4 -0
  116. package/styles/drop-down-list/icons/_tailwind.scss +4 -0
  117. package/styles/drop-down-list/icons/_tailwind3.scss +14 -0
  118. package/styles/drop-down-list/material-dark.css +18 -1
  119. package/styles/drop-down-list/material.css +13 -1
  120. package/styles/drop-down-list/material3-dark.css +13 -1
  121. package/styles/drop-down-list/material3.css +13 -1
  122. package/styles/drop-down-list/tailwind-dark.css +13 -1
  123. package/styles/drop-down-list/tailwind.css +13 -1
  124. package/styles/drop-down-list/tailwind3.css +456 -0
  125. package/styles/drop-down-list/tailwind3.scss +10 -0
  126. package/styles/drop-down-tree/_bigger.scss +41 -7
  127. package/styles/drop-down-tree/_layout.scss +34 -10
  128. package/styles/drop-down-tree/_tailwind3-definition.scss +67 -0
  129. package/styles/drop-down-tree/_theme.scss +3 -3
  130. package/styles/drop-down-tree/bds.css +712 -0
  131. package/styles/drop-down-tree/bds.scss +10 -0
  132. package/styles/drop-down-tree/bootstrap5.3.css +0 -3
  133. package/styles/drop-down-tree/icons/_tailwind3.scss +11 -0
  134. package/styles/drop-down-tree/tailwind3.css +512 -0
  135. package/styles/drop-down-tree/tailwind3.scss +10 -0
  136. package/styles/fabric-dark-lite.css +40 -1
  137. package/styles/fabric-dark.css +40 -1
  138. package/styles/fabric-lite.css +30 -1
  139. package/styles/fabric.css +30 -1
  140. package/styles/fluent-dark-lite.css +31 -1
  141. package/styles/fluent-dark.css +31 -1
  142. package/styles/fluent-lite.css +31 -1
  143. package/styles/fluent.css +31 -1
  144. package/styles/fluent2-lite.css +45 -12
  145. package/styles/fluent2.css +45 -12
  146. package/styles/highcontrast-light-lite.css +22 -1
  147. package/styles/highcontrast-light.css +22 -1
  148. package/styles/highcontrast-lite.css +41 -1
  149. package/styles/highcontrast.css +41 -1
  150. package/styles/list-box/_bigger.scss +18 -1
  151. package/styles/list-box/_layout.scss +29 -3
  152. package/styles/list-box/_tailwind3-definition.scss +123 -0
  153. package/styles/list-box/_theme.scss +11 -0
  154. package/styles/list-box/bds.css +971 -0
  155. package/styles/list-box/bds.scss +6 -0
  156. package/styles/list-box/fluent2.css +1 -1
  157. package/styles/list-box/icons/_tailwind3.scss +25 -0
  158. package/styles/list-box/tailwind3.css +991 -0
  159. package/styles/list-box/tailwind3.scss +6 -0
  160. package/styles/material-dark-lite.css +40 -1
  161. package/styles/material-dark.css +40 -1
  162. package/styles/material-lite.css +30 -1
  163. package/styles/material.css +30 -1
  164. package/styles/material3-dark-lite.css +32 -5
  165. package/styles/material3-dark.css +32 -5
  166. package/styles/material3-lite.css +32 -5
  167. package/styles/material3.css +32 -5
  168. package/styles/mention/_tailwind3-definition.scss +1 -0
  169. package/styles/mention/bds.css +78 -0
  170. package/styles/mention/bds.scss +6 -0
  171. package/styles/mention/tailwind3.css +67 -0
  172. package/styles/mention/tailwind3.scss +6 -0
  173. package/styles/multi-select/_bigger.scss +2 -2
  174. package/styles/multi-select/_bootstrap-dark-definition.scss +1 -1
  175. package/styles/multi-select/_layout.scss +28 -5
  176. package/styles/multi-select/_material3-definition.scss +1 -1
  177. package/styles/multi-select/_tailwind3-definition.scss +227 -0
  178. package/styles/multi-select/_theme.scss +1 -1
  179. package/styles/multi-select/bds.css +1575 -0
  180. package/styles/multi-select/bds.scss +10 -0
  181. package/styles/multi-select/bootstrap-dark.css +19 -1
  182. package/styles/multi-select/bootstrap.css +13 -0
  183. package/styles/multi-select/bootstrap4.css +13 -0
  184. package/styles/multi-select/bootstrap5-dark.css +14 -0
  185. package/styles/multi-select/bootstrap5.3.css +14 -0
  186. package/styles/multi-select/bootstrap5.css +14 -0
  187. package/styles/multi-select/fabric-dark.css +18 -0
  188. package/styles/multi-select/fabric.css +13 -0
  189. package/styles/multi-select/fluent-dark.css +14 -0
  190. package/styles/multi-select/fluent.css +14 -0
  191. package/styles/multi-select/fluent2.css +22 -5
  192. package/styles/multi-select/highcontrast-light.css +9 -0
  193. package/styles/multi-select/highcontrast.css +18 -0
  194. package/styles/multi-select/icons/_bootstrap-dark.scss +4 -0
  195. package/styles/multi-select/icons/_bootstrap.scss +4 -0
  196. package/styles/multi-select/icons/_bootstrap4.scss +4 -0
  197. package/styles/multi-select/icons/_bootstrap5.3.scss +4 -0
  198. package/styles/multi-select/icons/_bootstrap5.scss +4 -0
  199. package/styles/multi-select/icons/_fabric-dark.scss +4 -0
  200. package/styles/multi-select/icons/_fabric.scss +4 -0
  201. package/styles/multi-select/icons/_fluent.scss +4 -0
  202. package/styles/multi-select/icons/_fluent2.scss +4 -0
  203. package/styles/multi-select/icons/_highcontrast.scss +4 -0
  204. package/styles/multi-select/icons/_material-dark.scss +4 -0
  205. package/styles/multi-select/icons/_material.scss +4 -0
  206. package/styles/multi-select/icons/_material3.scss +4 -0
  207. package/styles/multi-select/icons/_tailwind.scss +4 -0
  208. package/styles/multi-select/icons/_tailwind3.scss +26 -0
  209. package/styles/multi-select/material-dark.css +18 -0
  210. package/styles/multi-select/material.css +13 -0
  211. package/styles/multi-select/material3-dark.css +15 -4
  212. package/styles/multi-select/material3.css +15 -4
  213. package/styles/multi-select/tailwind-dark.css +13 -0
  214. package/styles/multi-select/tailwind.css +13 -0
  215. package/styles/multi-select/tailwind3.css +1398 -0
  216. package/styles/multi-select/tailwind3.scss +10 -0
  217. package/styles/tailwind-dark-lite.css +30 -1
  218. package/styles/tailwind-dark.css +30 -1
  219. package/styles/tailwind-lite.css +30 -1
  220. package/styles/tailwind.css +30 -1
  221. package/styles/tailwind3-lite.css +2890 -0
  222. package/styles/tailwind3-lite.scss +28 -0
  223. package/styles/tailwind3.css +3551 -0
  224. package/styles/tailwind3.scss +33 -0
@@ -68,6 +68,7 @@ var BOX_ELEMENT = 'e-multiselect-box';
68
68
  var FILTERPARENT = 'e-filter-parent';
69
69
  var CUSTOM_WIDTH = 'e-search-custom-width';
70
70
  var FILTERINPUT = 'e-input-filter';
71
+ var RESIZE_ICON = 'e-resizer-right e-icons';
71
72
  /**
72
73
  * The Multiselect allows the user to pick a more than one value from list of predefined values.
73
74
  * ```html
@@ -99,6 +100,9 @@ var MultiSelect = /** @class */ (function (_super) {
99
100
  var _this = _super.call(this, option, element) || this;
100
101
  _this.clearIconWidth = 0;
101
102
  _this.previousFilterText = '';
103
+ _this.storedSelectAllHeight = 0;
104
+ _this.isUpdateHeaderHeight = false;
105
+ _this.isUpdateFooterHeight = false;
102
106
  _this.isValidKey = false;
103
107
  _this.selectAllEventData = [];
104
108
  _this.selectAllEventEle = [];
@@ -249,7 +253,7 @@ var MultiSelect = /** @class */ (function (_super) {
249
253
  var eventArgs = { popup: this.popupObj, event: e, cancel: false, animation: animModel };
250
254
  this.trigger('open', eventArgs, function (eventArgs) {
251
255
  if (!eventArgs.cancel) {
252
- _this.focusAtFirstListItem();
256
+ _this.focusAtFirstListItem(true);
253
257
  if (_this.popupObj) {
254
258
  document.body.appendChild(_this.popupObj.element);
255
259
  }
@@ -264,6 +268,23 @@ var MultiSelect = /** @class */ (function (_super) {
264
268
  if (_this.popupObj) {
265
269
  _this.popupObj.show(eventArgs.animation, (_this.zIndex === 1000) ? _this.element : null);
266
270
  }
271
+ if (_this.isReact) {
272
+ setTimeout(function () {
273
+ if (_this.popupHeight && _this.list && _this.popupHeight !== 'auto') {
274
+ var popupHeightValue = typeof _this.popupHeight === 'string' ? parseInt(_this.popupHeight, 10) : _this.popupHeight;
275
+ if (!_this.isUpdateHeaderHeight && _this.headerTemplate && _this.header) {
276
+ var listHeight = _this.list.style.maxHeight === '' ? popupHeightValue : parseInt(_this.list.style.maxHeight, 10);
277
+ _this.list.style.maxHeight = (listHeight - _this.header.offsetHeight).toString() + 'px';
278
+ _this.isUpdateHeaderHeight = true;
279
+ }
280
+ if (!_this.isUpdateFooterHeight && _this.footerTemplate && _this.footer) {
281
+ var listHeight = _this.list.style.maxHeight === '' ? popupHeightValue : parseInt(_this.list.style.maxHeight, 10);
282
+ _this.list.style.maxHeight = (listHeight - _this.footer.offsetHeight).toString() + 'px';
283
+ _this.isUpdateFooterHeight = true;
284
+ }
285
+ }
286
+ }, 15);
287
+ }
267
288
  attributes(_this.inputElement, {
268
289
  'aria-expanded': 'true', 'aria-owns': _this.element.id + '_popup', 'aria-controls': _this.element.id
269
290
  });
@@ -340,16 +361,16 @@ var MultiSelect = /** @class */ (function (_super) {
340
361
  : this.value[this.value.length - 1];
341
362
  var valueEle = this.findListElement((this.hideSelectedItem ? this.ulElement : this.list), 'li', 'data-value', value);
342
363
  if (!isNullOrUndefined(valueEle)) {
343
- this.scrollBottom(valueEle);
364
+ this.scrollBottom(valueEle, undefined, false, null, true);
344
365
  }
345
366
  }
346
367
  if (this.enableVirtualization) {
347
368
  var focusedItem = this.list.querySelector('.' + dropDownBaseClasses.focus);
348
369
  this.isKeyBoardAction = false;
349
- this.scrollBottom(focusedItem);
370
+ this.scrollBottom(focusedItem, undefined, false, null, true);
350
371
  }
351
372
  };
352
- MultiSelect.prototype.focusAtFirstListItem = function () {
373
+ MultiSelect.prototype.focusAtFirstListItem = function (isOpen) {
353
374
  if (this.ulElement && this.ulElement.querySelector('li.'
354
375
  + dropDownBaseClasses.li)) {
355
376
  var element = void 0;
@@ -362,10 +383,18 @@ var MultiSelect = /** @class */ (function (_super) {
362
383
  if (this.fields.disabled) {
363
384
  element = this.ulElement.querySelector('li.'
364
385
  + dropDownBaseClasses.li + ':not(.e-virtual-list)' + ':not(.e-hide-listitem)' + ':not(.' + DISABLED + ')');
386
+ if (isOpen && this.viewPortInfo && this.viewPortInfo.startIndex !== 0) {
387
+ var elements = this.ulElement.querySelectorAll('li.' + dropDownBaseClasses.li + ':not(.e-virtual-list)' + ':not(.e-hide-listitem)');
388
+ element = elements && elements.length > 0 ? elements[2] : element;
389
+ }
365
390
  }
366
391
  else {
367
392
  element = this.ulElement.querySelector('li.'
368
393
  + dropDownBaseClasses.li + ':not(.e-virtual-list)' + ':not(.e-hide-listitem)');
394
+ if (isOpen && this.viewPortInfo && this.viewPortInfo.startIndex !== 0) {
395
+ var elements = this.ulElement.querySelectorAll('li.' + dropDownBaseClasses.li + ':not(.e-virtual-list)' + ':not(.e-hide-listitem)');
396
+ element = elements && elements.length > 0 ? elements[2] : element;
397
+ }
369
398
  }
370
399
  }
371
400
  else {
@@ -662,7 +691,7 @@ var MultiSelect = /** @class */ (function (_super) {
662
691
  if (this.hideSelectedItem && element.classList.contains(dropDownBaseClasses.focus)) {
663
692
  removeClass([element], dropDownBaseClasses.focus);
664
693
  var listEle = element.parentElement.querySelectorAll('.' +
665
- dropDownBaseClasses.li + ':not(.' + HIDE_LIST + ')');
694
+ dropDownBaseClasses.li + ':not(.' + HIDE_LIST + ')' + ':not(.' + DISABLED + ')');
666
695
  if (listEle.length > 0) {
667
696
  addClass([listEle[0]], dropDownBaseClasses.focus);
668
697
  this.updateAriaActiveDescendant();
@@ -831,7 +860,7 @@ var MultiSelect = /** @class */ (function (_super) {
831
860
  if (!(this.dataSource instanceof DataManager) && dataType === 'string' || dataType === 'number') {
832
861
  filterQuery.where('', this.filterType, this.targetElement(), this.ignoreCase, this.ignoreAccent);
833
862
  }
834
- else if ((this.enableVirtualization && this.targetElement() !== '') || !this.enableVirtualization) {
863
+ else if ((this.enableVirtualization && this.targetElement() !== '' && !this.isClearAllAction) || !this.enableVirtualization) {
835
864
  var fields = this.fields;
836
865
  filterQuery.where(!isNullOrUndefined(fields.text) ? fields.text : '', this.filterType, this.targetElement(), this.ignoreCase, this.ignoreAccent);
837
866
  }
@@ -839,6 +868,11 @@ var MultiSelect = /** @class */ (function (_super) {
839
868
  if (this.enableVirtualization && (this.viewPortInfo.endIndex !== 0) && !this.virtualSelectAll) {
840
869
  return this.virtualFilterQuery(filterQuery);
841
870
  }
871
+ if (this.virtualSelectAll) {
872
+ return query ? query.take(this.maximumSelectionLength).requiresCount() : this.query ?
873
+ this.query.take(this.maximumSelectionLength).requiresCount() :
874
+ new Query().take(this.maximumSelectionLength).requiresCount();
875
+ }
842
876
  return filterQuery;
843
877
  }
844
878
  else {
@@ -1027,6 +1061,9 @@ var MultiSelect = /** @class */ (function (_super) {
1027
1061
  this.getFilteringSkeletonCount();
1028
1062
  }
1029
1063
  this.refreshPopup();
1064
+ if (this.allowResize) {
1065
+ this.setResize();
1066
+ }
1030
1067
  if (this.mode === 'CheckBox') {
1031
1068
  this.removeFocus();
1032
1069
  }
@@ -1360,6 +1397,15 @@ var MultiSelect = /** @class */ (function (_super) {
1360
1397
  ':not(.' + HIDE_LIST + ')' +
1361
1398
  ':not(.e-reorder-hide)');
1362
1399
  var previousItem = steps >= 0 ? collection[steps + 1] : collection[0];
1400
+ if (this.fields.disabled && previousItem && !this.enableVirtualization) {
1401
+ while (previousItem && (previousItem.classList.contains('e-disabled') || previousItem.classList.contains(HIDE_LIST) ||
1402
+ previousItem.classList.contains('.e-reorder-hide') || previousItem.classList.contains('e-list-group-item'))) {
1403
+ previousItem = previousItem.previousElementSibling;
1404
+ }
1405
+ if (!previousItem) {
1406
+ return;
1407
+ }
1408
+ }
1363
1409
  if (this.enableVirtualization && isVirtualKeyAction) {
1364
1410
  previousItem = (this.liCollections.length >= steps && steps >= 0)
1365
1411
  ? this.liCollections[steps]
@@ -1391,6 +1437,15 @@ var MultiSelect = /** @class */ (function (_super) {
1391
1437
  var collection = this.list.querySelectorAll('li.'
1392
1438
  + dropDownBaseClasses.li + ':not(.' + HIDE_LIST + ')' + ':not(.e-reorder-hide)');
1393
1439
  var previousItem = steps <= collection.length ? collection[steps - 1] : collection[collection.length - 1];
1440
+ if (this.fields.disabled && previousItem && !this.enableVirtualization) {
1441
+ while (previousItem && (previousItem.classList.contains('e-disabled') || previousItem.classList.contains(HIDE_LIST) ||
1442
+ previousItem.classList.contains('.e-reorder-hide') || previousItem.classList.contains('e-list-group-item'))) {
1443
+ previousItem = previousItem.nextElementSibling;
1444
+ }
1445
+ if (!previousItem) {
1446
+ return;
1447
+ }
1448
+ }
1394
1449
  if (this.enableVirtualization && this.skeletonCount > 0) {
1395
1450
  previousItem = steps < list.length ? this.liCollections[steps] : this.liCollections[list.length - 1];
1396
1451
  }
@@ -1442,6 +1497,9 @@ var MultiSelect = /** @class */ (function (_super) {
1442
1497
  if (this.isPopupOpen()) {
1443
1498
  this.refreshPopup();
1444
1499
  }
1500
+ if (this.allowResize) {
1501
+ this.setResize();
1502
+ }
1445
1503
  setTimeout(function () {
1446
1504
  _this.calculateWidth();
1447
1505
  }, 150);
@@ -1678,6 +1736,7 @@ var MultiSelect = /** @class */ (function (_super) {
1678
1736
  if (this.mode === 'CheckBox') {
1679
1737
  this.inputElement.focus();
1680
1738
  }
1739
+ this.isKeyBoardAction = false;
1681
1740
  return;
1682
1741
  case 13:
1683
1742
  e.preventDefault();
@@ -1686,10 +1745,12 @@ var MultiSelect = /** @class */ (function (_super) {
1686
1745
  this.selectByKey(e);
1687
1746
  }
1688
1747
  this.checkPlaceholderSize();
1748
+ this.isKeyBoardAction = false;
1689
1749
  return;
1690
1750
  case 32:
1691
1751
  this.isKeyBoardAction = true;
1692
1752
  this.spaceKeySelection(e);
1753
+ this.isKeyBoardAction = false;
1693
1754
  return;
1694
1755
  case 9:
1695
1756
  e.preventDefault();
@@ -1731,6 +1792,9 @@ var MultiSelect = /** @class */ (function (_super) {
1731
1792
  if (!(this.mode === 'CheckBox' && this.showSelectAll)) {
1732
1793
  this.refreshPopup();
1733
1794
  }
1795
+ if (this.allowResize) {
1796
+ this.setResize();
1797
+ }
1734
1798
  this.isKeyBoardAction = false;
1735
1799
  };
1736
1800
  MultiSelect.prototype.arrowDown = function (e, isVirtualKeyAction) {
@@ -1855,9 +1919,10 @@ var MultiSelect = /** @class */ (function (_super) {
1855
1919
  }
1856
1920
  this.makeTextBoxEmpty();
1857
1921
  };
1858
- MultiSelect.prototype.scrollBottom = function (selectedLI, activeIndex, isInitialSelection, keyCode) {
1922
+ MultiSelect.prototype.scrollBottom = function (selectedLI, activeIndex, isInitialSelection, keyCode, isInitial) {
1859
1923
  if (isInitialSelection === void 0) { isInitialSelection = false; }
1860
1924
  if (keyCode === void 0) { keyCode = null; }
1925
+ if (isInitial === void 0) { isInitial = false; }
1861
1926
  if ((!isNullOrUndefined(selectedLI) && selectedLI.classList.contains('e-virtual-list')) ||
1862
1927
  (this.enableVirtualization && isNullOrUndefined(selectedLI))) {
1863
1928
  selectedLI = this.liCollections[this.skeletonCount];
@@ -1912,8 +1977,9 @@ var MultiSelect = /** @class */ (function (_super) {
1912
1977
  }
1913
1978
  }
1914
1979
  else {
1915
- this.list.scrollTop = this.virtualListInfo &&
1916
- this.virtualListInfo.startIndex ? this.virtualListInfo.startIndex * this.listItemHeight : 0;
1980
+ this.list.scrollTop = this.virtualListInfo && this.virtualListInfo.startIndex ?
1981
+ isInitial && this.virtualListInfo.startIndex ? this.virtualListInfo.startIndex * this.listItemHeight +
1982
+ (this.listItemHeight * 2) : this.virtualListInfo.startIndex * this.listItemHeight : 0;
1917
1983
  }
1918
1984
  isScrollerCHanged = this.isKeyBoardAction;
1919
1985
  isScrollTopChanged = true;
@@ -2116,6 +2182,7 @@ var MultiSelect = /** @class */ (function (_super) {
2116
2182
  this.getDataByValue(this.getFormattedValue(selectedElem.getAttribute('data-value'))) :
2117
2183
  selectedElem.getAttribute('data-value');
2118
2184
  this.removeValue(currentChip, e);
2185
+ this.updateDelimeter(this.delimiterChar, e);
2119
2186
  this.makeTextBoxEmpty();
2120
2187
  }
2121
2188
  if (this.closePopupOnSelect) {
@@ -2238,7 +2305,7 @@ var MultiSelect = /** @class */ (function (_super) {
2238
2305
  return;
2239
2306
  }
2240
2307
  var index = this.getIndexByValue(focusedLi.getAttribute('data-value'));
2241
- if (index === 0 && this.mode !== 'CheckBox') {
2308
+ if (index === 0) {
2242
2309
  position = 1;
2243
2310
  }
2244
2311
  if (index === (this.list.querySelectorAll('.e-list-item:not(.e-hide-listitem)').length - 1)) {
@@ -2894,6 +2961,7 @@ var MultiSelect = /** @class */ (function (_super) {
2894
2961
  if (this.headerTemplate) {
2895
2962
  this.setHeaderTemplate();
2896
2963
  overAllHeight -= this.header.offsetHeight;
2964
+ this.isUpdateHeaderHeight = this.header.offsetHeight !== 0;
2897
2965
  }
2898
2966
  append([this.list], this.popupWrapper);
2899
2967
  if (!this.list.classList.contains(dropDownBaseClasses.noData) && this.getItems()[1]) {
@@ -2931,6 +2999,7 @@ var MultiSelect = /** @class */ (function (_super) {
2931
2999
  if (this.footerTemplate) {
2932
3000
  this.setFooterTemplate();
2933
3001
  overAllHeight -= this.footer.offsetHeight;
3002
+ this.isUpdateFooterHeight = this.footer.offsetHeight !== 0;
2934
3003
  }
2935
3004
  if (this.mode === 'CheckBox' && this.showSelectAll) {
2936
3005
  this.notify('selectAll', { module: 'CheckBoxSelection', enable: this.mode === 'CheckBox' });
@@ -3048,6 +3117,9 @@ var MultiSelect = /** @class */ (function (_super) {
3048
3117
  if (this.mode === 'CheckBox' && Browser.isDevice && this.allowFiltering && this.isDeviceFullScreen) {
3049
3118
  this.notify('deviceSearchBox', { module: 'CheckBoxSelection', enable: this.mode === 'CheckBox' });
3050
3119
  }
3120
+ if (this.allowResize) {
3121
+ this.setResize();
3122
+ }
3051
3123
  this.popupObj.close();
3052
3124
  this.popupWrapper.style.visibility = '';
3053
3125
  }
@@ -3171,6 +3243,7 @@ var MultiSelect = /** @class */ (function (_super) {
3171
3243
  if (this.enabled && !this.readonly) {
3172
3244
  var temp = void 0;
3173
3245
  this.setDynValue = false;
3246
+ this.isClearAllAction = true;
3174
3247
  if (this.value && this.value.length > 0) {
3175
3248
  if (this.allowFiltering) {
3176
3249
  this.refreshListItems(null);
@@ -3217,6 +3290,7 @@ var MultiSelect = /** @class */ (function (_super) {
3217
3290
  this.previousStartIndex = 0;
3218
3291
  this.previousEndIndex = 0;
3219
3292
  }
3293
+ this.isClearAllAction = false;
3220
3294
  }
3221
3295
  this.isClearAllItem = true;
3222
3296
  EventHandler.add(document, 'mouseup', this.preventSelection, this);
@@ -3247,6 +3321,9 @@ var MultiSelect = /** @class */ (function (_super) {
3247
3321
  if (this.isPopupOpen()) {
3248
3322
  this.refreshPopup();
3249
3323
  }
3324
+ if (this.allowResize) {
3325
+ this.setResize();
3326
+ }
3250
3327
  if (!this.inputFocus) {
3251
3328
  if (this.changeOnBlur) {
3252
3329
  this.updateValueState(e, this.value, tempValues);
@@ -4061,6 +4138,9 @@ var MultiSelect = /** @class */ (function (_super) {
4061
4138
  }
4062
4139
  this.checkSelectAll();
4063
4140
  this.refreshPopup();
4141
+ if (this.allowResize) {
4142
+ this.setResize();
4143
+ }
4064
4144
  if (this.hideSelectedItem) {
4065
4145
  this.focusAtFirstListItem();
4066
4146
  }
@@ -4575,6 +4655,22 @@ var MultiSelect = /** @class */ (function (_super) {
4575
4655
  EventHandler.remove(this.inputElement, 'paste', this.pasteHandler);
4576
4656
  }
4577
4657
  };
4658
+ MultiSelect.prototype.resizingWireEvent = function () {
4659
+ // Mouse events
4660
+ EventHandler.add(document, 'mousemove', this.resizePopup, this);
4661
+ EventHandler.add(document, 'mouseup', this.stopResizing, this);
4662
+ // Touch events
4663
+ EventHandler.add(document, 'touchmove', this.resizePopup, this);
4664
+ EventHandler.add(document, 'touchend', this.stopResizing, this);
4665
+ };
4666
+ MultiSelect.prototype.resizingUnWireEvent = function () {
4667
+ // Mouse events
4668
+ EventHandler.remove(document, 'mousemove', this.resizePopup);
4669
+ EventHandler.remove(document, 'mouseup', this.stopResizing);
4670
+ // Touch events
4671
+ EventHandler.remove(document, 'touchmove', this.resizePopup);
4672
+ EventHandler.remove(document, 'touchend', this.stopResizing);
4673
+ };
4578
4674
  MultiSelect.prototype.selectAllItem = function (state, event, list) {
4579
4675
  var li;
4580
4676
  if (!isNullOrUndefined(this.list)) {
@@ -5101,6 +5197,20 @@ var MultiSelect = /** @class */ (function (_super) {
5101
5197
  this.enableRTL(newProp.enableRtl);
5102
5198
  _super.prototype.onPropertyChanged.call(this, newProp, oldProp);
5103
5199
  break;
5200
+ case 'allowResize':
5201
+ this.allowResize = newProp.allowResize;
5202
+ if (!this.allowResize && this.popupObj) {
5203
+ var overAllHeight = parseInt(this.popupHeight, 10);
5204
+ if (this.popupHeight !== 'auto') {
5205
+ this.list.style.maxHeight = formatUnit(overAllHeight);
5206
+ this.popupWrapper.style.height = formatUnit(this.popupHeight);
5207
+ this.popupWrapper.style.maxHeight = formatUnit(this.popupHeight);
5208
+ }
5209
+ else {
5210
+ this.list.style.maxHeight = formatUnit(this.popupHeight);
5211
+ }
5212
+ }
5213
+ break;
5104
5214
  case 'readonly':
5105
5215
  this.updateReadonly(newProp.readonly);
5106
5216
  this.hidePopup();
@@ -5345,6 +5455,24 @@ var MultiSelect = /** @class */ (function (_super) {
5345
5455
  if (_this.mode === 'CheckBox' && _this.showSelectAll) {
5346
5456
  EventHandler.remove(_this.popupObj.element, 'click', _this.clickHandler);
5347
5457
  }
5458
+ if (_this.list && _this.list.parentElement && _this.allowResize) {
5459
+ if (_this.resizer && _this.list.parentElement.contains(_this.resizer)) {
5460
+ _this.list.parentElement.removeChild(_this.resizer);
5461
+ }
5462
+ if (_this.list.parentElement.classList.contains('e-resize')) {
5463
+ _this.list.parentElement.classList.remove('e-resize');
5464
+ }
5465
+ _this.list.parentElement.style.boxSizing = '';
5466
+ _this.list.parentElement.style.paddingBottom = '';
5467
+ var overAllHeight = parseInt(_this.popupHeight, 10);
5468
+ _this.list.style.maxHeight = formatUnit(overAllHeight);
5469
+ _this.list.parentElement.style.height = formatUnit(_this.popupHeight);
5470
+ _this.list.parentElement.style.maxHeight = formatUnit(_this.popupHeight);
5471
+ }
5472
+ if (_this.resizer) {
5473
+ EventHandler.remove(_this.resizer, 'mousedown', _this.startResizing);
5474
+ _this.resizer.remove();
5475
+ }
5348
5476
  if (_this.enableVirtualization && _this.mode === 'CheckBox' && _this.value && _this.value.length > 0 &&
5349
5477
  _this.enableSelectionOrder) {
5350
5478
  _this.viewPortInfo.startIndex = _this.virtualItemStartIndex = 0;
@@ -5462,6 +5590,9 @@ var MultiSelect = /** @class */ (function (_super) {
5462
5590
  }
5463
5591
  }
5464
5592
  }
5593
+ if (_this.allowResize) {
5594
+ _this.setResize();
5595
+ }
5465
5596
  _this.preventSetCurrentData = true;
5466
5597
  }
5467
5598
  });
@@ -5647,6 +5778,102 @@ var MultiSelect = /** @class */ (function (_super) {
5647
5778
  }
5648
5779
  this.renderComplete();
5649
5780
  };
5781
+ MultiSelect.prototype.setResize = function () {
5782
+ var resizePaddingBottom = 16;
5783
+ if (this.list && this.list.parentElement && isNullOrUndefined(this.list.parentElement.querySelector('.e-resizer-right.e-icons'))) {
5784
+ this.resizer = this.createElement('div', {
5785
+ id: this.element.id + '_resize-popup',
5786
+ className: RESIZE_ICON
5787
+ });
5788
+ }
5789
+ if (this.mode === 'CheckBox' && this.showSelectAll && this.selectAllHeight && this.selectAllHeight !== 0) {
5790
+ this.storedSelectAllHeight = this.selectAllHeight;
5791
+ }
5792
+ if (this.list && this.list.parentElement) {
5793
+ this.list.parentElement.classList.add('e-resize');
5794
+ if (this.popupHeight.toString().toLowerCase() !== 'auto') {
5795
+ this.list.parentElement.style.height = '100%';
5796
+ }
5797
+ this.list.parentElement.style.boxSizing = 'border-box'; // Ensures padding doesn't affect element size
5798
+ var paddingBottom = this.mode === 'CheckBox' && this.searchBoxHeight ? this.searchBoxHeight + resizePaddingBottom + (this.showSelectAll ? this.storedSelectAllHeight : 0) : resizePaddingBottom;
5799
+ this.list.parentElement.style.paddingBottom = paddingBottom + "px";
5800
+ this.list.parentElement.appendChild(this.resizer);
5801
+ this.list.parentElement.style.width = this.resizeWidth + 'px';
5802
+ this.list.parentElement.style.height = this.resizeHeight + 'px';
5803
+ this.list.parentElement.style.maxHeight = this.resizeHeight + 'px';
5804
+ this.list.style.maxHeight = this.resizeHeight + "px";
5805
+ }
5806
+ if (this.resizer) {
5807
+ EventHandler.add(this.resizer, 'mousedown', this.startResizing, this);
5808
+ EventHandler.add(this.resizer, 'touchstart', this.startResizing, this);
5809
+ }
5810
+ };
5811
+ MultiSelect.prototype.startResizing = function (event) {
5812
+ this.isResizing = true;
5813
+ this.trigger('resizeStart', event);
5814
+ // Get initial touch or mouse coordinates
5815
+ var clientX = (event instanceof MouseEvent) ? event.clientX : event.touches[0].clientX;
5816
+ var clientY = (event instanceof MouseEvent) ? event.clientY : event.touches[0].clientY;
5817
+ if (this.list && this.list.parentElement) {
5818
+ this.originalWidth = this.list.parentElement.offsetWidth;
5819
+ this.originalHeight = this.list.parentElement.offsetHeight;
5820
+ this.originalMouseX = clientX;
5821
+ this.originalMouseY = clientY;
5822
+ }
5823
+ this.resizingWireEvent();
5824
+ // Prevent default behavior like text selection
5825
+ if (event) {
5826
+ event.preventDefault();
5827
+ }
5828
+ };
5829
+ MultiSelect.prototype.resizePopup = function (event) {
5830
+ if (!this.isResizing) {
5831
+ return;
5832
+ }
5833
+ this.trigger('resizing', event);
5834
+ // Get the current touch or mouse position
5835
+ var clientX = (event instanceof MouseEvent) ? event.clientX : event.touches[0].clientX;
5836
+ var clientY = (event instanceof MouseEvent) ? event.clientY : event.touches[0].clientY;
5837
+ // Calculate the new width and height based on drag
5838
+ var dx = clientX - this.originalMouseX;
5839
+ var dy = clientY - this.originalMouseY;
5840
+ // Set minimum width and height (100px)
5841
+ var minWidth = 100;
5842
+ var minHeight = 130;
5843
+ // Ensure the new width and height are not smaller than the minimum
5844
+ this.resizeWidth = Math.max(this.originalWidth + dx, minWidth);
5845
+ this.resizeHeight = Math.max(this.originalHeight + dy, minHeight);
5846
+ if (this.list && this.list.parentElement) {
5847
+ // Set minimum width and height (100px)
5848
+ var minWidth_1 = parseInt(window.getComputedStyle(this.list.parentElement).minWidth, 10);
5849
+ var minHeight_1 = parseInt(window.getComputedStyle(this.list.parentElement).minHeight, 10);
5850
+ minWidth_1 = minWidth_1 || 100;
5851
+ minHeight_1 = minHeight_1 || 120;
5852
+ // Ensure the new width and height are not smaller than the minimum
5853
+ this.resizeWidth = Math.max(this.originalWidth + dx, minWidth_1);
5854
+ this.resizeHeight = Math.max(this.originalHeight + dy, minHeight_1);
5855
+ this.list.parentElement.style.width = this.resizeWidth + "px";
5856
+ this.list.parentElement.style.height = this.resizeHeight + "px";
5857
+ this.list.parentElement.style.maxHeight = this.resizeHeight + "px";
5858
+ this.list.style.maxHeight = this.resizeHeight + "px";
5859
+ if (this.fixedHeaderElement && this.ulElement) {
5860
+ this.fixedHeaderElement.style.width = this.ulElement.offsetWidth + "px";
5861
+ }
5862
+ }
5863
+ if (event) {
5864
+ event.preventDefault();
5865
+ }
5866
+ };
5867
+ MultiSelect.prototype.stopResizing = function (event) {
5868
+ if (this.isResizing) {
5869
+ this.isResizing = false;
5870
+ this.trigger('resizeStop', event);
5871
+ this.resizingUnWireEvent();
5872
+ }
5873
+ if (event) {
5874
+ event.preventDefault();
5875
+ }
5876
+ };
5650
5877
  MultiSelect.prototype.getListHeight = function () {
5651
5878
  var listParent = this.createElement('div', {
5652
5879
  className: 'e-dropdownbase'
@@ -6034,6 +6261,7 @@ var MultiSelect = /** @class */ (function (_super) {
6034
6261
  this.inputElement = null;
6035
6262
  this.delimiterWrapper = null;
6036
6263
  this.liCollections = null;
6264
+ this.popupContentElement = null;
6037
6265
  this.header = null;
6038
6266
  this.mainList = null;
6039
6267
  this.mainListCollection = null;
@@ -6143,6 +6371,9 @@ var MultiSelect = /** @class */ (function (_super) {
6143
6371
  __decorate([
6144
6372
  Property(false)
6145
6373
  ], MultiSelect.prototype, "readonly", void 0);
6374
+ __decorate([
6375
+ Property(false)
6376
+ ], MultiSelect.prototype, "allowResize", void 0);
6146
6377
  __decorate([
6147
6378
  Property(null)
6148
6379
  ], MultiSelect.prototype, "text", void 0);
@@ -6224,6 +6455,15 @@ var MultiSelect = /** @class */ (function (_super) {
6224
6455
  __decorate([
6225
6456
  Event()
6226
6457
  ], MultiSelect.prototype, "chipSelection", void 0);
6458
+ __decorate([
6459
+ Event()
6460
+ ], MultiSelect.prototype, "resizeStop", void 0);
6461
+ __decorate([
6462
+ Event()
6463
+ ], MultiSelect.prototype, "resizing", void 0);
6464
+ __decorate([
6465
+ Event()
6466
+ ], MultiSelect.prototype, "resizeStart", void 0);
6227
6467
  __decorate([
6228
6468
  Event()
6229
6469
  ], MultiSelect.prototype, "filtering", void 0);
@@ -0,0 +1,2 @@
1
+ //default
2
+ //enddefault
@@ -0,0 +1,75 @@
1
+
2
+
3
+
4
+
5
+ .e-ddl.e-control-wrapper .e-ddl-icon::before {
6
+ -webkit-transform: rotate(0deg);
7
+ transform: rotate(0deg);
8
+ -webkit-transition: -webkit-transform 300ms ease;
9
+ transition: -webkit-transform 300ms ease;
10
+ transition: transform 300ms ease;
11
+ transition: transform 300ms ease, -webkit-transform 300ms ease;
12
+ }
13
+
14
+ .e-ddl.e-control-wrapper.e-icon-anim .e-ddl-icon::before {
15
+ -webkit-transform: rotate(180deg);
16
+ transform: rotate(180deg);
17
+ -webkit-transition: -webkit-transform 300ms ease;
18
+ transition: -webkit-transform 300ms ease;
19
+ transition: transform 300ms ease;
20
+ transition: transform 300ms ease, -webkit-transform 300ms ease;
21
+ }
22
+
23
+ .e-dropdownbase .e-list-item.e-active.e-hover {
24
+ color: var(--color-sf-text-primary);
25
+ }
26
+
27
+ .e-input-group:not(.e-disabled) .e-control.e-dropdownlist ~ .e-ddl-icon:active,
28
+ .e-input-group:not(.e-disabled) .e-control.e-dropdownlist ~ .e-ddl-icon:hover,
29
+ .e-input-group:not(.e-disabled) .e-back-icon:active,
30
+ .e-input-group:not(.e-disabled) .e-back-icon:hover,
31
+ .e-popup.e-ddl .e-input-group:not(.e-disabled) .e-clear-icon:active,
32
+ .e-popup.e-ddl .e-input-group:not(.e-disabled) .e-clear-icon:hover {
33
+ background: transparent;
34
+ }
35
+
36
+ .e-input-group .e-ddl-icon:not(:active)::after {
37
+ -webkit-animation: none;
38
+ animation: none;
39
+ }
40
+
41
+ .e-ddl.e-popup {
42
+ border: 0;
43
+ border-radius: 8px;
44
+ -webkit-box-shadow: 0 12px 16px -4px rgba(16, 24, 40, 0.08), 0 4px 6px -2px rgba(16, 24, 40, 0.05);
45
+ box-shadow: 0 12px 16px -4px rgba(16, 24, 40, 0.08), 0 4px 6px -2px rgba(16, 24, 40, 0.05);
46
+ margin-top: 4px;
47
+ }
48
+
49
+ .e-small .e-ddl.e-popup,
50
+ .e-small.e-ddl.e-popup {
51
+ border-radius: 4px;
52
+ margin-top: 2px;
53
+ }
54
+
55
+ .e-popup.e-ddl .e-dropdownbase {
56
+ min-height: 26px;
57
+ padding: 4px 6px;
58
+ }
59
+
60
+ .e-input-group.e-ddl,
61
+ .e-input-group.e-ddl .e-input,
62
+ .e-input-group.e-ddl .e-ddl-icon {
63
+ background: var(--color-sf-bg-primary);
64
+ }
65
+
66
+ .e-ddl.e-ddl-device.e-ddl-device-filter .e-input-group:hover:not(.e-disabled):not(.e-float-icon-left),
67
+ .e-ddl.e-ddl-device.e-ddl-device-filter .e-input-group.e-control-wrapper:hover:not(.e-disabled):not(.e-float-icon-left) {
68
+ border-bottom-width: 0;
69
+ }
70
+
71
+ .e-ddl.e-popup.e-outline .e-filter-parent {
72
+ padding: 4px 8px;
73
+ }
74
+
75
+ /* stylelint-disable-line no-empty-source */
@@ -0,0 +1,4 @@
1
+ @import 'ej2-base/styles/definition/bds.scss';
2
+ @import '../drop-down-list/bds-definition.scss';
3
+ @import 'bds-definition.scss';
4
+ @import 'all.scss';
@@ -11,7 +11,7 @@
11
11
  .e-ddl.e-popup .e-content.e-nodata {
12
12
  background-color: #000;
13
13
  }
14
- .e-ddl.e-popup .e-dropdownbase .e-list-item .e-highlight {
14
+ .e-ddl.e-popup .e-dropdownbase .e-list-item:not(.e-active) .e-highlight {
15
15
  color: #ffd939;
16
16
  }
17
17
  .e-ddl.e-popup .e-input-group {