@syncfusion/ej2-dropdowns 32.2.8 → 33.1.44

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 (216) hide show
  1. package/dist/ej2-dropdowns.min.js +2 -2
  2. package/dist/ej2-dropdowns.umd.min.js +2 -2
  3. package/dist/ej2-dropdowns.umd.min.js.map +1 -1
  4. package/dist/es6/ej2-dropdowns.es2015.js +490 -139
  5. package/dist/es6/ej2-dropdowns.es2015.js.map +1 -1
  6. package/dist/es6/ej2-dropdowns.es5.js +467 -114
  7. package/dist/es6/ej2-dropdowns.es5.js.map +1 -1
  8. package/dist/global/ej2-dropdowns.min.js +2 -2
  9. package/dist/global/ej2-dropdowns.min.js.map +1 -1
  10. package/dist/global/index.d.ts +1 -1
  11. package/package.json +8 -8
  12. package/src/combo-box/combo-box.js +3 -0
  13. package/src/common/virtual-scroll.d.ts +1 -0
  14. package/src/common/virtual-scroll.js +17 -1
  15. package/src/drop-down-base/drop-down-base.d.ts +2 -0
  16. package/src/drop-down-base/drop-down-base.js +42 -0
  17. package/src/drop-down-list/drop-down-list.d.ts +1 -0
  18. package/src/drop-down-list/drop-down-list.js +143 -30
  19. package/src/drop-down-tree/drop-down-tree-model.d.ts +1 -1
  20. package/src/drop-down-tree/drop-down-tree.d.ts +1 -1
  21. package/src/mention/mention.js +8 -4
  22. package/src/multi-select/multi-select.d.ts +2 -0
  23. package/src/multi-select/multi-select.js +254 -79
  24. package/styles/bds-lite.css +17 -9
  25. package/styles/bds.css +29 -15
  26. package/styles/bootstrap-dark-lite.css +17 -9
  27. package/styles/bootstrap-dark.css +27 -14
  28. package/styles/bootstrap-lite.css +17 -9
  29. package/styles/bootstrap.css +27 -14
  30. package/styles/bootstrap4-lite.css +17 -9
  31. package/styles/bootstrap4.css +27 -14
  32. package/styles/bootstrap5-dark-lite.css +17 -9
  33. package/styles/bootstrap5-dark.css +27 -14
  34. package/styles/bootstrap5-lite.css +17 -9
  35. package/styles/bootstrap5.3-lite.css +19 -9
  36. package/styles/bootstrap5.3.css +29 -14
  37. package/styles/bootstrap5.css +27 -14
  38. package/styles/drop-down-base/_bds-definition.scss +2 -2
  39. package/styles/drop-down-base/_bigger.scss +3 -3
  40. package/styles/drop-down-base/_bootstrap-dark-definition.scss +3 -3
  41. package/styles/drop-down-base/_bootstrap-definition.scss +3 -3
  42. package/styles/drop-down-base/_bootstrap4-definition.scss +3 -3
  43. package/styles/drop-down-base/_bootstrap5-dark-definition.scss +3 -3
  44. package/styles/drop-down-base/_bootstrap5-definition.scss +3 -3
  45. package/styles/drop-down-base/_bootstrap5.3-definition.scss +6 -3
  46. package/styles/drop-down-base/_fabric-dark-definition.scss +3 -3
  47. package/styles/drop-down-base/_fabric-definition.scss +3 -3
  48. package/styles/drop-down-base/_fluent-dark-definition.scss +3 -3
  49. package/styles/drop-down-base/_fluent-definition.scss +3 -3
  50. package/styles/drop-down-base/_fluent2-definition.scss +8 -5
  51. package/styles/drop-down-base/_fusionnew-definition.scss +2 -2
  52. package/styles/drop-down-base/_highcontrast-definition.scss +3 -3
  53. package/styles/drop-down-base/_highcontrast-light-definition.scss +3 -3
  54. package/styles/drop-down-base/_layout.scss +12 -1
  55. package/styles/drop-down-base/_material-dark-definition.scss +2 -2
  56. package/styles/drop-down-base/_material-definition.scss +2 -2
  57. package/styles/drop-down-base/_material3-dark-definition.scss +6 -4
  58. package/styles/drop-down-base/_material3-definition.scss +6 -4
  59. package/styles/drop-down-base/_tailwind-dark-definition.scss +4 -4
  60. package/styles/drop-down-base/_tailwind-definition.scss +4 -4
  61. package/styles/drop-down-base/_tailwind3-definition.scss +5 -2
  62. package/styles/drop-down-base/_theme.scss +6 -0
  63. package/styles/drop-down-base/bds.css +21 -11
  64. package/styles/drop-down-base/bootstrap-dark.css +19 -10
  65. package/styles/drop-down-base/bootstrap.css +19 -10
  66. package/styles/drop-down-base/bootstrap4.css +19 -10
  67. package/styles/drop-down-base/bootstrap5-dark.css +19 -10
  68. package/styles/drop-down-base/bootstrap5.3.css +21 -10
  69. package/styles/drop-down-base/bootstrap5.css +19 -10
  70. package/styles/drop-down-base/fabric-dark.css +19 -10
  71. package/styles/drop-down-base/fabric.css +19 -10
  72. package/styles/drop-down-base/fluent-dark.css +19 -10
  73. package/styles/drop-down-base/fluent.css +19 -10
  74. package/styles/drop-down-base/fluent2.css +28 -12
  75. package/styles/drop-down-base/highcontrast-light.css +19 -10
  76. package/styles/drop-down-base/highcontrast.css +19 -10
  77. package/styles/drop-down-base/material-dark.css +17 -9
  78. package/styles/drop-down-base/material.css +17 -9
  79. package/styles/drop-down-base/material3-dark.css +19 -9
  80. package/styles/drop-down-base/material3.css +19 -9
  81. package/styles/drop-down-base/tailwind-dark.css +21 -11
  82. package/styles/drop-down-base/tailwind.css +21 -11
  83. package/styles/drop-down-base/tailwind3.css +19 -9
  84. package/styles/drop-down-list/bds.css +4 -2
  85. package/styles/drop-down-list/bootstrap-dark.css +4 -2
  86. package/styles/drop-down-list/bootstrap.css +4 -2
  87. package/styles/drop-down-list/bootstrap4.css +4 -2
  88. package/styles/drop-down-list/bootstrap5-dark.css +4 -2
  89. package/styles/drop-down-list/bootstrap5.3.css +4 -2
  90. package/styles/drop-down-list/bootstrap5.css +4 -2
  91. package/styles/drop-down-list/fabric-dark.css +4 -2
  92. package/styles/drop-down-list/fabric.css +4 -2
  93. package/styles/drop-down-list/fluent-dark.css +4 -2
  94. package/styles/drop-down-list/fluent.css +4 -2
  95. package/styles/drop-down-list/fluent2.css +4 -2
  96. package/styles/drop-down-list/highcontrast-light.css +4 -2
  97. package/styles/drop-down-list/highcontrast.css +4 -2
  98. package/styles/drop-down-list/material-dark.css +4 -2
  99. package/styles/drop-down-list/material.css +4 -2
  100. package/styles/drop-down-list/material3-dark.css +4 -2
  101. package/styles/drop-down-list/material3.css +4 -2
  102. package/styles/drop-down-list/tailwind-dark.css +4 -2
  103. package/styles/drop-down-list/tailwind.css +4 -2
  104. package/styles/drop-down-list/tailwind3.css +4 -2
  105. package/styles/drop-down-tree/bds.css +4 -2
  106. package/styles/drop-down-tree/bootstrap-dark.css +4 -2
  107. package/styles/drop-down-tree/bootstrap.css +4 -2
  108. package/styles/drop-down-tree/bootstrap4.css +4 -2
  109. package/styles/drop-down-tree/bootstrap5-dark.css +4 -2
  110. package/styles/drop-down-tree/bootstrap5.3.css +4 -2
  111. package/styles/drop-down-tree/bootstrap5.css +4 -2
  112. package/styles/drop-down-tree/fabric-dark.css +4 -2
  113. package/styles/drop-down-tree/fabric.css +4 -2
  114. package/styles/drop-down-tree/fluent-dark.css +4 -2
  115. package/styles/drop-down-tree/fluent.css +4 -2
  116. package/styles/drop-down-tree/fluent2.css +4 -2
  117. package/styles/drop-down-tree/highcontrast-light.css +4 -2
  118. package/styles/drop-down-tree/highcontrast.css +4 -2
  119. package/styles/drop-down-tree/material-dark.css +4 -2
  120. package/styles/drop-down-tree/material.css +4 -2
  121. package/styles/drop-down-tree/material3-dark.css +4 -2
  122. package/styles/drop-down-tree/material3.css +4 -2
  123. package/styles/drop-down-tree/tailwind-dark.css +4 -2
  124. package/styles/drop-down-tree/tailwind.css +4 -2
  125. package/styles/drop-down-tree/tailwind3.css +4 -2
  126. package/styles/fabric-dark-lite.css +17 -9
  127. package/styles/fabric-dark.css +27 -14
  128. package/styles/fabric-lite.css +17 -9
  129. package/styles/fabric.css +27 -14
  130. package/styles/fluent-dark-lite.css +17 -9
  131. package/styles/fluent-dark.css +27 -14
  132. package/styles/fluent-lite.css +17 -9
  133. package/styles/fluent.css +27 -14
  134. package/styles/fluent2-lite.css +24 -10
  135. package/styles/fluent2.css +36 -16
  136. package/styles/highcontrast-light-lite.css +17 -9
  137. package/styles/highcontrast-light.css +27 -14
  138. package/styles/highcontrast-lite.css +17 -9
  139. package/styles/highcontrast.css +27 -14
  140. package/styles/list-box/bds.css +4 -2
  141. package/styles/list-box/bootstrap-dark.css +4 -2
  142. package/styles/list-box/bootstrap.css +4 -2
  143. package/styles/list-box/bootstrap4.css +4 -2
  144. package/styles/list-box/bootstrap5-dark.css +4 -2
  145. package/styles/list-box/bootstrap5.3.css +4 -2
  146. package/styles/list-box/bootstrap5.css +4 -2
  147. package/styles/list-box/fabric-dark.css +4 -2
  148. package/styles/list-box/fabric.css +4 -2
  149. package/styles/list-box/fluent-dark.css +4 -2
  150. package/styles/list-box/fluent.css +4 -2
  151. package/styles/list-box/fluent2.css +4 -2
  152. package/styles/list-box/highcontrast-light.css +4 -2
  153. package/styles/list-box/highcontrast.css +4 -2
  154. package/styles/list-box/material-dark.css +4 -2
  155. package/styles/list-box/material.css +4 -2
  156. package/styles/list-box/material3-dark.css +4 -2
  157. package/styles/list-box/material3.css +4 -2
  158. package/styles/list-box/tailwind-dark.css +4 -2
  159. package/styles/list-box/tailwind.css +4 -2
  160. package/styles/list-box/tailwind3.css +4 -2
  161. package/styles/material-dark-lite.css +17 -9
  162. package/styles/material-dark.css +25 -13
  163. package/styles/material-lite.css +17 -9
  164. package/styles/material.css +25 -13
  165. package/styles/material3-dark-lite.css +19 -9
  166. package/styles/material3-dark.css +27 -13
  167. package/styles/material3-lite.css +19 -9
  168. package/styles/material3.css +27 -13
  169. package/styles/mention/bds.css +4 -2
  170. package/styles/mention/bootstrap-dark.css +4 -2
  171. package/styles/mention/bootstrap.css +4 -2
  172. package/styles/mention/bootstrap4.css +4 -2
  173. package/styles/mention/bootstrap5-dark.css +4 -2
  174. package/styles/mention/bootstrap5.3.css +4 -2
  175. package/styles/mention/bootstrap5.css +4 -2
  176. package/styles/mention/fabric-dark.css +4 -2
  177. package/styles/mention/fabric.css +4 -2
  178. package/styles/mention/fluent-dark.css +4 -2
  179. package/styles/mention/fluent.css +4 -2
  180. package/styles/mention/fluent2.css +4 -2
  181. package/styles/mention/highcontrast-light.css +4 -2
  182. package/styles/mention/highcontrast.css +4 -2
  183. package/styles/mention/material-dark.css +4 -2
  184. package/styles/mention/material.css +4 -2
  185. package/styles/mention/material3-dark.css +4 -2
  186. package/styles/mention/material3.css +4 -2
  187. package/styles/mention/tailwind-dark.css +4 -2
  188. package/styles/mention/tailwind.css +4 -2
  189. package/styles/mention/tailwind3.css +4 -2
  190. package/styles/multi-select/bds.css +12 -6
  191. package/styles/multi-select/bootstrap-dark.css +12 -6
  192. package/styles/multi-select/bootstrap.css +12 -6
  193. package/styles/multi-select/bootstrap4.css +12 -6
  194. package/styles/multi-select/bootstrap5-dark.css +12 -6
  195. package/styles/multi-select/bootstrap5.3.css +12 -6
  196. package/styles/multi-select/bootstrap5.css +12 -6
  197. package/styles/multi-select/fabric-dark.css +12 -6
  198. package/styles/multi-select/fabric.css +12 -6
  199. package/styles/multi-select/fluent-dark.css +12 -6
  200. package/styles/multi-select/fluent.css +12 -6
  201. package/styles/multi-select/fluent2.css +12 -6
  202. package/styles/multi-select/highcontrast-light.css +12 -6
  203. package/styles/multi-select/highcontrast.css +12 -6
  204. package/styles/multi-select/material-dark.css +12 -6
  205. package/styles/multi-select/material.css +12 -6
  206. package/styles/multi-select/material3-dark.css +12 -6
  207. package/styles/multi-select/material3.css +12 -6
  208. package/styles/multi-select/tailwind-dark.css +12 -6
  209. package/styles/multi-select/tailwind.css +12 -6
  210. package/styles/multi-select/tailwind3.css +12 -6
  211. package/styles/tailwind-dark-lite.css +17 -9
  212. package/styles/tailwind-dark.css +29 -15
  213. package/styles/tailwind-lite.css +17 -9
  214. package/styles/tailwind.css +29 -15
  215. package/styles/tailwind3-lite.css +19 -9
  216. package/styles/tailwind3.css +27 -13
