@six-group/ui-library 3.0.0-beta.1.7 → 3.0.0-beta.1.8

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 (367) hide show
  1. package/dist/cjs/{event-listeners-4a8d66d5.js → event-listeners-74715e62.js} +38 -38
  2. package/dist/cjs/{execution-control-3bc9c7c4.js → execution-control-46f388e0.js} +35 -35
  3. package/dist/cjs/{focus-visible-b08d956f.js → focus-visible-0b352c74.js} +40 -40
  4. package/dist/cjs/{form-control-9e4dffd1.js → form-control-866bbece.js} +25 -25
  5. package/dist/cjs/{modal-a9679ddf.js → modal-48d42228.js} +41 -41
  6. package/dist/cjs/{popover-e3781f5a.js → popover-1d2a037c.js} +95 -95
  7. package/dist/cjs/{scroll-5b8676ba.js → scroll-76e6f5d7.js} +57 -57
  8. package/dist/cjs/set-attributes_2.cjs.entry.js +57 -57
  9. package/dist/cjs/six-alert.cjs.entry.js +131 -131
  10. package/dist/cjs/six-avatar.cjs.entry.js +28 -28
  11. package/dist/cjs/six-badge.cjs.entry.js +26 -26
  12. package/dist/cjs/six-button.cjs.entry.js +97 -97
  13. package/dist/cjs/six-card.cjs.entry.js +8 -8
  14. package/dist/cjs/six-checkbox.cjs.entry.js +152 -152
  15. package/dist/cjs/six-datepicker.cjs.entry.js +1189 -1189
  16. package/dist/cjs/six-details.cjs.entry.js +139 -139
  17. package/dist/cjs/six-dialog.cjs.entry.js +152 -152
  18. package/dist/cjs/six-drawer.cjs.entry.js +174 -174
  19. package/dist/cjs/six-dropdown_3.cjs.entry.js +728 -728
  20. package/dist/cjs/six-error-page.cjs.entry.js +94 -94
  21. package/dist/cjs/six-file-list-item.cjs.entry.js +38 -38
  22. package/dist/cjs/six-file-list.cjs.entry.js +8 -8
  23. package/dist/cjs/six-file-upload.cjs.entry.js +96 -96
  24. package/dist/cjs/six-footer.cjs.entry.js +8 -8
  25. package/dist/cjs/six-form.cjs.entry.js +219 -219
  26. package/dist/cjs/six-group-label.cjs.entry.js +46 -46
  27. package/dist/cjs/six-header.cjs.entry.js +149 -149
  28. package/dist/cjs/six-icon-button.cjs.entry.js +33 -33
  29. package/dist/cjs/six-icon.cjs.entry.js +24 -24
  30. package/dist/cjs/six-input.cjs.entry.js +230 -230
  31. package/dist/cjs/six-item-picker.cjs.entry.js +361 -361
  32. package/dist/cjs/six-language-switcher.cjs.entry.js +52 -52
  33. package/dist/cjs/six-layout-grid.cjs.entry.js +19 -19
  34. package/dist/cjs/six-main-container.cjs.entry.js +11 -11
  35. package/dist/cjs/six-menu-divider.cjs.entry.js +8 -8
  36. package/dist/cjs/six-menu-label.cjs.entry.js +8 -8
  37. package/dist/cjs/six-picto.cjs.entry.js +15 -15
  38. package/dist/cjs/six-progress-bar.cjs.entry.js +17 -17
  39. package/dist/cjs/six-progress-ring.cjs.entry.js +31 -31
  40. package/dist/cjs/six-radio.cjs.entry.js +121 -121
  41. package/dist/cjs/six-range.cjs.entry.js +198 -198
  42. package/dist/cjs/six-root.cjs.entry.js +34 -34
  43. package/dist/cjs/six-search-field.cjs.entry.js +43 -43
  44. package/dist/cjs/six-select.cjs.entry.js +447 -447
  45. package/dist/cjs/six-sidebar-item-group.cjs.entry.js +42 -42
  46. package/dist/cjs/six-sidebar-item.cjs.entry.js +18 -18
  47. package/dist/cjs/six-sidebar.cjs.entry.js +171 -171
  48. package/dist/cjs/six-spinner.cjs.entry.js +16 -16
  49. package/dist/cjs/six-switch.cjs.entry.js +100 -100
  50. package/dist/cjs/six-tab-group.cjs.entry.js +226 -226
  51. package/dist/cjs/six-tab-panel.cjs.entry.js +17 -17
  52. package/dist/cjs/six-tab.cjs.entry.js +42 -42
  53. package/dist/cjs/six-table-cell_4.cjs.entry.js +70 -70
  54. package/dist/cjs/six-table.cjs.entry.js +145 -145
  55. package/dist/cjs/six-tag.cjs.entry.js +40 -40
  56. package/dist/cjs/six-textarea.cjs.entry.js +211 -211
  57. package/dist/cjs/six-tile.cjs.entry.js +89 -89
  58. package/dist/cjs/six-timepicker.cjs.entry.js +489 -489
  59. package/dist/cjs/{six-timepicker.types-c58cc88b.js → six-timepicker.types-c19ebff3.js} +43 -43
  60. package/dist/cjs/six-tooltip.cjs.entry.js +172 -172
  61. package/dist/cjs/{slot-8abe833c.js → slot-ad537f24.js} +42 -42
  62. package/dist/cjs/{types-65e5c95b.js → types-581e8ff0.js} +12 -12
  63. package/dist/cjs/{types-0c28e484.js → types-64878648.js} +12 -12
  64. package/dist/collection/components/six-alert/six-alert.js +366 -366
  65. package/dist/collection/components/six-avatar/six-avatar.js +131 -131
  66. package/dist/collection/components/six-badge/six-badge.js +101 -101
  67. package/dist/collection/components/six-button/six-button.js +466 -466
  68. package/dist/collection/components/six-card/six-card.js +21 -21
  69. package/dist/collection/components/six-checkbox/six-checkbox.js +550 -550
  70. package/dist/collection/components/six-datepicker/components/day-selection.js +13 -13
  71. package/dist/collection/components/six-datepicker/components/month-selection.js +12 -12
  72. package/dist/collection/components/six-datepicker/components/year-selection.js +10 -10
  73. package/dist/collection/components/six-datepicker/six-date-formats.js +23 -23
  74. package/dist/collection/components/six-datepicker/six-datepicker.js +1343 -1343
  75. package/dist/collection/components/six-datepicker/test/six-datepicker.test-helpers.js +16 -16
  76. package/dist/collection/components/six-details/six-details.js +432 -432
  77. package/dist/collection/components/six-dialog/six-dialog.js +401 -401
  78. package/dist/collection/components/six-drawer/six-drawer.js +458 -458
  79. package/dist/collection/components/six-dropdown/six-dropdown.js +939 -939
  80. package/dist/collection/components/six-error-page/six-error-page.js +199 -199
  81. package/dist/collection/components/six-file-list/six-file-list.js +20 -20
  82. package/dist/collection/components/six-file-list-item/six-file-list-item.js +203 -203
  83. package/dist/collection/components/six-file-upload/six-file-upload.js +272 -272
  84. package/dist/collection/components/six-footer/six-footer.js +21 -21
  85. package/dist/collection/components/six-form/six-form.js +408 -408
  86. package/dist/collection/components/six-group-label/six-group-label.js +166 -166
  87. package/dist/collection/components/six-header/six-header.js +420 -420
  88. package/dist/collection/components/six-icon/six-icon.js +77 -77
  89. package/dist/collection/components/six-icon-button/six-icon-button.js +142 -142
  90. package/dist/collection/components/six-input/six-input.js +1141 -1141
  91. package/dist/collection/components/six-item-picker/six-item-picker.js +688 -688
  92. package/dist/collection/components/six-item-picker/types.js +13 -13
  93. package/dist/collection/components/six-language-switcher/six-language-switcher.js +128 -128
  94. package/dist/collection/components/six-layout-grid/six-layout-grid.js +52 -52
  95. package/dist/collection/components/six-main-container/six-main-container.js +53 -53
  96. package/dist/collection/components/six-menu/six-menu.js +406 -406
  97. package/dist/collection/components/six-menu-divider/six-menu-divider.js +22 -22
  98. package/dist/collection/components/six-menu-item/six-menu-item.js +177 -177
  99. package/dist/collection/components/six-menu-label/six-menu-label.js +25 -25
  100. package/dist/collection/components/six-picto/six-picto.js +50 -50
  101. package/dist/collection/components/six-progress-bar/six-progress-bar.js +77 -77
  102. package/dist/collection/components/six-progress-ring/six-progress-ring.js +111 -111
  103. package/dist/collection/components/six-radio/six-radio.js +410 -410
  104. package/dist/collection/components/six-range/six-range.js +620 -620
  105. package/dist/collection/components/six-root/six-root.js +167 -167
  106. package/dist/collection/components/six-search-field/six-search-field.js +171 -171
  107. package/dist/collection/components/six-select/six-select.js +1105 -1105
  108. package/dist/collection/components/six-sidebar/six-sidebar.js +455 -455
  109. package/dist/collection/components/six-sidebar-item/six-sidebar-item.js +89 -89
  110. package/dist/collection/components/six-sidebar-item-group/six-sidebar-item-group.js +158 -158
  111. package/dist/collection/components/six-spinner/six-spinner.js +55 -55
  112. package/dist/collection/components/six-stage-indicator/six-stage-indicator.js +46 -46
  113. package/dist/collection/components/six-switch/six-switch.js +393 -393
  114. package/dist/collection/components/six-tab/six-tab.js +198 -198
  115. package/dist/collection/components/six-tab-group/six-tab-group.js +362 -362
  116. package/dist/collection/components/six-tab-panel/six-tab-panel.js +75 -75
  117. package/dist/collection/components/six-table/six-table.js +209 -209
  118. package/dist/collection/components/six-table/test/helpers.js +13 -13
  119. package/dist/collection/components/six-table/types.js +8 -8
  120. package/dist/collection/components/six-table/util/filter-by.js +34 -34
  121. package/dist/collection/components/six-table/util/from-data.js +33 -33
  122. package/dist/collection/components/six-table/util/is.js +3 -3
  123. package/dist/collection/components/six-table/util/quick-filter-by.js +13 -13
  124. package/dist/collection/components/six-table/util/sort-by.js +25 -25
  125. package/dist/collection/components/six-table-cell/six-table-cell.js +21 -21
  126. package/dist/collection/components/six-table-header/six-table-header.js +21 -21
  127. package/dist/collection/components/six-table-header-cell/get-next-state.js +7 -7
  128. package/dist/collection/components/six-table-header-cell/icons.js +12 -12
  129. package/dist/collection/components/six-table-header-cell/six-table-header-cell.js +174 -174
  130. package/dist/collection/components/six-table-header-cell/types.js +13 -13
  131. package/dist/collection/components/six-table-header-cell/util/create-model.js +6 -6
  132. package/dist/collection/components/six-table-header-cell/util/get-next-state.js +7 -7
  133. package/dist/collection/components/six-table-row/six-table-row.js +21 -21
  134. package/dist/collection/components/six-tag/six-tag.js +157 -157
  135. package/dist/collection/components/six-textarea/six-textarea.js +912 -912
  136. package/dist/collection/components/six-tile/six-tile.js +315 -315
  137. package/dist/collection/components/six-timepicker/six-time-format.js +14 -14
  138. package/dist/collection/components/six-timepicker/six-timepicker.js +980 -980
  139. package/dist/collection/components/six-timepicker/six-timepicker.types.js +40 -40
  140. package/dist/collection/components/six-tooltip/six-tooltip.js +435 -435
  141. package/dist/collection/functional-components/form-control/form-control.js +28 -28
  142. package/dist/collection/index.js +1 -1
  143. package/dist/collection/testUtil/delay.js +3 -3
  144. package/dist/collection/utils/as-array.js +1 -1
  145. package/dist/collection/utils/date-util.js +712 -712
  146. package/dist/collection/utils/event-listeners.js +39 -39
  147. package/dist/collection/utils/execution-control.js +38 -38
  148. package/dist/collection/utils/focus-visible.js +41 -41
  149. package/dist/collection/utils/matchers.js +2 -2
  150. package/dist/collection/utils/modal.js +28 -28
  151. package/dist/collection/utils/offset.js +13 -13
  152. package/dist/collection/utils/popover.js +113 -113
  153. package/dist/collection/utils/scroll.js +47 -47
  154. package/dist/collection/utils/slot.js +59 -59
  155. package/dist/collection/utils/support.js +15 -15
  156. package/dist/collection/utils/tabbable.js +22 -22
  157. package/dist/collection/utils/testing.js +38 -38
  158. package/dist/collection/utils/time.util.js +74 -74
  159. package/dist/collection/utils/type-check.js +5 -5
  160. package/dist/collection/utils/types.js +1 -1
  161. package/dist/collection/wrappers/set-attributes/set-attributes.js +68 -68
  162. package/dist/components.json +1 -1
  163. package/dist/custom-elements/index.js +7595 -7595
  164. package/dist/esm/{event-listeners-1bef934e.js → event-listeners-570a24ea.js} +38 -38
  165. package/dist/esm/{execution-control-235f5126.js → execution-control-1a60d709.js} +35 -35
  166. package/dist/esm/{focus-visible-4b7946aa.js → focus-visible-97933ea9.js} +40 -40
  167. package/dist/esm/{form-control-17478ad2.js → form-control-24f446af.js} +25 -25
  168. package/dist/esm/{modal-e5709f6b.js → modal-5ebdc320.js} +41 -41
  169. package/dist/esm/polyfills/core-js.js +0 -0
  170. package/dist/esm/polyfills/dom.js +0 -0
  171. package/dist/esm/polyfills/es5-html-element.js +0 -0
  172. package/dist/esm/polyfills/index.js +0 -0
  173. package/dist/esm/polyfills/system.js +0 -0
  174. package/dist/esm/{popover-5a51f84d.js → popover-1c7a1139.js} +95 -95
  175. package/dist/esm/{scroll-99b214c2.js → scroll-180b53fd.js} +57 -57
  176. package/dist/esm/set-attributes_2.entry.js +57 -57
  177. package/dist/esm/six-alert.entry.js +131 -131
  178. package/dist/esm/six-avatar.entry.js +28 -28
  179. package/dist/esm/six-badge.entry.js +26 -26
  180. package/dist/esm/six-button.entry.js +97 -97
  181. package/dist/esm/six-card.entry.js +8 -8
  182. package/dist/esm/six-checkbox.entry.js +152 -152
  183. package/dist/esm/six-datepicker.entry.js +1189 -1189
  184. package/dist/esm/six-details.entry.js +139 -139
  185. package/dist/esm/six-dialog.entry.js +152 -152
  186. package/dist/esm/six-drawer.entry.js +174 -174
  187. package/dist/esm/six-dropdown_3.entry.js +728 -728
  188. package/dist/esm/six-error-page.entry.js +94 -94
  189. package/dist/esm/six-file-list-item.entry.js +38 -38
  190. package/dist/esm/six-file-list.entry.js +8 -8
  191. package/dist/esm/six-file-upload.entry.js +96 -96
  192. package/dist/esm/six-footer.entry.js +8 -8
  193. package/dist/esm/six-form.entry.js +219 -219
  194. package/dist/esm/six-group-label.entry.js +46 -46
  195. package/dist/esm/six-header.entry.js +149 -149
  196. package/dist/esm/six-icon-button.entry.js +33 -33
  197. package/dist/esm/six-icon.entry.js +24 -24
  198. package/dist/esm/six-input.entry.js +230 -230
  199. package/dist/esm/six-item-picker.entry.js +361 -361
  200. package/dist/esm/six-language-switcher.entry.js +52 -52
  201. package/dist/esm/six-layout-grid.entry.js +19 -19
  202. package/dist/esm/six-main-container.entry.js +11 -11
  203. package/dist/esm/six-menu-divider.entry.js +8 -8
  204. package/dist/esm/six-menu-label.entry.js +8 -8
  205. package/dist/esm/six-picto.entry.js +15 -15
  206. package/dist/esm/six-progress-bar.entry.js +17 -17
  207. package/dist/esm/six-progress-ring.entry.js +31 -31
  208. package/dist/esm/six-radio.entry.js +121 -121
  209. package/dist/esm/six-range.entry.js +198 -198
  210. package/dist/esm/six-root.entry.js +34 -34
  211. package/dist/esm/six-search-field.entry.js +43 -43
  212. package/dist/esm/six-select.entry.js +447 -447
  213. package/dist/esm/six-sidebar-item-group.entry.js +42 -42
  214. package/dist/esm/six-sidebar-item.entry.js +18 -18
  215. package/dist/esm/six-sidebar.entry.js +171 -171
  216. package/dist/esm/six-spinner.entry.js +16 -16
  217. package/dist/esm/six-switch.entry.js +100 -100
  218. package/dist/esm/six-tab-group.entry.js +226 -226
  219. package/dist/esm/six-tab-panel.entry.js +17 -17
  220. package/dist/esm/six-tab.entry.js +42 -42
  221. package/dist/esm/six-table-cell_4.entry.js +70 -70
  222. package/dist/esm/six-table.entry.js +145 -145
  223. package/dist/esm/six-tag.entry.js +40 -40
  224. package/dist/esm/six-textarea.entry.js +211 -211
  225. package/dist/esm/six-tile.entry.js +89 -89
  226. package/dist/esm/six-timepicker.entry.js +489 -489
  227. package/dist/esm/{six-timepicker.types-cd6bac03.js → six-timepicker.types-e161a447.js} +43 -43
  228. package/dist/esm/six-tooltip.entry.js +172 -172
  229. package/dist/esm/{slot-5253e199.js → slot-6f3984c7.js} +42 -42
  230. package/dist/esm/{types-a37c1695.js → types-4b10b413.js} +12 -12
  231. package/dist/esm/{types-33d15673.js → types-ed860f7c.js} +12 -12
  232. package/dist/types/components/six-alert/six-alert.d.ts +60 -60
  233. package/dist/types/components/six-avatar/six-avatar.d.ts +27 -27
  234. package/dist/types/components/six-badge/six-badge.d.ts +20 -20
  235. package/dist/types/components/six-button/six-button.d.ts +69 -69
  236. package/dist/types/components/six-card/six-card.d.ts +9 -9
  237. package/dist/types/components/six-checkbox/six-checkbox.d.ts +86 -86
  238. package/dist/types/components/six-datepicker/components/day-selection.d.ts +5 -5
  239. package/dist/types/components/six-datepicker/components/month-selection.d.ts +5 -5
  240. package/dist/types/components/six-datepicker/components/year-selection.d.ts +5 -5
  241. package/dist/types/components/six-datepicker/six-date-formats.d.ts +22 -22
  242. package/dist/types/components/six-datepicker/six-datepicker.d.ts +214 -214
  243. package/dist/types/components/six-datepicker/test/six-datepicker.test-helpers.d.ts +1 -1
  244. package/dist/types/components/six-details/six-details.d.ts +61 -61
  245. package/dist/types/components/six-dialog/six-dialog.d.ts +75 -75
  246. package/dist/types/components/six-drawer/six-drawer.d.ts +82 -82
  247. package/dist/types/components/six-dropdown/six-dropdown.d.ts +140 -140
  248. package/dist/types/components/six-error-page/six-error-page.d.ts +27 -27
  249. package/dist/types/components/six-file-list/six-file-list.d.ts +8 -8
  250. package/dist/types/components/six-file-list-item/six-file-list-item.d.ts +35 -35
  251. package/dist/types/components/six-file-upload/six-file-upload.d.ts +42 -42
  252. package/dist/types/components/six-footer/six-footer.d.ts +9 -9
  253. package/dist/types/components/six-form/six-form.d.ts +69 -69
  254. package/dist/types/components/six-group-label/six-group-label.d.ts +37 -37
  255. package/dist/types/components/six-header/six-header.d.ts +90 -90
  256. package/dist/types/components/six-icon/six-icon.d.ts +13 -13
  257. package/dist/types/components/six-icon-button/six-icon-button.d.ts +28 -28
  258. package/dist/types/components/six-input/six-input.d.ts +165 -165
  259. package/dist/types/components/six-item-picker/six-item-picker.d.ts +106 -106
  260. package/dist/types/components/six-item-picker/types.d.ts +11 -11
  261. package/dist/types/components/six-language-switcher/six-language-switcher.d.ts +25 -25
  262. package/dist/types/components/six-layout-grid/six-layout-grid.d.ts +14 -14
  263. package/dist/types/components/six-main-container/six-main-container.d.ts +16 -16
  264. package/dist/types/components/six-menu/six-menu.d.ts +81 -81
  265. package/dist/types/components/six-menu-divider/six-menu-divider.d.ts +11 -11
  266. package/dist/types/components/six-menu-item/six-menu-item.d.ts +36 -36
  267. package/dist/types/components/six-menu-label/six-menu-label.d.ts +13 -13
  268. package/dist/types/components/six-picto/six-picto.d.ts +14 -14
  269. package/dist/types/components/six-progress-bar/six-progress-bar.d.ts +19 -19
  270. package/dist/types/components/six-progress-ring/six-progress-ring.d.ts +24 -24
  271. package/dist/types/components/six-radio/six-radio.d.ts +66 -66
  272. package/dist/types/components/six-range/six-range.d.ts +101 -101
  273. package/dist/types/components/six-root/six-root.d.ts +34 -34
  274. package/dist/types/components/six-search-field/six-search-field.d.ts +32 -32
  275. package/dist/types/components/six-select/six-select.d.ts +163 -163
  276. package/dist/types/components/six-sidebar/six-sidebar.d.ts +55 -55
  277. package/dist/types/components/six-sidebar-item/six-sidebar-item.d.ts +15 -15
  278. package/dist/types/components/six-sidebar-item-group/six-sidebar-item-group.d.ts +26 -26
  279. package/dist/types/components/six-spinner/six-spinner.d.ts +15 -15
  280. package/dist/types/components/six-stage-indicator/six-stage-indicator.d.ts +6 -6
  281. package/dist/types/components/six-switch/six-switch.d.ts +62 -62
  282. package/dist/types/components/six-tab/six-tab.d.ts +35 -35
  283. package/dist/types/components/six-tab-group/six-tab-group.d.ts +62 -62
  284. package/dist/types/components/six-tab-panel/six-tab-panel.d.ts +19 -19
  285. package/dist/types/components/six-table/six-table.d.ts +30 -30
  286. package/dist/types/components/six-table/test/helpers.d.ts +2 -2
  287. package/dist/types/components/six-table/types.d.ts +33 -33
  288. package/dist/types/components/six-table/util/filter-by.d.ts +2 -2
  289. package/dist/types/components/six-table/util/from-data.d.ts +8 -8
  290. package/dist/types/components/six-table/util/is.d.ts +3 -3
  291. package/dist/types/components/six-table/util/quick-filter-by.d.ts +2 -2
  292. package/dist/types/components/six-table/util/sort-by.d.ts +2 -2
  293. package/dist/types/components/six-table-cell/six-table-cell.d.ts +9 -9
  294. package/dist/types/components/six-table-header/six-table-header.d.ts +9 -9
  295. package/dist/types/components/six-table-header-cell/get-next-state.d.ts +2 -2
  296. package/dist/types/components/six-table-header-cell/icons.d.ts +3 -3
  297. package/dist/types/components/six-table-header-cell/six-table-header-cell.d.ts +32 -32
  298. package/dist/types/components/six-table-header-cell/types.d.ts +11 -11
  299. package/dist/types/components/six-table-header-cell/util/create-model.d.ts +4 -4
  300. package/dist/types/components/six-table-header-cell/util/get-next-state.d.ts +3 -3
  301. package/dist/types/components/six-table-row/six-table-row.d.ts +9 -9
  302. package/dist/types/components/six-tag/six-tag.d.ts +30 -30
  303. package/dist/types/components/six-textarea/six-textarea.d.ts +134 -134
  304. package/dist/types/components/six-tile/six-tile.d.ts +40 -40
  305. package/dist/types/components/six-timepicker/six-time-format.d.ts +13 -13
  306. package/dist/types/components/six-timepicker/six-timepicker.d.ts +184 -184
  307. package/dist/types/components/six-timepicker/six-timepicker.types.d.ts +36 -36
  308. package/dist/types/components/six-tooltip/six-tooltip.d.ts +72 -72
  309. package/dist/types/functional-components/form-control/form-control.d.ts +34 -34
  310. package/dist/types/index.d.ts +1 -1
  311. package/dist/types/testUtil/delay.d.ts +1 -1
  312. package/dist/types/utils/as-array.d.ts +1 -1
  313. package/dist/types/utils/date-util.d.ts +194 -194
  314. package/dist/types/utils/event-listeners.d.ts +15 -15
  315. package/dist/types/utils/execution-control.d.ts +26 -26
  316. package/dist/types/utils/focus-visible.d.ts +6 -6
  317. package/dist/types/utils/matchers.d.ts +2 -2
  318. package/dist/types/utils/modal.d.ts +13 -13
  319. package/dist/types/utils/offset.d.ts +4 -4
  320. package/dist/types/utils/popover.d.ts +27 -27
  321. package/dist/types/utils/scroll.d.ts +3 -3
  322. package/dist/types/utils/slot.d.ts +9 -9
  323. package/dist/types/utils/support.d.ts +1 -1
  324. package/dist/types/utils/tabbable.d.ts +2 -2
  325. package/dist/types/utils/testing.d.ts +2 -2
  326. package/dist/types/utils/time.util.d.ts +10 -10
  327. package/dist/types/utils/type-check.d.ts +4 -4
  328. package/dist/types/utils/types.d.ts +4 -4
  329. package/dist/types/wrappers/set-attributes/set-attributes.d.ts +9 -9
  330. package/dist/ui-library/{p-a8c225f2.entry.js → p-007bc8e8.entry.js} +1 -1
  331. package/dist/ui-library/{p-f9c0cfb7.entry.js → p-044b784e.entry.js} +1 -1
  332. package/dist/ui-library/{p-c733dead.js → p-0786fa7c.js} +0 -0
  333. package/dist/ui-library/{p-12cc24c3.js → p-07d1e830.js} +0 -0
  334. package/dist/ui-library/{p-48ea4419.entry.js → p-09cb13fa.entry.js} +1 -1
  335. package/dist/ui-library/{p-e96dcf96.entry.js → p-0c596054.entry.js} +1 -1
  336. package/dist/ui-library/{p-a77a6442.entry.js → p-1b8dc7b7.entry.js} +1 -1
  337. package/dist/ui-library/{p-68d31736.js → p-25a3bf57.js} +0 -0
  338. package/dist/ui-library/{p-ebaea182.entry.js → p-281e8c2d.entry.js} +1 -1
  339. package/dist/ui-library/{p-9f2dc381.entry.js → p-2924f82f.entry.js} +1 -1
  340. package/dist/ui-library/{p-ea1fcff2.entry.js → p-2d7ed407.entry.js} +1 -1
  341. package/dist/ui-library/{p-89f68e76.entry.js → p-4162dcdd.entry.js} +1 -1
  342. package/dist/ui-library/{p-6f67f986.entry.js → p-4d3a4e93.entry.js} +1 -1
  343. package/dist/ui-library/{p-8bd0873f.entry.js → p-4ed023b8.entry.js} +1 -1
  344. package/dist/ui-library/{p-af3d757c.js → p-4f8394d7.js} +0 -0
  345. package/dist/ui-library/{p-1b92cc7a.entry.js → p-530ea6ec.entry.js} +1 -1
  346. package/dist/ui-library/{p-19543c96.entry.js → p-531ab886.entry.js} +1 -1
  347. package/dist/ui-library/{p-fdb455d7.entry.js → p-54c48654.entry.js} +1 -1
  348. package/dist/ui-library/{p-c948d3db.entry.js → p-55c64cbc.entry.js} +1 -1
  349. package/dist/ui-library/{p-1c9f0dc6.js → p-5f1c6a5f.js} +0 -0
  350. package/dist/ui-library/{p-60491176.entry.js → p-675a8243.entry.js} +1 -1
  351. package/dist/ui-library/{p-b9fb8455.entry.js → p-6d622ed0.entry.js} +1 -1
  352. package/dist/ui-library/{p-572e3690.js → p-75297ad7.js} +0 -0
  353. package/dist/ui-library/{p-2ff97cdf.entry.js → p-90b26447.entry.js} +1 -1
  354. package/dist/ui-library/{p-fcd2356c.entry.js → p-93945629.entry.js} +1 -1
  355. package/dist/ui-library/{p-7735d99f.js → p-9a860acc.js} +0 -0
  356. package/dist/ui-library/{p-4cc01afc.entry.js → p-aa37e45a.entry.js} +1 -1
  357. package/dist/ui-library/{p-191f958b.js → p-b1e66136.js} +0 -0
  358. package/dist/ui-library/{p-c09dc3a9.js → p-b4dfb7cf.js} +0 -0
  359. package/dist/ui-library/{p-968c5169.entry.js → p-c24292b3.entry.js} +1 -1
  360. package/dist/ui-library/{p-ed21cc57.entry.js → p-cd79de73.entry.js} +1 -1
  361. package/dist/ui-library/{p-34e6d8e8.js → p-d12c6092.js} +0 -0
  362. package/dist/ui-library/{p-f0e91e17.entry.js → p-d28ac80a.entry.js} +1 -1
  363. package/dist/ui-library/{p-5ead7b2f.entry.js → p-d837e5a8.entry.js} +1 -1
  364. package/dist/ui-library/{p-ec1ecc2a.entry.js → p-dd3cae68.entry.js} +1 -1
  365. package/dist/ui-library/{p-044c6bf9.js → p-eb8f05a9.js} +0 -0
  366. package/dist/ui-library/ui-library.esm.js +1 -1
  367. package/package.json +1 -1
