@syncfusion/ej2-dropdowns 25.2.7 → 26.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 (266) hide show
  1. package/.eslintrc.json +3 -2
  2. package/dist/ej2-dropdowns.min.js +2 -2
  3. package/dist/ej2-dropdowns.umd.min.js +2 -2
  4. package/dist/ej2-dropdowns.umd.min.js.map +1 -1
  5. package/dist/es6/ej2-dropdowns.es2015.js +505 -224
  6. package/dist/es6/ej2-dropdowns.es2015.js.map +1 -1
  7. package/dist/es6/ej2-dropdowns.es5.js +498 -216
  8. package/dist/es6/ej2-dropdowns.es5.js.map +1 -1
  9. package/dist/global/ej2-dropdowns.min.js +2 -2
  10. package/dist/global/ej2-dropdowns.min.js.map +1 -1
  11. package/dist/global/index.d.ts +1 -1
  12. package/package.json +14 -13
  13. package/src/auto-complete/auto-complete.js +1 -1
  14. package/src/combo-box/combo-box.js +15 -0
  15. package/src/common/interface.js +0 -1
  16. package/src/common/virtual-scroll.js +1 -0
  17. package/src/drop-down-base/drop-down-base-model.d.ts +8 -1
  18. package/src/drop-down-base/drop-down-base.d.ts +28 -2
  19. package/src/drop-down-base/drop-down-base.js +64 -9
  20. package/src/drop-down-list/drop-down-list.d.ts +15 -2
  21. package/src/drop-down-list/drop-down-list.js +129 -13
  22. package/src/drop-down-tree/drop-down-tree-model.d.ts +15 -15
  23. package/src/drop-down-tree/drop-down-tree.d.ts +17 -13
  24. package/src/drop-down-tree/drop-down-tree.js +52 -38
  25. package/src/list-box/list-box.js +30 -9
  26. package/src/mention/mention.js +23 -8
  27. package/src/multi-select/interface.js +0 -1
  28. package/src/multi-select/multi-select.d.ts +15 -0
  29. package/src/multi-select/multi-select.js +135 -12
  30. package/styles/auto-complete/_bootstrap5.3-definition.scss +2 -0
  31. package/styles/auto-complete/_fluent2-definition.scss +2 -0
  32. package/styles/auto-complete/bootstrap-dark.css +5 -2
  33. package/styles/auto-complete/bootstrap.css +5 -2
  34. package/styles/auto-complete/bootstrap4.css +6 -2
  35. package/styles/auto-complete/bootstrap5-dark.css +6 -2
  36. package/styles/auto-complete/bootstrap5.css +6 -2
  37. package/styles/auto-complete/fabric-dark.css +3 -1
  38. package/styles/auto-complete/fabric.css +3 -1
  39. package/styles/auto-complete/fluent-dark.css +6 -2
  40. package/styles/auto-complete/fluent.css +6 -2
  41. package/styles/auto-complete/fluent2.css +1140 -0
  42. package/styles/auto-complete/fluent2.scss +4 -0
  43. package/styles/auto-complete/highcontrast-light.css +3 -1
  44. package/styles/auto-complete/highcontrast.css +3 -1
  45. package/styles/auto-complete/material-dark.css +16 -5
  46. package/styles/auto-complete/material.css +16 -5
  47. package/styles/auto-complete/material3-dark.css +17 -6
  48. package/styles/auto-complete/material3.css +17 -6
  49. package/styles/auto-complete/tailwind-dark.css +16 -5
  50. package/styles/auto-complete/tailwind.css +16 -5
  51. package/styles/bootstrap-dark.css +196 -228
  52. package/styles/bootstrap-dark.scss +28 -8
  53. package/styles/bootstrap.css +196 -228
  54. package/styles/bootstrap.scss +28 -8
  55. package/styles/bootstrap4.css +199 -229
  56. package/styles/bootstrap4.scss +28 -8
  57. package/styles/bootstrap5-dark.css +196 -221
  58. package/styles/bootstrap5-dark.scss +28 -8
  59. package/styles/bootstrap5.css +196 -221
  60. package/styles/bootstrap5.scss +28 -8
  61. package/styles/combo-box/_bootstrap5.3-definition.scss +2 -0
  62. package/styles/combo-box/_fluent2-definition.scss +2 -0
  63. package/styles/combo-box/bootstrap-dark.css +5 -2
  64. package/styles/combo-box/bootstrap.css +5 -2
  65. package/styles/combo-box/bootstrap4.css +6 -2
  66. package/styles/combo-box/bootstrap5-dark.css +6 -2
  67. package/styles/combo-box/bootstrap5.css +6 -2
  68. package/styles/combo-box/fabric-dark.css +3 -1
  69. package/styles/combo-box/fabric.css +3 -1
  70. package/styles/combo-box/fluent-dark.css +6 -2
  71. package/styles/combo-box/fluent.css +6 -2
  72. package/styles/combo-box/fluent2.css +1140 -0
  73. package/styles/combo-box/fluent2.scss +4 -0
  74. package/styles/combo-box/highcontrast-light.css +3 -1
  75. package/styles/combo-box/highcontrast.css +3 -1
  76. package/styles/combo-box/material-dark.css +16 -5
  77. package/styles/combo-box/material.css +16 -5
  78. package/styles/combo-box/material3-dark.css +17 -6
  79. package/styles/combo-box/material3.css +17 -6
  80. package/styles/combo-box/tailwind-dark.css +16 -5
  81. package/styles/combo-box/tailwind.css +16 -5
  82. package/styles/drop-down-base/_bds-definition.scss +2 -2
  83. package/styles/drop-down-base/_bootstrap5.3-definition.scss +117 -0
  84. package/styles/drop-down-base/_fluent2-definition.scss +134 -0
  85. package/styles/drop-down-base/_layout.scss +12 -2
  86. package/styles/drop-down-base/_material3-definition.scss +0 -11
  87. package/styles/drop-down-base/_theme.scss +2 -11
  88. package/styles/drop-down-base/bootstrap-dark.css +2 -1
  89. package/styles/drop-down-base/bootstrap.css +2 -1
  90. package/styles/drop-down-base/bootstrap4.css +2 -1
  91. package/styles/drop-down-base/bootstrap5-dark.css +2 -1
  92. package/styles/drop-down-base/bootstrap5.css +2 -1
  93. package/styles/drop-down-base/fabric-dark.css +2 -1
  94. package/styles/drop-down-base/fabric.css +2 -1
  95. package/styles/drop-down-base/fluent-dark.css +2 -1
  96. package/styles/drop-down-base/fluent.css +2 -1
  97. package/styles/drop-down-base/fluent2.css +1447 -0
  98. package/styles/drop-down-base/fluent2.scss +3 -0
  99. package/styles/drop-down-base/highcontrast-light.css +2 -1
  100. package/styles/drop-down-base/highcontrast.css +2 -1
  101. package/styles/drop-down-base/material-dark.css +2 -1
  102. package/styles/drop-down-base/material.css +2 -1
  103. package/styles/drop-down-base/material3-dark.css +9 -2
  104. package/styles/drop-down-base/material3.css +9 -2
  105. package/styles/drop-down-base/tailwind-dark.css +2 -1
  106. package/styles/drop-down-base/tailwind.css +2 -1
  107. package/styles/drop-down-list/_bootstrap5.3-definition.scss +201 -0
  108. package/styles/drop-down-list/_fluent2-definition.scss +134 -0
  109. package/styles/drop-down-list/_layout.scss +5 -3
  110. package/styles/drop-down-list/_material3-definition.scss +0 -8
  111. package/styles/drop-down-list/bootstrap-dark.css +38 -3
  112. package/styles/drop-down-list/bootstrap.css +38 -3
  113. package/styles/drop-down-list/bootstrap4.css +39 -3
  114. package/styles/drop-down-list/bootstrap5-dark.css +39 -3
  115. package/styles/drop-down-list/bootstrap5.css +39 -3
  116. package/styles/drop-down-list/fabric-dark.css +36 -2
  117. package/styles/drop-down-list/fabric.css +36 -2
  118. package/styles/drop-down-list/fluent-dark.css +39 -3
  119. package/styles/drop-down-list/fluent.css +39 -3
  120. package/styles/drop-down-list/fluent2.css +1684 -0
  121. package/styles/drop-down-list/fluent2.scss +9 -0
  122. package/styles/drop-down-list/highcontrast-light.css +36 -2
  123. package/styles/drop-down-list/highcontrast.css +36 -2
  124. package/styles/drop-down-list/icons/_bootstrap5.3.scss +14 -0
  125. package/styles/drop-down-list/icons/_fluent2.scss +14 -0
  126. package/styles/drop-down-list/material-dark.css +58 -7
  127. package/styles/drop-down-list/material.css +72 -9
  128. package/styles/drop-down-list/material3-dark.css +74 -10
  129. package/styles/drop-down-list/material3.css +74 -10
  130. package/styles/drop-down-list/tailwind-dark.css +49 -6
  131. package/styles/drop-down-list/tailwind.css +49 -6
  132. package/styles/drop-down-tree/_bds-definition.scss +5 -0
  133. package/styles/drop-down-tree/_bootstrap4-definition.scss +1 -0
  134. package/styles/drop-down-tree/_bootstrap5-definition.scss +5 -0
  135. package/styles/drop-down-tree/_bootstrap5.3-definition.scss +66 -0
  136. package/styles/drop-down-tree/_fluent-definition.scss +4 -0
  137. package/styles/drop-down-tree/_fluent2-definition.scss +75 -0
  138. package/styles/drop-down-tree/_layout.scss +289 -327
  139. package/styles/drop-down-tree/_material3-definition.scss +3 -5
  140. package/styles/drop-down-tree/_tailwind-definition.scss +7 -2
  141. package/styles/drop-down-tree/_theme.scss +24 -41
  142. package/styles/drop-down-tree/bootstrap-dark.css +63 -29
  143. package/styles/drop-down-tree/bootstrap.css +63 -29
  144. package/styles/drop-down-tree/bootstrap4.css +64 -30
  145. package/styles/drop-down-tree/bootstrap5-dark.css +63 -27
  146. package/styles/drop-down-tree/bootstrap5.css +63 -27
  147. package/styles/drop-down-tree/fabric-dark.css +63 -29
  148. package/styles/drop-down-tree/fabric.css +63 -29
  149. package/styles/drop-down-tree/fluent-dark.css +71 -35
  150. package/styles/drop-down-tree/fluent.css +71 -35
  151. package/styles/drop-down-tree/fluent2.css +1732 -0
  152. package/styles/drop-down-tree/fluent2.scss +9 -0
  153. package/styles/drop-down-tree/highcontrast-light.css +63 -29
  154. package/styles/drop-down-tree/highcontrast.css +63 -23
  155. package/styles/drop-down-tree/icons/_bootstrap5.3.scss +11 -0
  156. package/styles/drop-down-tree/icons/_fluent2.scss +14 -0
  157. package/styles/drop-down-tree/material-dark.css +80 -43
  158. package/styles/drop-down-tree/material.css +97 -51
  159. package/styles/drop-down-tree/material3-dark.css +85 -32
  160. package/styles/drop-down-tree/material3.css +85 -32
  161. package/styles/drop-down-tree/tailwind-dark.css +72 -28
  162. package/styles/drop-down-tree/tailwind.css +72 -28
  163. package/styles/fabric-dark.css +194 -227
  164. package/styles/fabric-dark.scss +28 -8
  165. package/styles/fabric.css +194 -227
  166. package/styles/fabric.scss +28 -8
  167. package/styles/fluent-dark.css +206 -236
  168. package/styles/fluent-dark.scss +28 -8
  169. package/styles/fluent.css +206 -236
  170. package/styles/fluent.scss +28 -8
  171. package/styles/fluent2.css +4771 -0
  172. package/styles/fluent2.scss +28 -0
  173. package/styles/highcontrast-light.css +197 -227
  174. package/styles/highcontrast-light.scss +28 -8
  175. package/styles/highcontrast.css +197 -221
  176. package/styles/highcontrast.scss +28 -8
  177. package/styles/list-box/_bootstrap-dark-definition.scss +0 -2
  178. package/styles/list-box/_bootstrap5.3-definition.scss +120 -0
  179. package/styles/list-box/_fabric-dark-definition.scss +0 -2
  180. package/styles/list-box/_fluent2-definition.scss +121 -0
  181. package/styles/list-box/_highcontrast-light-definition.scss +0 -2
  182. package/styles/list-box/_layout.scss +65 -44
  183. package/styles/list-box/_material-dark-definition.scss +0 -2
  184. package/styles/list-box/_tailwind-definition.scss +1 -1
  185. package/styles/list-box/_theme.scss +36 -65
  186. package/styles/list-box/bootstrap-dark.css +72 -112
  187. package/styles/list-box/bootstrap.css +72 -112
  188. package/styles/list-box/bootstrap4.css +72 -112
  189. package/styles/list-box/bootstrap5-dark.css +72 -106
  190. package/styles/list-box/bootstrap5.css +72 -106
  191. package/styles/list-box/fabric-dark.css +72 -112
  192. package/styles/list-box/fabric.css +72 -112
  193. package/styles/list-box/fluent-dark.css +72 -112
  194. package/styles/list-box/fluent.css +72 -112
  195. package/styles/list-box/fluent2.css +2029 -0
  196. package/styles/list-box/fluent2.scss +5 -0
  197. package/styles/list-box/highcontrast-light.css +72 -112
  198. package/styles/list-box/highcontrast.css +72 -112
  199. package/styles/list-box/icons/_bootstrap5.3.scss +25 -0
  200. package/styles/list-box/icons/_fluent2.scss +25 -0
  201. package/styles/list-box/material-dark.css +72 -112
  202. package/styles/list-box/material.css +72 -112
  203. package/styles/list-box/material3-dark.css +73 -113
  204. package/styles/list-box/material3.css +73 -113
  205. package/styles/list-box/tailwind-dark.css +74 -114
  206. package/styles/list-box/tailwind.css +74 -114
  207. package/styles/material-dark.css +236 -260
  208. package/styles/material-dark.scss +28 -8
  209. package/styles/material.css +253 -284
  210. package/styles/material.scss +28 -8
  211. package/styles/material3-dark.css +253 -266
  212. package/styles/material3-dark.scss +28 -8
  213. package/styles/material3.css +253 -266
  214. package/styles/material3.scss +28 -8
  215. package/styles/mention/_bootstrap5.3-definition.scss +1 -0
  216. package/styles/mention/_fluent2-definition.scss +1 -0
  217. package/styles/mention/bootstrap-dark.css +24 -0
  218. package/styles/mention/bootstrap.css +24 -0
  219. package/styles/mention/bootstrap4.css +24 -0
  220. package/styles/mention/bootstrap5-dark.css +24 -0
  221. package/styles/mention/bootstrap5.css +24 -0
  222. package/styles/mention/fabric-dark.css +24 -0
  223. package/styles/mention/fabric.css +24 -0
  224. package/styles/mention/fluent-dark.css +24 -0
  225. package/styles/mention/fluent.css +24 -0
  226. package/styles/mention/fluent2.css +1130 -0
  227. package/styles/mention/fluent2.scss +6 -0
  228. package/styles/mention/highcontrast-light.css +24 -0
  229. package/styles/mention/highcontrast.css +24 -0
  230. package/styles/mention/material-dark.css +24 -0
  231. package/styles/mention/material.css +24 -0
  232. package/styles/mention/material3-dark.css +25 -1
  233. package/styles/mention/material3.css +25 -1
  234. package/styles/mention/tailwind-dark.css +24 -0
  235. package/styles/mention/tailwind.css +24 -0
  236. package/styles/multi-select/_bootstrap5.3-definition.scss +230 -0
  237. package/styles/multi-select/_fluent2-definition.scss +236 -0
  238. package/styles/multi-select/_layout.scss +32 -38
  239. package/styles/multi-select/_material3-definition.scss +0 -15
  240. package/styles/multi-select/_theme.scss +0 -4
  241. package/styles/multi-select/bootstrap-dark.css +67 -28
  242. package/styles/multi-select/bootstrap.css +67 -28
  243. package/styles/multi-select/bootstrap4.css +70 -29
  244. package/styles/multi-select/bootstrap5-dark.css +67 -28
  245. package/styles/multi-select/bootstrap5.css +67 -28
  246. package/styles/multi-select/fabric-dark.css +67 -28
  247. package/styles/multi-select/fabric.css +67 -28
  248. package/styles/multi-select/fluent-dark.css +69 -29
  249. package/styles/multi-select/fluent.css +69 -29
  250. package/styles/multi-select/fluent2.css +2663 -0
  251. package/styles/multi-select/fluent2.scss +9 -0
  252. package/styles/multi-select/highcontrast-light.css +70 -28
  253. package/styles/multi-select/highcontrast.css +70 -28
  254. package/styles/multi-select/icons/_bootstrap5.3.scss +26 -0
  255. package/styles/multi-select/icons/_fluent2.scss +692 -0
  256. package/styles/multi-select/material-dark.css +88 -32
  257. package/styles/multi-select/material.css +102 -34
  258. package/styles/multi-select/material3-dark.css +109 -35
  259. package/styles/multi-select/material3.css +109 -35
  260. package/styles/multi-select/tailwind-dark.css +67 -28
  261. package/styles/multi-select/tailwind.css +67 -28
  262. package/styles/tailwind-dark.css +217 -233
  263. package/styles/tailwind-dark.scss +28 -8
  264. package/styles/tailwind.css +217 -233
  265. package/styles/tailwind.scss +28 -8
  266. package/CHANGELOG.md +0 -2200
