@oiz/stzh-components 2.6.0 → 2.7.0-alpha

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 (170) hide show
  1. package/dist/cjs/{app-globals-4dcdf160.js → app-globals-5dfa53d1.js} +2 -2
  2. package/dist/cjs/{app-globals-4dcdf160.js.map → app-globals-5dfa53d1.js.map} +1 -1
  3. package/dist/cjs/index.cjs.js.map +1 -1
  4. package/dist/cjs/loader.cjs.js +2 -2
  5. package/dist/cjs/stzh-amount.cjs.entry.js +30 -79
  6. package/dist/cjs/stzh-amount.cjs.entry.js.map +1 -1
  7. package/dist/cjs/stzh-components.cjs.js +2 -2
  8. package/dist/cjs/stzh-datepicker_3.cjs.entry.js.map +1 -1
  9. package/dist/cjs/stzh-dropdown.cjs.entry.js +60 -25
  10. package/dist/cjs/stzh-dropdown.cjs.entry.js.map +1 -1
  11. package/dist/cjs/stzh-monthyearpicker.cjs.entry.js +191 -0
  12. package/dist/cjs/stzh-monthyearpicker.cjs.entry.js.map +1 -0
  13. package/dist/cjs/stzh-skin-portal-mitwirken.cjs.entry.js +1 -1
  14. package/dist/cjs/stzh-skin-portal-mitwirken.cjs.entry.js.map +1 -1
  15. package/dist/cjs/stzh-timepicker.cjs.entry.js +82 -0
  16. package/dist/cjs/stzh-timepicker.cjs.entry.js.map +1 -0
  17. package/dist/cjs/translation-utils-73073e44.js.map +1 -1
  18. package/dist/collection/assets/i18n/de.json +10 -7
  19. package/dist/collection/assets/i18n/en.json +8 -5
  20. package/dist/collection/collection-manifest.json +2 -0
  21. package/dist/collection/components/stzh-amount/stzh-amount.js +32 -85
  22. package/dist/collection/components/stzh-amount/stzh-amount.js.map +1 -1
  23. package/dist/collection/components/stzh-amount/stzh-amount.localization.js.map +1 -1
  24. package/dist/collection/components/stzh-amount/stzh-amount.stories.js +1 -1
  25. package/dist/collection/components/stzh-datepicker/stzh-datepicker.js +1 -1
  26. package/dist/collection/components/stzh-datepicker/stzh-datepicker.js.map +1 -1
  27. package/dist/collection/components/stzh-datepicker/stzh-datepicker.stories.js +3 -0
  28. package/dist/collection/components/stzh-dropdown/stzh-dropdown.css +32 -20
  29. package/dist/collection/components/stzh-dropdown/stzh-dropdown.js +40 -9
  30. package/dist/collection/components/stzh-dropdown/stzh-dropdown.js.map +1 -1
  31. package/dist/collection/components/stzh-monthyearpicker/stzh-monthyearpicker.css +123 -0
  32. package/dist/collection/components/stzh-monthyearpicker/stzh-monthyearpicker.js +724 -0
  33. package/dist/collection/components/stzh-monthyearpicker/stzh-monthyearpicker.js.map +1 -0
  34. package/dist/collection/components/stzh-monthyearpicker/stzh-monthyearpicker.localization.js +2 -0
  35. package/dist/collection/components/stzh-monthyearpicker/stzh-monthyearpicker.localization.js.map +1 -0
  36. package/dist/collection/components/stzh-monthyearpicker/stzh-monthyearpicker.stories.js +61 -0
  37. package/dist/collection/components/stzh-skin-portal-mitwirken/stzh-skin-portal-mitwirken.css +1 -1
  38. package/dist/collection/components/stzh-timepicker/stzh-timepicker.css +109 -0
  39. package/dist/collection/components/stzh-timepicker/stzh-timepicker.js +438 -0
  40. package/dist/collection/components/stzh-timepicker/stzh-timepicker.js.map +1 -0
  41. package/dist/collection/components/stzh-timepicker/stzh-timepicker.localization.js +2 -0
  42. package/dist/collection/components/stzh-timepicker/stzh-timepicker.localization.js.map +1 -0
  43. package/dist/collection/components/stzh-timepicker/stzh-timepicker.stories.js +45 -0
  44. package/dist/collection/index.js.map +1 -1
  45. package/dist/collection/libraries/tom-select/cjs/tom-select.complete.js +47 -18
  46. package/dist/collection/libraries/tom-select/cjs/tom-select.js +47 -18
  47. package/dist/collection/libraries/tom-select/cjs/tom-select.popular.js +47 -18
  48. package/dist/collection/libraries/tom-select/esm/tom-select.complete.js +47 -18
  49. package/dist/collection/libraries/tom-select/esm/tom-select.js +47 -18
  50. package/dist/collection/libraries/tom-select/esm/tom-select.popular.js +47 -18
  51. package/dist/collection/libraries/tom-select/js/tom-select.base.js +47 -18
  52. package/dist/collection/libraries/tom-select/js/tom-select.base.min.js +16 -17
  53. package/dist/collection/libraries/tom-select/js/tom-select.complete.js +47 -18
  54. package/dist/collection/libraries/tom-select/js/tom-select.complete.min.js +12 -13
  55. package/dist/collection/libraries/tom-select/js/tom-select.popular.js +47 -18
  56. package/dist/collection/libraries/tom-select/js/tom-select.popular.min.js +21 -22
  57. package/dist/collection/utils/translation-utils.js.map +1 -1
  58. package/dist/components/index.js +1 -1
  59. package/dist/components/index2.js.map +1 -1
  60. package/dist/components/stzh-amount.js +40 -83
  61. package/dist/components/stzh-amount.js.map +1 -1
  62. package/dist/components/stzh-buttongroup.js +1 -31
  63. package/dist/components/stzh-buttongroup.js.map +1 -1
  64. package/dist/components/stzh-buttongroup2.js +35 -0
  65. package/dist/components/stzh-buttongroup2.js.map +1 -0
  66. package/dist/components/stzh-datepicker2.js.map +1 -1
  67. package/dist/components/stzh-dropdown2.js +61 -25
  68. package/dist/components/stzh-dropdown2.js.map +1 -1
  69. package/dist/components/stzh-monthyearpicker.d.ts +11 -0
  70. package/dist/components/stzh-monthyearpicker.js +251 -0
  71. package/dist/components/stzh-monthyearpicker.js.map +1 -0
  72. package/dist/components/stzh-skin-portal-mitwirken.js +1 -1
  73. package/dist/components/stzh-skin-portal-mitwirken.js.map +1 -1
  74. package/dist/components/stzh-timepicker.d.ts +11 -0
  75. package/dist/components/stzh-timepicker.js +132 -0
  76. package/dist/components/stzh-timepicker.js.map +1 -0
  77. package/dist/components/translation-utils.js.map +1 -1
  78. package/dist/esm/{app-globals-91875913.js → app-globals-862dc6d0.js} +2 -2
  79. package/dist/esm/{app-globals-91875913.js.map → app-globals-862dc6d0.js.map} +1 -1
  80. package/dist/esm/index.js.map +1 -1
  81. package/dist/esm/loader.js +2 -2
  82. package/dist/esm/stzh-amount.entry.js +30 -79
  83. package/dist/esm/stzh-amount.entry.js.map +1 -1
  84. package/dist/esm/stzh-components.js +2 -2
  85. package/dist/esm/stzh-datepicker_3.entry.js.map +1 -1
  86. package/dist/esm/stzh-dropdown.entry.js +60 -25
  87. package/dist/esm/stzh-dropdown.entry.js.map +1 -1
  88. package/dist/esm/stzh-monthyearpicker.entry.js +187 -0
  89. package/dist/esm/stzh-monthyearpicker.entry.js.map +1 -0
  90. package/dist/esm/stzh-skin-portal-mitwirken.entry.js +1 -1
  91. package/dist/esm/stzh-skin-portal-mitwirken.entry.js.map +1 -1
  92. package/dist/esm/stzh-timepicker.entry.js +78 -0
  93. package/dist/esm/stzh-timepicker.entry.js.map +1 -0
  94. package/dist/esm/translation-utils-2623783f.js.map +1 -1
  95. package/dist/esm-es5/{app-globals-91875913.js → app-globals-862dc6d0.js} +2 -2
  96. package/dist/esm-es5/{app-globals-91875913.js.map → app-globals-862dc6d0.js.map} +1 -1
  97. package/dist/esm-es5/index.js.map +1 -1
  98. package/dist/esm-es5/loader.js +1 -1
  99. package/dist/esm-es5/loader.js.map +1 -1
  100. package/dist/esm-es5/stzh-amount.entry.js +1 -1
  101. package/dist/esm-es5/stzh-amount.entry.js.map +1 -1
  102. package/dist/esm-es5/stzh-components.js +1 -1
  103. package/dist/esm-es5/stzh-components.js.map +1 -1
  104. package/dist/esm-es5/stzh-datepicker_3.entry.js.map +1 -1
  105. package/dist/esm-es5/stzh-dropdown.entry.js +2 -2
  106. package/dist/esm-es5/stzh-dropdown.entry.js.map +1 -1
  107. package/dist/esm-es5/stzh-monthyearpicker.entry.js +2 -0
  108. package/dist/esm-es5/stzh-monthyearpicker.entry.js.map +1 -0
  109. package/dist/esm-es5/stzh-skin-portal-mitwirken.entry.js +1 -1
  110. package/dist/esm-es5/stzh-skin-portal-mitwirken.entry.js.map +1 -1
  111. package/dist/esm-es5/stzh-timepicker.entry.js +2 -0
  112. package/dist/esm-es5/stzh-timepicker.entry.js.map +1 -0
  113. package/dist/esm-es5/translation-utils-2623783f.js.map +1 -1
  114. package/dist/stzh-components/assets/i18n/de.json +10 -7
  115. package/dist/stzh-components/assets/i18n/en.json +8 -5
  116. package/dist/stzh-components/index.esm.js.map +1 -1
  117. package/dist/stzh-components/p-14e782cb.entry.js +2 -0
  118. package/dist/stzh-components/{p-85504842.entry.js.map → p-14e782cb.entry.js.map} +1 -1
  119. package/dist/stzh-components/p-1678e09c.system.js +2 -0
  120. package/dist/stzh-components/{p-3e10addb.system.js.map → p-1678e09c.system.js.map} +1 -1
  121. package/dist/stzh-components/p-25a09313.js.map +1 -1
  122. package/dist/stzh-components/{p-61b66e55.system.js → p-3b4833a0.system.js} +2 -2
  123. package/dist/stzh-components/{p-61b66e55.system.js.map → p-3b4833a0.system.js.map} +1 -1
  124. package/dist/stzh-components/p-51f1714c.system.entry.js +2 -0
  125. package/dist/stzh-components/p-51f1714c.system.entry.js.map +1 -0
  126. package/dist/stzh-components/p-5aa96b49.system.entry.js +2 -0
  127. package/dist/stzh-components/p-5aa96b49.system.entry.js.map +1 -0
  128. package/dist/stzh-components/p-82e886d4.entry.js.map +1 -1
  129. package/dist/stzh-components/p-9f31cf7d.entry.js +2 -0
  130. package/dist/stzh-components/p-9f31cf7d.entry.js.map +1 -0
  131. package/dist/stzh-components/p-9fe69be8.system.entry.js +2 -0
  132. package/dist/stzh-components/{p-479a02fb.system.entry.js.map → p-9fe69be8.system.entry.js.map} +1 -1
  133. package/dist/stzh-components/p-a408bfba.system.js.map +1 -1
  134. package/dist/stzh-components/p-ad33db31.entry.js +2 -0
  135. package/dist/stzh-components/p-ad33db31.entry.js.map +1 -0
  136. package/dist/stzh-components/p-b5cda655.entry.js +2 -0
  137. package/dist/stzh-components/p-b5cda655.entry.js.map +1 -0
  138. package/dist/stzh-components/{p-362af013.js → p-bc82ed48.js} +2 -2
  139. package/dist/stzh-components/{p-362af013.js.map → p-bc82ed48.js.map} +1 -1
  140. package/dist/stzh-components/p-c0f971f2.entry.js +9 -0
  141. package/dist/stzh-components/p-c0f971f2.entry.js.map +1 -0
  142. package/dist/stzh-components/p-c901fe72.system.entry.js +9 -0
  143. package/dist/stzh-components/p-c901fe72.system.entry.js.map +1 -0
  144. package/dist/stzh-components/p-e8545386.system.entry.js +2 -0
  145. package/dist/stzh-components/p-e8545386.system.entry.js.map +1 -0
  146. package/dist/stzh-components/p-eaa65f52.system.js.map +1 -1
  147. package/dist/stzh-components/p-f2d74491.system.entry.js.map +1 -1
  148. package/dist/stzh-components/stzh-components.css +1 -1
  149. package/dist/stzh-components/stzh-components.esm.js +1 -1
  150. package/dist/stzh-components/stzh-components.esm.js.map +1 -1
  151. package/dist/stzh-components/stzh-components.js +1 -1
  152. package/dist/types/components/stzh-amount/stzh-amount.localization.d.ts +0 -2
  153. package/dist/types/components/stzh-monthyearpicker/stzh-monthyearpicker.localization.d.ts +5 -0
  154. package/dist/types/components/stzh-timepicker/stzh-timepicker.localization.d.ts +2 -0
  155. package/dist/types/components.d.ts +428 -6
  156. package/dist/types/index.d.ts +14 -0
  157. package/dist/types/utils/translation-utils.d.ts +1 -0
  158. package/dist/vscode-data.json +263 -1
  159. package/package.json +1 -1
  160. package/dist/stzh-components/p-1cc48f98.entry.js +0 -9
  161. package/dist/stzh-components/p-1cc48f98.entry.js.map +0 -1
  162. package/dist/stzh-components/p-3e10addb.system.js +0 -2
  163. package/dist/stzh-components/p-479a02fb.system.entry.js +0 -2
  164. package/dist/stzh-components/p-67b11b03.system.entry.js +0 -2
  165. package/dist/stzh-components/p-67b11b03.system.entry.js.map +0 -1
  166. package/dist/stzh-components/p-6bb83b30.system.entry.js +0 -9
  167. package/dist/stzh-components/p-6bb83b30.system.entry.js.map +0 -1
  168. package/dist/stzh-components/p-85504842.entry.js +0 -2
  169. package/dist/stzh-components/p-c94f7331.entry.js +0 -2
  170. package/dist/stzh-components/p-c94f7331.entry.js.map +0 -1