@@ -3,456 +3,456 @@
3
3
  Object.defineProperty(exports, '__esModule', { value: true });
4
4
 
5
5
  const index = require('./index-341df120.js');
6
- const slot = require('./slot-8abe833c.js');
7
- const formControl = require('./form-control-9e4dffd1.js');
8
- const eventListeners = require('./event-listeners-4a8d66d5.js');
9
- const executionControl = require('./execution-control-3bc9c7c4.js');
6
+ const slot = require('./slot-ad537f24.js');
7
+ const formControl = require('./form-control-866bbece.js');
8
+ const eventListeners = require('./event-listeners-74715e62.js');
9
+ const executionControl = require('./execution-control-46f388e0.js');
10
10
 
11
11
  const sixSelectCss = ":host{position:relative;box-sizing:border-box}:host *,:host *:before,:host *:after{box-sizing:inherit}.form-control .form-control__label{display:none}.form-control .form-control__help-text{display:none}.form-control .form-control__error-text{display:none}.form-control--has-label .form-control__label{display:inline-block;color:var(--six-input-label-color);font-weight:var(--six-font-weight-bold);margin-bottom:var(--six-spacing-x-small)}.form-control--has-label .form-control__label__required::after{color:var(--six-color-danger-800);content:\"*\"}.form-control--has-label.form-control--small .form-control__label{font-size:var(--six-input-label-font-size-small)}.form-control--has-label.form-control--medium .form-control__label{font-size:var(--six-input-label-font-size-medium)}.form-control--has-label.form-control--large .form-control_label{font-size:var(--six-input-label-font-size-large)}.form-control--has-help-text .form-control__help-text{display:block;color:var(--six-input-help-text-color);margin-top:var(--six-spacing-x-small)}.form-control--has-help-text .form-control__help-text ::slotted(*){margin-top:var(--six-spacing-xxx-small)}.form-control--has-help-text.form-control--small .form-control__help-text{font-size:var(--six-input-help-text-font-size-small)}.form-control--has-help-text.form-control--medium .form-control__help-text{font-size:var(--six-input-help-text-font-size-medium)}.form-control--has-help-text.form-control--large .form-control__help-text{font-size:var(--six-input-help-text-font-size-large)}.form-control--has-error-text .form-control__error-text{display:block;color:var(--six-color-danger-800);margin-top:var(--six-spacing-xxx-small)}.form-control--has-error-text .form-control__error-text ::slotted(*){margin-top:var(--six-spacing-xxx-small)}.form-control--has-error-text.form-control--small .form-control__error-text{font-size:var(--six-input-help-text-font-size-small)}.form-control--has-error-text.form-control--medium .form-control__error-text{font-size:var(--six-input-help-text-font-size-medium)}.form-control--has-error-text.form-control--large .form-control__error-text{font-size:var(--six-input-help-text-font-size-large)}.form-control--disabled .form-control__help-text{color:var(--six-input-help-text-color-disabled)}.form-control--disabled .form-control__label{color:var(--six-input-label-color-disabled)}.form-control--invalid:not(.form-control--disabled) .form-control__label{color:var(--six-input-label-color)}:host{display:block}.select{display:block}.select__box{display:inline-flex;align-items:center;justify-content:start;position:relative;width:100%;font-family:var(--six-font-family);font-weight:var(--six-input-font-weight);font-size:var(--six-input-font-size-medium);letter-spacing:var(--six-input-letter-spacing);background-color:var(--six-input-background-color);border:solid var(--six-border-width) var(--six-input-border-color);vertical-align:middle;overflow:hidden;transition:var(--six-transition-fast) color, var(--six-transition-fast) border, var(--six-transition-fast) box-shadow;cursor:pointer}.select__box--line{border:none;border-bottom:solid var(--six-border-width) var(--six-input-border-color)}.select__box--autocomplete{border:none;overflow:initial}.select:not(.select--disabled) .select__box:hover{background-color:var(--six-input-background-color-hover);color:var(--six-input-color-hover);border-bottom-color:var(--six-input-border-color-hover)}.select:not(.select--disabled) .select__box:hover:not(.select__box--line){border-color:var(--six-input-border-color-hover)}.select:not(.select--disabled) .select__box:focus{background-color:var(--six-input-background-color-focus);outline:none;color:var(--six-input-color-focus);border-bottom-color:var(--six-input-border-color-focus);box-shadow:0 1px 0 0 var(--six-input-border-color-focus)}.select:not(.select--disabled) .select__box:focus:not(.select__box--line){border-color:var(--six-input-border-color-focus);box-shadow:var(--six-input-focus-shadow)}.select--disabled .select__box{background-color:var(--six-input-background-color-disabled);color:var(--six-input-color-disabled);cursor:not-allowed;outline:none}.select--disabled .select__box:not(.select__box--line){border-color:var(--six-input-border-color-disabled)}.select--disabled .select__tags,.select--disabled .select__clear{pointer-events:none}.select--invalid:not(.select--disabled):not(.select--focused) .select__box{border-bottom-color:var(--six-input-border-color-danger)}.select--invalid:not(.select--disabled):not(.select--focused) .select__box:not(.input--line){border-color:var(--six-input-border-color-danger)}.select__label{flex-shrink:1;flex-grow:1;align-items:center;user-select:none;width:0;scrollbar-width:none;-ms-overflow-style:none;overflow-x:auto;overflow-y:hidden;white-space:nowrap}.select__label::-webkit-scrollbar{width:0;height:0}.select__clear{flex-shrink:0;flex-grow:0;display:inline}.select__icon{flex-shrink:0;flex-grow:0;display:inline;transition:var(--six-transition-medium) transform ease}.select--open .select__icon{transform:rotate(-180deg)}.select--placeholder-visible .select__label{color:var(--six-input-placeholder-color)}.select--disabled.select--placeholder-visible .select__label{color:var(--six-input-placeholder-color-disabled)}.select__tags{display:inline-flex;align-items:center;flex-wrap:wrap;justify-content:left;margin-left:var(--six-spacing-xx-small)}.select__hidden-select{clip:rect(0 0 0 0);clip-path:inset(50%);height:1px;overflow:hidden;position:absolute;white-space:nowrap;width:1px}.select__input{position:absolute;top:0;left:0;width:100%;height:100%}.select--small .select__box{border-radius:var(--six-input-border-radius-small);font-size:var(--six-input-font-size-small);min-height:var(--six-height-small)}.select--small .select__box--line{border:none;border-bottom:solid var(--six-border-width) var(--six-input-border-color)}.select--small .select__label{margin:0 var(--six-input-spacing-small)}.select--small .select__clear{margin-right:var(--six-spacing-xxx-small)}.select--small .select__icon{margin-right:var(--six-spacing-x-small)}.select--small .select__tags{padding-bottom:2px}.select--small .select__tags six-tag{padding-top:2px}.select--small .select__tags six-tag:not(:last-of-type){margin-right:var(--six-spacing-xx-small)}.select--small.select--has-tags .select__label{margin-left:0}.select--medium .select__box{border-radius:var(--six-input-border-radius-medium);font-size:var(--six-input-font-size-medium);min-height:var(--six-height-medium)}.select--medium .select__box--line{border:none;border-bottom:solid var(--six-border-width) var(--six-input-border-color)}.select--medium .select__label{margin:0 var(--six-input-spacing-medium)}.select--medium .select__clear{margin-right:var(--six-spacing-xxx-small)}.select--medium .select__icon{margin-right:var(--six-spacing-x-small)}.select--medium .select__tags{padding-bottom:3px}.select--medium .select__tags six-tag{padding-top:3px}.select--medium .select__tags six-tag:not(:last-of-type){margin-right:var(--six-spacing-xx-small)}.select--medium.select--has-tags .select__label{margin-left:0}.select--large .select__box{border-radius:var(--six-input-border-radius-large);font-size:var(--six-input-font-size-large);min-height:var(--six-height-large)}.select--large .select__box--line{border:none;border-bottom:solid var(--six-border-width) var(--six-input-border-color)}.select--large .select__label{margin:0 var(--six-input-spacing-large)}.select--large .select__clear{margin-right:var(--six-spacing-xxx-small)}.select--large .select__icon{margin-right:var(--six-spacing-x-small)}.select--large .select__tags{padding-bottom:4px}.select--large .select__tags six-tag{padding-top:4px}.select--large .select__tags six-tag:not(:last-of-type){margin-right:var(--six-spacing-xx-small)}.select--large.select--has-tags .select__label{margin-left:0}.select--pill.select--small .select__box{border-radius:var(--six-height-small)}.select--pill.select--medium .select__box{border-radius:var(--six-height-medium)}.select--pill.select--large .select__box{border-radius:var(--six-height-large)}.select__menu{max-width:50vw;width:fit-content}.select__menu--filtered{width:100% !important}.select__menu--hidden{display:none}six-icon-button::part(base){padding-top:0;padding-bottom:0}";