@@ -296,6 +296,9 @@ var Mention = /** @class */ (function (_super) {
296
296
  }
297
297
  };
298
298
  Mention.prototype.updateUpDownAction = function (e) {
299
+ if (this.fields.disabled && this.list && this.list.querySelectorAll('.e-list-item:not(.e-disabled)').length === 0) {
300
+ return;
301
+ }
299
302
  var focusEle = this.list.querySelector('.' + dropDownBaseClasses.focus);
300
303
  if (this.isSelectFocusItem(focusEle)) {
301
304
  this.setSelection(focusEle, e);
@@ -316,6 +319,17 @@ var Mention = /** @class */ (function (_super) {
316
319
  this.setSelection(nextItem, e);
317
320
  }
318
321
  }
322
+ var itemIndex;
323
+ for (var index = 0; index < this.liCollections.length; index++) {
324
+ if (this.liCollections[index].classList.contains(dropDownBaseClasses.focus)
325
+ || this.liCollections[index].classList.contains(dropDownBaseClasses.selected)) {
326
+ itemIndex = index;
327
+ break;
328
+ }
329
+ }
330
+ if (itemIndex != null && this.isDisabledElement(this.liCollections[itemIndex])) {
331
+ this.updateUpDownAction(e);
332
+ }
319
333
  if (this.isPopupOpen) {
320
334
  e.preventDefault();
321
335
  }
@@ -491,7 +505,7 @@ var Mention = /** @class */ (function (_super) {
491
505
  if (!isNullOrUndefined(ulElement)) {
492
506
  attributes(ulElement, { 'id': this.inputElement.id + '_options', 'role': 'listbox', 'aria-hidden': 'false' });
493
507
  }
494
- var focusItem = ulElement.querySelector('.' + dropDownBaseClasses.li);
508
+ var focusItem = this.fields.disabled ? ulElement.querySelector('.' + dropDownBaseClasses.li + ':not(.e-disabled)') : ulElement.querySelector('.' + dropDownBaseClasses.li);
495
509
  if (focusItem) {
496
510
  focusItem.classList.add(dropDownBaseClasses.selected);
497
511
  this.selectedLI = focusItem;
@@ -720,10 +734,10 @@ var Mention = /** @class */ (function (_super) {
720
734
  }
721
735
  }
722
736
  append([_this.list], popupEle_1);
723
- if (_this.inputElement.parentElement && _this.inputElement.parentElement.parentElement &&
724
- _this.inputElement.parentElement.parentElement.classList.contains('e-richtexteditor')) {
725
- if (popupEle_1.firstElementChild && popupEle_1.firstElementChild.childElementCount > 0) {
726
- popupEle_1.firstElementChild.setAttribute('aria-owns', _this.inputElement.parentElement.parentElement.id);
737
+ if (_this.inputElement.parentElement) {
738
+ var rteRootElement = _this.inputElement.parentElement.closest('.e-richtexteditor');
739
+ if (rteRootElement && popupEle_1.firstElementChild && popupEle_1.firstElementChild.childElementCount > 0) {
740
+ popupEle_1.firstElementChild.setAttribute('aria-owns', rteRootElement.id);
727
741
  addClass([popupEle_1], 'e-rte-elements');
728
742
  }
729
743
  }
@@ -1026,7 +1040,7 @@ var Mention = /** @class */ (function (_super) {
1026
1040
  Mention.prototype.onMouseClick = function (e) {
1027
1041
  var target = e.target;
1028
1042
  var li = closest(target, '.' + dropDownBaseClasses.li);
1029
- if (!this.isValidLI(li)) {
1043
+ if (!this.isValidLI(li) || this.isDisabledElement(li)) {
1030
1044
  return;
1031
1045
  }
1032
1046
  this.isSelected = true;
@@ -1257,6 +1271,7 @@ var Mention = /** @class */ (function (_super) {
1257
1271
  }
1258
1272
  this.isTyped = false;
1259
1273
  range.deleteContents();
1274
+ range.startContainer.parentElement.normalize();
1260
1275
  var element = this.createElement('div');
1261
1276
  element.innerHTML = value;
1262
1277
  var frag = document.createDocumentFragment();
@@ -1293,10 +1308,10 @@ var Mention = /** @class */ (function (_super) {
1293
1308
  }
1294
1309
  if (this.isContentEditable(this.inputElement)) {
1295
1310
  if (Browser.isAndroid) {
1296
- return '<span contenteditable="true" class="e-mention-chip">' + showChar + value + '</span>'.concat(typeof this.suffixText === 'string' ? this.suffixText : ' ');
1311
+ return '<span contenteditable="true" class="e-mention-chip">' + showChar + value + '</span>'.concat(typeof this.suffixText === 'string' ? this.suffixText : '');
1297
1312
  }
1298
1313
  else {
1299
- return '<span contenteditable="false" class="e-mention-chip">' + showChar + value + '</span>'.concat(typeof this.suffixText === 'string' ? this.suffixText : ' ');
1314
+ return '<span contenteditable="false" class="e-mention-chip">' + showChar + value + '</span>'.concat(typeof this.suffixText === 'string' ? this.suffixText : '');
1300
1315
  }
1301
1316
  }
1302
1317
  else {
@@ -1 +0,0 @@
1
-
@@ -906,6 +906,13 @@ export declare class MultiSelect extends DropDownBase implements IInput {
906
906
  */
907
907
  render(): void;
908
908
  private getListHeight;
909
+ /**
910
+ * Removes disabled values from the given array.
911
+ *
912
+ * @param { number[] | string[] | boolean[] | object[] } value - The array to check.
913
+ * @returns {void}
914
+ */
915
+ private removeDisabledItemsValue;
909
916
  private checkInitialValue;
910
917
  private checkAutoFocus;
911
918
  private updatevirtualizationList;
@@ -913,6 +920,14 @@ export declare class MultiSelect extends DropDownBase implements IInput {
913
920
  private addValidInputClass;
914
921
  private dropDownIcon;
915
922
  private initialUpdate;
923
+ /**
924
+ * Method to disable specific item in the popup.
925
+ *
926
+ * @param {string | number | object | HTMLLIElement} item - Specifies the item to be disabled.
927
+ * @returns {void}
928
+
929
+ */
930
+ disableItem(item: string | number | object | HTMLLIElement): void;
916
931
  /**
917
932
  * Removes the component from the DOM and detaches all its related event handlers. Also it removes the attributes and classes.
918
933
  *
@@ -358,13 +358,26 @@ var MultiSelect = /** @class */ (function (_super) {
358
358
  }
359
359
  else {
360
360
  if (this.enableVirtualization) {
361
- element = this.ulElement.querySelector('li.'
362
- + dropDownBaseClasses.li + ':not(.e-virtual-list)' + ':not(.e-hide-listitem)');
361
+ if (this.fields.disabled) {
362
+ element = this.ulElement.querySelector('li.'
363
+ + dropDownBaseClasses.li + ':not(.e-virtual-list)' + ':not(.e-hide-listitem)' + ':not(.' + DISABLED + ')');
364
+ }
365
+ else {
366
+ element = this.ulElement.querySelector('li.'
367
+ + dropDownBaseClasses.li + ':not(.e-virtual-list)' + ':not(.e-hide-listitem)');
368
+ }
363
369
  }
364
370
  else {
365
- element = this.ulElement.querySelector('li.'
366
- + dropDownBaseClasses.li + ':not(.'
367
- + HIDE_LIST + ')');
371
+ if (this.fields.disabled) {
372
+ element = this.ulElement.querySelector('li.'
373
+ + dropDownBaseClasses.li + ':not(.'
374
+ + HIDE_LIST + ')' + ':not(.' + DISABLED + ')');
375
+ }
376
+ else {
377
+ element = this.ulElement.querySelector('li.'
378
+ + dropDownBaseClasses.li + ':not(.'
379
+ + HIDE_LIST + ')');
380
+ }
368
381
  }
369
382
  }
370
383
  if (element !== null) {
@@ -2097,6 +2110,21 @@ var MultiSelect = /** @class */ (function (_super) {
2097
2110
  }
2098
2111
  }
2099
2112
  }
2113
+ var focusedLi = this.list ? this.list.querySelector('.e-item-focus') : null;
2114
+ if (this.isDisabledElement(focusedLi)) {
2115
+ if (this.list.querySelectorAll('.e-list-item:not(.e-hide-listitem):not(.e-disabled)').length === 0) {
2116
+ this.removeFocus();
2117
+ return;
2118
+ }
2119
+ var index = this.getIndexByValue(focusedLi.getAttribute('data-value'));
2120
+ if (index === 0 && this.mode !== 'CheckBox') {
2121
+ position = 1;
2122
+ }
2123
+ if (index === (this.list.querySelectorAll('.e-list-item:not(.e-hide-listitem)').length - 1)) {
2124
+ position = -1;
2125
+ }
2126
+ this.moveByList(position);
2127
+ }
2100
2128
  };
2101
2129
  MultiSelect.prototype.getElementByValue = function (value) {
2102
2130
  var item;
@@ -2287,7 +2315,7 @@ var MultiSelect = /** @class */ (function (_super) {
2287
2315
  }
2288
2316
  _this.setProperties({ value: [].concat([], removeVal) }, true);
2289
2317
  if (_this.enableVirtualization) {
2290
- var currentText = index == 0 ? _this.text.replace(_this.text.split(_this.delimiterChar)[index] + _this.delimiterChar, '') : _this.text.replace(_this.delimiterChar + _this.text.split(_this.delimiterChar)[index], '');
2318
+ var currentText = index == 0 && _this.text.split(_this.delimiterChar) && _this.text.split(_this.delimiterChar).length == 1 ? _this.text.replace(_this.text.split(_this.delimiterChar)[index], '') : index == 0 ? _this.text.replace(_this.text.split(_this.delimiterChar)[index] + _this.delimiterChar, '') : _this.text.replace(_this.delimiterChar + _this.text.split(_this.delimiterChar)[index], '');
2291
2319
  _this.setProperties({ text: currentText.toString() }, true);
2292
2320
  }
2293
2321
  if (element_1 !== null) {
@@ -3679,7 +3707,7 @@ var MultiSelect = /** @class */ (function (_super) {
3679
3707
  }
3680
3708
  };
3681
3709
  MultiSelect.prototype.addListFocus = function (element) {
3682
- if (this.enabled && this.isValidLI(element)) {
3710
+ if (this.enabled && (this.isValidLI(element) || (this.fields.disabled && this.isDisabledElement(element)))) {
3683
3711
  this.removeFocus();
3684
3712
  addClass([element], dropDownBaseClasses.focus);
3685
3713
  this.updateAriaActiveDescendant();
@@ -4270,14 +4298,14 @@ var MultiSelect = /** @class */ (function (_super) {
4270
4298
  var li;
4271
4299
  if (!isNullOrUndefined(this.list)) {
4272
4300
  li = this.list.querySelectorAll(state ?
4273
- 'li.e-list-item:not([aria-selected="true"]):not(.e-reorder-hide):not(.e-virtual-list)' :
4274
- 'li.e-list-item[aria-selected="true"]:not(.e-reorder-hide):not(.e-virtual-list)');
4301
+ 'li.e-list-item:not([aria-selected="true"]):not(.e-reorder-hide):not(.e-disabled):not(.e-virtual-list)' :
4302
+ 'li.e-list-item[aria-selected="true"]:not(.e-reorder-hide):not(.e-disabled):not(.e-virtual-list)');
4275
4303
  }
4276
4304
  if (this.value && this.value.length && event && event.target
4277
4305
  && closest(event.target, '.e-close-hooker') && this.allowFiltering) {
4278
4306
  li = this.mainList.querySelectorAll(state ?
4279
- 'li.e-list-item:not([aria-selected="true"]):not(.e-reorder-hide):not(.e-virtual-list)' :
4280
- 'li.e-list-item[aria-selected="true"]:not(.e-reorder-hide):not(.e-virtual-list)');
4307
+ 'li.e-list-item:not([aria-selected="true"]):not(.e-reorder-hide):not(.e-disabled):not(.e-virtual-list)' :
4308
+ 'li.e-list-item[aria-selected="true"]:not(.e-reorder-hide):not(.e-disabled):not(.e-virtual-list)');
4281
4309
  }
4282
4310
  if (this.enableGroupCheckBox && this.mode === 'CheckBox' && !isNullOrUndefined(this.fields.groupBy)) {
4283
4311
  var target = (event ? (this.groupTemplate ? closest(event.target, '.e-list-group-item') : event.target) : null);
@@ -4725,9 +4753,16 @@ var MultiSelect = /** @class */ (function (_super) {
4725
4753
  this.updateClearButton(newProp.showClearButton);
4726
4754
  break;
4727
4755
  case 'text':
4756
+ if (this.fields.disabled) {
4757
+ this.text =
4758
+ this.text && !this.isDisabledItemByIndex(this.getIndexByValue(this.getValueByText(this.text))) ? this.text : null;
4759
+ }
4728
4760
  this.updateVal(this.value, this.value, 'text');
4729
4761
  break;
4730
4762
  case 'value':
4763
+ if (this.fields.disabled) {
4764
+ this.removeDisabledItemsValue(this.value);
4765
+ }
4731
4766
  this.updateVal(this.value, oldProp.value, 'value');
4732
4767
  this.addValidInputClass();
4733
4768
  if (!this.closePopupOnSelect && this.isPopupOpen()) {
@@ -5299,8 +5334,33 @@ var MultiSelect = /** @class */ (function (_super) {
5299
5334
  listParent.remove();
5300
5335
  return listItemHeight;
5301
5336
  };
5337
+ /**
5338
+ * Removes disabled values from the given array.
5339
+ *
5340
+ * @param { number[] | string[] | boolean[] | object[] } value - The array to check.
5341
+ * @returns {void}
5342
+ */
5343
+ MultiSelect.prototype.removeDisabledItemsValue = function (value) {
5344
+ if (value) {
5345
+ var data = [];
5346
+ var dataIndex = 0;
5347
+ for (var index = 0; index < value.length; index++) {
5348
+ var indexValue = value[index];
5349
+ if (typeof (indexValue) === 'object') {
5350
+ indexValue = JSON.parse(JSON.stringify(indexValue))[this.fields.value];
5351
+ }
5352
+ if ((indexValue != null) && !(this.isDisabledItemByIndex(this.getIndexByValue(indexValue)))) {
5353
+ data[dataIndex++] = value[index];
5354
+ }
5355
+ }
5356
+ this.value = data.length > 0 ? data : null;
5357
+ }
5358
+ };
5302
5359
  MultiSelect.prototype.checkInitialValue = function () {
5303
5360
  var _this = this;
5361
+ if (this.fields.disabled) {
5362
+ this.removeDisabledItemsValue(this.value);
5363
+ }
5304
5364
  var isData = this.dataSource instanceof Array ? (this.dataSource.length > 0)
5305
5365
  : !isNullOrUndefined(this.dataSource);
5306
5366
  if (!(this.value && this.value.length) &&
@@ -5339,6 +5399,9 @@ var MultiSelect = /** @class */ (function (_super) {
5339
5399
  _super.prototype.render.call(this);
5340
5400
  }
5341
5401
  }
5402
+ if (this.fields.disabled) {
5403
+ this.text = this.text && !this.isDisabledItemByIndex(this.getIndexByValue(this.getValueByText(this.text))) ? this.text : null;
5404
+ }
5342
5405
  if (!isNullOrUndefined(this.text) && (isNullOrUndefined(this.value) || this.value.length === 0)) {
5343
5406
  this.initialTextUpdate();
5344
5407
  }
@@ -5473,6 +5536,66 @@ var MultiSelect = /** @class */ (function (_super) {
5473
5536
  this.refreshInputHight();
5474
5537
  this.checkPlaceholderSize();
5475
5538
  };
5539
+ /**
5540
+ * Method to disable specific item in the popup.
5541
+ *
5542
+ * @param {string | number | object | HTMLLIElement} item - Specifies the item to be disabled.
5543
+ * @returns {void}
5544
+
5545
+ */
5546
+ MultiSelect.prototype.disableItem = function (item) {
5547
+ if (this.fields.disabled) {
5548
+ if (!this.list) {
5549
+ this.renderList();
5550
+ }
5551
+ var itemIndex = -1;
5552
+ if (this.liCollections && this.liCollections.length > 0 && this.listData && this.fields.disabled) {
5553
+ if (typeof (item) === 'string') {
5554
+ itemIndex = this.getIndexByValue(item);
5555
+ }
5556
+ else if (typeof item === 'object') {
5557
+ if (item instanceof HTMLLIElement) {
5558
+ for (var index = 0; index < this.liCollections.length; index++) {
5559
+ if (this.liCollections[index] === item) {
5560
+ itemIndex = this.getIndexByValue(item.getAttribute('data-value'));
5561
+ break;
5562
+ }
5563
+ }
5564
+ }
5565
+ else {
5566
+ var value = JSON.parse(JSON.stringify(item))[this.fields.value];
5567
+ for (var index = 0; index < this.listData.length; index++) {
5568
+ if (JSON.parse(JSON.stringify(this.listData[index]))[this.fields.value] === value) {
5569
+ itemIndex = this.getIndexByValue(value);
5570
+ break;
5571
+ }
5572
+ }
5573
+ }
5574
+ }
5575
+ else {
5576
+ itemIndex = item;
5577
+ }
5578
+ var isValidIndex = itemIndex < this.liCollections.length && itemIndex > -1;
5579
+ if (isValidIndex && !(JSON.parse(JSON.stringify(this.listData[itemIndex]))[this.fields.disabled])) {
5580
+ var li = this.liCollections[itemIndex];
5581
+ if (li) {
5582
+ this.disableListItem(li);
5583
+ var parsedData = JSON.parse(JSON.stringify(this.listData[itemIndex]));
5584
+ parsedData[this.fields.disabled] = true;
5585
+ this.listData[itemIndex] = parsedData;
5586
+ if (li.classList.contains(dropDownBaseClasses.focus)) {
5587
+ this.removeFocus();
5588
+ }
5589
+ if (li.classList.contains(HIDE_LIST) || li.classList.contains(dropDownBaseClasses.selected)) {
5590
+ var oldValue = this.value;
5591
+ this.removeDisabledItemsValue(this.value);
5592
+ this.updateVal(this.value, oldValue, 'value');
5593
+ }
5594
+ }
5595
+ }
5596
+ }
5597
+ }
5598
+ };
5476
5599
  /**
5477
5600
  * Removes the component from the DOM and detaches all its related event handlers. Also it removes the attributes and classes.
5478
5601
  *
@@ -5540,7 +5663,7 @@ var MultiSelect = /** @class */ (function (_super) {
5540
5663
  this.selectAllEventEle = null;
5541
5664
  };
5542
5665
  __decorate([
5543
- Complex({ text: null, value: null, iconCss: null, groupBy: null }, FieldSettings)
5666
+ Complex({ text: null, value: null, iconCss: null, groupBy: null, disabled: null }, FieldSettings)
5544
5667
  ], MultiSelect.prototype, "fields", void 0);
5545
5668
  __decorate([
5546
5669
  Property(false)
@@ -0,0 +1,2 @@
1
+ //default
2
+ //enddefault
@@ -0,0 +1,2 @@
1
+ //default
2
+ //enddefault
@@ -1,6 +1,7 @@
1
1
  .e-popup.e-ddl {
2
2
  border-radius: 4px;
3
- box-shadow: 0 6px 12px rgba(0, 0, 0, 0.5);
3
+ -webkit-box-shadow: 0 6px 12px rgba(0, 0, 0, 0.5);
4
+ box-shadow: 0 6px 12px rgba(0, 0, 0, 0.5);
4
5
  margin-top: 3px;
5
6
  }
6
7
  .e-popup.e-ddl .e-input-group {
@@ -15,6 +16,7 @@
15
16
  }
16
17
 
17
18
  .e-popup.e-ddl .e-filter-parent .e-input-group {
19
+ display: -webkit-box;
18
20
  display: -ms-flexbox;
19
21
  display: flex;
20
22
  width: auto;
@@ -73,7 +75,8 @@
73
75
  .e-control.e-dropdownlist .e-input-group:not(.e-disabled) .e-input-group-icon:active,
74
76
  .e-ddl.e-popup .e-input-group:not(.e-disabled) .e-back-icon:active,
75
77
  .e-ddl.e-popup .e-input-group:not(.e-disabled) .e-clear-icon:active {
76
- box-shadow: none;
78
+ -webkit-box-shadow: none;
79
+ box-shadow: none;
77
80
  }
78
81
 
79
82
  .e-ddl.e-popup .e-filter-parent {
@@ -1,6 +1,7 @@
1
1
  .e-popup.e-ddl {
2
2
  border-radius: 4px;
3
- box-shadow: 0 6px 12px rgba(0, 0, 0, 0.175);
3
+ -webkit-box-shadow: 0 6px 12px rgba(0, 0, 0, 0.175);
4
+ box-shadow: 0 6px 12px rgba(0, 0, 0, 0.175);
4
5
  margin-top: 3px;
5
6
  }
6
7
  .e-popup.e-ddl .e-input-group {
@@ -15,6 +16,7 @@
15
16
  }
16
17
 
17
18
  .e-popup.e-ddl .e-filter-parent .e-input-group {
19
+ display: -webkit-box;
18
20
  display: -ms-flexbox;
19
21
  display: flex;
20
22
  width: auto;
@@ -73,7 +75,8 @@
73
75
  .e-control.e-dropdownlist .e-input-group:not(.e-disabled) .e-input-group-icon:active,
74
76
  .e-ddl.e-popup .e-input-group:not(.e-disabled) .e-back-icon:active,
75
77
  .e-ddl.e-popup .e-input-group:not(.e-disabled) .e-clear-icon:active {
76
- box-shadow: none;
78
+ -webkit-box-shadow: none;
79
+ box-shadow: none;
77
80
  }
78
81
 
79
82
  .e-ddl.e-popup .e-filter-parent {
@@ -1,6 +1,7 @@
1
1
  .e-popup.e-ddl {
2
2
  border-radius: 4px;
3
- box-shadow: none;
3
+ -webkit-box-shadow: none;
4
+ box-shadow: none;
4
5
  margin-top: 3px;
5
6
  }
6
7
  .e-popup.e-ddl .e-input-group {
@@ -15,6 +16,7 @@
15
16
  }
16
17
 
17
18
  .e-popup.e-ddl .e-filter-parent .e-input-group {
19
+ display: -webkit-box;
18
20
  display: -ms-flexbox;
19
21
  display: flex;
20
22
  width: auto;
@@ -91,11 +93,13 @@
91
93
  .e-control.e-dropdownlist .e-input-group:not(.e-disabled) .e-input-group-icon:active,
92
94
  .e-ddl.e-popup .e-input-group:not(.e-disabled) .e-back-icon:active,
93
95
  .e-ddl.e-popup .e-input-group:not(.e-disabled) .e-clear-icon:active {
94
- box-shadow: none;
96
+ -webkit-box-shadow: none;
97
+ box-shadow: none;
95
98
  }
96
99
 
97
100
  .e-ddl.e-popup .e-input-group:not(.e-disabled) .e-clear-icon {
98
101
  background: transparent;
102
+ display: -webkit-box;
99
103
  display: -ms-flexbox;
100
104
  display: flex;
101
105
  position: relative;
@@ -1,6 +1,7 @@
1
1
  .e-popup.e-ddl {
2
2
  border-radius: 4px;
3
- box-shadow: none;
3
+ -webkit-box-shadow: none;
4
+ box-shadow: none;
4
5
  margin-top: 3px;
5
6
  }
6
7
  .e-popup.e-ddl .e-input-group {
@@ -15,6 +16,7 @@
15
16
  }
16
17
 
17
18
  .e-popup.e-ddl .e-filter-parent .e-input-group {
19
+ display: -webkit-box;
18
20
  display: -ms-flexbox;
19
21
  display: flex;
20
22
  width: auto;
@@ -102,11 +104,13 @@
102
104
  .e-control.e-dropdownlist .e-input-group:not(.e-disabled) .e-input-group-icon:active,
103
105
  .e-ddl.e-popup .e-input-group:not(.e-disabled) .e-back-icon:active,
104
106
  .e-ddl.e-popup .e-input-group:not(.e-disabled) .e-clear-icon:active {
105
- box-shadow: none;
107
+ -webkit-box-shadow: none;
108
+ box-shadow: none;
106
109
  }
107
110
 
108
111
  .e-ddl.e-popup .e-input-group:not(.e-disabled) .e-clear-icon {
109
112
  background: transparent;
113
+ display: -webkit-box;
110
114
  display: -ms-flexbox;
111
115
  display: flex;
112
116
  position: relative;
@@ -1,6 +1,7 @@
1
1
  .e-popup.e-ddl {
2
2
  border-radius: 4px;
3
- box-shadow: none;
3
+ -webkit-box-shadow: none;
4
+ box-shadow: none;
4
5
  margin-top: 3px;
5
6
  }
6
7
  .e-popup.e-ddl .e-input-group {
@@ -15,6 +16,7 @@
15
16
  }
16
17
 
17
18
  .e-popup.e-ddl .e-filter-parent .e-input-group {
19
+ display: -webkit-box;
18
20
  display: -ms-flexbox;
19
21
  display: flex;
20
22
  width: auto;
@@ -102,11 +104,13 @@
102
104
  .e-control.e-dropdownlist .e-input-group:not(.e-disabled) .e-input-group-icon:active,
103
105
  .e-ddl.e-popup .e-input-group:not(.e-disabled) .e-back-icon:active,
104
106
  .e-ddl.e-popup .e-input-group:not(.e-disabled) .e-clear-icon:active {
105
- box-shadow: none;
107
+ -webkit-box-shadow: none;
108
+ box-shadow: none;
106
109
  }
107
110
 
108
111
  .e-ddl.e-popup .e-input-group:not(.e-disabled) .e-clear-icon {
109
112
  background: transparent;
113
+ display: -webkit-box;
110
114
  display: -ms-flexbox;
111
115
  display: flex;
112
116
  position: relative;
@@ -1,6 +1,7 @@
1
1
  .e-ddl.e-popup {
2
2
  border: 0;
3
- box-shadow: 0 0 5px 0 rgba(0, 0, 0, 0.26);
3
+ -webkit-box-shadow: 0 0 5px 0 rgba(0, 0, 0, 0.26);
4
+ box-shadow: 0 0 5px 0 rgba(0, 0, 0, 0.26);
4
5
  margin-top: 1px;
5
6
  }
6
7
  .e-ddl.e-popup .e-input-group input {
@@ -8,6 +9,7 @@
8
9
  }
9
10
 
10
11
  .e-ddl.e-popup .e-input-group {
12
+ display: -webkit-box;
11
13
  display: -ms-flexbox;
12
14
  display: flex;
13
15
  width: auto;
@@ -1,6 +1,7 @@
1
1
  .e-ddl.e-popup {
2
2
  border: 0;
3
- box-shadow: 0 0 5px 0 rgba(0, 0, 0, 0.4);
3
+ -webkit-box-shadow: 0 0 5px 0 rgba(0, 0, 0, 0.4);
4
+ box-shadow: 0 0 5px 0 rgba(0, 0, 0, 0.4);
4
5
  margin-top: 1px;
5
6
  }
6
7
  .e-ddl.e-popup .e-input-group input {
@@ -8,6 +9,7 @@
8
9
  }
9
10
 
10
11
  .e-ddl.e-popup .e-input-group {
12
+ display: -webkit-box;
11
13
  display: -ms-flexbox;
12
14
  display: flex;
13
15
  width: auto;
@@ -1,6 +1,7 @@
1
1
  .e-popup.e-ddl {
2
2
  border-radius: 4px;
3
- box-shadow: none;
3
+ -webkit-box-shadow: none;
4
+ box-shadow: none;
4
5
  margin-top: 1px;
5
6
  }
6
7
  .e-popup.e-ddl .e-input-group {
@@ -15,6 +16,7 @@
15
16
  }
16
17
 
17
18
  .e-popup.e-ddl .e-filter-parent .e-input-group {
19
+ display: -webkit-box;
18
20
  display: -ms-flexbox;
19
21
  display: flex;
20
22
  width: auto;
@@ -86,11 +88,13 @@
86
88
  .e-control.e-dropdownlist .e-input-group:not(.e-disabled) .e-input-group-icon:active,
87
89
  .e-ddl.e-popup .e-input-group:not(.e-disabled) .e-back-icon:active,
88
90
  .e-ddl.e-popup .e-input-group:not(.e-disabled) .e-clear-icon:active {
89
- box-shadow: none;
91
+ -webkit-box-shadow: none;
92
+ box-shadow: none;
90
93
  }
91
94
 
92
95
  .e-ddl.e-popup .e-input-group:not(.e-disabled) .e-clear-icon {
93
96
  background: none;
97
+ display: -webkit-box;
94
98
  display: -ms-flexbox;
95
99
  display: flex;
96
100
  position: relative;
@@ -1,6 +1,7 @@
1
1
  .e-popup.e-ddl {
2
2
  border-radius: 4px;
3
- box-shadow: none;
3
+ -webkit-box-shadow: none;
4
+ box-shadow: none;
4
5
  margin-top: 1px;
5
6
  }
6
7
  .e-popup.e-ddl .e-input-group {
@@ -15,6 +16,7 @@
15
16
  }
16
17
 
17
18
  .e-popup.e-ddl .e-filter-parent .e-input-group {
19
+ display: -webkit-box;
18
20
  display: -ms-flexbox;
19
21
  display: flex;
20
22
  width: auto;
@@ -86,11 +88,13 @@
86
88
  .e-control.e-dropdownlist .e-input-group:not(.e-disabled) .e-input-group-icon:active,
87
89
  .e-ddl.e-popup .e-input-group:not(.e-disabled) .e-back-icon:active,
88
90
  .e-ddl.e-popup .e-input-group:not(.e-disabled) .e-clear-icon:active {
89
- box-shadow: none;
91
+ -webkit-box-shadow: none;
92
+ box-shadow: none;
90
93
  }
91
94
 
92
95
  .e-ddl.e-popup .e-input-group:not(.e-disabled) .e-clear-icon {
93
96
  background: none;
97
+ display: -webkit-box;
94
98
  display: -ms-flexbox;
95
99
  display: flex;
96
100
  position: relative;