@syncfusion/ej2-dropdowns 32.2.9 → 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 (215) 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 +407 -116
  5. package/dist/es6/ej2-dropdowns.es2015.js.map +1 -1
  6. package/dist/es6/ej2-dropdowns.es5.js +382 -91
  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.js +84 -14
  18. package/src/drop-down-tree/drop-down-tree-model.d.ts +1 -1
  19. package/src/drop-down-tree/drop-down-tree.d.ts +1 -1
  20. package/src/mention/mention.js +8 -4
  21. package/src/multi-select/multi-select.d.ts +2 -0
  22. package/src/multi-select/multi-select.js +228 -72
  23. package/styles/bds-lite.css +17 -9
  24. package/styles/bds.css +29 -15
  25. package/styles/bootstrap-dark-lite.css +17 -9
  26. package/styles/bootstrap-dark.css +27 -14
  27. package/styles/bootstrap-lite.css +17 -9
  28. package/styles/bootstrap.css +27 -14
  29. package/styles/bootstrap4-lite.css +17 -9
  30. package/styles/bootstrap4.css +27 -14
  31. package/styles/bootstrap5-dark-lite.css +17 -9
  32. package/styles/bootstrap5-dark.css +27 -14
  33. package/styles/bootstrap5-lite.css +17 -9
  34. package/styles/bootstrap5.3-lite.css +19 -9
  35. package/styles/bootstrap5.3.css +29 -14
  36. package/styles/bootstrap5.css +27 -14
  37. package/styles/drop-down-base/_bds-definition.scss +2 -2
  38. package/styles/drop-down-base/_bigger.scss +3 -3
  39. package/styles/drop-down-base/_bootstrap-dark-definition.scss +3 -3
  40. package/styles/drop-down-base/_bootstrap-definition.scss +3 -3
  41. package/styles/drop-down-base/_bootstrap4-definition.scss +3 -3
  42. package/styles/drop-down-base/_bootstrap5-dark-definition.scss +3 -3
  43. package/styles/drop-down-base/_bootstrap5-definition.scss +3 -3
  44. package/styles/drop-down-base/_bootstrap5.3-definition.scss +6 -3
  45. package/styles/drop-down-base/_fabric-dark-definition.scss +3 -3
  46. package/styles/drop-down-base/_fabric-definition.scss +3 -3
  47. package/styles/drop-down-base/_fluent-dark-definition.scss +3 -3
  48. package/styles/drop-down-base/_fluent-definition.scss +3 -3
  49. package/styles/drop-down-base/_fluent2-definition.scss +8 -5
  50. package/styles/drop-down-base/_fusionnew-definition.scss +2 -2
  51. package/styles/drop-down-base/_highcontrast-definition.scss +3 -3
  52. package/styles/drop-down-base/_highcontrast-light-definition.scss +3 -3
  53. package/styles/drop-down-base/_layout.scss +12 -1
  54. package/styles/drop-down-base/_material-dark-definition.scss +2 -2
  55. package/styles/drop-down-base/_material-definition.scss +2 -2
  56. package/styles/drop-down-base/_material3-dark-definition.scss +6 -4
  57. package/styles/drop-down-base/_material3-definition.scss +6 -4
  58. package/styles/drop-down-base/_tailwind-dark-definition.scss +4 -4
  59. package/styles/drop-down-base/_tailwind-definition.scss +4 -4
  60. package/styles/drop-down-base/_tailwind3-definition.scss +5 -2
  61. package/styles/drop-down-base/_theme.scss +6 -0
  62. package/styles/drop-down-base/bds.css +21 -11
  63. package/styles/drop-down-base/bootstrap-dark.css +19 -10
  64. package/styles/drop-down-base/bootstrap.css +19 -10
  65. package/styles/drop-down-base/bootstrap4.css +19 -10
  66. package/styles/drop-down-base/bootstrap5-dark.css +19 -10
  67. package/styles/drop-down-base/bootstrap5.3.css +21 -10
  68. package/styles/drop-down-base/bootstrap5.css +19 -10
  69. package/styles/drop-down-base/fabric-dark.css +19 -10
  70. package/styles/drop-down-base/fabric.css +19 -10
  71. package/styles/drop-down-base/fluent-dark.css +19 -10
  72. package/styles/drop-down-base/fluent.css +19 -10
  73. package/styles/drop-down-base/fluent2.css +28 -12
  74. package/styles/drop-down-base/highcontrast-light.css +19 -10
  75. package/styles/drop-down-base/highcontrast.css +19 -10
  76. package/styles/drop-down-base/material-dark.css +17 -9
  77. package/styles/drop-down-base/material.css +17 -9
  78. package/styles/drop-down-base/material3-dark.css +19 -9
  79. package/styles/drop-down-base/material3.css +19 -9
  80. package/styles/drop-down-base/tailwind-dark.css +21 -11
  81. package/styles/drop-down-base/tailwind.css +21 -11
  82. package/styles/drop-down-base/tailwind3.css +19 -9
  83. package/styles/drop-down-list/bds.css +4 -2
  84. package/styles/drop-down-list/bootstrap-dark.css +4 -2
  85. package/styles/drop-down-list/bootstrap.css +4 -2
  86. package/styles/drop-down-list/bootstrap4.css +4 -2
  87. package/styles/drop-down-list/bootstrap5-dark.css +4 -2
  88. package/styles/drop-down-list/bootstrap5.3.css +4 -2
  89. package/styles/drop-down-list/bootstrap5.css +4 -2
  90. package/styles/drop-down-list/fabric-dark.css +4 -2
  91. package/styles/drop-down-list/fabric.css +4 -2
  92. package/styles/drop-down-list/fluent-dark.css +4 -2
  93. package/styles/drop-down-list/fluent.css +4 -2
  94. package/styles/drop-down-list/fluent2.css +4 -2
  95. package/styles/drop-down-list/highcontrast-light.css +4 -2
  96. package/styles/drop-down-list/highcontrast.css +4 -2
  97. package/styles/drop-down-list/material-dark.css +4 -2
  98. package/styles/drop-down-list/material.css +4 -2
  99. package/styles/drop-down-list/material3-dark.css +4 -2
  100. package/styles/drop-down-list/material3.css +4 -2
  101. package/styles/drop-down-list/tailwind-dark.css +4 -2
  102. package/styles/drop-down-list/tailwind.css +4 -2
  103. package/styles/drop-down-list/tailwind3.css +4 -2
  104. package/styles/drop-down-tree/bds.css +4 -2
  105. package/styles/drop-down-tree/bootstrap-dark.css +4 -2
  106. package/styles/drop-down-tree/bootstrap.css +4 -2
  107. package/styles/drop-down-tree/bootstrap4.css +4 -2
  108. package/styles/drop-down-tree/bootstrap5-dark.css +4 -2
  109. package/styles/drop-down-tree/bootstrap5.3.css +4 -2
  110. package/styles/drop-down-tree/bootstrap5.css +4 -2
  111. package/styles/drop-down-tree/fabric-dark.css +4 -2
  112. package/styles/drop-down-tree/fabric.css +4 -2
  113. package/styles/drop-down-tree/fluent-dark.css +4 -2
  114. package/styles/drop-down-tree/fluent.css +4 -2
  115. package/styles/drop-down-tree/fluent2.css +4 -2
  116. package/styles/drop-down-tree/highcontrast-light.css +4 -2
  117. package/styles/drop-down-tree/highcontrast.css +4 -2
  118. package/styles/drop-down-tree/material-dark.css +4 -2
  119. package/styles/drop-down-tree/material.css +4 -2
  120. package/styles/drop-down-tree/material3-dark.css +4 -2
  121. package/styles/drop-down-tree/material3.css +4 -2
  122. package/styles/drop-down-tree/tailwind-dark.css +4 -2
  123. package/styles/drop-down-tree/tailwind.css +4 -2
  124. package/styles/drop-down-tree/tailwind3.css +4 -2
  125. package/styles/fabric-dark-lite.css +17 -9
  126. package/styles/fabric-dark.css +27 -14
  127. package/styles/fabric-lite.css +17 -9
  128. package/styles/fabric.css +27 -14
  129. package/styles/fluent-dark-lite.css +17 -9
  130. package/styles/fluent-dark.css +27 -14
  131. package/styles/fluent-lite.css +17 -9
  132. package/styles/fluent.css +27 -14
  133. package/styles/fluent2-lite.css +24 -10
  134. package/styles/fluent2.css +36 -16
  135. package/styles/highcontrast-light-lite.css +17 -9
  136. package/styles/highcontrast-light.css +27 -14
  137. package/styles/highcontrast-lite.css +17 -9
  138. package/styles/highcontrast.css +27 -14
  139. package/styles/list-box/bds.css +4 -2
  140. package/styles/list-box/bootstrap-dark.css +4 -2
  141. package/styles/list-box/bootstrap.css +4 -2
  142. package/styles/list-box/bootstrap4.css +4 -2
  143. package/styles/list-box/bootstrap5-dark.css +4 -2
  144. package/styles/list-box/bootstrap5.3.css +4 -2
  145. package/styles/list-box/bootstrap5.css +4 -2
  146. package/styles/list-box/fabric-dark.css +4 -2
  147. package/styles/list-box/fabric.css +4 -2
  148. package/styles/list-box/fluent-dark.css +4 -2
  149. package/styles/list-box/fluent.css +4 -2
  150. package/styles/list-box/fluent2.css +4 -2
  151. package/styles/list-box/highcontrast-light.css +4 -2
  152. package/styles/list-box/highcontrast.css +4 -2
  153. package/styles/list-box/material-dark.css +4 -2
  154. package/styles/list-box/material.css +4 -2
  155. package/styles/list-box/material3-dark.css +4 -2
  156. package/styles/list-box/material3.css +4 -2
  157. package/styles/list-box/tailwind-dark.css +4 -2
  158. package/styles/list-box/tailwind.css +4 -2
  159. package/styles/list-box/tailwind3.css +4 -2
  160. package/styles/material-dark-lite.css +17 -9
  161. package/styles/material-dark.css +25 -13
  162. package/styles/material-lite.css +17 -9
  163. package/styles/material.css +25 -13
  164. package/styles/material3-dark-lite.css +19 -9
  165. package/styles/material3-dark.css +27 -13
  166. package/styles/material3-lite.css +19 -9
  167. package/styles/material3.css +27 -13
  168. package/styles/mention/bds.css +4 -2
  169. package/styles/mention/bootstrap-dark.css +4 -2
  170. package/styles/mention/bootstrap.css +4 -2
  171. package/styles/mention/bootstrap4.css +4 -2
  172. package/styles/mention/bootstrap5-dark.css +4 -2
  173. package/styles/mention/bootstrap5.3.css +4 -2
  174. package/styles/mention/bootstrap5.css +4 -2
  175. package/styles/mention/fabric-dark.css +4 -2
  176. package/styles/mention/fabric.css +4 -2
  177. package/styles/mention/fluent-dark.css +4 -2
  178. package/styles/mention/fluent.css +4 -2
  179. package/styles/mention/fluent2.css +4 -2
  180. package/styles/mention/highcontrast-light.css +4 -2
  181. package/styles/mention/highcontrast.css +4 -2
  182. package/styles/mention/material-dark.css +4 -2
  183. package/styles/mention/material.css +4 -2
  184. package/styles/mention/material3-dark.css +4 -2
  185. package/styles/mention/material3.css +4 -2
  186. package/styles/mention/tailwind-dark.css +4 -2
  187. package/styles/mention/tailwind.css +4 -2
  188. package/styles/mention/tailwind3.css +4 -2
  189. package/styles/multi-select/bds.css +12 -6
  190. package/styles/multi-select/bootstrap-dark.css +12 -6
  191. package/styles/multi-select/bootstrap.css +12 -6
  192. package/styles/multi-select/bootstrap4.css +12 -6
  193. package/styles/multi-select/bootstrap5-dark.css +12 -6
  194. package/styles/multi-select/bootstrap5.3.css +12 -6
  195. package/styles/multi-select/bootstrap5.css +12 -6
  196. package/styles/multi-select/fabric-dark.css +12 -6
  197. package/styles/multi-select/fabric.css +12 -6
  198. package/styles/multi-select/fluent-dark.css +12 -6
  199. package/styles/multi-select/fluent.css +12 -6
  200. package/styles/multi-select/fluent2.css +12 -6
  201. package/styles/multi-select/highcontrast-light.css +12 -6
  202. package/styles/multi-select/highcontrast.css +12 -6
  203. package/styles/multi-select/material-dark.css +12 -6
  204. package/styles/multi-select/material.css +12 -6
  205. package/styles/multi-select/material3-dark.css +12 -6
  206. package/styles/multi-select/material3.css +12 -6
  207. package/styles/multi-select/tailwind-dark.css +12 -6
  208. package/styles/multi-select/tailwind.css +12 -6
  209. package/styles/multi-select/tailwind3.css +12 -6
  210. package/styles/tailwind-dark-lite.css +17 -9
  211. package/styles/tailwind-dark.css +29 -15
  212. package/styles/tailwind-lite.css +17 -9
  213. package/styles/tailwind.css +29 -15
  214. package/styles/tailwind3-lite.css +19 -9
  215. 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);