@@ -2126,17 +2126,24 @@ class TomSelect extends MicroPlugin(MicroEvent) {
2126
2126
  const query = "label[for='" + escapeQuery(self.inputId) + "']";
2127
2127
  const label = document.querySelector(query);
2128
2128
  const label_click = self.focus.bind(self);
2129
+ const labelled_by = input.getAttribute('aria-labelledby');
2129
2130
  if (label) {
2130
2131
  addEvent(label, 'click', label_click);
2131
2132
  setAttr(label, {
2132
2133
  for: control_id
2133
2134
  });
2134
- const label_id = getId(label, self.inputId + '-ts-label');
2135
+
2136
+ // const label_id = getId(label,self.inputId+'-ts-label');
2137
+ // setAttr(focus_node,{'aria-labelledby':label_id});
2138
+ // setAttr(dropdown_content,{'aria-labelledby':label_id});
2139
+ }
2140
+
2141
+ if (labelled_by) {
2135
2142
  setAttr(focus_node, {
2136
- 'aria-labelledby': label_id
2143
+ 'aria-labelledby': labelled_by
2137
2144
  });
2138
2145
  setAttr(dropdown_content, {
2139
- 'aria-labelledby': label_id
2146
+ 'aria-labelledby': labelled_by
2140
2147
  });
2141
2148
  }
2142
2149
  wrapper.style.width = input.style.width;
@@ -2144,10 +2151,15 @@ class TomSelect extends MicroPlugin(MicroEvent) {
2144
2151
  const classes_plugins = 'plugin-' + self.plugins.names.join(' plugin-');
2145
2152
  addClasses([wrapper, dropdown], classes_plugins);
2146
2153
  }
2147
- if ((settings.maxItems === null || settings.maxItems > 1) && self.is_select_tag) {
2148
- setAttr(input, {
2149
- multiple: 'multiple'
2154
+ if (settings.mode === 'multi') {
2155
+ setAttr(dropdown_content, {
2156
+ 'aria-multiselectable': 'true'
2150
2157
  });
2158
+ if (self.is_select_tag) {
2159
+ setAttr(input, {
2160
+ multiple: 'multiple'
2161
+ });
2162
+ }
2151
2163
  }
2152
2164
  if (settings.placeholder) {
2153
2165
  setAttr(control_input, {
@@ -2803,7 +2815,7 @@ class TomSelect extends MicroPlugin(MicroEvent) {
2803
2815
  *
2804
2816
  */
2805
2817
  getValue() {
2806
- if (this.is_select_tag && this.input.hasAttribute('multiple')) {
2818
+ if (this.settings.mode === 'multi' && this.is_select_tag) {
2807
2819
  return this.items;
2808
2820
  }
2809
2821
  return this.items.join(this.settings.delimiter);
@@ -2936,9 +2948,11 @@ class TomSelect extends MicroPlugin(MicroEvent) {
2936
2948
  setAttr(this.focus_node, {
2937
2949
  'aria-activedescendant': option.getAttribute('id')
2938
2950
  });
2939
- setAttr(option, {
2940
- 'aria-selected': 'true'
2941
- });
2951
+ if (this.settings.mode === 'single' || this.settings.hideSelected) {
2952
+ setAttr(option, {
2953
+ 'aria-selected': 'true'
2954
+ });
2955
+ }
2942
2956
  addClasses(option, 'active');
2943
2957
  if (scroll) this.scrollToOption(option);
2944
2958
  }
@@ -2981,9 +2995,11 @@ class TomSelect extends MicroPlugin(MicroEvent) {
2981
2995
  clearActiveOption() {
2982
2996
  if (this.activeOption) {
2983
2997
  removeClasses(this.activeOption, 'active');
2984
- setAttr(this.activeOption, {
2985
- 'aria-selected': null
2986
- });
2998
+ if (this.settings.mode === 'single' || this.settings.hideSelected) {
2999
+ setAttr(this.activeOption, {
3000
+ 'aria-selected': null
3001
+ });
3002
+ }
2987
3003
  }
2988
3004
  this.activeOption = null;
2989
3005
  setAttr(this.focus_node, {
@@ -3198,10 +3214,16 @@ class TomSelect extends MicroPlugin(MicroEvent) {
3198
3214
  if (option === undefined) continue;
3199
3215
  let opt_hash = get_hash(opt_value);
3200
3216
  let option_el = self.getOption(opt_hash, true);
3217
+ const option_selected = self.items.includes(opt_hash);
3201
3218
 
3202
3219
  // toggle 'selected' class
3203
3220
  if (!self.settings.hideSelected) {
3204
- option_el.classList.toggle('selected', self.items.includes(opt_hash));
3221
+ option_el.classList.toggle('selected', option_selected);
3222
+ if (this.settings.mode === 'multi') {
3223
+ setAttr(option_el, {
3224
+ 'aria-selected': option_selected ? 'true' : 'false'
3225
+ });
3226
+ }
3205
3227
  }
3206
3228
  optgroup = option[self.settings.optgroupField] || '';
3207
3229
  optgroups = Array.isArray(optgroup) ? optgroup : [optgroup];
@@ -3219,10 +3241,17 @@ class TomSelect extends MicroPlugin(MicroEvent) {
3219
3241
  // nodes can only have one parent, so if the option is in mutple groups, we need a clone
3220
3242
  if (j > 0) {
3221
3243
  option_el = option_el.cloneNode(true);
3222
- setAttr(option_el, {
3223
- id: option.$id + '-clone-' + j,
3224
- 'aria-selected': null
3225
- });
3244
+ if (this.settings.mode === 'multi' && !self.settings.hideSelected) {
3245
+ setAttr(option_el, {
3246
+ id: option.$id + '-clone-' + j,
3247
+ 'aria-selected': option_selected ? 'true' : 'false'
3248
+ });
3249
+ } else {
3250
+ setAttr(option_el, {
3251
+ id: option.$id + '-clone-' + j,
3252
+ 'aria-selected': null
3253
+ });
3254
+ }
3226
3255
  option_el.classList.add('ts-cloned');
3227
3256
  removeClasses(option_el, 'active');
3228
3257
 
@@ -2126,17 +2126,24 @@ class TomSelect extends MicroPlugin(MicroEvent) {
2126
2126
  const query = "label[for='" + escapeQuery(self.inputId) + "']";
2127
2127
  const label = document.querySelector(query);
2128
2128
  const label_click = self.focus.bind(self);
2129
+ const labelled_by = input.getAttribute('aria-labelledby');
2129
2130
  if (label) {
2130
2131
  addEvent(label, 'click', label_click);
2131
2132
  setAttr(label, {
2132
2133
  for: control_id
2133
2134
  });
2134
- const label_id = getId(label, self.inputId + '-ts-label');
2135
+
2136
+ // const label_id = getId(label,self.inputId+'-ts-label');
2137
+ // setAttr(focus_node,{'aria-labelledby':label_id});
2138
+ // setAttr(dropdown_content,{'aria-labelledby':label_id});
2139
+ }
2140
+
2141
+ if (labelled_by) {
2135
2142
  setAttr(focus_node, {
2136
- 'aria-labelledby': label_id
2143
+ 'aria-labelledby': labelled_by
2137
2144
  });
2138
2145
  setAttr(dropdown_content, {
2139
- 'aria-labelledby': label_id
2146
+ 'aria-labelledby': labelled_by
2140
2147
  });
2141
2148
  }
2142
2149
  wrapper.style.width = input.style.width;
@@ -2144,10 +2151,15 @@ class TomSelect extends MicroPlugin(MicroEvent) {
2144
2151
  const classes_plugins = 'plugin-' + self.plugins.names.join(' plugin-');
2145
2152
  addClasses([wrapper, dropdown], classes_plugins);
2146
2153
  }
2147
- if ((settings.maxItems === null || settings.maxItems > 1) && self.is_select_tag) {
2148
- setAttr(input, {
2149
- multiple: 'multiple'
2154
+ if (settings.mode === 'multi') {
2155
+ setAttr(dropdown_content, {
2156
+ 'aria-multiselectable': 'true'
2150
2157
  });
2158
+ if (self.is_select_tag) {
2159
+ setAttr(input, {
2160
+ multiple: 'multiple'
2161
+ });
2162
+ }
2151
2163
  }
2152
2164
  if (settings.placeholder) {
2153
2165
  setAttr(control_input, {
@@ -2803,7 +2815,7 @@ class TomSelect extends MicroPlugin(MicroEvent) {
2803
2815
  *
2804
2816
  */
2805
2817
  getValue() {
2806
- if (this.is_select_tag && this.input.hasAttribute('multiple')) {
2818
+ if (this.settings.mode === 'multi' && this.is_select_tag) {
2807
2819
  return this.items;
2808
2820
  }
2809
2821
  return this.items.join(this.settings.delimiter);
@@ -2936,9 +2948,11 @@ class TomSelect extends MicroPlugin(MicroEvent) {
2936
2948
  setAttr(this.focus_node, {
2937
2949
  'aria-activedescendant': option.getAttribute('id')
2938
2950
  });
2939
- setAttr(option, {
2940
- 'aria-selected': 'true'
2941
- });
2951
+ if (this.settings.mode === 'single' || this.settings.hideSelected) {
2952
+ setAttr(option, {
2953
+ 'aria-selected': 'true'
2954
+ });
2955
+ }
2942
2956
  addClasses(option, 'active');
2943
2957
  if (scroll) this.scrollToOption(option);
2944
2958
  }
@@ -2981,9 +2995,11 @@ class TomSelect extends MicroPlugin(MicroEvent) {
2981
2995
  clearActiveOption() {
2982
2996
  if (this.activeOption) {
2983
2997
  removeClasses(this.activeOption, 'active');
2984
- setAttr(this.activeOption, {
2985
- 'aria-selected': null
2986
- });
2998
+ if (this.settings.mode === 'single' || this.settings.hideSelected) {
2999
+ setAttr(this.activeOption, {
3000
+ 'aria-selected': null
3001
+ });
3002
+ }
2987
3003
  }
2988
3004
  this.activeOption = null;
2989
3005
  setAttr(this.focus_node, {
@@ -3198,10 +3214,16 @@ class TomSelect extends MicroPlugin(MicroEvent) {
3198
3214
  if (option === undefined) continue;
3199
3215
  let opt_hash = get_hash(opt_value);
3200
3216
  let option_el = self.getOption(opt_hash, true);
3217
+ const option_selected = self.items.includes(opt_hash);
3201
3218
 
3202
3219
  // toggle 'selected' class
3203
3220
  if (!self.settings.hideSelected) {
3204
- option_el.classList.toggle('selected', self.items.includes(opt_hash));
3221
+ option_el.classList.toggle('selected', option_selected);
3222
+ if (this.settings.mode === 'multi') {
3223
+ setAttr(option_el, {
3224
+ 'aria-selected': option_selected ? 'true' : 'false'
3225
+ });
3226
+ }
3205
3227
  }
3206
3228
  optgroup = option[self.settings.optgroupField] || '';
3207
3229
  optgroups = Array.isArray(optgroup) ? optgroup : [optgroup];
@@ -3219,10 +3241,17 @@ class TomSelect extends MicroPlugin(MicroEvent) {
3219
3241
  // nodes can only have one parent, so if the option is in mutple groups, we need a clone
3220
3242
  if (j > 0) {
3221
3243
  option_el = option_el.cloneNode(true);
3222
- setAttr(option_el, {
3223
- id: option.$id + '-clone-' + j,
3224
- 'aria-selected': null
3225
- });
3244
+ if (this.settings.mode === 'multi' && !self.settings.hideSelected) {
3245
+ setAttr(option_el, {
3246
+ id: option.$id + '-clone-' + j,
3247
+ 'aria-selected': option_selected ? 'true' : 'false'
3248
+ });
3249
+ } else {
3250
+ setAttr(option_el, {
3251
+ id: option.$id + '-clone-' + j,
3252
+ 'aria-selected': null
3253
+ });
3254
+ }
3226
3255
  option_el.classList.add('ts-cloned');
3227
3256
  removeClasses(option_el, 'active');
3228
3257
 
@@ -2126,17 +2126,24 @@ class TomSelect extends MicroPlugin(MicroEvent) {
2126
2126
  const query = "label[for='" + escapeQuery(self.inputId) + "']";
2127
2127
  const label = document.querySelector(query);
2128
2128
  const label_click = self.focus.bind(self);
2129
+ const labelled_by = input.getAttribute('aria-labelledby');
2129
2130
  if (label) {
2130
2131
  addEvent(label, 'click', label_click);
2131
2132
  setAttr(label, {
2132
2133
  for: control_id
2133
2134
  });
2134
- const label_id = getId(label, self.inputId + '-ts-label');
2135
+
2136
+ // const label_id = getId(label,self.inputId+'-ts-label');
2137
+ // setAttr(focus_node,{'aria-labelledby':label_id});
2138
+ // setAttr(dropdown_content,{'aria-labelledby':label_id});
2139
+ }
2140
+
2141
+ if (labelled_by) {
2135
2142
  setAttr(focus_node, {
2136
- 'aria-labelledby': label_id
2143
+ 'aria-labelledby': labelled_by
2137
2144
  });
2138
2145
  setAttr(dropdown_content, {
2139
- 'aria-labelledby': label_id
2146
+ 'aria-labelledby': labelled_by
2140
2147
  });
2141
2148
  }
2142
2149
  wrapper.style.width = input.style.width;
@@ -2144,10 +2151,15 @@ class TomSelect extends MicroPlugin(MicroEvent) {
2144
2151
  const classes_plugins = 'plugin-' + self.plugins.names.join(' plugin-');
2145
2152
  addClasses([wrapper, dropdown], classes_plugins);
2146
2153
  }
2147
- if ((settings.maxItems === null || settings.maxItems > 1) && self.is_select_tag) {
2148
- setAttr(input, {
2149
- multiple: 'multiple'
2154
+ if (settings.mode === 'multi') {
2155
+ setAttr(dropdown_content, {
2156
+ 'aria-multiselectable': 'true'
2150
2157
  });
2158
+ if (self.is_select_tag) {
2159
+ setAttr(input, {
2160
+ multiple: 'multiple'
2161
+ });
2162
+ }
2151
2163
  }
2152
2164
  if (settings.placeholder) {
2153
2165
  setAttr(control_input, {
@@ -2803,7 +2815,7 @@ class TomSelect extends MicroPlugin(MicroEvent) {
2803
2815
  *
2804
2816
  */
2805
2817
  getValue() {
2806
- if (this.is_select_tag && this.input.hasAttribute('multiple')) {
2818
+ if (this.settings.mode === 'multi' && this.is_select_tag) {
2807
2819
  return this.items;
2808
2820
  }
2809
2821
  return this.items.join(this.settings.delimiter);
@@ -2936,9 +2948,11 @@ class TomSelect extends MicroPlugin(MicroEvent) {
2936
2948
  setAttr(this.focus_node, {
2937
2949
  'aria-activedescendant': option.getAttribute('id')
2938
2950
  });
2939
- setAttr(option, {
2940
- 'aria-selected': 'true'
2941
- });
2951
+ if (this.settings.mode === 'single' || this.settings.hideSelected) {
2952
+ setAttr(option, {
2953
+ 'aria-selected': 'true'
2954
+ });
2955
+ }
2942
2956
  addClasses(option, 'active');
2943
2957
  if (scroll) this.scrollToOption(option);
2944
2958
  }
@@ -2981,9 +2995,11 @@ class TomSelect extends MicroPlugin(MicroEvent) {
2981
2995
  clearActiveOption() {
2982
2996
  if (this.activeOption) {
2983
2997
  removeClasses(this.activeOption, 'active');
2984
- setAttr(this.activeOption, {
2985
- 'aria-selected': null
2986
- });
2998
+ if (this.settings.mode === 'single' || this.settings.hideSelected) {
2999
+ setAttr(this.activeOption, {
3000
+ 'aria-selected': null
3001
+ });
3002
+ }
2987
3003
  }
2988
3004
  this.activeOption = null;
2989
3005
  setAttr(this.focus_node, {
@@ -3198,10 +3214,16 @@ class TomSelect extends MicroPlugin(MicroEvent) {
3198
3214
  if (option === undefined) continue;
3199
3215
  let opt_hash = get_hash(opt_value);
3200
3216
  let option_el = self.getOption(opt_hash, true);
3217
+ const option_selected = self.items.includes(opt_hash);
3201
3218
 
3202
3219
  // toggle 'selected' class
3203
3220
  if (!self.settings.hideSelected) {
3204
- option_el.classList.toggle('selected', self.items.includes(opt_hash));
3221
+ option_el.classList.toggle('selected', option_selected);
3222
+ if (this.settings.mode === 'multi') {
3223
+ setAttr(option_el, {
3224
+ 'aria-selected': option_selected ? 'true' : 'false'
3225
+ });
3226
+ }
3205
3227
  }
3206
3228
  optgroup = option[self.settings.optgroupField] || '';
3207
3229
  optgroups = Array.isArray(optgroup) ? optgroup : [optgroup];
@@ -3219,10 +3241,17 @@ class TomSelect extends MicroPlugin(MicroEvent) {
3219
3241
  // nodes can only have one parent, so if the option is in mutple groups, we need a clone
3220
3242
  if (j > 0) {
3221
3243
  option_el = option_el.cloneNode(true);
3222
- setAttr(option_el, {
3223
- id: option.$id + '-clone-' + j,
3224
- 'aria-selected': null
3225
- });
3244
+ if (this.settings.mode === 'multi' && !self.settings.hideSelected) {
3245
+ setAttr(option_el, {
3246
+ id: option.$id + '-clone-' + j,
3247
+ 'aria-selected': option_selected ? 'true' : 'false'
3248
+ });
3249
+ } else {
3250
+ setAttr(option_el, {
3251
+ id: option.$id + '-clone-' + j,
3252
+ 'aria-selected': null
3253
+ });
3254
+ }
3226
3255
  option_el.classList.add('ts-cloned');
3227
3256
  removeClasses(option_el, 'active');
3228
3257
 
@@ -2132,17 +2132,24 @@
2132
2132
  const query = "label[for='" + escapeQuery(self.inputId) + "']";
2133
2133
  const label = document.querySelector(query);
2134
2134
  const label_click = self.focus.bind(self);
2135
+ const labelled_by = input.getAttribute('aria-labelledby');
2135
2136
  if (label) {
2136
2137
  addEvent(label, 'click', label_click);
2137
2138
  setAttr(label, {
2138
2139
  for: control_id
2139
2140
  });
2140
- const label_id = getId(label, self.inputId + '-ts-label');
2141
+
2142
+ // const label_id = getId(label,self.inputId+'-ts-label');
2143
+ // setAttr(focus_node,{'aria-labelledby':label_id});
2144
+ // setAttr(dropdown_content,{'aria-labelledby':label_id});
2145
+ }
2146
+
2147
+ if (labelled_by) {
2141
2148
  setAttr(focus_node, {
2142
- 'aria-labelledby': label_id
2149
+ 'aria-labelledby': labelled_by
2143
2150
  });
2144
2151
  setAttr(dropdown_content, {
2145
- 'aria-labelledby': label_id
2152
+ 'aria-labelledby': labelled_by
2146
2153
  });
2147
2154
  }
2148
2155
  wrapper.style.width = input.style.width;
@@ -2150,10 +2157,15 @@
2150
2157
  const classes_plugins = 'plugin-' + self.plugins.names.join(' plugin-');
2151
2158
  addClasses([wrapper, dropdown], classes_plugins);
2152
2159
  }
2153
- if ((settings.maxItems === null || settings.maxItems > 1) && self.is_select_tag) {
2154
- setAttr(input, {
2155
- multiple: 'multiple'
2160
+ if (settings.mode === 'multi') {
2161
+ setAttr(dropdown_content, {
2162
+ 'aria-multiselectable': 'true'
2156
2163
  });
2164
+ if (self.is_select_tag) {
2165
+ setAttr(input, {
2166
+ multiple: 'multiple'
2167
+ });
2168
+ }
2157
2169
  }
2158
2170
  if (settings.placeholder) {
2159
2171
  setAttr(control_input, {
@@ -2809,7 +2821,7 @@
2809
2821
  *
2810
2822
  */
2811
2823
  getValue() {
2812
- if (this.is_select_tag && this.input.hasAttribute('multiple')) {
2824
+ if (this.settings.mode === 'multi' && this.is_select_tag) {
2813
2825
  return this.items;
2814
2826
  }
2815
2827
  return this.items.join(this.settings.delimiter);
@@ -2942,9 +2954,11 @@
2942
2954
  setAttr(this.focus_node, {
2943
2955
  'aria-activedescendant': option.getAttribute('id')
2944
2956
  });
2945
- setAttr(option, {
2946
- 'aria-selected': 'true'
2947
- });
2957
+ if (this.settings.mode === 'single' || this.settings.hideSelected) {
2958
+ setAttr(option, {
2959
+ 'aria-selected': 'true'
2960
+ });
2961
+ }
2948
2962
  addClasses(option, 'active');
2949
2963
  if (scroll) this.scrollToOption(option);
2950
2964
  }
@@ -2987,9 +3001,11 @@
2987
3001
  clearActiveOption() {
2988
3002
  if (this.activeOption) {
2989
3003
  removeClasses(this.activeOption, 'active');
2990
- setAttr(this.activeOption, {
2991
- 'aria-selected': null
2992
- });
3004
+ if (this.settings.mode === 'single' || this.settings.hideSelected) {
3005
+ setAttr(this.activeOption, {
3006
+ 'aria-selected': null
3007
+ });
3008
+ }
2993
3009
  }
2994
3010
  this.activeOption = null;
2995
3011
  setAttr(this.focus_node, {
@@ -3204,10 +3220,16 @@
3204
3220
  if (option === undefined) continue;
3205
3221
  let opt_hash = get_hash(opt_value);
3206
3222
  let option_el = self.getOption(opt_hash, true);
3223
+ const option_selected = self.items.includes(opt_hash);
3207
3224
 
3208
3225
  // toggle 'selected' class
3209
3226
  if (!self.settings.hideSelected) {
3210
- option_el.classList.toggle('selected', self.items.includes(opt_hash));
3227
+ option_el.classList.toggle('selected', option_selected);
3228
+ if (this.settings.mode === 'multi') {
3229
+ setAttr(option_el, {
3230
+ 'aria-selected': option_selected ? 'true' : 'false'
3231
+ });
3232
+ }
3211
3233
  }
3212
3234
  optgroup = option[self.settings.optgroupField] || '';
3213
3235
  optgroups = Array.isArray(optgroup) ? optgroup : [optgroup];
@@ -3225,10 +3247,17 @@
3225
3247
  // nodes can only have one parent, so if the option is in mutple groups, we need a clone
3226
3248
  if (j > 0) {
3227
3249
  option_el = option_el.cloneNode(true);
3228
- setAttr(option_el, {
3229
- id: option.$id + '-clone-' + j,
3230
- 'aria-selected': null
3231
- });
3250
+ if (this.settings.mode === 'multi' && !self.settings.hideSelected) {
3251
+ setAttr(option_el, {
3252
+ id: option.$id + '-clone-' + j,
3253
+ 'aria-selected': option_selected ? 'true' : 'false'
3254
+ });
3255
+ } else {
3256
+ setAttr(option_el, {
3257
+ id: option.$id + '-clone-' + j,
3258
+ 'aria-selected': null
3259
+ });
3260
+ }
3232
3261
  option_el.classList.add('ts-cloned');
3233
3262
  removeClasses(option_el, 'active');
3234
3263
 
@@ -33,11 +33,11 @@ for(let t in e){let i=e[t]
33
33
  i&&(s[t]=n(i)),t.length>1&&o.push(r(t))}o.sort(((t,e)=>e.length-t.length))
34
34
  const l=i(o)
35
35
  return h=new RegExp("^"+l,"u"),s},I=(t,e=1)=>(e=Math.max(e,t.length-1),i(d(t).map((t=>((t,e=1)=>{let i=0
36
- return t=t.map((t=>(p[t]&&(i+=t.length),p[t]||t))),i>=e?s(t):""})(t,e))))),_=(t,e=!0)=>{let n=t.length>1?1:0
36
+ return t=t.map((t=>(p[t]&&(i+=t.length),p[t]||t))),i>=e?s(t):""})(t,e))))),S=(t,e=!0)=>{let n=t.length>1?1:0
37
37
  return i(t.map((t=>{let i=[]
38
38
  const o=e?t.length():t.length()-1
39
39
  for(let e=0;e<o;e++)i.push(I(t.substrs[e]||"",n))
40
- return s(i)})))},S=(t,e)=>{for(const i of e){if(i.start!=t.start||i.end!=t.end)continue
40
+ return s(i)})))},_=(t,e)=>{for(const i of e){if(i.start!=t.start||i.end!=t.end)continue
41
41
  if(i.substrs.join("")!==t.substrs.join(""))continue
42
42
  let e=t.parts
43
43
  const s=t=>{for(const i of e){if(i.start===t.start&&i.substr===t.substr)return!1
@@ -59,10 +59,10 @@ t.add({start:e,end:e+i,length:i,substr:r}),a.add("1")}else t.add({start:e,end:e+
59
59
  else if(r){let s=t.clone(e,i)
60
60
  const n=r.length
61
61
  s.add({start:e,end:e+n,length:n,substr:r}),l.push(s)}else a.add("3")}if(l.length>0){l=l.sort(((t,e)=>t.length()-e.length()))
62
- for(let t of l)S(t,s)||s.push(t)}else if(e>0&&1==a.size&&!a.has("3")){i+=_(s,!1)
62
+ for(let t of l)_(t,s)||s.push(t)}else if(e>0&&1==a.size&&!a.has("3")){i+=S(s,!1)
63
63
  let t=new A
64
64
  const e=s[0]
65
- e&&t.add(e.last()),s=[t]}}return i+=_(s,!0),i},F=(t,e)=>{if(t)return t[e]},x=(t,e)=>{if(t){for(var i,s=e.split(".");(i=s.shift())&&(t=t[i]););return t}},L=(t,e,i)=>{var s,n
65
+ e&&t.add(e.last()),s=[t]}}return i+=S(s,!0),i},F=(t,e)=>{if(t)return t[e]},x=(t,e)=>{if(t){for(var i,s=e.split(".");(i=s.shift())&&(t=t[i]););return t}},L=(t,e,i)=>{var s,n
66
66
  return t?(t+="",null==e.regex||-1===(n=t.search(e.regex))?0:(s=e.string.length/t.length,0===n&&(s+=.5),s*i)):0},k=(t,e)=>{var i=t[e]
67
67
  if("function"==typeof i)return i
68
68
  i&&!Array.isArray(i)&&(t[e]=[i])},E=(t,e)=>{if(Array.isArray(t))t.forEach(e)
@@ -169,18 +169,16 @@ if(H(r,n.wrapperClass,d,u),H(l,n.controlClass),lt(r,l),H(a,n.dropdownClass,u),n.
169
169
  E(["autocorrect","autocapitalize","autocomplete"],(t=>{s.getAttribute(t)&&Q(p,{[t]:s.getAttribute(t)})})),p.tabIndex=-1,l.appendChild(p),this.focus_node=p}else n.controlInput?(p=$(n.controlInput),this.focus_node=p):(p=$("<input/>"),this.focus_node=l)
170
170
  this.wrapper=r,this.dropdown=a,this.dropdown_content=c,this.control=l,this.control_input=p,this.setup()}setup(){const t=this,e=t.settings,i=t.control_input,s=t.dropdown,n=t.dropdown_content,o=t.wrapper,l=t.control,a=t.input,c=t.focus_node,d={passive:!0},u=t.inputId+"-ts-dropdown"
171
171
  Q(n,{id:u}),Q(c,{role:"combobox","aria-haspopup":"listbox","aria-expanded":"false","aria-controls":u})
172
- const p=ot(c,t.inputId+"-ts-control"),h="label[for='"+(t=>t.replace(/['"\\]/g,"\\$&"))(t.inputId)+"']",g=document.querySelector(h),f=t.focus.bind(t)
173
- if(g){st(g,"click",f),Q(g,{for:p})
174
- const e=ot(g,t.inputId+"-ts-label")
175
- Q(c,{"aria-labelledby":e}),Q(n,{"aria-labelledby":e})}if(o.style.width=a.style.width,t.plugins.names.length){const e="plugin-"+t.plugins.names.join(" plugin-")
176
- H([o,s],e)}(null===e.maxItems||e.maxItems>1)&&t.is_select_tag&&Q(a,{multiple:"multiple"}),e.placeholder&&Q(i,{placeholder:e.placeholder}),!e.splitOn&&e.delimiter&&(e.splitOn=new RegExp("\\s*"+r(e.delimiter)+"+\\s*")),e.load&&e.loadThrottle&&(e.load=tt(e.load,e.loadThrottle)),t.control_input.type=a.type,st(s,"mousemove",(()=>{t.ignoreHover=!1})),st(s,"mouseenter",(e=>{var i=z(e.target,"[data-selectable]",s)
172
+ const p=ot(c,t.inputId+"-ts-control"),h="label[for='"+(t=>t.replace(/['"\\]/g,"\\$&"))(t.inputId)+"']",g=document.querySelector(h),f=t.focus.bind(t),v=a.getAttribute("aria-labelledby")
173
+ if(g&&(st(g,"click",f),Q(g,{for:p})),v&&(Q(c,{"aria-labelledby":v}),Q(n,{"aria-labelledby":v})),o.style.width=a.style.width,t.plugins.names.length){const e="plugin-"+t.plugins.names.join(" plugin-")
174
+ H([o,s],e)}"multi"===e.mode&&(Q(n,{"aria-multiselectable":"true"}),t.is_select_tag&&Q(a,{multiple:"multiple"})),e.placeholder&&Q(i,{placeholder:e.placeholder}),!e.splitOn&&e.delimiter&&(e.splitOn=new RegExp("\\s*"+r(e.delimiter)+"+\\s*")),e.load&&e.loadThrottle&&(e.load=tt(e.load,e.loadThrottle)),t.control_input.type=a.type,st(s,"mousemove",(()=>{t.ignoreHover=!1})),st(s,"mouseenter",(e=>{var i=z(e.target,"[data-selectable]",s)
177
175
  i&&t.onOptionHover(e,i)}),{capture:!0}),st(s,"click",(e=>{const i=z(e.target,"[data-selectable]")
178
176
  i&&(t.onOptionSelect(e,i),it(e,!0))})),st(l,"click",(e=>{var s=z(e.target,"[data-ts-item]",l)
179
177
  s&&t.onItemSelect(e,s)?it(e,!0):""==i.value&&(t.onClick(),it(e,!0))})),st(c,"keydown",(e=>t.onKeyDown(e))),st(i,"keypress",(e=>t.onKeyPress(e))),st(i,"input",(e=>t.onInput(e))),st(c,"blur",(e=>t.onBlur(e))),st(c,"focus",(e=>t.onFocus(e))),st(i,"paste",(e=>t.onPaste(e)))
180
- const v=e=>{const n=e.composedPath()[0]
178
+ const m=e=>{const n=e.composedPath()[0]
181
179
  if(!o.contains(n)&&!s.contains(n))return t.isFocused&&t.blur(),void t.inputState()
182
- n==i&&t.isOpen?e.stopPropagation():it(e,!0)},m=()=>{t.isOpen&&t.positionDropdown()}
183
- st(document,"mousedown",v),st(window,"scroll",m,d),st(window,"resize",m,d),this._destroy=()=>{document.removeEventListener("mousedown",v),window.removeEventListener("scroll",m),window.removeEventListener("resize",m),g&&g.removeEventListener("click",f)},this.revertSettings={innerHTML:a.innerHTML,tabIndex:a.tabIndex},a.tabIndex=-1,a.insertAdjacentElement("afterend",t.wrapper),t.sync(!1),e.items=[],delete e.optgroups,delete e.options,st(a,"invalid",(()=>{t.isValid&&(t.isValid=!1,t.isInvalid=!0,t.refreshState())})),t.updateOriginalInput(),t.refreshItems(),t.close(!1),t.inputState(),t.isSetup=!0,a.disabled?t.disable():t.enable(),t.on("change",this.onChange),H(a,"tomselected","ts-hidden-accessible"),t.trigger("initialize"),!0===e.preload&&t.preload()}setupOptions(t=[],e=[]){this.addOptions(t),E(e,(t=>{this.registerOptionGroup(t)}))}setupTemplates(){var t=this,e=t.settings.labelField,i=t.settings.optgroupLabelField,s={optgroup:t=>{let e=document.createElement("div")
180
+ n==i&&t.isOpen?e.stopPropagation():it(e,!0)},y=()=>{t.isOpen&&t.positionDropdown()}
181
+ st(document,"mousedown",m),st(window,"scroll",y,d),st(window,"resize",y,d),this._destroy=()=>{document.removeEventListener("mousedown",m),window.removeEventListener("scroll",y),window.removeEventListener("resize",y),g&&g.removeEventListener("click",f)},this.revertSettings={innerHTML:a.innerHTML,tabIndex:a.tabIndex},a.tabIndex=-1,a.insertAdjacentElement("afterend",t.wrapper),t.sync(!1),e.items=[],delete e.optgroups,delete e.options,st(a,"invalid",(()=>{t.isValid&&(t.isValid=!1,t.isInvalid=!0,t.refreshState())})),t.updateOriginalInput(),t.refreshItems(),t.close(!1),t.inputState(),t.isSetup=!0,a.disabled?t.disable():t.enable(),t.on("change",this.onChange),H(a,"tomselected","ts-hidden-accessible"),t.trigger("initialize"),!0===e.preload&&t.preload()}setupOptions(t=[],e=[]){this.addOptions(t),E(e,(t=>{this.registerOptionGroup(t)}))}setupTemplates(){var t=this,e=t.settings.labelField,i=t.settings.optgroupLabelField,s={optgroup:t=>{let e=document.createElement("div")
184
182
  return e.className="optgroup",e.appendChild(t.options),e},optgroup_header:(t,e)=>'<div class="optgroup-header">'+e(t[i])+"</div>",option:(t,i)=>"<div>"+i(t[e])+"</div>",item:(t,i)=>"<div>"+i(t[e])+"</div>",option_create:(t,e)=>'<div class="create">Add <strong>'+e(t.input)+"</strong>&hellip;</div>",no_results:()=>'<div class="no-results">No results found</div>',loading:()=>'<div class="spinner"></div>',not_loading:()=>{},dropdown:()=>"<div></div>"}
185
183
  t.settings.render=Object.assign({},s,t.settings.render)}setupCallbacks(){var t,e,i={initialize:"onInitialize",change:"onChange",item_add:"onItemAdd",item_remove:"onItemRemove",item_select:"onItemSelect",clear:"onClear",option_add:"onOptionAdd",option_remove:"onOptionRemove",option_clear:"onOptionClear",optgroup_add:"onOptionGroupAdd",optgroup_remove:"onOptionGroupRemove",optgroup_clear:"onOptionGroupClear",dropdown_open:"onDropdownOpen",dropdown_close:"onDropdownClose",type:"onType",load:"onLoad",focus:"onFocus",blur:"onBlur"}
186
184
  for(t in i)(e=this.settings[i[t]])&&this.on(t,e)}sync(t=!0){const e=this,i=t?at(e.input,{delimiter:e.settings.delimiter}):e.settings
@@ -221,16 +219,16 @@ const i=e.loadCallback.bind(e)
221
219
  e.settings.load.call(e,t,i)}loadCallback(t,e){const i=this
222
220
  i.loading=Math.max(i.loading-1,0),i.lastQuery=null,i.clearActiveOption(),i.setupOptions(t,e),i.refreshOptions(i.isFocused&&!i.isInputHidden),i.loading||N(i.wrapper,i.settings.loadingClass),i.trigger("load",t,e)}preload(){var t=this.wrapper.classList
223
221
  t.contains("preloaded")||(t.add("preloaded"),this.load(""))}setTextboxValue(t=""){var e=this.control_input
224
- e.value!==t&&(e.value=t,q(e,"update"),this.lastValue=t)}getValue(){return this.is_select_tag&&this.input.hasAttribute("multiple")?this.items:this.items.join(this.settings.delimiter)}setValue(t,e){et(this,e?[]:["change"],(()=>{this.clear(e),this.addItems(t,e)}))}setMaxItems(t){0===t&&(t=null),this.settings.maxItems=t,this.refreshState()}setActiveItem(t,e){var i,s,n,o,r,l,a=this
222
+ e.value!==t&&(e.value=t,q(e,"update"),this.lastValue=t)}getValue(){return"multi"===this.settings.mode&&this.is_select_tag?this.items:this.items.join(this.settings.delimiter)}setValue(t,e){et(this,e?[]:["change"],(()=>{this.clear(e),this.addItems(t,e)}))}setMaxItems(t){0===t&&(t=null),this.settings.maxItems=t,this.refreshState()}setActiveItem(t,e){var i,s,n,o,r,l,a=this
225
223
  if("single"!==a.settings.mode){if(!t)return a.clearActiveItems(),void(a.isFocused&&a.showInput())
226
224
  if("click"===(i=e&&e.type.toLowerCase())&&nt("shiftKey",e)&&a.activeItems.length){for(l=a.getLastActive(),(n=Array.prototype.indexOf.call(a.control.children,l))>(o=Array.prototype.indexOf.call(a.control.children,t))&&(r=n,n=o,o=r),s=n;s<=o;s++)t=a.control.children[s],-1===a.activeItems.indexOf(t)&&a.setActiveItemClass(t)
227
225
  it(e)}else"click"===i&&nt(U,e)||"keydown"===i&&nt("shiftKey",e)?t.classList.contains("active")?a.removeActiveItem(t):a.setActiveItemClass(t):(a.clearActiveItems(),a.setActiveItemClass(t))
228
226
  a.hideInput(),a.isFocused||a.focus()}}setActiveItemClass(t){const e=this,i=e.control.querySelector(".last-active")
229
227
  i&&N(i,"last-active"),H(t,"active last-active"),e.trigger("item_select",t),-1==e.activeItems.indexOf(t)&&e.activeItems.push(t)}removeActiveItem(t){var e=this.activeItems.indexOf(t)
230
- this.activeItems.splice(e,1),N(t,"active")}clearActiveItems(){N(this.activeItems,"active"),this.activeItems=[]}setActiveOption(t,e=!0){t!==this.activeOption&&(this.clearActiveOption(),t&&(this.activeOption=t,Q(this.focus_node,{"aria-activedescendant":t.getAttribute("id")}),Q(t,{"aria-selected":"true"}),H(t,"active"),e&&this.scrollToOption(t)))}scrollToOption(t,e){if(!t)return
228
+ this.activeItems.splice(e,1),N(t,"active")}clearActiveItems(){N(this.activeItems,"active"),this.activeItems=[]}setActiveOption(t,e=!0){t!==this.activeOption&&(this.clearActiveOption(),t&&(this.activeOption=t,Q(this.focus_node,{"aria-activedescendant":t.getAttribute("id")}),("single"===this.settings.mode||this.settings.hideSelected)&&Q(t,{"aria-selected":"true"}),H(t,"active"),e&&this.scrollToOption(t)))}scrollToOption(t,e){if(!t)return
231
229
  const i=this.dropdown_content,s=i.clientHeight,n=i.scrollTop||0,o=t.offsetHeight,r=t.getBoundingClientRect().top-i.getBoundingClientRect().top+n
232
230
  r+o>s+n?this.scroll(r-s+o,e):r<n&&this.scroll(r,e)}scroll(t,e){const i=this.dropdown_content
233
- e&&(i.style.scrollBehavior=e),i.scrollTop=t,i.style.scrollBehavior=""}clearActiveOption(){this.activeOption&&(N(this.activeOption,"active"),Q(this.activeOption,{"aria-selected":null})),this.activeOption=null,Q(this.focus_node,{"aria-activedescendant":null})}selectAll(){const t=this
231
+ e&&(i.style.scrollBehavior=e),i.scrollTop=t,i.style.scrollBehavior=""}clearActiveOption(){this.activeOption&&(N(this.activeOption,"active"),("single"===this.settings.mode||this.settings.hideSelected)&&Q(this.activeOption,{"aria-selected":null})),this.activeOption=null,Q(this.focus_node,{"aria-activedescendant":null})}selectAll(){const t=this
234
232
  if("single"===t.settings.mode)return
235
233
  const e=t.controlChildren()
236
234
  e.length&&(t.hideInput(),t.close(),t.activeItems=e,E(e,(e=>{t.setActiveItemClass(e)})))}inputState(){var t=this
@@ -249,9 +247,10 @@ if(!t)continue
249
247
  let n=t.id,l=h.options[n]
250
248
  if(void 0===l)continue
251
249
  let a=Y(n),d=h.getOption(a,!0)
252
- for(h.settings.hideSelected||d.classList.toggle("selected",h.items.includes(a)),o=l[h.settings.optgroupField]||"",i=0,s=(r=Array.isArray(o)?o:[o])&&r.length;i<s;i++){o=r[i],h.optgroups.hasOwnProperty(o)||(o="")
250
+ const g=h.items.includes(a)
251
+ for(h.settings.hideSelected||(d.classList.toggle("selected",g),"multi"===this.settings.mode&&Q(d,{"aria-selected":g?"true":"false"})),o=l[h.settings.optgroupField]||"",i=0,s=(r=Array.isArray(o)?o:[o])&&r.length;i<s;i++){o=r[i],h.optgroups.hasOwnProperty(o)||(o="")
253
252
  let t=u[o]
254
- void 0===t&&(t=document.createDocumentFragment(),p.push(o)),i>0&&(d=d.cloneNode(!0),Q(d,{id:l.$id+"-clone-"+i,"aria-selected":null}),d.classList.add("ts-cloned"),N(d,"active"),h.activeOption&&h.activeOption.dataset.value==n&&c&&c.dataset.group===o.toString()&&(y=d)),t.appendChild(d),u[o]=t}}h.settings.lockOptgroupOrder&&p.sort(((t,e)=>{const i=h.optgroups[t],s=h.optgroups[e]
253
+ void 0===t&&(t=document.createDocumentFragment(),p.push(o)),i>0&&(d=d.cloneNode(!0),"multi"!==this.settings.mode||h.settings.hideSelected?Q(d,{id:l.$id+"-clone-"+i,"aria-selected":null}):Q(d,{id:l.$id+"-clone-"+i,"aria-selected":g?"true":"false"}),d.classList.add("ts-cloned"),N(d,"active"),h.activeOption&&h.activeOption.dataset.value==n&&c&&c.dataset.group===o.toString()&&(y=d)),t.appendChild(d),u[o]=t}}h.settings.lockOptgroupOrder&&p.sort(((t,e)=>{const i=h.optgroups[t],s=h.optgroups[e]
255
254
  return(i&&i.$order||0)-(s&&s.$order||0)})),l=document.createDocumentFragment(),E(p,(t=>{let e=u[t]
256
255
  if(!e||!e.children.length)return
257
256
  let i=h.optgroups[t]