@@ -1434,7 +1434,15 @@ var MultiSelect = /** @class */ (function (_super) {
1434
1434
  MultiSelect.prototype.setPlaceholderSize = function (downIconWidth) {
1435
1435
  if (isNullOrUndefined(this.value) || this.value.length === 0) {
1436
1436
  if (this.dropIcon.offsetWidth !== 0) {
1437
- this.searchWrapper.style.width = ('calc(100% - ' + (downIconWidth + 10)) + 'px';
1437
+ var totalIconWidth = downIconWidth + 10;
1438
+ if (this.showClearButton && this.overAllClear) {
1439
+ var display = this.overAllClear.style.display;
1440
+ this.overAllClear.style.display = 'block';
1441
+ var clearWidth = this.overAllClear.offsetWidth;
1442
+ totalIconWidth += clearWidth;
1443
+ this.overAllClear.style.display = display;
1444
+ }
1445
+ this.searchWrapper.style.width = 'calc(100% - ' + totalIconWidth + 'px)';
1438
1446
  }
1439
1447
  else {
1440
1448
  addClass([this.searchWrapper], CUSTOM_WIDTH);
@@ -2289,7 +2297,10 @@ var MultiSelect = /** @class */ (function (_super) {
2289
2297
  }
2290
2298
  }
2291
2299
  else {
2292
- this.onActionComplete(list, this.mainData);
2300
+ var listUl = this.list && this.list.querySelector('ul');
2301
+ var isFullList = this.isReact && this.itemTemplate && listUl != null &&
2302
+ listUl.querySelectorAll('.e-list-item').length === this.mainData.length;
2303
+ this.onActionComplete(isFullList ? listUl : list, this.mainData);
2293
2304
  }
2294
2305
  this.focusAtLastListItem(data);
2295
2306
  if (this.value && this.value.length) {
@@ -2521,9 +2532,13 @@ var MultiSelect = /** @class */ (function (_super) {
2521
2532
  addClass([element], CHIP_SELECTED);
2522
2533
  if (element) {
2523
2534
  element.setAttribute('id', this.element.id + '_chip_item');
2524
- if (!isNullOrUndefined(this.inputElement) && element.id && !this.inputElement.hasAttribute('aria-activedescendant')) {
2535
+ if (!isNullOrUndefined(this.inputElement) && element.id) {
2525
2536
  this.inputElement.setAttribute('aria-activedescendant', element.id);
2526
2537
  }
2538
+ var chipClose = element.querySelector('span.' + CHIP_CLOSE.split(' ')[0]);
2539
+ if (chipClose) {
2540
+ chipClose.removeAttribute('aria-hidden');
2541
+ }
2527
2542
  }
2528
2543
  this.trigger('chipSelection', e);
2529
2544
  };
@@ -2820,10 +2835,12 @@ var MultiSelect = /** @class */ (function (_super) {
2820
2835
  if (!isNullOrUndefined(this.chipCollectionWrapper)) {
2821
2836
  (this.chipCollectionWrapper.style.display = '');
2822
2837
  }
2823
- if (this.mode === 'Delimiter' || this.mode === 'CheckBox') {
2838
+ if (this.mode === 'Delimiter' || (this.mode === 'CheckBox' && !this.isSelectAllClicked)) {
2824
2839
  this.showDelimWrapper();
2825
2840
  }
2826
- this.showOverAllClear();
2841
+ if (!this.isSelectAllClicked) {
2842
+ this.showOverAllClear();
2843
+ }
2827
2844
  }
2828
2845
  else {
2829
2846
  if (!isNullOrUndefined(this.chipCollectionWrapper)) {
@@ -2866,7 +2883,9 @@ var MultiSelect = /** @class */ (function (_super) {
2866
2883
  temp = this.getOverflowVal(this.value.length - 1);
2867
2884
  data += temp;
2868
2885
  temp = this.viewWrapper.innerHTML;
2869
- this.updateWrapperText(this.viewWrapper, data);
2886
+ if (!this.isSelectAllClicked) {
2887
+ this.updateWrapperText(this.viewWrapper, data);
2888
+ }
2870
2889
  }
2871
2890
  if (this.enableVirtualization && this.mode === 'CheckBox') {
2872
2891
  var currentText = [];
@@ -2927,6 +2946,7 @@ var MultiSelect = /** @class */ (function (_super) {
2927
2946
  var _this = this;
2928
2947
  var list = this.listData;
2929
2948
  if (this.initStatus && !isNotTrigger && (!this.allowObjectBinding || (this.allowObjectBinding && value))) {
2949
+ var selectAllArgsLocal_1 = null;
2930
2950
  value = this.allowObjectBinding ? getValue(((this.fields.value) ? this.fields.value : ''), value) : value;
2931
2951
  var val_2 = dataValue ? dataValue : this.getDataByValue(value);
2932
2952
  var eventArgs = {
@@ -2943,15 +2963,13 @@ var MultiSelect = /** @class */ (function (_super) {
2943
2963
  _this.selectAllEventEle.push(element);
2944
2964
  }
2945
2965
  if (length === 1) {
2946
- var args = {
2966
+ selectAllArgsLocal_1 = {
2947
2967
  event: eve,
2948
2968
  items: _this.selectAllEventEle,
2949
2969
  itemData: _this.selectAllEventData,
2950
2970
  isInteracted: eve ? true : false,
2951
2971
  isChecked: true
2952
2972
  };
2953
- _this.trigger('selectedAll', args);
2954
- _this.selectAllEventData = [];
2955
2973
  }
2956
2974
  if (_this.allowCustomValue && _this.isServerRendered && _this.listData !== list) {
2957
2975
  _this.listData = list;
@@ -2988,6 +3006,10 @@ var MultiSelect = /** @class */ (function (_super) {
2988
3006
  if (_this.hideSelectedItem && _this.fixedHeaderElement && _this.fields.groupBy && _this.mode !== 'CheckBox') {
2989
3007
  _super.prototype.scrollStop.call(_this);
2990
3008
  }
3009
+ if (selectAllArgsLocal_1) {
3010
+ _this.trigger('selectedAll', selectAllArgsLocal_1);
3011
+ _this.selectAllEventData = [];
3012
+ }
2991
3013
  }
2992
3014
  });
2993
3015
  }
@@ -3000,12 +3022,18 @@ var MultiSelect = /** @class */ (function (_super) {
3000
3022
  MultiSelect.prototype.removeChipFocus = function () {
3001
3023
  var elements = this.chipCollectionWrapper.querySelectorAll('span.' + CHIP + '.' + CHIP_SELECTED);
3002
3024
  removeClass(elements, CHIP_SELECTED);
3025
+ var closeElements = this.chipCollectionWrapper.querySelectorAll('span.' + CHIP_CLOSE.split(' ')[0]);
3003
3026
  if (Browser.isDevice) {
3004
- var closeElements = this.chipCollectionWrapper.querySelectorAll('span.' + CHIP_CLOSE.split(' ')[0]);
3005
3027
  for (var index = 0; index < closeElements.length; index++) {
3028
+ closeElements[index].setAttribute('aria-hidden', 'true');
3006
3029
  closeElements[index].style.display = 'none';
3007
3030
  }
3008
3031
  }
3032
+ else {
3033
+ for (var index = 0; index < closeElements.length; index++) {
3034
+ closeElements[index].setAttribute('aria-hidden', 'true');
3035
+ }
3036
+ }
3009
3037
  };
3010
3038
  MultiSelect.prototype.onMobileChipInteraction = function (e) {
3011
3039
  var chipElem = closest(e.target, '.' + CHIP);
@@ -3046,7 +3074,7 @@ var MultiSelect = /** @class */ (function (_super) {
3046
3074
  });
3047
3075
  var compiledString;
3048
3076
  var chipContent = this.createElement('span', { className: CHIP_CONTENT });
3049
- var chipClose = this.createElement('span', { className: CHIP_CLOSE });
3077
+ var chipClose = this.createElement('span', { className: CHIP_CLOSE, attrs: { 'aria-label': 'delete', 'aria-hidden': 'true', 'tabindex': '-1' } });
3050
3078
  if (this.mainData) {
3051
3079
  itemData = this.getDataByValue(value);
3052
3080
  }
@@ -4325,6 +4353,7 @@ var MultiSelect = /** @class */ (function (_super) {
4325
4353
  };
4326
4354
  MultiSelect.prototype.onMouseClick = function (e) {
4327
4355
  var _this = this;
4356
+ this.isSelectAllClicked = false;
4328
4357
  if (!this.isClearAllItem) {
4329
4358
  this.keyCode = null;
4330
4359
  this.scrollFocusStatus = false;
@@ -4403,6 +4432,9 @@ var MultiSelect = /** @class */ (function (_super) {
4403
4432
  }
4404
4433
  else {
4405
4434
  e.preventDefault();
4435
+ if (this.mode !== 'CheckBox' && this.hideSelectedItem && this.value.length === this.listData.length && this.isPopupOpen()) {
4436
+ this.hidePopup(e);
4437
+ }
4406
4438
  }
4407
4439
  var isFilterData = this.targetElement().trim() !== '' ? true : false;
4408
4440
  this.makeTextBoxEmpty();
@@ -4738,6 +4770,9 @@ var MultiSelect = /** @class */ (function (_super) {
4738
4770
  var remainCompildTemp = remainContent.replace('${count}', this.value.length.toString());
4739
4771
  raminElement.innerText = remainCompildTemp;
4740
4772
  this.viewWrapper.appendChild(raminElement);
4773
+ if (this.isSelectAllClicked) {
4774
+ this.showOverAllClear();
4775
+ }
4741
4776
  this.renderReactTemplates();
4742
4777
  var remainSize = raminElement.offsetWidth;
4743
4778
  remove(raminElement);
@@ -5059,9 +5094,22 @@ var MultiSelect = /** @class */ (function (_super) {
5059
5094
  index++;
5060
5095
  }
5061
5096
  if (length > 50) {
5097
+ createSpinner({ target: this.filterParent, width: Browser.isDevice ? '16px' : '14px' }, this.createElement);
5098
+ showSpinner(this.filterParent);
5099
+ if (this.popupObj && this.filterParent) {
5100
+ [this.popupObj.element.querySelector('.e-content'), this.popupObj.element.querySelector('.e-selectall-parent'), this.filterParent].forEach(function (el) { return el && (el.style.opacity = '0.5'); });
5101
+ this.filterParent.querySelector('.e-input').setAttribute('readonly', 'true');
5102
+ this.filterParent.style.cursor = 'progress';
5103
+ }
5062
5104
  setTimeout(function () {
5063
- if (_this.virtualSelectAllData && _this.virtualSelectAllData.length > 0) {
5064
- _this.virtualSelectAllData.map(function (obj) {
5105
+ var dataArray = _this.virtualSelectAllData;
5106
+ var batchSize = 500;
5107
+ var currentIndex = 0;
5108
+ var processBatch = function () {
5109
+ var endIndex = Math.min(currentIndex + batchSize, dataArray.length);
5110
+ var batch = dataArray.slice(currentIndex, endIndex);
5111
+ // Use map on the batch
5112
+ batch.map(function (obj) {
5065
5113
  if (_this.value && obj[_this.fields.value] != null && Array.isArray(_this.value) &&
5066
5114
  ((!_this.allowObjectBinding && _this.value.indexOf(obj[_this.fields.value]) < 0) ||
5067
5115
  (_this.allowObjectBinding && !_this.isObjectInArray(obj[_this.fields.value], _this.value)))) {
@@ -5070,21 +5118,34 @@ var MultiSelect = /** @class */ (function (_super) {
5070
5118
  _this.dispatchSelect(value, event, null, false, length, obj, text);
5071
5119
  }
5072
5120
  });
5073
- }
5074
- _this.updatedataValueItems(event);
5075
- _this.isSelectAllLoop = false;
5076
- if (!_this.changeOnBlur) {
5077
- _this.updateValueState(event, _this.value, _this.tempValues);
5078
- _this.isSelectAll = _this.isSelectAll ? !_this.isSelectAll : _this.isSelectAll;
5079
- }
5080
- _this.updateHiddenElement(true);
5081
- if (_this.popupWrapper && li[index - 1] && li[index - 1].classList.contains('e-item-focus')) {
5082
- var selectAllParent = document.getElementsByClassName('e-selectall-parent')[0];
5083
- if (selectAllParent && selectAllParent.classList.contains('e-item-focus')) {
5084
- li[index - 1].classList.remove('e-item-focus');
5121
+ currentIndex = endIndex;
5122
+ if (currentIndex < dataArray.length) {
5123
+ requestAnimationFrame(processBatch);
5085
5124
  }
5086
- }
5087
- _this.checkSelectAll();
5125
+ else {
5126
+ _this.updatedataValueItems(event);
5127
+ _this.isSelectAllLoop = false;
5128
+ if (!_this.changeOnBlur) {
5129
+ _this.updateValueState(event, _this.value, _this.tempValues);
5130
+ _this.isSelectAll = _this.isSelectAll ? !_this.isSelectAll : _this.isSelectAll;
5131
+ }
5132
+ _this.updateHiddenElement(true);
5133
+ if (_this.popupWrapper && li[index - 1] && li[index - 1].classList.contains('e-item-focus')) {
5134
+ var selectAllParent = document.getElementsByClassName('e-selectall-parent')[0];
5135
+ if (selectAllParent && selectAllParent.classList.contains('e-item-focus')) {
5136
+ li[index - 1].classList.remove('e-item-focus');
5137
+ }
5138
+ }
5139
+ _this.checkSelectAll();
5140
+ hideSpinner(_this.filterParent);
5141
+ if (_this.popupObj && _this.filterParent) {
5142
+ [_this.popupObj.element.querySelector('.e-content'), _this.popupObj.element.querySelector('.e-selectall-parent'), _this.filterParent].forEach(function (el) { return el && (el.style.opacity = ''); });
5143
+ _this.filterParent.style.cursor = '';
5144
+ _this.filterParent.querySelector('.e-input').removeAttribute('readonly');
5145
+ }
5146
+ }
5147
+ };
5148
+ processBatch();
5088
5149
  }, 0);
5089
5150
  }
5090
5151
  else if (this.virtualSelectAllData && this.virtualSelectAllData.length > 0) {
@@ -5098,25 +5159,60 @@ var MultiSelect = /** @class */ (function (_super) {
5098
5159
  }
5099
5160
  else {
5100
5161
  if (this.virtualSelectAllData && this.virtualSelectAllData.length > 0) {
5101
- this.virtualSelectAllData.map(function (obj) {
5102
- _this.virtualSelectAll = true;
5103
- _this.removeValue(_this.value[index], event, _this.value.length - index);
5104
- });
5105
- }
5106
- this.updatedataValueItems(event);
5107
- if (!this.changeOnBlur) {
5108
- this.updateValueState(event, this.value, this.tempValues);
5109
- this.isSelectAll = this.isSelectAll ? !this.isSelectAll : this.isSelectAll;
5110
- }
5111
- this.updateHiddenElement();
5112
- this.setProperties({ value: [] }, true);
5113
- this.selectedListData = [];
5114
- this.virtualSelectAll = false;
5115
- if (!isNullOrUndefined(this.viewPortInfo.startIndex) && !isNullOrUndefined(this.viewPortInfo.endIndex)) {
5116
- this.notify('setCurrentViewDataAsync', {
5117
- component: this.getModuleName(),
5118
- module: 'VirtualScroll'
5119
- });
5162
+ var dataArray_1 = this.virtualSelectAllData;
5163
+ var batchSize_1 = 500;
5164
+ var currentIndex_1 = 0;
5165
+ this.isProcessingVirtualSelectAll = true;
5166
+ createSpinner({ target: this.filterParent, width: Browser.isDevice ? '16px' : '14px' }, this.createElement);
5167
+ showSpinner(this.filterParent);
5168
+ if (this.popupObj && this.filterParent) {
5169
+ [this.popupObj.element.querySelector('.e-content'), this.popupObj.element.querySelector('.e-selectall-parent'), this.filterParent].forEach(function (el) { return el && (el.style.opacity = '0.5'); });
5170
+ this.filterParent.querySelector('.e-input').setAttribute('readonly', 'true');
5171
+ this.filterParent.style.cursor = 'progress';
5172
+ }
5173
+ var processBatch_1 = function () {
5174
+ var endIndex = Math.min(currentIndex_1 + batchSize_1, dataArray_1.length);
5175
+ var batch = dataArray_1.slice(currentIndex_1, endIndex);
5176
+ // Use map on the batch
5177
+ batch.map(function (obj) {
5178
+ _this.virtualSelectAll = true;
5179
+ // eslint-disable-next-line security/detect-object-injection
5180
+ _this.removeValue(_this.value[index], event, _this.value.length - index);
5181
+ });
5182
+ currentIndex_1 = endIndex;
5183
+ if (currentIndex_1 < dataArray_1.length) {
5184
+ requestAnimationFrame(processBatch_1);
5185
+ }
5186
+ else {
5187
+ // All batches completed
5188
+ _this.isProcessingVirtualSelectAll = false;
5189
+ hideSpinner(_this.filterParent);
5190
+ if (_this.popupObj && _this.filterParent) {
5191
+ [_this.popupObj.element.querySelector('.e-content'), _this.popupObj.element.querySelector('.e-selectall-parent'), _this.filterParent].forEach(function (el) { return el && (el.style.opacity = ''); });
5192
+ _this.filterParent.querySelector('.e-input').removeAttribute('readonly');
5193
+ _this.filterParent.style.cursor = '';
5194
+ }
5195
+ if (!_this.isSelectAllClicked) {
5196
+ _this.showOverAllClear();
5197
+ }
5198
+ _this.updatedataValueItems(event);
5199
+ if (!_this.changeOnBlur) {
5200
+ _this.updateValueState(event, _this.value, _this.tempValues);
5201
+ _this.isSelectAll = _this.isSelectAll ? !_this.isSelectAll : _this.isSelectAll;
5202
+ }
5203
+ _this.updateHiddenElement();
5204
+ _this.setProperties({ value: [] }, true);
5205
+ _this.selectedListData = [];
5206
+ _this.virtualSelectAll = false;
5207
+ if (!isNullOrUndefined(_this.viewPortInfo.startIndex) && !isNullOrUndefined(_this.viewPortInfo.endIndex)) {
5208
+ _this.notify('setCurrentViewDataAsync', {
5209
+ component: _this.getModuleName(),
5210
+ module: 'VirtualScroll'
5211
+ });
5212
+ }
5213
+ }
5214
+ };
5215
+ processBatch_1();
5120
5216
  }
5121
5217
  }
5122
5218
  this.checkSelectAll();
@@ -5145,13 +5241,13 @@ var MultiSelect = /** @class */ (function (_super) {
5145
5241
  };
5146
5242
  this.trigger('beforeSelectAll', beforeSelectArgs);
5147
5243
  if ((li && li.length) || (this.enableVirtualization && !state)) {
5148
- var index_1 = 0;
5149
- var count_1 = 0;
5244
+ var index = 0;
5245
+ var count = 0;
5150
5246
  if (this.enableGroupCheckBox) {
5151
- count_1 = state ? this.maximumSelectionLength - (this.value ? this.value.length : 0) : li.length;
5247
+ count = state ? this.maximumSelectionLength - (this.value ? this.value.length : 0) : li.length;
5152
5248
  }
5153
5249
  else {
5154
- count_1 = state ? this.maximumSelectionLength - (this.value ? this.value.length : 0) : this.maximumSelectionLength;
5250
+ count = state ? this.maximumSelectionLength - (this.value ? this.value.length : 0) : this.maximumSelectionLength;
5155
5251
  }
5156
5252
  if (!beforeSelectArgs.preventSelectEvent) {
5157
5253
  if (this.enableVirtualization) {
@@ -5166,42 +5262,73 @@ var MultiSelect = /** @class */ (function (_super) {
5166
5262
  }
5167
5263
  }
5168
5264
  else {
5169
- while (index_1 < length && index_1 <= 50 && index_1 < count_1) {
5170
- this.isSelectAllTarget = (length === index_1 + 1);
5171
- this.updateListSelection(li[index_1], event, length - index_1);
5265
+ while (index < length && index <= 50 && index < count) {
5266
+ this.isSelectAllTarget = (length === index + 1);
5267
+ this.updateListSelection(li[index], event, length - index);
5172
5268
  if (this.enableGroupCheckBox) {
5173
- this.findGroupStart(li[index_1]);
5269
+ this.findGroupStart(li[index]);
5174
5270
  }
5175
- index_1++;
5271
+ index++;
5176
5272
  }
5177
5273
  if (length > 50) {
5178
- setTimeout(function () {
5179
- while (index_1 < length && index_1 < count_1) {
5180
- _this.isSelectAllTarget = (length === index_1 + 1);
5181
- _this.updateListSelection(li[index_1], event, length - index_1);
5182
- if (_this.enableGroupCheckBox) {
5183
- _this.findGroupStart(li[index_1]);
5274
+ createSpinner({ target: this.filterParent, width: Browser.isDevice ? '16px' : '14px' }, this.createElement);
5275
+ showSpinner(this.filterParent);
5276
+ if (this.popupObj && this.filterParent) {
5277
+ [this.popupObj.element.querySelector('.e-content'), this.popupObj.element.querySelector('.e-selectall-parent'), this.filterParent].forEach(function (el) { return el && (el.style.opacity = '0.5'); });
5278
+ this.filterParent.querySelector('.e-input').setAttribute('readonly', 'true');
5279
+ this.filterParent.style.cursor = 'progress';
5280
+ }
5281
+ this.isProcessingVirtualSelectAll = !this.isSelectAllClicked;
5282
+ var indexLocal_1 = index; // preserve original index value
5283
+ var maxIndex_1 = Math.min(length, count);
5284
+ // Use two-frame yield to ensure spinner paints before heavy work starts
5285
+ var CHUNK_SIZE_1 = 6;
5286
+ requestAnimationFrame(function () {
5287
+ requestAnimationFrame(function processFrame() {
5288
+ if (!this.list) {
5289
+ return;
5184
5290
  }
5185
- index_1++;
5186
- }
5187
- _this.updatedataValueItems(event);
5188
- if (!_this.changeOnBlur) {
5189
- _this.updateValueState(event, _this.value, _this.tempValues);
5190
- _this.isSelectAll = _this.isSelectAll ? !_this.isSelectAll : _this.isSelectAll;
5191
- }
5192
- _this.updateHiddenElement();
5193
- if (_this.popupWrapper && li[index_1 - 1].classList.contains('e-item-focus')) {
5194
- var selectAllParent = document.getElementsByClassName('e-selectall-parent')[0];
5195
- if (selectAllParent && selectAllParent.classList.contains('e-item-focus')) {
5196
- li[index_1 - 1].classList.remove('e-item-focus');
5291
+ if (indexLocal_1 >= maxIndex_1) {
5292
+ this.isProcessingVirtualSelectAll = !this.isProcessingVirtualSelectAll;
5293
+ this.updatedataValueItems(event);
5294
+ if (!this.changeOnBlur) {
5295
+ this.updateValueState(event, this.value, this.tempValues);
5296
+ this.isSelectAll = this.isSelectAll ? !this.isSelectAll : this.isSelectAll;
5297
+ }
5298
+ this.updateHiddenElement();
5299
+ if (this.popupWrapper && li[indexLocal_1 - 1] && li[indexLocal_1 - 1].classList.contains('e-item-focus')) {
5300
+ var selectAllParent = document.getElementsByClassName('e-selectall-parent')[0];
5301
+ if (selectAllParent && selectAllParent.classList.contains('e-item-focus')) {
5302
+ li[indexLocal_1 - 1].classList.remove('e-item-focus');
5303
+ }
5304
+ }
5305
+ hideSpinner(this.filterParent);
5306
+ if (this.popupObj && this.filterParent) {
5307
+ [this.popupObj.element.querySelector('.e-content'), this.popupObj.element.querySelector('.e-selectall-parent'), this.filterParent].forEach(function (el) { return el && (el.style.opacity = ''); });
5308
+ this.filterParent.querySelector('.e-input').removeAttribute('readonly');
5309
+ this.filterParent.style.cursor = '';
5310
+ }
5311
+ return;
5197
5312
  }
5198
- }
5199
- }, 0);
5313
+ // process up to CHUNK_SIZE items this frame
5314
+ var processed = 0;
5315
+ while (processed < CHUNK_SIZE_1 && indexLocal_1 < maxIndex_1) {
5316
+ this.isSelectAllTarget = (length === indexLocal_1 + 1);
5317
+ this.updateListSelection(li[indexLocal_1], event, length - indexLocal_1);
5318
+ if (this.enableGroupCheckBox) {
5319
+ this.findGroupStart(li[indexLocal_1]);
5320
+ }
5321
+ indexLocal_1++;
5322
+ processed++;
5323
+ }
5324
+ requestAnimationFrame(processFrame.bind(this));
5325
+ }.bind(_this));
5326
+ });
5200
5327
  }
5201
5328
  }
5202
5329
  }
5203
5330
  else {
5204
- for (var i = 0; i < li.length && i < count_1; i++) {
5331
+ for (var i = 0; i < li.length && i < count; i++) {
5205
5332
  this.removeHover();
5206
5333
  var customVal = li[i].getAttribute('data-value');
5207
5334
  var value = this.getFormattedValue(customVal);
@@ -5245,7 +5372,10 @@ var MultiSelect = /** @class */ (function (_super) {
5245
5372
  this.trigger('selectedAll', args);
5246
5373
  }
5247
5374
  }
5248
- this.updatedataValueItems(event);
5375
+ if (!this.isProcessingVirtualSelectAll &&
5376
+ ((!this.isSelectAllClicked) || (this.isSelectAllClicked && (this.enableVirtualization ? length > 30 : length <= 50)))) {
5377
+ this.updatedataValueItems(event);
5378
+ }
5249
5379
  this.checkPlaceholderSize();
5250
5380
  if (length <= 50 && !beforeSelectArgs.preventSelectEvent) {
5251
5381
  if (!this.changeOnBlur) {
@@ -5338,6 +5468,7 @@ var MultiSelect = /** @class */ (function (_super) {
5338
5468
  };
5339
5469
  MultiSelect.prototype.selectAllItems = function (state, event) {
5340
5470
  var _this = this;
5471
+ this.isSelectAllClicked = state;
5341
5472
  if (isNullOrUndefined(this.list)) {
5342
5473
  this.selectAllAction = function () {
5343
5474
  if (_this.mode === 'CheckBox' && _this.showSelectAll) {
@@ -6048,7 +6179,7 @@ var MultiSelect = /** @class */ (function (_super) {
6048
6179
  }
6049
6180
  else {
6050
6181
  this.chipCollectionWrapper = this.createElement('span', {
6051
- className: CHIP_WRAPPER
6182
+ className: CHIP_WRAPPER, attrs: { role: 'listbox' }
6052
6183
  });
6053
6184
  this.chipCollectionWrapper.style.display = 'none';
6054
6185
  if (this.mode === 'Default') {
@@ -6622,6 +6753,50 @@ var MultiSelect = /** @class */ (function (_super) {
6622
6753
  if (this.delimiterWrapper && this.delimiterWrapper.parentElement) {
6623
6754
  this.delimiterWrapper.parentElement.remove();
6624
6755
  }
6756
+ if (this.hiddenElement) {
6757
+ if (this.hiddenElement.onchange) {
6758
+ this.hiddenElement.onchange = null;
6759
+ }
6760
+ this.hiddenElement.onchange = null;
6761
+ this.hiddenElement.onclick = null;
6762
+ this.hiddenElement.oninput = null;
6763
+ var attrs = Array.prototype.slice.call(this.hiddenElement.attributes);
6764
+ for (var n = 0; n < attrs.length; n++) {
6765
+ this.hiddenElement.removeAttribute(attrs[n].name);
6766
+ }
6767
+ var children = this.hiddenElement.children;
6768
+ for (var i = 0; i < children.length; i++) {
6769
+ var child = children[i];
6770
+ child.onclick = null;
6771
+ child.onchange = null;
6772
+ child.textContent = '';
6773
+ var attr = Array.prototype.slice.call(child.attributes);
6774
+ for (var n = 0; n < attr.length; n++) {
6775
+ child.removeAttribute(attr[n].name);
6776
+ }
6777
+ }
6778
+ var selectedElement = this.hiddenElement.querySelector('option');
6779
+ if (selectedElement) {
6780
+ selectedElement.removeAttribute('value');
6781
+ selectedElement.removeAttribute('selected');
6782
+ selectedElement.text = '';
6783
+ selectedElement.innerHTML = '';
6784
+ selectedElement = null;
6785
+ }
6786
+ while (this.hiddenElement.firstChild) {
6787
+ this.hiddenElement.removeChild(this.hiddenElement.firstChild);
6788
+ }
6789
+ if (this.hiddenElement.attributes) {
6790
+ var attr = Array.prototype.slice.call(this.hiddenElement.attributes);
6791
+ for (var n = 0; n < attr.length; n++) {
6792
+ this.hiddenElement.removeAttribute(attr[n].name);
6793
+ }
6794
+ }
6795
+ if (this.hiddenElement.parentNode) {
6796
+ this.hiddenElement.parentNode.removeChild(this.hiddenElement);
6797
+ }
6798
+ this.hiddenElement.innerHTML = '';
6799
+ }
6625
6800
  // Remove the select element if it exists
6626
6801
  var selectElement = this.overAllWrapper.querySelector('select.e-multi-hidden');
6627
6802
  if (selectElement && selectElement.parentElement) {
@@ -6641,7 +6816,7 @@ var MultiSelect = /** @class */ (function (_super) {
6641
6816
  var attrArray = ['readonly', 'aria-disabled', 'placeholder', 'aria-labelledby',
6642
6817
  'aria-expanded', 'autocomplete', 'aria-readonly', 'autocapitalize',
6643
6818
  'spellcheck', 'aria-autocomplete', 'aria-live', 'aria-label', 'aria-hidden', 'tabindex', 'aria-controls',
6644
- 'aria-describedby', 'size', 'role', 'type', 'class'];
6819
+ 'aria-describedby', 'size', 'role', 'type', 'class', 'aria-activedescendant'];
6645
6820
  for (var i = 0; i < attrArray.length; i++) {
6646
6821
  this.inputElement.removeAttribute(attrArray[i]);
6647
6822
  }
@@ -21,11 +21,13 @@
21
21
  }
22
22
 
23
23
  .e-dropdownbase .e-list-item .e-list-icon {
24
- padding: 0 8px 0 0;
24
+ -webkit-padding-end: 8px;
25
+ padding-inline-end: 8px;
25
26
  }
26
27
 
27
28
  .e-small .e-dropdownbase .e-list-item .e-list-icon {
28
- padding: 0 4px 0 0;
29
+ -webkit-padding-end: 4px;
30
+ padding-inline-end: 4px;
29
31
  }
30
32
 
31
33
  /* stylelint-disable */
@@ -56,11 +58,13 @@
56
58
  }
57
59
 
58
60
  .e-dropdownbase .e-list-item .e-list-icon {
59
- padding: 0 8px 0 0;
61
+ -webkit-padding-end: 8px;
62
+ padding-inline-end: 8px;
60
63
  }
61
64
 
62
65
  .e-small .e-dropdownbase .e-list-item .e-list-icon {
63
- padding: 0 4px 0 0;
66
+ -webkit-padding-end: 4px;
67
+ padding-inline-end: 4px;
64
68
  }
65
69
 
66
70
  /* stylelint-disable */
@@ -121,11 +125,11 @@
121
125
 
122
126
  .e-mention.e-popup {
123
127
  background: var(--color-sf-bg-primary);
124
- border: 0;
125
128
  -webkit-box-shadow: 0 2px 3px 1px rgba(0, 0, 0, 0.21);
126
129
  box-shadow: 0 2px 3px 1px rgba(0, 0, 0, 0.21);
127
130
  margin-top: 2px;
128
131
  position: absolute;
132
+ border: 0;
129
133
  }
130
134
 
131
135
  .e-mention.e-popup .e-dropdownbase {
@@ -220,11 +224,13 @@
220
224
  }
221
225
 
222
226
  .e-dropdownbase .e-list-item .e-list-icon {
223
- padding: 0 8px 0 0;
227
+ -webkit-padding-end: 8px;
228
+ padding-inline-end: 8px;
224
229
  }
225
230
 
226
231
  .e-small .e-dropdownbase .e-list-item .e-list-icon {
227
- padding: 0 4px 0 0;
232
+ -webkit-padding-end: 4px;
233
+ padding-inline-end: 4px;
228
234
  }
229
235
 
230
236
  /* stylelint-disable */
@@ -1541,11 +1547,13 @@ ejs-dropdownlist {
1541
1547
  }
1542
1548
 
1543
1549
  .e-dropdownbase .e-list-item .e-list-icon {
1544
- padding: 0 8px 0 0;
1550
+ -webkit-padding-end: 8px;
1551
+ padding-inline-end: 8px;
1545
1552
  }
1546
1553
 
1547
1554
  .e-small .e-dropdownbase .e-list-item .e-list-icon {
1548
- padding: 0 4px 0 0;
1555
+ -webkit-padding-end: 4px;
1556
+ padding-inline-end: 4px;
1549
1557
  }
1550
1558
 
1551
1559
  /* stylelint-disable */