@@ -2827,10 +2835,12 @@ var MultiSelect = /** @class */ (function (_super) {
2827
2835
  if (!isNullOrUndefined(this.chipCollectionWrapper)) {
2828
2836
  (this.chipCollectionWrapper.style.display = '');
2829
2837
  }
2830
- if (this.mode === 'Delimiter' || this.mode === 'CheckBox') {
2838
+ if (this.mode === 'Delimiter' || (this.mode === 'CheckBox' && !this.isSelectAllClicked)) {
2831
2839
  this.showDelimWrapper();
2832
2840
  }
2833
- this.showOverAllClear();
2841
+ if (!this.isSelectAllClicked) {
2842
+ this.showOverAllClear();
2843
+ }
2834
2844
  }
2835
2845
  else {
2836
2846
  if (!isNullOrUndefined(this.chipCollectionWrapper)) {
@@ -2873,7 +2883,9 @@ var MultiSelect = /** @class */ (function (_super) {
2873
2883
  temp = this.getOverflowVal(this.value.length - 1);
2874
2884
  data += temp;
2875
2885
  temp = this.viewWrapper.innerHTML;
2876
- this.updateWrapperText(this.viewWrapper, data);
2886
+ if (!this.isSelectAllClicked) {
2887
+ this.updateWrapperText(this.viewWrapper, data);
2888
+ }
2877
2889
  }
2878
2890
  if (this.enableVirtualization && this.mode === 'CheckBox') {
2879
2891
  var currentText = [];
@@ -4341,6 +4353,7 @@ var MultiSelect = /** @class */ (function (_super) {
4341
4353
  };
4342
4354
  MultiSelect.prototype.onMouseClick = function (e) {
4343
4355
  var _this = this;
4356
+ this.isSelectAllClicked = false;
4344
4357
  if (!this.isClearAllItem) {
4345
4358
  this.keyCode = null;
4346
4359
  this.scrollFocusStatus = false;
@@ -4419,7 +4432,7 @@ var MultiSelect = /** @class */ (function (_super) {
4419
4432
  }
4420
4433
  else {
4421
4434
  e.preventDefault();
4422
- if (this.value.length === this.listData.length && this.isPopupOpen()) {
4435
+ if (this.mode !== 'CheckBox' && this.hideSelectedItem && this.value.length === this.listData.length && this.isPopupOpen()) {
4423
4436
  this.hidePopup(e);
4424
4437
  }
4425
4438
  }
@@ -4757,6 +4770,9 @@ var MultiSelect = /** @class */ (function (_super) {
4757
4770
  var remainCompildTemp = remainContent.replace('${count}', this.value.length.toString());
4758
4771
  raminElement.innerText = remainCompildTemp;
4759
4772
  this.viewWrapper.appendChild(raminElement);
4773
+ if (this.isSelectAllClicked) {
4774
+ this.showOverAllClear();
4775
+ }
4760
4776
  this.renderReactTemplates();
4761
4777
  var remainSize = raminElement.offsetWidth;
4762
4778
  remove(raminElement);
@@ -5078,9 +5094,22 @@ var MultiSelect = /** @class */ (function (_super) {
5078
5094
  index++;
5079
5095
  }
5080
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
+ }
5081
5104
  setTimeout(function () {
5082
- if (_this.virtualSelectAllData && _this.virtualSelectAllData.length > 0) {
5083
- _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) {
5084
5113
  if (_this.value && obj[_this.fields.value] != null && Array.isArray(_this.value) &&
5085
5114
  ((!_this.allowObjectBinding && _this.value.indexOf(obj[_this.fields.value]) < 0) ||
5086
5115
  (_this.allowObjectBinding && !_this.isObjectInArray(obj[_this.fields.value], _this.value)))) {
@@ -5089,21 +5118,34 @@ var MultiSelect = /** @class */ (function (_super) {
5089
5118
  _this.dispatchSelect(value, event, null, false, length, obj, text);
5090
5119
  }
5091
5120
  });
5092
- }
5093
- _this.updatedataValueItems(event);
5094
- _this.isSelectAllLoop = false;
5095
- if (!_this.changeOnBlur) {
5096
- _this.updateValueState(event, _this.value, _this.tempValues);
5097
- _this.isSelectAll = _this.isSelectAll ? !_this.isSelectAll : _this.isSelectAll;
5098
- }
5099
- _this.updateHiddenElement(true);
5100
- if (_this.popupWrapper && li[index - 1] && li[index - 1].classList.contains('e-item-focus')) {
5101
- var selectAllParent = document.getElementsByClassName('e-selectall-parent')[0];
5102
- if (selectAllParent && selectAllParent.classList.contains('e-item-focus')) {
5103
- li[index - 1].classList.remove('e-item-focus');
5121
+ currentIndex = endIndex;
5122
+ if (currentIndex < dataArray.length) {
5123
+ requestAnimationFrame(processBatch);
5104
5124
  }
5105
- }
5106
- _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();
5107
5149
  }, 0);
5108
5150
  }
5109
5151
  else if (this.virtualSelectAllData && this.virtualSelectAllData.length > 0) {
@@ -5117,25 +5159,60 @@ var MultiSelect = /** @class */ (function (_super) {
5117
5159
  }
5118
5160
  else {
5119
5161
  if (this.virtualSelectAllData && this.virtualSelectAllData.length > 0) {
5120
- this.virtualSelectAllData.map(function (obj) {
5121
- _this.virtualSelectAll = true;
5122
- _this.removeValue(_this.value[index], event, _this.value.length - index);
5123
- });
5124
- }
5125
- this.updatedataValueItems(event);
5126
- if (!this.changeOnBlur) {
5127
- this.updateValueState(event, this.value, this.tempValues);
5128
- this.isSelectAll = this.isSelectAll ? !this.isSelectAll : this.isSelectAll;
5129
- }
5130
- this.updateHiddenElement();
5131
- this.setProperties({ value: [] }, true);
5132
- this.selectedListData = [];
5133
- this.virtualSelectAll = false;
5134
- if (!isNullOrUndefined(this.viewPortInfo.startIndex) && !isNullOrUndefined(this.viewPortInfo.endIndex)) {
5135
- this.notify('setCurrentViewDataAsync', {
5136
- component: this.getModuleName(),
5137
- module: 'VirtualScroll'
5138
- });
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();
5139
5216
  }
5140
5217
  }
5141
5218
  this.checkSelectAll();
@@ -5164,13 +5241,13 @@ var MultiSelect = /** @class */ (function (_super) {
5164
5241
  };
5165
5242
  this.trigger('beforeSelectAll', beforeSelectArgs);
5166
5243
  if ((li && li.length) || (this.enableVirtualization && !state)) {
5167
- var index_1 = 0;
5168
- var count_1 = 0;
5244
+ var index = 0;
5245
+ var count = 0;
5169
5246
  if (this.enableGroupCheckBox) {
5170
- 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;
5171
5248
  }
5172
5249
  else {
5173
- 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;
5174
5251
  }
5175
5252
  if (!beforeSelectArgs.preventSelectEvent) {
5176
5253
  if (this.enableVirtualization) {
@@ -5185,42 +5262,73 @@ var MultiSelect = /** @class */ (function (_super) {
5185
5262
  }
5186
5263
  }
5187
5264
  else {
5188
- while (index_1 < length && index_1 <= 50 && index_1 < count_1) {
5189
- this.isSelectAllTarget = (length === index_1 + 1);
5190
- 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);
5191
5268
  if (this.enableGroupCheckBox) {
5192
- this.findGroupStart(li[index_1]);
5269
+ this.findGroupStart(li[index]);
5193
5270
  }
5194
- index_1++;
5271
+ index++;
5195
5272
  }
5196
5273
  if (length > 50) {
5197
- setTimeout(function () {
5198
- while (index_1 < length && index_1 < count_1) {
5199
- _this.isSelectAllTarget = (length === index_1 + 1);
5200
- _this.updateListSelection(li[index_1], event, length - index_1);
5201
- if (_this.enableGroupCheckBox) {
5202
- _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;
5203
5290
  }
5204
- index_1++;
5205
- }
5206
- _this.updatedataValueItems(event);
5207
- if (!_this.changeOnBlur) {
5208
- _this.updateValueState(event, _this.value, _this.tempValues);
5209
- _this.isSelectAll = _this.isSelectAll ? !_this.isSelectAll : _this.isSelectAll;
5210
- }
5211
- _this.updateHiddenElement();
5212
- if (_this.popupWrapper && li[index_1 - 1].classList.contains('e-item-focus')) {
5213
- var selectAllParent = document.getElementsByClassName('e-selectall-parent')[0];
5214
- if (selectAllParent && selectAllParent.classList.contains('e-item-focus')) {
5215
- 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;
5216
5312
  }
5217
- }
5218
- }, 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
+ });
5219
5327
  }
5220
5328
  }
5221
5329
  }
5222
5330
  else {
5223
- for (var i = 0; i < li.length && i < count_1; i++) {
5331
+ for (var i = 0; i < li.length && i < count; i++) {
5224
5332
  this.removeHover();
5225
5333
  var customVal = li[i].getAttribute('data-value');
5226
5334
  var value = this.getFormattedValue(customVal);
@@ -5264,7 +5372,10 @@ var MultiSelect = /** @class */ (function (_super) {
5264
5372
  this.trigger('selectedAll', args);
5265
5373
  }
5266
5374
  }
5267
- this.updatedataValueItems(event);
5375
+ if (!this.isProcessingVirtualSelectAll &&
5376
+ ((!this.isSelectAllClicked) || (this.isSelectAllClicked && (this.enableVirtualization ? length > 30 : length <= 50)))) {
5377
+ this.updatedataValueItems(event);
5378
+ }
5268
5379
  this.checkPlaceholderSize();
5269
5380
  if (length <= 50 && !beforeSelectArgs.preventSelectEvent) {
5270
5381
  if (!this.changeOnBlur) {
@@ -5357,6 +5468,7 @@ var MultiSelect = /** @class */ (function (_super) {
5357
5468
  };
5358
5469
  MultiSelect.prototype.selectAllItems = function (state, event) {
5359
5470
  var _this = this;
5471
+ this.isSelectAllClicked = state;
5360
5472
  if (isNullOrUndefined(this.list)) {
5361
5473
  this.selectAllAction = function () {
5362
5474
  if (_this.mode === 'CheckBox' && _this.showSelectAll) {
@@ -6641,6 +6753,50 @@ var MultiSelect = /** @class */ (function (_super) {
6641
6753
  if (this.delimiterWrapper && this.delimiterWrapper.parentElement) {
6642
6754
  this.delimiterWrapper.parentElement.remove();
6643
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
+ }
6644
6800
  // Remove the select element if it exists
6645
6801
  var selectElement = this.overAllWrapper.querySelector('select.e-multi-hidden');
6646
6802
  if (selectElement && selectElement.parentElement) {
@@ -6660,7 +6816,7 @@ var MultiSelect = /** @class */ (function (_super) {
6660
6816
  var attrArray = ['readonly', 'aria-disabled', 'placeholder', 'aria-labelledby',
6661
6817
  'aria-expanded', 'autocomplete', 'aria-readonly', 'autocapitalize',
6662
6818
  'spellcheck', 'aria-autocomplete', 'aria-live', 'aria-label', 'aria-hidden', 'tabindex', 'aria-controls',
6663
- 'aria-describedby', 'size', 'role', 'type', 'class'];
6819
+ 'aria-describedby', 'size', 'role', 'type', 'class', 'aria-activedescendant'];
6664
6820
  for (var i = 0; i < attrArray.length; i++) {
6665
6821
  this.inputElement.removeAttribute(attrArray[i]);
6666
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 */
package/styles/bds.css CHANGED
@@ -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 */
@@ -453,11 +459,13 @@
453
459
  }
454
460
 
455
461
  .e-dropdownbase .e-list-item .e-list-icon {
456
- padding: 0 8px 0 0;
462
+ -webkit-padding-end: 8px;
463
+ padding-inline-end: 8px;
457
464
  }
458
465
 
459
466
  .e-small .e-dropdownbase .e-list-item .e-list-icon {
460
- padding: 0 4px 0 0;
467
+ -webkit-padding-end: 4px;
468
+ padding-inline-end: 4px;
461
469
  }
462
470
 
463
471
  /* stylelint-disable */
@@ -593,11 +601,13 @@
593
601
  }
594
602
 
595
603
  .e-bigger .e-dropdownbase .e-list-item .e-list-icon {
596
- padding: 0 12px 0 0;
604
+ -webkit-padding-end: 0 12px 0 0;
605
+ padding-inline-end: 0 12px 0 0;
597
606
  }
598
607
 
599
608
  .e-bigger.e-small .e-dropdownbase .e-list-item .e-list-icon {
600
- padding: 0 8px 0 0;
609
+ -webkit-padding-end: 0 8px 0 0;
610
+ padding-inline-end: 0 8px 0 0;
601
611
  }
602
612
 
603
613
  /* stylelint-disable property-no-vendor-prefix */
@@ -2021,11 +2031,13 @@ ejs-dropdownlist {
2021
2031
  }
2022
2032
 
2023
2033
  .e-dropdownbase .e-list-item .e-list-icon {
2024
- padding: 0 8px 0 0;
2034
+ -webkit-padding-end: 8px;
2035
+ padding-inline-end: 8px;
2025
2036
  }
2026
2037
 
2027
2038
  .e-small .e-dropdownbase .e-list-item .e-list-icon {
2028
- padding: 0 4px 0 0;
2039
+ -webkit-padding-end: 4px;
2040
+ padding-inline-end: 4px;
2029
2041
  }
2030
2042
 
2031
2043
  /* stylelint-disable */
@@ -3076,11 +3088,13 @@ ejs-multiselect {
3076
3088
  }
3077
3089
 
3078
3090
  .e-dropdownbase .e-list-item .e-list-icon {
3079
- padding: 0 8px 0 0;
3091
+ -webkit-padding-end: 8px;
3092
+ padding-inline-end: 8px;
3080
3093
  }
3081
3094
 
3082
3095
  .e-small .e-dropdownbase .e-list-item .e-list-icon {
3083
- padding: 0 4px 0 0;
3096
+ -webkit-padding-end: 4px;
3097
+ padding-inline-end: 4px;
3084
3098
  }
3085
3099
 
3086
3100
  /* stylelint-disable */