12
12
 
13
- let id = 0;
14
- let SixSelect = class {
15
- constructor(hostRef) {
16
- index.registerInstance(this, hostRef);
17
- this.sixChange = index.createEvent(this, "six-select-change", 7);
18
- this.sixFocus = index.createEvent(this, "six-select-focus", 7);
19
- this.sixBlur = index.createEvent(this, "six-select-blur", 7);
20
- this.inputId = `select-${++id}`;
21
- this.labelId = `select-label-${id}`;
22
- this.helpTextId = `select-help-text-${id}`;
23
- this.errorTextId = `select-error-text-${id}`;
24
- this.customErrorText = '';
25
- this.customValidation = false;
26
- this.eventListeners = new eventListeners.EventListeners();
27
- this.hasFocus = false;
28
- this.hasHelpTextSlot = false;
29
- this.hasErrorTextSlot = false;
30
- this.hasLabelSlot = false;
31
- this.isOpen = false;
32
- this.displayLabel = '';
33
- this.displayTags = [];
34
- /** Set to true to enable multiselect. */
35
- this.multiple = false;
36
- /**
37
- * The maximum number of tags to show when `multiple` is true. After the maximum, "+n" will be shown to indicate the
38
- * number of additional items that are selected. Set to -1 to remove the limit.
39
- */
40
- this.maxTagsVisible = 3;
41
- /** Set to true to disable the select control. */
42
- this.disabled = false;
43
- /** The select's name. */
44
- this.name = '';
45
- /** The select's placeholder text. */
46
- this.placeholder = '';
47
- /** The debounce for the filter callbacks. */
48
- this.filterDebounce = executionControl.DEFAULT_DEBOUNCE_FAST;
49
- /** The select's size. */
50
- this.size = 'medium';
51
- /**
52
- * Enable this option to prevent the panel from being clipped when the component is placed inside a container with
53
- * `overflow: auto|scroll`.
54
- */
55
- this.hoist = false;
56
- /** The value of the control. This will be a string or an array depending on `multiple`. */
57
- this.value = '';
58
- /** Set to true to draw a pill-style select with rounded edges. */
59
- this.pill = false;
60
- /** The select's label. Alternatively, you can use the label slot. */
61
- this.label = '';
62
- /** The select's help text. Alternatively, you can use the help-text slot. */
63
- this.helpText = '';
64
- /** The select's error text. Alternatively, you can use the error-text slot. */
65
- this.errorText = '';
66
- /** The select's required attribute. */
67
- this.required = false;
68
- /** Set to true to add a clear button when the select is populated. */
69
- this.clearable = false;
70
- /** This will be true when the control is in an invalid state. Validity is determined by the `required` prop. */
71
- this.invalid = false;
72
- /** Set to render as line */
73
- this.line = false;
74
- /** Set to display the error text on blur and not when typing */
75
- this.errorOnBlur = false;
76
- /** Set to true to allow filtering for entries in the dropdown */
77
- this.filter = false;
78
- /**
79
- * Set to true to allow async filtering.
80
- * When you enter something in the search field the component will only emit an event but not filter any elements itself.
81
- * You can then simply listen to the 'six-async-filter-fired' event to manage the shown menu-items yourself
82
- */
83
- this.asyncFilter = false;
84
- /**
85
- * Set to true to turn the six-select into an autocomplete.
86
- */
87
- this.autocomplete = false;
88
- /** The debounce for when the input changes for autocompletes should be emitted */
89
- this.inputDebounce = executionControl.DEFAULT_DEBOUNCE_FAST;
90
- /** Set the options to be shown in the dropdown (alternative to setting the elements via html) */
91
- this.options = null;
92
- /** Defines whether the menu list will be rendered virtually i.e. only the elements actually shown (and a couple around)
93
- * are actually rendered in the DOM. If you use virtual scrolling pass the elements via prop instead of via slot. */
94
- this.virtualScroll = false;
95
- /** The default value the select will be reverted to when reset is executed */
96
- this.defaultValue = null;
97
- }
98
- handleDisabledChange() {
99
- if (this.disabled && this.isOpen) {
100
- this.dropdown.hide();
101
- }
102
- }
103
- handleLabelChange() {
104
- this.handleSlotChange();
105
- }
106
- handleMultipleChange() {
107
- // Cast to array | string based on `this.multiple`
108
- const value = this.getValueAsArray();
109
- this.value = this.multiple ? value : value[0] || '';
110
- this.syncItemsFromValue();
111
- }
112
- handleValueChange() {
113
- this.syncItemsFromValue();
114
- if (this.input) {
115
- this.sixChange.emit({ value: this.value, isSelected: true });
116
- }
117
- }
118
- connectedCallback() {
119
- if (this.virtualScroll && this.options === null) {
120
- console.error('Options must be defined when using virtual scrolling');
121
- }
122
- this.handleBlur = this.handleBlur.bind(this);
123
- this.handleFocus = this.handleFocus.bind(this);
124
- this.handleClearClick = this.handleClearClick.bind(this);
125
- this.handleKeyDown = this.handleKeyDown.bind(this);
126
- this.handleSelectAll = this.handleSelectAll.bind(this);
127
- this.handleLabelClick = this.handleLabelClick.bind(this);
128
- this.handleMenuHide = this.handleMenuHide.bind(this);
129
- this.handleMenuShow = this.handleMenuShow.bind(this);
130
- this.handleMenuSelect = this.handleMenuSelect.bind(this);
131
- this.handleSlotChange = this.handleSlotChange.bind(this);
132
- this.handleInvalid = this.handleInvalid.bind(this);
133
- this.handleTagInteraction = this.handleTagInteraction.bind(this);
134
- this.host.shadowRoot.addEventListener('slotchange', this.handleSlotChange);
135
- }
136
- componentWillLoad() {
137
- this.handleSlotChange();
138
- if (this.multiple && this.value) {
139
- this.value = this.getValueAsArray();
140
- }
141
- }
142
- componentDidLoad() {
143
- this.resizeObserver = new ResizeObserver(() => this.resizeMenu());
144
- // We need to do an initial sync after the component has rendered, so this will suppress the re-render warning
145
- requestAnimationFrame(() => this.syncItemsFromValue());
146
- this.eventListeners.add(this.input, 'invalid', async (event) => {
147
- if (this.customValidation || (!this.hasErrorTextSlot && !this.errorText && !this.customErrorText)) {
148
- this.customErrorText = await this.input.getValidationMessage();
149
- }
150
- event.preventDefault();
151
- });
152
- this.eventListeners.add(this.input, 'six-input-input', executionControl.debounce((event) => {
153
- const enteredValue = this.input.value;
154
- this.clearValues();
155
- this.sixChange.emit({ value: enteredValue, isSelected: false });
156
- event.stopPropagation();
157
- }, this.inputDebounce));
158
- this.input.value = this.hasSelection() ? this.displayLabel : '';
159
- }
160
- disconnectedCallback() {
161
- this.host.shadowRoot.removeEventListener('slotchange', this.handleSlotChange);
162
- this.eventListeners.removeAll();
163
- }
164
- /** Checks for validity and shows the browser's validation message if the control is invalid. */
165
- async reportValidity() {
166
- return this.input.reportValidity();
167
- }
168
- /** Checks for validity. */
169
- async checkValidity() {
170
- return this.input.isValid();
171
- }
172
- /** Sets a custom validation message. If `message` is not empty, the field will be considered invalid. */
173
- async setCustomValidity(message) {
174
- this.customErrorText = '';
175
- this.customValidation = message !== '';
176
- this.input.setCustomValidity(message);
177
- this.invalid = !this.input.checkValidity();
178
- }
179
- /** Resets the formcontrol */
180
- async reset() {
181
- this.value = this.defaultValue;
182
- this.customErrorText = '';
183
- this.customValidation = false;
184
- this.input.setCustomValidity('');
185
- this.invalid = false;
186
- }
187
- getItemLabel(item) {
188
- const slot$1 = item.shadowRoot.querySelector('slot:not([name])');
189
- if (slot$1) {
190
- return slot.getTextContent(slot$1);
191
- }
192
- else {
193
- // bugfix/COMSLI-203-six-select-value-is-not-updated-if-the-slot-is-changed
194
- return item.textContent;
195
- }
196
- }
197
- getItems() {
198
- if (this.options !== null) {
199
- return this.options.map((option) => index.h("six-menu-item", { value: option.value }, option.label));
200
- }
201
- return [...this.host.querySelectorAll('six-menu-item')];
202
- }
203
- hasMenuItems() {
204
- return this.getItems().length > 0;
205
- }
206
- getValueAsArray() {
207
- const values = Array.isArray(this.value) ? this.value : [this.value];
208
- // enforce that the values are converted to 'string' before the value is compared
209
- return values.map(String);
210
- }
211
- handleBlur() {
212
- this.hasFocus = false;
213
- this.sixBlur.emit();
214
- }
215
- handleFocus() {
216
- this.hasFocus = true;
217
- this.sixFocus.emit();
218
- }
219
- handleInvalid() {
220
- this.invalid = true;
221
- }
222
- handleClearClick(event) {
223
- event.stopPropagation();
224
- this.clearValues();
225
- }
226
- clearValues() {
227
- var _a;
228
- this.value = (_a = this.defaultValue) !== null && _a !== void 0 ? _a : (this.multiple ? [] : '');
229
- this.syncItemsFromValue();
230
- }
231
- handleSelectAll(event) {
232
- const nonFilteredItems = this.getItems().filter((item) => item.style.display !== 'none');
233
- const keyName = event.key;
234
- const keyCode = event.code;
235
- if (keyName === 'Control') {
236
- return;
237
- }
238
- if (this.isOpen && this.multiple && keyCode === 'KeyA' && event.ctrlKey) {
239
- event.preventDefault();
240
- const hasDeselectedOptions = nonFilteredItems.some((opt) => !opt.disabled && !opt.checked);
241
- nonFilteredItems
242
- .filter((option) => !option.disabled)
243
- .forEach((option) => (option.checked = hasDeselectedOptions));
244
- const checkedItems = nonFilteredItems.filter((option) => option.checked).map((option) => option.value);
245
- this.value = hasDeselectedOptions ? checkedItems : [];
246
- }
247
- }
248
- handleKeyDown(event) {
249
- const target = event.target;
250
- const items = this.getItems();
251
- const firstItem = items[0];
252
- const lastItem = items[items.length - 1];
253
- // Ignore key presses on tags
254
- if (target.tagName.toLowerCase() === 'six-tag') {
255
- return;
256
- }
257
- // Tabbing out of the control closes it
258
- if (event.key === 'Tab') {
259
- if (this.isOpen) {
260
- this.dropdown.hide();
261
- }
262
- return;
263
- }
264
- // Up/down opens the menu
265
- if (['ArrowDown', 'ArrowUp'].includes(event.key)) {
266
- event.preventDefault();
267
- // Show the menu if it's not already open
268
- if (!this.isOpen) {
269
- this.dropdown.show();
270
- }
271
- // Focus on a menu item
272
- if (event.key === 'ArrowDown' && firstItem) {
273
- firstItem.setFocus();
274
- return;
275
- }
276
- if (event.key === 'ArrowUp' && lastItem) {
277
- lastItem.setFocus();
278
- return;
279
- }
280
- }
281
- // All other keys open the menu and initiate type to select
282
- if (!this.isOpen) {
283
- event.stopPropagation();
284
- event.preventDefault();
285
- this.dropdown.show();
286
- this.menu.typeToSelect(event.key);
287
- }
288
- }
289
- handleLabelClick() {
290
- this.box.focus();
291
- }
292
- handleMenuSelect(event) {
293
- const item = event.detail.item;
294
- const getValue = () => {
295
- if (this.multiple) {
296
- return this.value.includes(item.value)
297
- ? this.value.filter((v) => v !== item.value)
298
- : [...this.value, item.value];
299
- }
300
- else {
301
- return item.value;
302
- }
303
- };
304
- this.value = getValue();
305
- this.syncItemsFromValue();
306
- }
307
- handleMenuShow(event) {
308
- if (this.disabled) {
309
- event.preventDefault();
310
- return;
311
- }
312
- this.resizeMenu();
313
- this.resizeObserver.observe(this.host);
314
- this.isOpen = true;
315
- }
316
- handleMenuHide() {
317
- this.resizeObserver.unobserve(this.host);
318
- this.isOpen = false;
319
- }
320
- handleSlotChange() {
321
- this.hasHelpTextSlot = slot.hasSlot(this.host, 'help-text');
322
- this.hasErrorTextSlot = slot.hasSlot(this.host, 'error-text');
323
- this.hasLabelSlot = slot.hasSlot(this.host, 'label');
324
- this.syncItemsFromValue();
325
- }
326
- handleTagInteraction(event) {
327
- // Don't toggle the menu when a tag's clear button is activated
328
- const path = event.composedPath();
329
- const clearButton = path.find((el) => {
330
- if (el instanceof HTMLElement) {
331
- const element = el;
332
- return element.classList.contains('tag__clear');
333
- }
334
- });
335
- if (clearButton) {
336
- event.stopPropagation();
337
- }
338
- }
339
- resizeMenu() {
340
- this.menu.style.minWidth = `${this.box.clientWidth}px`;
341
- if (this.dropdown) {
342
- this.dropdown.reposition();
343
- }
344
- }
345
- syncItemsFromValue() {
346
- const items = this.getItems();
347
- const value = this.getValueAsArray();
348
- // Sync checked states
349
- items.forEach((item) => (item.checked = value.includes(item.value)));
350
- // Sync display label
351
- if (this.multiple) {
352
- const checkedItems = [];
353
- value.forEach((val) => items.map((item) => (item.value === val ? checkedItems.push(item) : null)));
354
- this.displayTags = checkedItems.map((item) => {
355
- return (index.h("six-tag", { exportparts: "base:tag", type: "primary", size: this.size, pill: this.pill, clearable: true, onClick: this.handleTagInteraction, onKeyDown: this.handleTagInteraction, "onSix-tag-clear": (event) => {
356
- event.stopPropagation();
357
- if (!this.disabled) {
358
- item.checked = false;
359
- this.syncValueFromItems();
360
- }
361
- } }, this.getItemLabel(item)));
362
- });
363
- if (this.maxTagsVisible > 0 && this.displayTags.length > this.maxTagsVisible) {
364
- const total = this.displayTags.length;
365
- this.displayLabel = '';
366
- this.displayTags = this.displayTags.slice(0, this.maxTagsVisible);
367
- this.displayTags.push(index.h("six-tag", { exportparts: "base:tag", type: "info", size: this.size }, "+", total - this.maxTagsVisible));
368
- }
369
- }
370
- else {
371
- this.displayLabel = this.extractLabelForSelectedItem(value, items);
372
- this.displayTags = [];
373
- }
374
- const hasSelection = this.hasSelection();
375
- if (hasSelection) {
376
- this.touched = true;
377
- }
378
- if (this.input && this.touched) {
379
- if (!this.autocomplete) {
380
- this.input.value = hasSelection ? this.displayLabel : '';
381
- }
382
- else if (hasSelection) {
383
- this.input.value = Array.isArray(this.value) ? this.value.join(',') : this.value;
384
- }
385
- this.invalid = !this.input.checkValidity();
386
- }
387
- }
388
- extractLabelForSelectedItem(value, items) {
389
- if (value.length === 0 || (value.length === 1 && value[0] === '')) {
390
- return '';
391
- }
392
- if (this.options !== null) {
393
- const selectedOption = this.options.find((item) => item.value === value[0]);
394
- return (selectedOption === null || selectedOption === void 0 ? void 0 : selectedOption.value) || '';
395
- }
396
- const checkedItem = items.find((item) => item.value === value[0]);
397
- return checkedItem ? this.getItemLabel(checkedItem) : '';
398
- }
399
- syncValueFromItems() {
400
- const items = this.getItems();
401
- const checkedItems = items.filter((item) => item.checked);
402
- const checkedValues = checkedItems.map((item) => item.value);
403
- this.value = this.multiple
404
- ? this.getValueAsArray().filter((val) => checkedValues.includes(val))
405
- : checkedValues.length > 0
406
- ? checkedValues[0]
407
- : '';
408
- }
409
- displayError() {
410
- return this.invalid && (!this.errorOnBlur || (!this.hasFocus && !this.isOpen));
411
- }
412
- render() {
413
- var _a;
414
- const hasSelection = this.hasSelection();
415
- return (index.h(formControl.FormControl, { inputId: this.inputId, label: this.label, labelId: this.labelId, hasLabelSlot: this.hasLabelSlot, helpTextId: this.helpTextId, helpText: this.helpText, hasHelpTextSlot: this.hasHelpTextSlot, errorTextId: this.errorTextId, errorText: this.customErrorText ? this.customErrorText : this.errorText, hasErrorTextSlot: this.hasErrorTextSlot, size: this.size, onLabelClick: this.handleLabelClick, disabled: this.disabled, required: this.required, displayError: this.displayError() }, index.h("six-dropdown", { part: "base", ref: (el) => (this.dropdown = el), hoist: this.hoist, closeOnSelect: !this.multiple, containingElement: this.host, disableHideOnEnterAndSpace: this.autocomplete, class: {
416
- select: true,
417
- 'select--open': this.isOpen,
418
- 'select--empty': ((_a = this.value) === null || _a === void 0 ? void 0 : _a.length) === 0,
419
- 'select--focused': this.hasFocus,
420
- 'select--clearable': this.clearable,
421
- 'select--disabled': this.disabled,
422
- 'select--multiple': this.multiple,
423
- 'select--has-tags': this.multiple && hasSelection,
424
- 'select--placeholder-visible': this.displayLabel === '',
425
- 'select--small': this.size === 'small',
426
- 'select--medium': this.size === 'medium',
427
- 'select--large': this.size === 'large',
428
- 'select--pill': this.pill,
429
- 'select--invalid': this.invalid,
430
- }, onKeyDown: this.handleSelectAll, "onSix-dropdown-show": this.handleMenuShow, "onSix-dropdown-hide": this.handleMenuHide, filterPlaceholder: this.filterPlaceholder, filterDebounce: this.filterDebounce, filter: this.filter, asyncFilter: this.asyncFilter }, index.h("div", { slot: "trigger", ref: (el) => (this.box = el), id: this.inputId, class: {
431
- select__box: true,
432
- 'select__box--line': this.line,
433
- 'select__box--autocomplete': this.autocomplete,
434
- }, role: "combobox", "aria-labelledby": this.labelId, "aria-describedby": this.helpTextId, "aria-haspopup": "true", "aria-expanded": this.isOpen ? 'true' : 'false', tabIndex: this.disabled ? -1 : 0, onBlur: this.handleBlur, onFocus: this.handleFocus, onKeyDown: this.handleKeyDown }, index.h("span", { class: "select__label" }, this.displayTags.length ? (index.h("span", { part: "tags", class: "select__tags" }, this.displayTags)) : (this.displayLabel || this.placeholder)), this.clearable && hasSelection && (index.h("six-icon-button", { exportparts: "base:clear-button", class: "select__clear", name: "clear", size: "small", onClick: this.handleClearClick, tabindex: "-1" })), this.hasMenuItems() && (index.h("span", { part: "icon", class: "select__icon" }, index.h("six-icon", { size: "medium" }, "expand_more"))), index.h("six-input", { ref: (el) => (this.input = el), class: {
435
- select__input: true,
436
- 'select__hidden-select': !this.autocomplete,
437
- }, "aria-hidden": "true", required: this.required, onInvalid: this.handleInvalid, onFocus: this.handleFocus, clearable: this.clearable, placeholder: this.placeholder, pill: this.pill, disabled: this.disabled, size: this.size, tabIndex: -1 })), index.h("six-menu", { ref: (el) => (this.menu = el), part: "menu", class: {
438
- select__menu: true,
439
- 'select__menu--filtered': this.filter || this.asyncFilter,
440
- 'select__menu--hidden': !this.hasMenuItems(),
441
- }, "onSix-menu-item-selected": this.handleMenuSelect, items: this.options, virtualScroll: this.virtualScroll, "remove-box-shadow": true }, index.h("slot", { onSlotchange: this.handleSlotChange })))));
442
- }
443
- hasSelection() {
444
- return this.multiple ? this.value.length > 0 : this.value !== '';
445
- }
446
- get host() { return index.getElement(this); }
447
- static get watchers() { return {
448
- "disabled": ["handleDisabledChange"],
449
- "helpText": ["handleLabelChange"],
450
- "errorText": ["handleLabelChange"],
451
- "label": ["handleLabelChange"],
452
- "multiple": ["handleMultipleChange"],
453
- "value": ["handleValueChange"]
454
- }; }
455
- };
13
+ let id = 0;
14
+ let SixSelect = class {
15
+ constructor(hostRef) {
16
+ index.registerInstance(this, hostRef);
17
+ this.sixChange = index.createEvent(this, "six-select-change", 7);
18
+ this.sixFocus = index.createEvent(this, "six-select-focus", 7);
19
+ this.sixBlur = index.createEvent(this, "six-select-blur", 7);
20
+ this.inputId = `select-${++id}`;
21
+ this.labelId = `select-label-${id}`;
22
+ this.helpTextId = `select-help-text-${id}`;
23
+ this.errorTextId = `select-error-text-${id}`;
24
+ this.customErrorText = '';
25
+ this.customValidation = false;
26
+ this.eventListeners = new eventListeners.EventListeners();
27
+ this.hasFocus = false;
28
+ this.hasHelpTextSlot = false;
29
+ this.hasErrorTextSlot = false;
30
+ this.hasLabelSlot = false;
31
+ this.isOpen = false;
32
+ this.displayLabel = '';
33
+ this.displayTags = [];
34
+ /** Set to true to enable multiselect. */
35
+ this.multiple = false;
36
+ /**
37
+ * The maximum number of tags to show when `multiple` is true. After the maximum, "+n" will be shown to indicate the
38
+ * number of additional items that are selected. Set to -1 to remove the limit.
39
+ */
40
+ this.maxTagsVisible = 3;
41
+ /** Set to true to disable the select control. */
42
+ this.disabled = false;
43
+ /** The select's name. */
44
+ this.name = '';
45
+ /** The select's placeholder text. */
46
+ this.placeholder = '';
47
+ /** The debounce for the filter callbacks. */
48
+ this.filterDebounce = executionControl.DEFAULT_DEBOUNCE_FAST;
49
+ /** The select's size. */
50
+ this.size = 'medium';
51
+ /**
52
+ * Enable this option to prevent the panel from being clipped when the component is placed inside a container with
53
+ * `overflow: auto|scroll`.
54
+ */
55
+ this.hoist = false;
56
+ /** The value of the control. This will be a string or an array depending on `multiple`. */
57
+ this.value = '';
58
+ /** Set to true to draw a pill-style select with rounded edges. */
59
+ this.pill = false;
60
+ /** The select's label. Alternatively, you can use the label slot. */
61
+ this.label = '';
62
+ /** The select's help text. Alternatively, you can use the help-text slot. */
63
+ this.helpText = '';
64
+ /** The select's error text. Alternatively, you can use the error-text slot. */
65
+ this.errorText = '';
66
+ /** The select's required attribute. */
67
+ this.required = false;
68
+ /** Set to true to add a clear button when the select is populated. */
69
+ this.clearable = false;
70
+ /** This will be true when the control is in an invalid state. Validity is determined by the `required` prop. */
71
+ this.invalid = false;
72
+ /** Set to render as line */
73
+ this.line = false;
74
+ /** Set to display the error text on blur and not when typing */
75
+ this.errorOnBlur = false;
76
+ /** Set to true to allow filtering for entries in the dropdown */
77
+ this.filter = false;
78
+ /**
79
+ * Set to true to allow async filtering.
80
+ * When you enter something in the search field the component will only emit an event but not filter any elements itself.
81
+ * You can then simply listen to the 'six-async-filter-fired' event to manage the shown menu-items yourself
82
+ */
83
+ this.asyncFilter = false;
84
+ /**
85
+ * Set to true to turn the six-select into an autocomplete.
86
+ */
87
+ this.autocomplete = false;
88
+ /** The debounce for when the input changes for autocompletes should be emitted */
89
+ this.inputDebounce = executionControl.DEFAULT_DEBOUNCE_FAST;
90
+ /** Set the options to be shown in the dropdown (alternative to setting the elements via html) */
91
+ this.options = null;
92
+ /** Defines whether the menu list will be rendered virtually i.e. only the elements actually shown (and a couple around)
93
+ * are actually rendered in the DOM. If you use virtual scrolling pass the elements via prop instead of via slot. */
94
+ this.virtualScroll = false;
95
+ /** The default value the select will be reverted to when reset is executed */
96
+ this.defaultValue = null;
97
+ }
98
+ handleDisabledChange() {
99
+ if (this.disabled && this.isOpen) {
100
+ this.dropdown.hide();
101
+ }
102
+ }
103
+ handleLabelChange() {
104
+ this.handleSlotChange();
105
+ }
106
+ handleMultipleChange() {
107
+ // Cast to array | string based on `this.multiple`
108
+ const value = this.getValueAsArray();
109
+ this.value = this.multiple ? value : value[0] || '';
110
+ this.syncItemsFromValue();
111
+ }
112
+ handleValueChange() {
113
+ this.syncItemsFromValue();
114
+ if (this.input) {
115
+ this.sixChange.emit({ value: this.value, isSelected: true });
116
+ }
117
+ }
118
+ connectedCallback() {
119
+ if (this.virtualScroll && this.options === null) {
120
+ console.error('Options must be defined when using virtual scrolling');
121
+ }
122
+ this.handleBlur = this.handleBlur.bind(this);
123
+ this.handleFocus = this.handleFocus.bind(this);
124
+ this.handleClearClick = this.handleClearClick.bind(this);
125
+ this.handleKeyDown = this.handleKeyDown.bind(this);
126
+ this.handleSelectAll = this.handleSelectAll.bind(this);
127
+ this.handleLabelClick = this.handleLabelClick.bind(this);
128
+ this.handleMenuHide = this.handleMenuHide.bind(this);
129
+ this.handleMenuShow = this.handleMenuShow.bind(this);
130
+ this.handleMenuSelect = this.handleMenuSelect.bind(this);
131
+ this.handleSlotChange = this.handleSlotChange.bind(this);
132
+ this.handleInvalid = this.handleInvalid.bind(this);
133
+ this.handleTagInteraction = this.handleTagInteraction.bind(this);
134
+ this.host.shadowRoot.addEventListener('slotchange', this.handleSlotChange);
135
+ }
136
+ componentWillLoad() {
137
+ this.handleSlotChange();
138
+ if (this.multiple && this.value) {
139
+ this.value = this.getValueAsArray();
140
+ }
141
+ }
142
+ componentDidLoad() {
143
+ this.resizeObserver = new ResizeObserver(() => this.resizeMenu());
144
+ // We need to do an initial sync after the component has rendered, so this will suppress the re-render warning
145
+ requestAnimationFrame(() => this.syncItemsFromValue());
146
+ this.eventListeners.add(this.input, 'invalid', async (event) => {
147
+ if (this.customValidation || (!this.hasErrorTextSlot && !this.errorText && !this.customErrorText)) {
148
+ this.customErrorText = await this.input.getValidationMessage();
149
+ }
150
+ event.preventDefault();
151
+ });
152
+ this.eventListeners.add(this.input, 'six-input-input', executionControl.debounce((event) => {
153
+ const enteredValue = this.input.value;
154
+ this.clearValues();
155
+ this.sixChange.emit({ value: enteredValue, isSelected: false });
156
+ event.stopPropagation();
157
+ }, this.inputDebounce));
158
+ this.input.value = this.hasSelection() ? this.displayLabel : '';
159
+ }
160
+ disconnectedCallback() {
161
+ this.host.shadowRoot.removeEventListener('slotchange', this.handleSlotChange);
162
+ this.eventListeners.removeAll();
163
+ }
164
+ /** Checks for validity and shows the browser's validation message if the control is invalid. */
165
+ async reportValidity() {
166
+ return this.input.reportValidity();
167
+ }
168
+ /** Checks for validity. */
169
+ async checkValidity() {
170
+ return this.input.isValid();
171
+ }
172
+ /** Sets a custom validation message. If `message` is not empty, the field will be considered invalid. */
173
+ async setCustomValidity(message) {
174
+ this.customErrorText = '';
175
+ this.customValidation = message !== '';
176
+ this.input.setCustomValidity(message);
177
+ this.invalid = !this.input.checkValidity();
178
+ }
179
+ /** Resets the formcontrol */
180
+ async reset() {
181
+ this.value = this.defaultValue;
182
+ this.customErrorText = '';
183
+ this.customValidation = false;
184
+ this.input.setCustomValidity('');
185
+ this.invalid = false;
186
+ }
187
+ getItemLabel(item) {
188
+ const slot$1 = item.shadowRoot.querySelector('slot:not([name])');
189
+ if (slot$1) {
190
+ return slot.getTextContent(slot$1);
191
+ }
192
+ else {
193
+ // bugfix/COMSLI-203-six-select-value-is-not-updated-if-the-slot-is-changed
194
+ return item.textContent;
195
+ }
196
+ }
197
+ getItems() {
198
+ if (this.options !== null) {
199
+ return this.options.map((option) => index.h("six-menu-item", { value: option.value }, option.label));
200
+ }
201
+ return [...this.host.querySelectorAll('six-menu-item')];
202
+ }
203
+ hasMenuItems() {
204
+ return this.getItems().length > 0;
205
+ }
206
+ getValueAsArray() {
207
+ const values = Array.isArray(this.value) ? this.value : [this.value];
208
+ // enforce that the values are converted to 'string' before the value is compared
209
+ return values.map(String);
210
+ }
211
+ handleBlur() {
212
+ this.hasFocus = false;
213
+ this.sixBlur.emit();
214
+ }
215
+ handleFocus() {
216
+ this.hasFocus = true;
217
+ this.sixFocus.emit();
218
+ }
219
+ handleInvalid() {
220
+ this.invalid = true;
221
+ }
222
+ handleClearClick(event) {
223
+ event.stopPropagation();
224
+ this.clearValues();
225
+ }
226
+ clearValues() {
227
+ var _a;
228
+ this.value = (_a = this.defaultValue) !== null && _a !== void 0 ? _a : (this.multiple ? [] : '');
229
+ this.syncItemsFromValue();
230
+ }
231
+ handleSelectAll(event) {
232
+ const nonFilteredItems = this.getItems().filter((item) => item.style.display !== 'none');
233
+ const keyName = event.key;
234
+ const keyCode = event.code;
235
+ if (keyName === 'Control') {
236
+ return;
237
+ }
238
+ if (this.isOpen && this.multiple && keyCode === 'KeyA' && event.ctrlKey) {
239
+ event.preventDefault();
240
+ const hasDeselectedOptions = nonFilteredItems.some((opt) => !opt.disabled && !opt.checked);
241
+ nonFilteredItems
242
+ .filter((option) => !option.disabled)
243
+ .forEach((option) => (option.checked = hasDeselectedOptions));
244
+ const checkedItems = nonFilteredItems.filter((option) => option.checked).map((option) => option.value);
245
+ this.value = hasDeselectedOptions ? checkedItems : [];
246
+ }
247
+ }
248
+ handleKeyDown(event) {
249
+ const target = event.target;
250
+ const items = this.getItems();
251
+ const firstItem = items[0];
252
+ const lastItem = items[items.length - 1];
253
+ // Ignore key presses on tags
254
+ if (target.tagName.toLowerCase() === 'six-tag') {
255
+ return;
256
+ }
257
+ // Tabbing out of the control closes it
258
+ if (event.key === 'Tab') {
259
+ if (this.isOpen) {
260
+ this.dropdown.hide();
261
+ }
262
+ return;
263
+ }
264
+ // Up/down opens the menu
265
+ if (['ArrowDown', 'ArrowUp'].includes(event.key)) {
266
+ event.preventDefault();
267
+ // Show the menu if it's not already open
268
+ if (!this.isOpen) {
269
+ this.dropdown.show();
270
+ }
271
+ // Focus on a menu item
272
+ if (event.key === 'ArrowDown' && firstItem) {
273
+ firstItem.setFocus();
274
+ return;
275
+ }
276
+ if (event.key === 'ArrowUp' && lastItem) {
277
+ lastItem.setFocus();
278
+ return;
279
+ }
280
+ }
281
+ // All other keys open the menu and initiate type to select
282
+ if (!this.isOpen) {
283
+ event.stopPropagation();
284
+ event.preventDefault();
285
+ this.dropdown.show();
286
+ this.menu.typeToSelect(event.key);
287
+ }
288
+ }
289
+ handleLabelClick() {
290
+ this.box.focus();
291
+ }
292
+ handleMenuSelect(event) {
293
+ const item = event.detail.item;
294
+ const getValue = () => {
295
+ if (this.multiple) {
296
+ return this.value.includes(item.value)
297
+ ? this.value.filter((v) => v !== item.value)
298
+ : [...this.value, item.value];
299
+ }
300
+ else {
301
+ return item.value;
302
+ }
303
+ };
304
+ this.value = getValue();
305
+ this.syncItemsFromValue();
306
+ }
307
+ handleMenuShow(event) {
308
+ if (this.disabled) {
309
+ event.preventDefault();
310
+ return;
311
+ }
312
+ this.resizeMenu();
313
+ this.resizeObserver.observe(this.host);
314
+ this.isOpen = true;
315
+ }
316
+ handleMenuHide() {
317
+ this.resizeObserver.unobserve(this.host);
318
+ this.isOpen = false;
319
+ }
320
+ handleSlotChange() {
321
+ this.hasHelpTextSlot = slot.hasSlot(this.host, 'help-text');
322
+ this.hasErrorTextSlot = slot.hasSlot(this.host, 'error-text');
323
+ this.hasLabelSlot = slot.hasSlot(this.host, 'label');
324
+ this.syncItemsFromValue();
325
+ }
326
+ handleTagInteraction(event) {
327
+ // Don't toggle the menu when a tag's clear button is activated
328
+ const path = event.composedPath();
329
+ const clearButton = path.find((el) => {
330
+ if (el instanceof HTMLElement) {
331
+ const element = el;
332
+ return element.classList.contains('tag__clear');
333
+ }
334
+ });
335
+ if (clearButton) {
336
+ event.stopPropagation();
337
+ }
338
+ }
339
+ resizeMenu() {
340
+ this.menu.style.minWidth = `${this.box.clientWidth}px`;
341
+ if (this.dropdown) {
342
+ this.dropdown.reposition();
343
+ }
344
+ }
345
+ syncItemsFromValue() {
346
+ const items = this.getItems();
347
+ const value = this.getValueAsArray();
348
+ // Sync checked states
349
+ items.forEach((item) => (item.checked = value.includes(item.value)));
350
+ // Sync display label
351
+ if (this.multiple) {
352
+ const checkedItems = [];
353
+ value.forEach((val) => items.map((item) => (item.value === val ? checkedItems.push(item) : null)));
354
+ this.displayTags = checkedItems.map((item) => {
355
+ return (index.h("six-tag", { exportparts: "base:tag", type: "primary", size: this.size, pill: this.pill, clearable: true, onClick: this.handleTagInteraction, onKeyDown: this.handleTagInteraction, "onSix-tag-clear": (event) => {
356
+ event.stopPropagation();
357
+ if (!this.disabled) {
358
+ item.checked = false;
359
+ this.syncValueFromItems();
360
+ }
361
+ } }, this.getItemLabel(item)));
362
+ });
363
+ if (this.maxTagsVisible > 0 && this.displayTags.length > this.maxTagsVisible) {
364
+ const total = this.displayTags.length;
365
+ this.displayLabel = '';
366
+ this.displayTags = this.displayTags.slice(0, this.maxTagsVisible);
367
+ this.displayTags.push(index.h("six-tag", { exportparts: "base:tag", type: "info", size: this.size }, "+", total - this.maxTagsVisible));
368
+ }
369
+ }
370
+ else {
371
+ this.displayLabel = this.extractLabelForSelectedItem(value, items);
372
+ this.displayTags = [];
373
+ }
374
+ const hasSelection = this.hasSelection();
375
+ if (hasSelection) {
376
+ this.touched = true;
377
+ }
378
+ if (this.input && this.touched) {
379
+ if (!this.autocomplete) {
380
+ this.input.value = hasSelection ? this.displayLabel : '';
381
+ }
382
+ else if (hasSelection) {
383
+ this.input.value = Array.isArray(this.value) ? this.value.join(',') : this.value;
384
+ }
385
+ this.invalid = !this.input.checkValidity();
386
+ }
387
+ }
388
+ extractLabelForSelectedItem(value, items) {
389
+ if (value.length === 0 || (value.length === 1 && value[0] === '')) {
390
+ return '';
391
+ }
392
+ if (this.options !== null) {
393
+ const selectedOption = this.options.find((item) => item.value === value[0]);
394
+ return (selectedOption === null || selectedOption === void 0 ? void 0 : selectedOption.value) || '';
395
+ }
396
+ const checkedItem = items.find((item) => item.value === value[0]);
397
+ return checkedItem ? this.getItemLabel(checkedItem) : '';
398
+ }
399
+ syncValueFromItems() {
400
+ const items = this.getItems();
401
+ const checkedItems = items.filter((item) => item.checked);
402
+ const checkedValues = checkedItems.map((item) => item.value);
403
+ this.value = this.multiple
404
+ ? this.getValueAsArray().filter((val) => checkedValues.includes(val))
405
+ : checkedValues.length > 0
406
+ ? checkedValues[0]
407
+ : '';
408
+ }
409
+ displayError() {
410
+ return this.invalid && (!this.errorOnBlur || (!this.hasFocus && !this.isOpen));
411
+ }
412
+ render() {
413
+ var _a;
414
+ const hasSelection = this.hasSelection();
415
+ return (index.h(formControl.FormControl, { inputId: this.inputId, label: this.label, labelId: this.labelId, hasLabelSlot: this.hasLabelSlot, helpTextId: this.helpTextId, helpText: this.helpText, hasHelpTextSlot: this.hasHelpTextSlot, errorTextId: this.errorTextId, errorText: this.customErrorText ? this.customErrorText : this.errorText, hasErrorTextSlot: this.hasErrorTextSlot, size: this.size, onLabelClick: this.handleLabelClick, disabled: this.disabled, required: this.required, displayError: this.displayError() }, index.h("six-dropdown", { part: "base", ref: (el) => (this.dropdown = el), hoist: this.hoist, closeOnSelect: !this.multiple, containingElement: this.host, disableHideOnEnterAndSpace: this.autocomplete, class: {
416
+ select: true,
417
+ 'select--open': this.isOpen,
418
+ 'select--empty': ((_a = this.value) === null || _a === void 0 ? void 0 : _a.length) === 0,
419
+ 'select--focused': this.hasFocus,
420
+ 'select--clearable': this.clearable,
421
+ 'select--disabled': this.disabled,
422
+ 'select--multiple': this.multiple,
423
+ 'select--has-tags': this.multiple && hasSelection,
424
+ 'select--placeholder-visible': this.displayLabel === '',
425
+ 'select--small': this.size === 'small',
426
+ 'select--medium': this.size === 'medium',
427
+ 'select--large': this.size === 'large',
428
+ 'select--pill': this.pill,
429
+ 'select--invalid': this.invalid,
430
+ }, onKeyDown: this.handleSelectAll, "onSix-dropdown-show": this.handleMenuShow, "onSix-dropdown-hide": this.handleMenuHide, filterPlaceholder: this.filterPlaceholder, filterDebounce: this.filterDebounce, filter: this.filter, asyncFilter: this.asyncFilter }, index.h("div", { slot: "trigger", ref: (el) => (this.box = el), id: this.inputId, class: {
431
+ select__box: true,
432
+ 'select__box--line': this.line,
433
+ 'select__box--autocomplete': this.autocomplete,
434
+ }, role: "combobox", "aria-labelledby": this.labelId, "aria-describedby": this.helpTextId, "aria-haspopup": "true", "aria-expanded": this.isOpen ? 'true' : 'false', tabIndex: this.disabled ? -1 : 0, onBlur: this.handleBlur, onFocus: this.handleFocus, onKeyDown: this.handleKeyDown }, index.h("span", { class: "select__label" }, this.displayTags.length ? (index.h("span", { part: "tags", class: "select__tags" }, this.displayTags)) : (this.displayLabel || this.placeholder)), this.clearable && hasSelection && (index.h("six-icon-button", { exportparts: "base:clear-button", class: "select__clear", name: "clear", size: "small", onClick: this.handleClearClick, tabindex: "-1" })), this.hasMenuItems() && (index.h("span", { part: "icon", class: "select__icon" }, index.h("six-icon", { size: "medium" }, "expand_more"))), index.h("six-input", { ref: (el) => (this.input = el), class: {
435
+ select__input: true,
436
+ 'select__hidden-select': !this.autocomplete,
437
+ }, "aria-hidden": "true", required: this.required, onInvalid: this.handleInvalid, onFocus: this.handleFocus, clearable: this.clearable, placeholder: this.placeholder, pill: this.pill, disabled: this.disabled, size: this.size, tabIndex: -1 })), index.h("six-menu", { ref: (el) => (this.menu = el), part: "menu", class: {
438
+ select__menu: true,
439
+ 'select__menu--filtered': this.filter || this.asyncFilter,
440
+ 'select__menu--hidden': !this.hasMenuItems(),
441
+ }, "onSix-menu-item-selected": this.handleMenuSelect, items: this.options, virtualScroll: this.virtualScroll, "remove-box-shadow": true }, index.h("slot", { onSlotchange: this.handleSlotChange })))));
442
+ }
443
+ hasSelection() {
444
+ return this.multiple ? this.value.length > 0 : this.value !== '';
445
+ }
446
+ get host() { return index.getElement(this); }
447
+ static get watchers() { return {
448
+ "disabled": ["handleDisabledChange"],
449
+ "helpText": ["handleLabelChange"],
450
+ "errorText": ["handleLabelChange"],
451
+ "label": ["handleLabelChange"],
452
+ "multiple": ["handleMultipleChange"],
453
+ "value": ["handleValueChange"]
454
+ }; }
455
+ };
456
456
  SixSelect.style = sixSelectCss;
457
457
 
458
458
  exports.six_select = SixSelect;