wcs-core 4.2.0 → 5.0.0

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 (541) hide show
  1. package/dist/cjs/{accessibility-e99b032d.js → accessibility-c0c4e648.js} +8 -2
  2. package/dist/cjs/accessibility-c0c4e648.js.map +1 -0
  3. package/dist/cjs/button-interface-044a8a8a.js +12 -0
  4. package/dist/cjs/button-interface-044a8a8a.js.map +1 -0
  5. package/dist/cjs/grid-pagination-3511fdfa.js +111 -0
  6. package/dist/cjs/grid-pagination-3511fdfa.js.map +1 -0
  7. package/dist/cjs/{helpers-4a14051a.js → helpers-6280db6e.js} +75 -2
  8. package/dist/cjs/helpers-6280db6e.js.map +1 -0
  9. package/dist/cjs/{index-ca67a6dc.js → index-749d999e.js} +4 -1
  10. package/dist/cjs/index-749d999e.js.map +1 -0
  11. package/dist/cjs/{isEqual-9ea7ee49.js → keyboard-event-1cad4036.js} +77 -1
  12. package/dist/cjs/keyboard-event-1cad4036.js.map +1 -0
  13. package/dist/cjs/loader.cjs.js +2 -2
  14. package/dist/cjs/{select-arrow-c9583ea9.js → select-arrow-8169c0cb.js} +2 -2
  15. package/dist/cjs/{select-arrow-c9583ea9.js.map → select-arrow-8169c0cb.js.map} +1 -1
  16. package/dist/cjs/wcs-accordion-content.cjs.entry.js +1 -1
  17. package/dist/cjs/wcs-accordion-header.cjs.entry.js +1 -1
  18. package/dist/cjs/wcs-accordion-panel.cjs.entry.js +2 -2
  19. package/dist/cjs/wcs-accordion.cjs.entry.js +1 -1
  20. package/dist/cjs/wcs-action-bar.cjs.entry.js +1 -1
  21. package/dist/cjs/wcs-app.cjs.entry.js +1 -1
  22. package/dist/cjs/wcs-badge.cjs.entry.js +3 -2
  23. package/dist/cjs/wcs-badge.cjs.entry.js.map +1 -1
  24. package/dist/cjs/{wcs-button.cjs.entry.js → wcs-button_2.cjs.entry.js} +21 -12
  25. package/dist/cjs/wcs-button_2.cjs.entry.js.map +1 -0
  26. package/dist/cjs/wcs-card-body.cjs.entry.js +1 -1
  27. package/dist/cjs/wcs-card.cjs.entry.js +1 -1
  28. package/dist/cjs/wcs-checkbox.cjs.entry.js +5 -2
  29. package/dist/cjs/wcs-checkbox.cjs.entry.js.map +1 -1
  30. package/dist/cjs/wcs-com-nav-category.cjs.entry.js +2 -2
  31. package/dist/cjs/wcs-com-nav-submenu.cjs.entry.js +2 -2
  32. package/dist/cjs/wcs-com-nav.cjs.entry.js +2 -2
  33. package/dist/cjs/wcs-counter.cjs.entry.js +16 -6
  34. package/dist/cjs/wcs-counter.cjs.entry.js.map +1 -1
  35. package/dist/cjs/wcs-divider.cjs.entry.js +1 -1
  36. package/dist/cjs/wcs-dropdown-divider.cjs.entry.js +1 -1
  37. package/dist/cjs/wcs-dropdown-divider.cjs.entry.js.map +1 -1
  38. package/dist/cjs/wcs-dropdown-header.cjs.entry.js +1 -1
  39. package/dist/cjs/wcs-dropdown-header.cjs.entry.js.map +1 -1
  40. package/dist/cjs/wcs-dropdown-item.cjs.entry.js +2 -2
  41. package/dist/cjs/wcs-dropdown-item.cjs.entry.js.map +1 -1
  42. package/dist/cjs/wcs-dropdown.cjs.entry.js +12 -6
  43. package/dist/cjs/wcs-dropdown.cjs.entry.js.map +1 -1
  44. package/dist/cjs/wcs-editable-field.cjs.entry.js +18 -3
  45. package/dist/cjs/wcs-editable-field.cjs.entry.js.map +1 -1
  46. package/dist/cjs/wcs-error_2.cjs.entry.js +36 -2
  47. package/dist/cjs/wcs-error_2.cjs.entry.js.map +1 -1
  48. package/dist/cjs/wcs-field-content.cjs.entry.js +1 -1
  49. package/dist/cjs/wcs-field-label.cjs.entry.js +1 -1
  50. package/dist/cjs/wcs-field.cjs.entry.js +1 -1
  51. package/dist/cjs/wcs-footer.cjs.entry.js +1 -1
  52. package/dist/cjs/wcs-galactic-menu.cjs.entry.js +2 -2
  53. package/dist/cjs/wcs-galactic.cjs.entry.js +1 -1
  54. package/dist/cjs/wcs-grid-column.cjs.entry.js +25 -4
  55. package/dist/cjs/wcs-grid-column.cjs.entry.js.map +1 -1
  56. package/dist/cjs/wcs-grid-custom-cell.cjs.entry.js +1 -1
  57. package/dist/cjs/wcs-grid-pagination.cjs.entry.js +2 -2
  58. package/dist/cjs/wcs-grid.cjs.entry.js +320 -65
  59. package/dist/cjs/wcs-grid.cjs.entry.js.map +1 -1
  60. package/dist/cjs/wcs-header.cjs.entry.js +1 -1
  61. package/dist/cjs/wcs-hint.cjs.entry.js +1 -1
  62. package/dist/cjs/wcs-horizontal-stepper.cjs.entry.js +1 -1
  63. package/dist/cjs/wcs-icon.cjs.entry.js +1 -1
  64. package/dist/cjs/wcs-input.cjs.entry.js +15 -15
  65. package/dist/cjs/wcs-input.cjs.entry.js.map +1 -1
  66. package/dist/cjs/wcs-label.cjs.entry.js +1 -1
  67. package/dist/cjs/wcs-label.cjs.entry.js.map +1 -1
  68. package/dist/cjs/wcs-list-item-properties.cjs.entry.js +1 -1
  69. package/dist/cjs/wcs-list-item-property.cjs.entry.js +1 -1
  70. package/dist/cjs/wcs-list-item.cjs.entry.js +1 -1
  71. package/dist/cjs/wcs-mat-icon.cjs.entry.js +2 -2
  72. package/dist/cjs/wcs-mat-icon.cjs.entry.js.map +1 -1
  73. package/dist/cjs/wcs-modal.cjs.entry.js +35 -5
  74. package/dist/cjs/wcs-modal.cjs.entry.js.map +1 -1
  75. package/dist/cjs/wcs-native-select.cjs.entry.js +6 -3
  76. package/dist/cjs/wcs-native-select.cjs.entry.js.map +1 -1
  77. package/dist/cjs/wcs-nav-item.cjs.entry.js +2 -2
  78. package/dist/cjs/wcs-nav.cjs.entry.js +1 -1
  79. package/dist/cjs/wcs-progress-bar.cjs.entry.js +4 -6
  80. package/dist/cjs/wcs-progress-bar.cjs.entry.js.map +1 -1
  81. package/dist/cjs/wcs-progress-radial.cjs.entry.js +14 -6
  82. package/dist/cjs/wcs-progress-radial.cjs.entry.js.map +1 -1
  83. package/dist/cjs/wcs-radio-group.cjs.entry.js +22 -15
  84. package/dist/cjs/wcs-radio-group.cjs.entry.js.map +1 -1
  85. package/dist/cjs/wcs-radio.cjs.entry.js +14 -7
  86. package/dist/cjs/wcs-radio.cjs.entry.js.map +1 -1
  87. package/dist/cjs/wcs-select_2.cjs.entry.js +603 -111
  88. package/dist/cjs/wcs-select_2.cjs.entry.js.map +1 -1
  89. package/dist/cjs/wcs-skeleton-circle.cjs.entry.js +1 -1
  90. package/dist/cjs/wcs-skeleton-rectangle.cjs.entry.js +1 -1
  91. package/dist/cjs/wcs-skeleton-text.cjs.entry.js +1 -1
  92. package/dist/cjs/wcs-switch.cjs.entry.js +5 -2
  93. package/dist/cjs/wcs-switch.cjs.entry.js.map +1 -1
  94. package/dist/cjs/wcs-tab.cjs.entry.js +4 -1
  95. package/dist/cjs/wcs-tab.cjs.entry.js.map +1 -1
  96. package/dist/cjs/wcs-tabs.cjs.entry.js +4 -4
  97. package/dist/cjs/wcs-tabs.cjs.entry.js.map +1 -1
  98. package/dist/cjs/wcs-textarea.cjs.entry.js +13 -11
  99. package/dist/cjs/wcs-textarea.cjs.entry.js.map +1 -1
  100. package/dist/cjs/wcs-tooltip.cjs.entry.js +1 -1
  101. package/dist/cjs/wcs.cjs.js +2 -2
  102. package/dist/collection/components/badge/badge-interface.js.map +1 -1
  103. package/dist/collection/components/badge/badge.css +19 -1
  104. package/dist/collection/components/badge/badge.js +24 -0
  105. package/dist/collection/components/badge/badge.js.map +1 -1
  106. package/dist/collection/components/button/button.css +1 -1
  107. package/dist/collection/components/checkbox/checkbox.js +34 -1
  108. package/dist/collection/components/checkbox/checkbox.js.map +1 -1
  109. package/dist/collection/components/counter/counter.css +6 -1
  110. package/dist/collection/components/counter/counter.js +61 -3
  111. package/dist/collection/components/counter/counter.js.map +1 -1
  112. package/dist/collection/components/dropdown/dropdown.css +15 -4
  113. package/dist/collection/components/dropdown/dropdown.js +37 -1
  114. package/dist/collection/components/dropdown/dropdown.js.map +1 -1
  115. package/dist/collection/components/dropdown-divider/dropdown-divider.js +3 -0
  116. package/dist/collection/components/dropdown-divider/dropdown-divider.js.map +1 -1
  117. package/dist/collection/components/dropdown-header/dropdown-header.js +4 -0
  118. package/dist/collection/components/dropdown-header/dropdown-header.js.map +1 -1
  119. package/dist/collection/components/dropdown-item/dropdown-item.js +5 -1
  120. package/dist/collection/components/dropdown-item/dropdown-item.js.map +1 -1
  121. package/dist/collection/components/editable-field/editable-field.js +17 -2
  122. package/dist/collection/components/editable-field/editable-field.js.map +1 -1
  123. package/dist/collection/components/error/error.js +1 -1
  124. package/dist/collection/components/error/error.js.map +1 -1
  125. package/dist/collection/components/form-field/form-field.js +31 -0
  126. package/dist/collection/components/form-field/form-field.js.map +1 -1
  127. package/dist/collection/components/grid/grid-interface.js.map +1 -1
  128. package/dist/collection/components/grid/grid-keyboard-event.js +52 -0
  129. package/dist/collection/components/grid/grid-keyboard-event.js.map +1 -0
  130. package/dist/collection/components/grid/grid.css +5 -0
  131. package/dist/collection/components/grid/grid.js +265 -29
  132. package/dist/collection/components/grid/grid.js.map +1 -1
  133. package/dist/collection/components/grid-column/grid-column.css +5 -0
  134. package/dist/collection/components/grid-column/grid-column.js +60 -1
  135. package/dist/collection/components/grid-column/grid-column.js.map +1 -1
  136. package/dist/collection/components/grid-column/grid-sort-arrow.js +1 -1
  137. package/dist/collection/components/grid-column/grid-sort-arrow.js.map +1 -1
  138. package/dist/collection/components/grid-pagination/grid-pagination-arrow.js +32 -23
  139. package/dist/collection/components/grid-pagination/grid-pagination-arrow.js.map +1 -1
  140. package/dist/collection/components/grid-pagination/grid-pagination.css +17 -0
  141. package/dist/collection/components/grid-pagination/grid-pagination.js +1 -1
  142. package/dist/collection/components/grid-pagination/grid-pagination.js.map +1 -1
  143. package/dist/collection/components/input/input.js +64 -28
  144. package/dist/collection/components/input/input.js.map +1 -1
  145. package/dist/collection/components/label/label.js.map +1 -1
  146. package/dist/collection/components/mat-icon/mat-icon.js +1 -1
  147. package/dist/collection/components/mat-icon/mat-icon.js.map +1 -1
  148. package/dist/collection/components/modal/modal.css +2 -2
  149. package/dist/collection/components/modal/modal.js +73 -2
  150. package/dist/collection/components/modal/modal.js.map +1 -1
  151. package/dist/collection/components/native-select/native-select.css +6 -5
  152. package/dist/collection/components/native-select/native-select.js +29 -0
  153. package/dist/collection/components/native-select/native-select.js.map +1 -1
  154. package/dist/collection/components/progress-bar/progress-bar.css +12 -11
  155. package/dist/collection/components/progress-bar/progress-bar.js +22 -13
  156. package/dist/collection/components/progress-bar/progress-bar.js.map +1 -1
  157. package/dist/collection/components/progress-radial/progress-radial.css +5 -0
  158. package/dist/collection/components/progress-radial/progress-radial.js +18 -7
  159. package/dist/collection/components/progress-radial/progress-radial.js.map +1 -1
  160. package/dist/collection/components/radio/radio.css +8 -16
  161. package/dist/collection/components/radio/radio.js +12 -5
  162. package/dist/collection/components/radio/radio.js.map +1 -1
  163. package/dist/collection/components/radio-group/radio-group.js +50 -13
  164. package/dist/collection/components/radio-group/radio-group.js.map +1 -1
  165. package/dist/collection/components/select/select-interface.js +10 -0
  166. package/dist/collection/components/select/select-interface.js.map +1 -1
  167. package/dist/collection/components/select/select-keyboard-event.js +306 -0
  168. package/dist/collection/components/select/select-keyboard-event.js.map +1 -0
  169. package/dist/collection/components/select/select.css +59 -6
  170. package/dist/collection/components/select/select.js +435 -111
  171. package/dist/collection/components/select/select.js.map +1 -1
  172. package/dist/collection/components/select-option/select-option.css +15 -0
  173. package/dist/collection/components/select-option/select-option.js +30 -5
  174. package/dist/collection/components/select-option/select-option.js.map +1 -1
  175. package/dist/collection/components/switch/switch.js +34 -1
  176. package/dist/collection/components/switch/switch.js.map +1 -1
  177. package/dist/collection/components/tab/tab.css +7 -0
  178. package/dist/collection/components/tab/tab.js +11 -1
  179. package/dist/collection/components/tab/tab.js.map +1 -1
  180. package/dist/collection/components/tabs/tabs.js +7 -3
  181. package/dist/collection/components/tabs/tabs.js.map +1 -1
  182. package/dist/collection/components/textarea/textarea.css +8 -3
  183. package/dist/collection/components/textarea/textarea.js +41 -12
  184. package/dist/collection/components/textarea/textarea.js.map +1 -1
  185. package/dist/collection/utils/accessibility.js +7 -1
  186. package/dist/collection/utils/accessibility.js.map +1 -1
  187. package/dist/collection/utils/helpers.js +76 -1
  188. package/dist/collection/utils/helpers.js.map +1 -1
  189. package/dist/collection/utils/keyboard-event.js +74 -0
  190. package/dist/collection/utils/keyboard-event.js.map +1 -0
  191. package/dist/collection/utils/mutable-aria-attribute.js +4 -0
  192. package/dist/collection/utils/mutable-aria-attribute.js.map +1 -0
  193. package/dist/esm/{accessibility-ffa12842.js → accessibility-64feea8a.js} +8 -2
  194. package/dist/esm/accessibility-64feea8a.js.map +1 -0
  195. package/dist/esm/button-interface-c21c265f.js +9 -0
  196. package/dist/esm/button-interface-c21c265f.js.map +1 -0
  197. package/dist/esm/grid-pagination-f7b01e2e.js +109 -0
  198. package/dist/esm/grid-pagination-f7b01e2e.js.map +1 -0
  199. package/dist/esm/{helpers-1d55b67f.js → helpers-a21ae7d0.js} +75 -3
  200. package/dist/esm/helpers-a21ae7d0.js.map +1 -0
  201. package/dist/esm/{index-dc4d96d4.js → index-4f282598.js} +4 -1
  202. package/dist/esm/index-4f282598.js.map +1 -0
  203. package/dist/esm/{isEqual-20881bca.js → keyboard-event-ba3d20e7.js} +77 -2
  204. package/dist/esm/keyboard-event-ba3d20e7.js.map +1 -0
  205. package/dist/esm/loader.js +3 -3
  206. package/dist/esm/{select-arrow-81d069f7.js → select-arrow-28e8687b.js} +2 -2
  207. package/dist/esm/{select-arrow-81d069f7.js.map → select-arrow-28e8687b.js.map} +1 -1
  208. package/dist/esm/wcs-accordion-content.entry.js +1 -1
  209. package/dist/esm/wcs-accordion-header.entry.js +1 -1
  210. package/dist/esm/wcs-accordion-panel.entry.js +2 -2
  211. package/dist/esm/wcs-accordion.entry.js +1 -1
  212. package/dist/esm/wcs-action-bar.entry.js +1 -1
  213. package/dist/esm/wcs-app.entry.js +1 -1
  214. package/dist/esm/wcs-badge.entry.js +3 -2
  215. package/dist/esm/wcs-badge.entry.js.map +1 -1
  216. package/dist/esm/{wcs-button.entry.js → wcs-button_2.entry.js} +19 -11
  217. package/dist/esm/wcs-button_2.entry.js.map +1 -0
  218. package/dist/esm/wcs-card-body.entry.js +1 -1
  219. package/dist/esm/wcs-card.entry.js +1 -1
  220. package/dist/esm/wcs-checkbox.entry.js +5 -2
  221. package/dist/esm/wcs-checkbox.entry.js.map +1 -1
  222. package/dist/esm/wcs-com-nav-category.entry.js +2 -2
  223. package/dist/esm/wcs-com-nav-submenu.entry.js +2 -2
  224. package/dist/esm/wcs-com-nav.entry.js +2 -2
  225. package/dist/esm/wcs-counter.entry.js +16 -6
  226. package/dist/esm/wcs-counter.entry.js.map +1 -1
  227. package/dist/esm/wcs-divider.entry.js +1 -1
  228. package/dist/esm/wcs-dropdown-divider.entry.js +1 -1
  229. package/dist/esm/wcs-dropdown-divider.entry.js.map +1 -1
  230. package/dist/esm/wcs-dropdown-header.entry.js +1 -1
  231. package/dist/esm/wcs-dropdown-header.entry.js.map +1 -1
  232. package/dist/esm/wcs-dropdown-item.entry.js +2 -2
  233. package/dist/esm/wcs-dropdown-item.entry.js.map +1 -1
  234. package/dist/esm/wcs-dropdown.entry.js +12 -6
  235. package/dist/esm/wcs-dropdown.entry.js.map +1 -1
  236. package/dist/esm/wcs-editable-field.entry.js +18 -3
  237. package/dist/esm/wcs-editable-field.entry.js.map +1 -1
  238. package/dist/esm/wcs-error_2.entry.js +36 -2
  239. package/dist/esm/wcs-error_2.entry.js.map +1 -1
  240. package/dist/esm/wcs-field-content.entry.js +1 -1
  241. package/dist/esm/wcs-field-label.entry.js +1 -1
  242. package/dist/esm/wcs-field.entry.js +1 -1
  243. package/dist/esm/wcs-footer.entry.js +1 -1
  244. package/dist/esm/wcs-galactic-menu.entry.js +2 -2
  245. package/dist/esm/wcs-galactic.entry.js +1 -1
  246. package/dist/esm/wcs-grid-column.entry.js +25 -4
  247. package/dist/esm/wcs-grid-column.entry.js.map +1 -1
  248. package/dist/esm/wcs-grid-custom-cell.entry.js +1 -1
  249. package/dist/esm/wcs-grid-pagination.entry.js +2 -2
  250. package/dist/esm/wcs-grid.entry.js +282 -27
  251. package/dist/esm/wcs-grid.entry.js.map +1 -1
  252. package/dist/esm/wcs-header.entry.js +1 -1
  253. package/dist/esm/wcs-hint.entry.js +1 -1
  254. package/dist/esm/wcs-horizontal-stepper.entry.js +1 -1
  255. package/dist/esm/wcs-icon.entry.js +1 -1
  256. package/dist/esm/wcs-input.entry.js +15 -15
  257. package/dist/esm/wcs-input.entry.js.map +1 -1
  258. package/dist/esm/wcs-label.entry.js +1 -1
  259. package/dist/esm/wcs-label.entry.js.map +1 -1
  260. package/dist/esm/wcs-list-item-properties.entry.js +1 -1
  261. package/dist/esm/wcs-list-item-property.entry.js +1 -1
  262. package/dist/esm/wcs-list-item.entry.js +1 -1
  263. package/dist/esm/wcs-mat-icon.entry.js +2 -2
  264. package/dist/esm/wcs-mat-icon.entry.js.map +1 -1
  265. package/dist/esm/wcs-modal.entry.js +35 -5
  266. package/dist/esm/wcs-modal.entry.js.map +1 -1
  267. package/dist/esm/wcs-native-select.entry.js +6 -3
  268. package/dist/esm/wcs-native-select.entry.js.map +1 -1
  269. package/dist/esm/wcs-nav-item.entry.js +2 -2
  270. package/dist/esm/wcs-nav.entry.js +1 -1
  271. package/dist/esm/wcs-progress-bar.entry.js +4 -6
  272. package/dist/esm/wcs-progress-bar.entry.js.map +1 -1
  273. package/dist/esm/wcs-progress-radial.entry.js +14 -6
  274. package/dist/esm/wcs-progress-radial.entry.js.map +1 -1
  275. package/dist/esm/wcs-radio-group.entry.js +22 -15
  276. package/dist/esm/wcs-radio-group.entry.js.map +1 -1
  277. package/dist/esm/wcs-radio.entry.js +14 -7
  278. package/dist/esm/wcs-radio.entry.js.map +1 -1
  279. package/dist/esm/wcs-select_2.entry.js +602 -110
  280. package/dist/esm/wcs-select_2.entry.js.map +1 -1
  281. package/dist/esm/wcs-skeleton-circle.entry.js +1 -1
  282. package/dist/esm/wcs-skeleton-rectangle.entry.js +1 -1
  283. package/dist/esm/wcs-skeleton-text.entry.js +1 -1
  284. package/dist/esm/wcs-switch.entry.js +5 -2
  285. package/dist/esm/wcs-switch.entry.js.map +1 -1
  286. package/dist/esm/wcs-tab.entry.js +4 -1
  287. package/dist/esm/wcs-tab.entry.js.map +1 -1
  288. package/dist/esm/wcs-tabs.entry.js +4 -4
  289. package/dist/esm/wcs-tabs.entry.js.map +1 -1
  290. package/dist/esm/wcs-textarea.entry.js +13 -11
  291. package/dist/esm/wcs-textarea.entry.js.map +1 -1
  292. package/dist/esm/wcs-tooltip.entry.js +1 -1
  293. package/dist/esm/wcs.js +3 -3
  294. package/dist/types/components/badge/badge-interface.d.ts +2 -0
  295. package/dist/types/components/badge/badge.d.ts +5 -1
  296. package/dist/types/components/checkbox/checkbox.d.ts +4 -1
  297. package/dist/types/components/counter/counter.d.ts +8 -1
  298. package/dist/types/components/dropdown/dropdown.d.ts +10 -1
  299. package/dist/types/components/dropdown-divider/dropdown-divider.d.ts +3 -0
  300. package/dist/types/components/dropdown-header/dropdown-header.d.ts +4 -0
  301. package/dist/types/components/dropdown-item/dropdown-item.d.ts +7 -0
  302. package/dist/types/components/editable-field/editable-field.d.ts +7 -0
  303. package/dist/types/components/form-field/form-field.d.ts +4 -0
  304. package/dist/types/components/grid/grid-interface.d.ts +14 -2
  305. package/dist/types/components/grid/grid-keyboard-event.d.ts +16 -0
  306. package/dist/types/components/grid/grid.d.ts +59 -4
  307. package/dist/types/components/grid-column/grid-column.d.ts +17 -0
  308. package/dist/types/components/input/input.d.ts +40 -17
  309. package/dist/types/components/modal/modal.d.ts +37 -1
  310. package/dist/types/components/native-select/native-select.d.ts +3 -1
  311. package/dist/types/components/progress-bar/progress-bar.d.ts +8 -3
  312. package/dist/types/components/progress-radial/progress-radial.d.ts +12 -0
  313. package/dist/types/components/radio/radio.d.ts +3 -0
  314. package/dist/types/components/radio-group/radio-group.d.ts +3 -1
  315. package/dist/types/components/select/select-interface.d.ts +12 -0
  316. package/dist/types/components/select/select-keyboard-event.d.ts +38 -0
  317. package/dist/types/components/select/select.d.ts +76 -15
  318. package/dist/types/components/select-option/select-option.d.ts +10 -4
  319. package/dist/types/components/switch/switch.d.ts +4 -1
  320. package/dist/types/components/tab/tab.d.ts +3 -0
  321. package/dist/types/components/tabs/tabs.d.ts +4 -0
  322. package/dist/types/components/textarea/textarea.d.ts +8 -4
  323. package/dist/types/components.d.ts +357 -55
  324. package/dist/types/utils/accessibility.d.ts +4 -0
  325. package/dist/types/utils/helpers.d.ts +12 -1
  326. package/dist/types/utils/keyboard-event.d.ts +13 -0
  327. package/dist/types/utils/mutable-aria-attribute.d.ts +5 -0
  328. package/dist/wcs/{p-7a3f70da.entry.js → p-00f6a79a.entry.js} +2 -2
  329. package/dist/wcs/{p-ee453b6e.entry.js → p-016e4dd9.entry.js} +2 -2
  330. package/dist/wcs/p-0ae177cf.js +2 -0
  331. package/dist/wcs/p-0ae177cf.js.map +1 -0
  332. package/dist/wcs/{p-f06f48f3.entry.js → p-0d02d9e4.entry.js} +2 -2
  333. package/dist/wcs/p-0d02d9e4.entry.js.map +1 -0
  334. package/dist/wcs/{p-30d8f9c3.entry.js → p-11ab4ffc.entry.js} +2 -2
  335. package/dist/wcs/p-13548191.entry.js +2 -0
  336. package/dist/wcs/p-13548191.entry.js.map +1 -0
  337. package/dist/wcs/p-13ffe5f3.entry.js +2 -0
  338. package/dist/wcs/p-13ffe5f3.entry.js.map +1 -0
  339. package/dist/wcs/{p-dfddec76.entry.js → p-17442a2f.entry.js} +2 -2
  340. package/dist/wcs/p-1d49a02e.entry.js +2 -0
  341. package/dist/wcs/p-1d49a02e.entry.js.map +1 -0
  342. package/dist/wcs/{p-d6c3e615.js → p-24611014.js} +2 -2
  343. package/dist/wcs/p-250b3794.entry.js +2 -0
  344. package/dist/wcs/{p-91b3e4b5.entry.js.map → p-250b3794.entry.js.map} +1 -1
  345. package/dist/wcs/{p-292ca644.entry.js → p-2d62b3dd.entry.js} +2 -2
  346. package/dist/wcs/{p-d6b3f742.entry.js → p-33a5594d.entry.js} +2 -2
  347. package/dist/wcs/p-33a570ee.js +2 -0
  348. package/dist/wcs/p-33a570ee.js.map +1 -0
  349. package/dist/wcs/{p-e86c6cbb.entry.js → p-34079054.entry.js} +2 -2
  350. package/dist/wcs/{p-e86c6cbb.entry.js.map → p-34079054.entry.js.map} +1 -1
  351. package/dist/wcs/{p-257b15b9.entry.js → p-36e83879.entry.js} +2 -2
  352. package/dist/wcs/p-44410e32.entry.js +2 -0
  353. package/dist/wcs/p-44410e32.entry.js.map +1 -0
  354. package/dist/wcs/{p-7269272f.entry.js → p-46184d47.entry.js} +2 -2
  355. package/dist/wcs/p-46975b1e.entry.js +2 -0
  356. package/dist/wcs/p-46975b1e.entry.js.map +1 -0
  357. package/dist/wcs/{p-4a9f8e94.entry.js → p-46d56c4e.entry.js} +3 -3
  358. package/dist/wcs/{p-fc3f5b53.entry.js → p-4820154c.entry.js} +2 -2
  359. package/dist/wcs/p-49b0de03.entry.js +2 -0
  360. package/dist/wcs/p-49b0de03.entry.js.map +1 -0
  361. package/dist/wcs/{p-ff9967eb.entry.js → p-4af68f13.entry.js} +2 -2
  362. package/dist/wcs/{p-1f8c73eb.entry.js → p-5f0ab1dc.entry.js} +2 -2
  363. package/dist/wcs/p-5f0ab1dc.entry.js.map +1 -0
  364. package/dist/wcs/p-5f3e6b0c.entry.js +2 -0
  365. package/dist/wcs/p-5f3e6b0c.entry.js.map +1 -0
  366. package/dist/wcs/{p-50dce764.entry.js → p-61b934a7.entry.js} +2 -2
  367. package/dist/wcs/p-64855188.js +2 -0
  368. package/dist/wcs/p-64855188.js.map +1 -0
  369. package/dist/wcs/p-680b107c.entry.js +2 -0
  370. package/dist/wcs/p-68d654da.js +2 -0
  371. package/dist/wcs/p-68d654da.js.map +1 -0
  372. package/dist/wcs/p-69d1223c.js +3 -0
  373. package/dist/wcs/p-69d1223c.js.map +1 -0
  374. package/dist/wcs/p-6f538b67.entry.js +2 -0
  375. package/dist/wcs/p-6f538b67.entry.js.map +1 -0
  376. package/dist/wcs/p-7c145ed0.entry.js +2 -0
  377. package/dist/wcs/p-7c145ed0.entry.js.map +1 -0
  378. package/dist/wcs/p-8724a296.entry.js +2 -0
  379. package/dist/wcs/p-8724a296.entry.js.map +1 -0
  380. package/dist/wcs/{p-d084dd61.entry.js → p-88b1cdfe.entry.js} +2 -2
  381. package/dist/wcs/{p-c7494651.entry.js → p-8ff7e463.entry.js} +2 -2
  382. package/dist/wcs/p-90a7fd68.entry.js +2 -0
  383. package/dist/wcs/p-90a7fd68.entry.js.map +1 -0
  384. package/dist/wcs/{p-cfcacc44.entry.js → p-914aa964.entry.js} +2 -2
  385. package/dist/wcs/p-93fcef08.entry.js +2 -0
  386. package/dist/wcs/p-93fcef08.entry.js.map +1 -0
  387. package/dist/wcs/{p-429bd9fb.entry.js → p-9b1c73b3.entry.js} +2 -2
  388. package/dist/wcs/p-9cc48d75.js +2 -0
  389. package/dist/wcs/p-9cc48d75.js.map +1 -0
  390. package/dist/wcs/p-a3518f66.entry.js +2 -0
  391. package/dist/wcs/p-a361d9f1.entry.js +2 -0
  392. package/dist/wcs/{p-31a8d23f.entry.js → p-a85208ca.entry.js} +2 -2
  393. package/dist/wcs/{p-d3f1cafe.entry.js → p-b91323fc.entry.js} +2 -2
  394. package/dist/wcs/{p-47d8ece5.entry.js → p-bd4029f8.entry.js} +2 -2
  395. package/dist/wcs/{p-e348058b.entry.js → p-bed4e3ce.entry.js} +2 -2
  396. package/dist/wcs/{p-f489793d.entry.js → p-c261353f.entry.js} +2 -2
  397. package/dist/wcs/p-c261353f.entry.js.map +1 -0
  398. package/dist/wcs/p-c3227f01.entry.js +2 -0
  399. package/dist/wcs/p-c3227f01.entry.js.map +1 -0
  400. package/dist/wcs/{p-810aff71.entry.js → p-c38adf4b.entry.js} +2 -2
  401. package/dist/wcs/{p-2185bf8b.entry.js → p-c6a8c6f9.entry.js} +2 -2
  402. package/dist/wcs/p-c9478849.entry.js +2 -0
  403. package/dist/wcs/p-c9478849.entry.js.map +1 -0
  404. package/dist/wcs/p-ce3ef5d0.entry.js +2 -0
  405. package/dist/wcs/p-ce3ef5d0.entry.js.map +1 -0
  406. package/dist/wcs/{p-54e29233.entry.js → p-ce40b012.entry.js} +2 -2
  407. package/dist/wcs/{p-54e29233.entry.js.map → p-ce40b012.entry.js.map} +1 -1
  408. package/dist/wcs/p-d6c482fc.entry.js +2 -0
  409. package/dist/wcs/p-d6c482fc.entry.js.map +1 -0
  410. package/dist/wcs/{p-1e43122f.entry.js → p-d84cee70.entry.js} +2 -2
  411. package/dist/wcs/p-d895b92c.entry.js +16 -0
  412. package/dist/wcs/p-d895b92c.entry.js.map +1 -0
  413. package/dist/wcs/p-dca2f42c.entry.js +2 -0
  414. package/dist/wcs/{p-7519a270.entry.js → p-e0d5908a.entry.js} +2 -2
  415. package/dist/wcs/{p-a5cd4c07.entry.js → p-e487ff2c.entry.js} +2 -2
  416. package/dist/wcs/p-e487ff2c.entry.js.map +1 -0
  417. package/dist/wcs/{p-3b1fc676.entry.js → p-e52c11e4.entry.js} +2 -2
  418. package/dist/wcs/{p-0ede0c37.entry.js → p-e7661047.entry.js} +2 -2
  419. package/dist/wcs/p-ea6e33ee.entry.js +2 -0
  420. package/dist/wcs/{p-cc03627c.entry.js → p-f7ce4e0d.entry.js} +2 -2
  421. package/dist/wcs/{p-b6160b7c.entry.js → p-faf04401.entry.js} +2 -2
  422. package/dist/wcs/p-fc1767ae.entry.js +2 -0
  423. package/dist/wcs/p-fc1767ae.entry.js.map +1 -0
  424. package/dist/wcs/p-feebc469.entry.js +2 -0
  425. package/dist/wcs/p-feebc469.entry.js.map +1 -0
  426. package/dist/wcs/wcs.css +1 -1
  427. package/dist/wcs/wcs.esm.js +1 -1
  428. package/dist/wcs/wcs.esm.js.map +1 -1
  429. package/package.json +1 -1
  430. package/dist/cjs/accessibility-e99b032d.js.map +0 -1
  431. package/dist/cjs/grid-pagination-4b55c908.js +0 -101
  432. package/dist/cjs/grid-pagination-4b55c908.js.map +0 -1
  433. package/dist/cjs/helpers-4a14051a.js.map +0 -1
  434. package/dist/cjs/index-ca67a6dc.js.map +0 -1
  435. package/dist/cjs/isEqual-9ea7ee49.js.map +0 -1
  436. package/dist/cjs/wcs-button.cjs.entry.js.map +0 -1
  437. package/dist/cjs/wcs-spinner.cjs.entry.js +0 -22
  438. package/dist/cjs/wcs-spinner.cjs.entry.js.map +0 -1
  439. package/dist/esm/accessibility-ffa12842.js.map +0 -1
  440. package/dist/esm/grid-pagination-41354861.js +0 -99
  441. package/dist/esm/grid-pagination-41354861.js.map +0 -1
  442. package/dist/esm/helpers-1d55b67f.js.map +0 -1
  443. package/dist/esm/index-dc4d96d4.js.map +0 -1
  444. package/dist/esm/isEqual-20881bca.js.map +0 -1
  445. package/dist/esm/wcs-button.entry.js.map +0 -1
  446. package/dist/esm/wcs-spinner.entry.js +0 -18
  447. package/dist/esm/wcs-spinner.entry.js.map +0 -1
  448. package/dist/wcs/p-02b95dbf.entry.js +0 -2
  449. package/dist/wcs/p-02b95dbf.entry.js.map +0 -1
  450. package/dist/wcs/p-0f8db386.js +0 -2
  451. package/dist/wcs/p-0f8db386.js.map +0 -1
  452. package/dist/wcs/p-17630eea.entry.js +0 -2
  453. package/dist/wcs/p-1f8c73eb.entry.js.map +0 -1
  454. package/dist/wcs/p-269d244c.entry.js +0 -2
  455. package/dist/wcs/p-269d244c.entry.js.map +0 -1
  456. package/dist/wcs/p-2f63d6c5.entry.js +0 -2
  457. package/dist/wcs/p-2f63d6c5.entry.js.map +0 -1
  458. package/dist/wcs/p-39821dd2.entry.js +0 -2
  459. package/dist/wcs/p-39821dd2.entry.js.map +0 -1
  460. package/dist/wcs/p-3dc6b507.js +0 -2
  461. package/dist/wcs/p-3dc6b507.js.map +0 -1
  462. package/dist/wcs/p-463667c9.entry.js +0 -2
  463. package/dist/wcs/p-475ac7c5.js +0 -2
  464. package/dist/wcs/p-475ac7c5.js.map +0 -1
  465. package/dist/wcs/p-4ffe4539.entry.js +0 -2
  466. package/dist/wcs/p-4ffe4539.entry.js.map +0 -1
  467. package/dist/wcs/p-57560d7d.entry.js +0 -2
  468. package/dist/wcs/p-57560d7d.entry.js.map +0 -1
  469. package/dist/wcs/p-61cab06f.entry.js +0 -2
  470. package/dist/wcs/p-61cab06f.entry.js.map +0 -1
  471. package/dist/wcs/p-627bbb6a.entry.js +0 -2
  472. package/dist/wcs/p-627bbb6a.entry.js.map +0 -1
  473. package/dist/wcs/p-6de70331.entry.js +0 -2
  474. package/dist/wcs/p-6de70331.entry.js.map +0 -1
  475. package/dist/wcs/p-747a5962.entry.js +0 -2
  476. package/dist/wcs/p-8181f8cd.js +0 -2
  477. package/dist/wcs/p-8181f8cd.js.map +0 -1
  478. package/dist/wcs/p-8c4ed883.entry.js +0 -2
  479. package/dist/wcs/p-8c4ed883.entry.js.map +0 -1
  480. package/dist/wcs/p-8d57835f.entry.js +0 -2
  481. package/dist/wcs/p-8fed8b1c.entry.js +0 -2
  482. package/dist/wcs/p-8fed8b1c.entry.js.map +0 -1
  483. package/dist/wcs/p-91b3e4b5.entry.js +0 -2
  484. package/dist/wcs/p-9910fedd.entry.js +0 -2
  485. package/dist/wcs/p-9910fedd.entry.js.map +0 -1
  486. package/dist/wcs/p-9d798de4.entry.js +0 -2
  487. package/dist/wcs/p-9d798de4.entry.js.map +0 -1
  488. package/dist/wcs/p-9ecdeaf9.entry.js +0 -2
  489. package/dist/wcs/p-9ecdeaf9.entry.js.map +0 -1
  490. package/dist/wcs/p-a2df3a49.js +0 -3
  491. package/dist/wcs/p-a2df3a49.js.map +0 -1
  492. package/dist/wcs/p-a5cd4c07.entry.js.map +0 -1
  493. package/dist/wcs/p-ac106663.entry.js +0 -2
  494. package/dist/wcs/p-ac106663.entry.js.map +0 -1
  495. package/dist/wcs/p-cb90bc3a.entry.js +0 -2
  496. package/dist/wcs/p-cb90bc3a.entry.js.map +0 -1
  497. package/dist/wcs/p-cdd172b4.entry.js +0 -2
  498. package/dist/wcs/p-d5a0e271.entry.js +0 -2
  499. package/dist/wcs/p-d5a0e271.entry.js.map +0 -1
  500. package/dist/wcs/p-ec84d6fd.entry.js +0 -16
  501. package/dist/wcs/p-ec84d6fd.entry.js.map +0 -1
  502. package/dist/wcs/p-ed3132be.entry.js +0 -2
  503. package/dist/wcs/p-ed3132be.entry.js.map +0 -1
  504. package/dist/wcs/p-f06f48f3.entry.js.map +0 -1
  505. package/dist/wcs/p-f20b9024.entry.js +0 -2
  506. package/dist/wcs/p-f20b9024.entry.js.map +0 -1
  507. package/dist/wcs/p-f489793d.entry.js.map +0 -1
  508. /package/dist/wcs/{p-7a3f70da.entry.js.map → p-00f6a79a.entry.js.map} +0 -0
  509. /package/dist/wcs/{p-ee453b6e.entry.js.map → p-016e4dd9.entry.js.map} +0 -0
  510. /package/dist/wcs/{p-30d8f9c3.entry.js.map → p-11ab4ffc.entry.js.map} +0 -0
  511. /package/dist/wcs/{p-dfddec76.entry.js.map → p-17442a2f.entry.js.map} +0 -0
  512. /package/dist/wcs/{p-d6c3e615.js.map → p-24611014.js.map} +0 -0
  513. /package/dist/wcs/{p-292ca644.entry.js.map → p-2d62b3dd.entry.js.map} +0 -0
  514. /package/dist/wcs/{p-d6b3f742.entry.js.map → p-33a5594d.entry.js.map} +0 -0
  515. /package/dist/wcs/{p-257b15b9.entry.js.map → p-36e83879.entry.js.map} +0 -0
  516. /package/dist/wcs/{p-7269272f.entry.js.map → p-46184d47.entry.js.map} +0 -0
  517. /package/dist/wcs/{p-4a9f8e94.entry.js.map → p-46d56c4e.entry.js.map} +0 -0
  518. /package/dist/wcs/{p-fc3f5b53.entry.js.map → p-4820154c.entry.js.map} +0 -0
  519. /package/dist/wcs/{p-ff9967eb.entry.js.map → p-4af68f13.entry.js.map} +0 -0
  520. /package/dist/wcs/{p-50dce764.entry.js.map → p-61b934a7.entry.js.map} +0 -0
  521. /package/dist/wcs/{p-17630eea.entry.js.map → p-680b107c.entry.js.map} +0 -0
  522. /package/dist/wcs/{p-d084dd61.entry.js.map → p-88b1cdfe.entry.js.map} +0 -0
  523. /package/dist/wcs/{p-c7494651.entry.js.map → p-8ff7e463.entry.js.map} +0 -0
  524. /package/dist/wcs/{p-cfcacc44.entry.js.map → p-914aa964.entry.js.map} +0 -0
  525. /package/dist/wcs/{p-429bd9fb.entry.js.map → p-9b1c73b3.entry.js.map} +0 -0
  526. /package/dist/wcs/{p-8d57835f.entry.js.map → p-a3518f66.entry.js.map} +0 -0
  527. /package/dist/wcs/{p-463667c9.entry.js.map → p-a361d9f1.entry.js.map} +0 -0
  528. /package/dist/wcs/{p-31a8d23f.entry.js.map → p-a85208ca.entry.js.map} +0 -0
  529. /package/dist/wcs/{p-d3f1cafe.entry.js.map → p-b91323fc.entry.js.map} +0 -0
  530. /package/dist/wcs/{p-47d8ece5.entry.js.map → p-bd4029f8.entry.js.map} +0 -0
  531. /package/dist/wcs/{p-e348058b.entry.js.map → p-bed4e3ce.entry.js.map} +0 -0
  532. /package/dist/wcs/{p-810aff71.entry.js.map → p-c38adf4b.entry.js.map} +0 -0
  533. /package/dist/wcs/{p-2185bf8b.entry.js.map → p-c6a8c6f9.entry.js.map} +0 -0
  534. /package/dist/wcs/{p-1e43122f.entry.js.map → p-d84cee70.entry.js.map} +0 -0
  535. /package/dist/wcs/{p-747a5962.entry.js.map → p-dca2f42c.entry.js.map} +0 -0
  536. /package/dist/wcs/{p-7519a270.entry.js.map → p-e0d5908a.entry.js.map} +0 -0
  537. /package/dist/wcs/{p-3b1fc676.entry.js.map → p-e52c11e4.entry.js.map} +0 -0
  538. /package/dist/wcs/{p-0ede0c37.entry.js.map → p-e7661047.entry.js.map} +0 -0
  539. /package/dist/wcs/{p-cdd172b4.entry.js.map → p-ea6e33ee.entry.js.map} +0 -0
  540. /package/dist/wcs/{p-cc03627c.entry.js.map → p-f7ce4e0d.entry.js.map} +0 -0
  541. /package/dist/wcs/{p-b6160b7c.entry.js.map → p-faf04401.entry.js.map} +0 -0
@@ -1,7 +1,8 @@
1
- import { h, r as registerInstance, c as createEvent, H as Host, g as getElement } from './index-dc4d96d4.js';
2
- import { S as SelectArrow } from './select-arrow-81d069f7.js';
3
- import { s as generateUniqueId, l as findItemLabel, a as isEnterKey, n as isDownArrowKey, i as isSpaceKey, q as isRightArrowKey, o as isUpArrowKey, p as isLeftArrowKey, t as isPageDownKey, u as isPageUpKey, e as isHomeKey, b as isEscapeKey, m as isTabKey, v as isElement } from './helpers-1d55b67f.js';
4
- import { w as isEqual } from './isEqual-20881bca.js';
1
+ import { h, r as registerInstance, c as createEvent, H as Host, g as getElement } from './index-4f282598.js';
2
+ import { S as SelectArrow } from './select-arrow-28e8687b.js';
3
+ import { v as generateUniqueId, p as findItemLabel, w as isElement, a as isEnterKey, i as isSpaceKey } from './helpers-a21ae7d0.js';
4
+ import { w as keyboardShortcutFromKeyboardEvent, x as isEqual } from './keyboard-event-ba3d20e7.js';
5
+ import { a as isFocusable } from './accessibility-64feea8a.js';
5
6
  import { c as createPopper } from './popper-c7cca1bc.js';
6
7
  import { M as MDCRipple } from './component-5ce0752a.js';
7
8
 
@@ -4962,6 +4963,16 @@ function Machine(config, options, initialContext) {
4962
4963
  return new StateNode(config, options, initialContext);
4963
4964
  }
4964
4965
 
4966
+ /**
4967
+ * Default filtering function. Compares the string start of wcs-select-option element's text content
4968
+ * with your filter input.
4969
+ * @param optionEl - wcs-select-option element
4970
+ * @param filter - input filter field value
4971
+ * @constructor
4972
+ */
4973
+ const WcsDefaultSelectFilterFn = (optionEl, filter) => {
4974
+ return optionEl.textContent.toLowerCase().startsWith(filter.toLowerCase());
4975
+ };
4965
4976
  const WcsSelectSizeValue = ['m', 'l']; // as const keyword is used to infer and preserve the exact literal values of an array or object.
4966
4977
  function isWcsSelectSize(size) {
4967
4978
  // @ts-ignore : ignore size type, as it is checked with WcsInputSizeValues
@@ -4985,7 +4996,260 @@ const SelectChips = ({ disabled, option, onRemove }) => {
4985
4996
  h("path", { d: "M2,0 6,4 10,0 12,2 8,6 12,10 10,12 6,8 2,12 0,10 4,6 0,2 2,0", fill: option.chipColor, transform: "translate(8 0)" })))));
4986
4997
  };
4987
4998
 
4988
- const selectCss = "@keyframes mdc-ripple-fg-radius-in{from{animation-timing-function:cubic-bezier(0.4, 0, 0.2, 1);transform:translate(var(--mdc-ripple-fg-translate-start, 0)) scale(1)}to{transform:translate(var(--mdc-ripple-fg-translate-end, 0)) scale(var(--mdc-ripple-fg-scale, 1))}}@keyframes mdc-ripple-fg-opacity-in{from{animation-timing-function:linear;opacity:0}to{opacity:var(--mdc-ripple-fg-opacity, 0)}}@keyframes mdc-ripple-fg-opacity-out{from{animation-timing-function:linear;opacity:var(--mdc-ripple-fg-opacity, 0)}to{opacity:0}}.mdc-ripple-surface{--mdc-ripple-fg-size:0;--mdc-ripple-left:0;--mdc-ripple-top:0;--mdc-ripple-fg-scale:1;--mdc-ripple-fg-translate-end:0;--mdc-ripple-fg-translate-start:0;-webkit-tap-highlight-color:rgba(0, 0, 0, 0);will-change:transform, opacity;position:relative;outline:none;overflow:hidden}.mdc-ripple-surface::before,.mdc-ripple-surface::after{position:absolute;border-radius:50%;opacity:0;pointer-events:none;content:\"\"}.mdc-ripple-surface::before{transition:opacity 15ms linear, background-color 15ms linear;z-index:1;z-index:var(--mdc-ripple-z-index, 1)}.mdc-ripple-surface::after{z-index:0;z-index:var(--mdc-ripple-z-index, 0)}.mdc-ripple-surface.mdc-ripple-upgraded::before{transform:scale(var(--mdc-ripple-fg-scale, 1))}.mdc-ripple-surface.mdc-ripple-upgraded::after{top:0;left:0;transform:scale(0);transform-origin:center center}.mdc-ripple-surface.mdc-ripple-upgraded--unbounded::after{top:var(--mdc-ripple-top, 0);left:var(--mdc-ripple-left, 0)}.mdc-ripple-surface.mdc-ripple-upgraded--foreground-activation::after{animation:mdc-ripple-fg-radius-in 225ms forwards, mdc-ripple-fg-opacity-in 75ms forwards}.mdc-ripple-surface.mdc-ripple-upgraded--foreground-deactivation::after{animation:mdc-ripple-fg-opacity-out 150ms;transform:translate(var(--mdc-ripple-fg-translate-end, 0)) scale(var(--mdc-ripple-fg-scale, 1))}.mdc-ripple-surface::before,.mdc-ripple-surface::after{top:calc(50% - 100%);left:calc(50% - 100%);width:200%;height:200%}.mdc-ripple-surface.mdc-ripple-upgraded::after{width:var(--mdc-ripple-fg-size, 100%);height:var(--mdc-ripple-fg-size, 100%)}.mdc-ripple-surface[data-mdc-ripple-is-unbounded],.mdc-ripple-upgraded--unbounded{overflow:visible}.mdc-ripple-surface[data-mdc-ripple-is-unbounded]::before,.mdc-ripple-surface[data-mdc-ripple-is-unbounded]::after,.mdc-ripple-upgraded--unbounded::before,.mdc-ripple-upgraded--unbounded::after{top:calc(50% - 50%);left:calc(50% - 50%);width:100%;height:100%}.mdc-ripple-surface[data-mdc-ripple-is-unbounded].mdc-ripple-upgraded::before,.mdc-ripple-surface[data-mdc-ripple-is-unbounded].mdc-ripple-upgraded::after,.mdc-ripple-upgraded--unbounded.mdc-ripple-upgraded::before,.mdc-ripple-upgraded--unbounded.mdc-ripple-upgraded::after{top:var(--mdc-ripple-top, calc(50% - 50%));left:var(--mdc-ripple-left, calc(50% - 50%));width:var(--mdc-ripple-fg-size, 100%);height:var(--mdc-ripple-fg-size, 100%)}.mdc-ripple-surface[data-mdc-ripple-is-unbounded].mdc-ripple-upgraded::after,.mdc-ripple-upgraded--unbounded.mdc-ripple-upgraded::after{width:var(--mdc-ripple-fg-size, 100%);height:var(--mdc-ripple-fg-size, 100%)}.mdc-ripple-surface::before,.mdc-ripple-surface::after{background-color:#000;background-color:var(--mdc-ripple-color, #000)}.mdc-ripple-surface:hover::before,.mdc-ripple-surface.mdc-ripple-surface--hover::before{opacity:0.04;opacity:var(--mdc-ripple-hover-opacity, 0.04)}.mdc-ripple-surface.mdc-ripple-upgraded--background-focused::before,.mdc-ripple-surface:not(.mdc-ripple-upgraded):focus::before{transition-duration:75ms;opacity:0.12;opacity:var(--mdc-ripple-focus-opacity, 0.12)}.mdc-ripple-surface:not(.mdc-ripple-upgraded)::after{transition:opacity 150ms linear}.mdc-ripple-surface:not(.mdc-ripple-upgraded):active::after{transition-duration:75ms;opacity:0.12;opacity:var(--mdc-ripple-press-opacity, 0.12)}.mdc-ripple-surface.mdc-ripple-upgraded{--mdc-ripple-fg-opacity:var(--mdc-ripple-press-opacity, 0.12)}:host{--wcs-select-ligther-percentage:40;--wcs-select-border-radius:var(--wcs-border-radius);--wcs-select-background-color:var(--wcs-light);--wcs-select-placeholder-color:var(--wcs-text-medium);--wcs-select-value-color:var(--wcs-primary);--wcs-select-border-color:transparent;--wcs-select-overlay-max-height:360px;--wcs-select-option-height:var(--wcs-size-m);--wcs-select-border-width:1px;display:block;position:relative;outline:none;user-select:none;box-sizing:border-box}:host svg{flex-shrink:0}:host .arrow{fill:var(--wcs-select-value-color)}:host .chip{fill:var(--wcs-contrast);opacity:calc((100 - var(--wcs-select-ligther-percentage)) / 100)}:host .chip:hover{opacity:100}:host(.expanded){--wcs-select-border-color:var(--wcs-text-light)}:host(.expanded) .wcs-select-options{display:block}:host(:not(.expanded):focus) .wcs-select-control{border:var(--wcs-primary) solid 1px}:host(:not(.expanded):focus-visible) .wcs-select-control{outline:2px dashed var(--wcs-primary);outline-offset:4px;border-radius:var(--wcs-select-border-radius)}:host([disabled]){cursor:not-allowed}:host([disabled]) .wcs-select-control,:host([disabled]) label{cursor:default;pointer-events:none}:host([disabled]) label{color:var(--wcs-text-disabled)}:host([disabled]) .arrow{fill:var(--wcs-text-medium)}label{padding-left:calc(var(--wcs-padding) - var(--wcs-select-border-width));padding-right:calc(var(--wcs-padding) - var(--wcs-select-border-width));font-weight:500;cursor:pointer;color:var(--wcs-select-color);transition:color 125ms ease-in;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}:host([size=m]){min-height:var(--wcs-size-m);--wcs-select-font-size:1rem}:host([size=m]) .wcs-select-control{min-height:var(--wcs-size-m)}:host([size=l]){min-height:var(--wcs-size-l);--wcs-select-font-size:1.0625rem}:host([size=l]) .wcs-select-control{min-height:var(--wcs-size-l)}:host([chips]) .wcs-select-control{flex-wrap:wrap}.wcs-select-control{box-sizing:border-box;--mdc-ripple-fg-size:0;--mdc-ripple-left:0;--mdc-ripple-top:0;--mdc-ripple-fg-scale:1;--mdc-ripple-fg-translate-end:0;--mdc-ripple-fg-translate-start:0;-webkit-tap-highlight-color:rgba(0, 0, 0, 0);will-change:transform, opacity;overflow:hidden;display:flex;align-items:center;padding-right:var(--wcs-text-padding);background-color:var(--wcs-select-background-color);border-radius:var(--wcs-select-border-radius);border:var(--wcs-select-border-color) solid var(--wcs-select-border-width);font-size:var(--wcs-select-font-size, 1rem);line-height:1.5;cursor:pointer}.wcs-select-control::before,.wcs-select-control::after{position:absolute;border-radius:50%;opacity:0;pointer-events:none;content:\"\"}.wcs-select-control::before{transition:opacity 15ms linear, background-color 15ms linear;z-index:1;z-index:var(--mdc-ripple-z-index, 1)}.wcs-select-control::after{z-index:0;z-index:var(--mdc-ripple-z-index, 0)}.wcs-select-control.mdc-ripple-upgraded::before{transform:scale(var(--mdc-ripple-fg-scale, 1))}.wcs-select-control.mdc-ripple-upgraded::after{top:0;left:0;transform:scale(0);transform-origin:center center}.wcs-select-control.mdc-ripple-upgraded--unbounded::after{top:var(--mdc-ripple-top, 0);left:var(--mdc-ripple-left, 0)}.wcs-select-control.mdc-ripple-upgraded--foreground-activation::after{animation:mdc-ripple-fg-radius-in 225ms forwards, mdc-ripple-fg-opacity-in 75ms forwards}.wcs-select-control.mdc-ripple-upgraded--foreground-deactivation::after{animation:mdc-ripple-fg-opacity-out 150ms;transform:translate(var(--mdc-ripple-fg-translate-end, 0)) scale(var(--mdc-ripple-fg-scale, 1))}.wcs-select-control::before,.wcs-select-control::after{top:calc(50% - 100%);left:calc(50% - 100%);width:200%;height:200%}.wcs-select-control.mdc-ripple-upgraded::after{width:var(--mdc-ripple-fg-size, 100%);height:var(--mdc-ripple-fg-size, 100%)}.wcs-select-control::before,.wcs-select-control::after{background-color:#999;background-color:var(--mdc-ripple-color, #999)}.wcs-select-control:hover::before,.wcs-select-control.mdc-ripple-surface--hover::before{opacity:0.1;opacity:var(--mdc-ripple-hover-opacity, 0.1)}.wcs-select-control.mdc-ripple-upgraded--background-focused::before,.wcs-select-control:not(.mdc-ripple-upgraded):focus::before{transition-duration:75ms;opacity:0.2;opacity:var(--mdc-ripple-focus-opacity, 0.2)}.wcs-select-control:not(.mdc-ripple-upgraded)::after{transition:opacity 150ms linear}.wcs-select-control:not(.mdc-ripple-upgraded):active::after{transition-duration:75ms;opacity:0.3;opacity:var(--mdc-ripple-press-opacity, 0.3)}.wcs-select-control.mdc-ripple-upgraded{--mdc-ripple-fg-opacity:var(--mdc-ripple-press-opacity, 0.3)}.wcs-select-placeholder{color:var(--wcs-select-placeholder-color);font-style:italic;font-weight:400}.wcs-select-value{color:var(--wcs-select-value-color);font-weight:var(--wcs-font-weight-form-value)}.wcs-select-value-container{margin-top:4px;margin-bottom:4px;margin-left:calc(var(--wcs-margin) / 2);max-width:calc(100% - (24px + var(--wcs-base-margin)));display:flex;flex-direction:row;gap:4px;align-items:center;flex-wrap:wrap}.wcs-select-chip{line-height:1.375;color:var(--wcs-contrast);background-color:var(--wcs-base);border-radius:0.75rem;display:flex;align-items:center;padding:calc((var(--wcs-padding) - 8px) / 2) var(--wcs-padding);overflow:initial}.wcs-select-options{display:none;position:absolute;z-index:999999999;border:solid var(--wcs-select-border-width) var(--wcs-select-border-color);border-radius:var(--wcs-select-border-radius);max-height:var(--wcs-select-overlay-max-height);overflow-y:auto;width:calc(100% - 2 * var(--wcs-select-border-width));background-color:var(--wcs-white);color:var(--wcs-text-medium)}";
4999
+ /**
5000
+ * We follow this https://www.w3.org/WAI/ARIA/apg/patterns/combobox/examples/combobox-select-only/
5001
+ * @param event
5002
+ * @param currentState
5003
+ * @param type
5004
+ */
5005
+ function getActionForKeyboardEvent(event, currentState, type) {
5006
+ const keyboardShortcut = keyboardShortcutFromKeyboardEvent(event);
5007
+ if (keyboardShortcut === 'UNKNOWN') {
5008
+ return [];
5009
+ }
5010
+ switch (currentState) {
5011
+ case "closed":
5012
+ // We handle every available shortcut for the closed state
5013
+ switch (keyboardShortcut) {
5014
+ case "MAJ+TAB":
5015
+ switch (type) {
5016
+ case "unique":
5017
+ case "multiple":
5018
+ return [];
5019
+ case "autocomplete_unique":
5020
+ case "autocomplete_multiple":
5021
+ // We need to move focus to previous focusable element in order to ignore the wcs-select component
5022
+ return [{ kind: 'MoveFocus', target: 'previous' }];
5023
+ }
5024
+ break;
5025
+ case 'DOWN_ARROW':
5026
+ switch (type) {
5027
+ case "unique":
5028
+ return [{ kind: 'SelectOption', target: 'next' }];
5029
+ case "autocomplete_multiple":
5030
+ case "autocomplete_unique":
5031
+ return [{ kind: 'OpenSelect' }, { kind: 'HighlightOption', target: 'first' }];
5032
+ case "multiple":
5033
+ return [{ kind: 'OpenSelect' }, { kind: 'FocusOption', target: 'first' }];
5034
+ }
5035
+ break;
5036
+ case 'RIGHT_ARROW':
5037
+ switch (type) {
5038
+ case "autocomplete_unique":
5039
+ case "autocomplete_multiple":
5040
+ // Do nothing, we navigate between characters inside input field
5041
+ return [];
5042
+ case "unique":
5043
+ return [{ kind: 'SelectOption', target: 'next' }];
5044
+ case "multiple":
5045
+ return [{ kind: 'OpenSelect' }, { kind: 'FocusOption', target: 'first' }];
5046
+ }
5047
+ break;
5048
+ case 'UP_ARROW':
5049
+ switch (type) {
5050
+ case "autocomplete_unique":
5051
+ case "autocomplete_multiple":
5052
+ return [{ kind: 'OpenSelect' }, { kind: 'HighlightOption', target: 'last' }];
5053
+ case "multiple":
5054
+ break;
5055
+ case "unique":
5056
+ return [{ kind: 'SelectOption', target: 'previous' }];
5057
+ }
5058
+ break;
5059
+ case 'LEFT_ARROW':
5060
+ switch (type) {
5061
+ case "autocomplete_unique":
5062
+ case "autocomplete_multiple":
5063
+ // Do nothing, we navigate between characters inside input field
5064
+ return [];
5065
+ case "unique":
5066
+ return [{ kind: 'SelectOption', target: 'previous' }];
5067
+ }
5068
+ break;
5069
+ case 'ALT+DOWN_ARROW':
5070
+ case 'ALT+UP_ARROW':
5071
+ switch (type) {
5072
+ case "unique":
5073
+ return [{ kind: 'OpenSelect' }, { kind: 'FocusOption', target: 'first' }];
5074
+ case "autocomplete_unique":
5075
+ case "autocomplete_multiple":
5076
+ case "multiple":
5077
+ return [{ kind: 'OpenSelect' }];
5078
+ }
5079
+ break;
5080
+ case 'SPACE':
5081
+ case 'ENTER':
5082
+ switch (type) {
5083
+ case "autocomplete_unique":
5084
+ case "autocomplete_multiple":
5085
+ return [];
5086
+ case "unique":
5087
+ case "multiple":
5088
+ return [{ kind: 'OpenSelect' }, { kind: 'FocusOption', target: 'lastFocused' }];
5089
+ }
5090
+ break;
5091
+ case 'ESCAPE':
5092
+ switch (type) {
5093
+ case "autocomplete_unique":
5094
+ case "autocomplete_multiple":
5095
+ return [{ kind: 'ClearAutocompleteInput' }];
5096
+ case 'unique':
5097
+ case 'multiple':
5098
+ return [];
5099
+ }
5100
+ break;
5101
+ case 'PAGE_UP':
5102
+ switch (type) {
5103
+ case "autocomplete_unique":
5104
+ return [];
5105
+ case "autocomplete_multiple":
5106
+ return [];
5107
+ case "unique":
5108
+ return [{ kind: 'SelectOption', target: 'first' }];
5109
+ case "multiple":
5110
+ return [];
5111
+ }
5112
+ break;
5113
+ case 'PAGE_DOWN':
5114
+ switch (type) {
5115
+ case "autocomplete_unique":
5116
+ return [];
5117
+ case "autocomplete_multiple":
5118
+ return [];
5119
+ case "unique":
5120
+ return [{ kind: 'SelectOption', target: 'last' }];
5121
+ case "multiple":
5122
+ return [];
5123
+ }
5124
+ break;
5125
+ }
5126
+ break;
5127
+ case 'opened':
5128
+ // We handle every available shortcut for the opened state
5129
+ switch (keyboardShortcut) {
5130
+ case 'ESCAPE':
5131
+ switch (type) {
5132
+ case 'unique':
5133
+ case 'multiple':
5134
+ case 'autocomplete_unique':
5135
+ case 'autocomplete_multiple':
5136
+ return [{ kind: 'CloseSelect', shouldBlur: false }];
5137
+ }
5138
+ break;
5139
+ case 'ALT+UP_ARROW':
5140
+ switch (type) {
5141
+ case 'unique':
5142
+ case 'multiple':
5143
+ return [{ kind: 'CloseSelect', shouldBlur: false }];
5144
+ case 'autocomplete_unique':
5145
+ case 'autocomplete_multiple':
5146
+ // We must keep select autocomplete opened
5147
+ return [];
5148
+ }
5149
+ break;
5150
+ case 'TAB':
5151
+ switch (type) {
5152
+ case "autocomplete_unique":
5153
+ return [{ kind: 'SelectOption', target: 'lastHighlighted' }, { kind: 'CloseSelect', shouldBlur: false }];
5154
+ case "autocomplete_multiple":
5155
+ return [{ kind: 'CloseSelect', shouldBlur: false }];
5156
+ case "unique":
5157
+ case "multiple":
5158
+ return [{ kind: 'CloseSelect', shouldBlur: true }];
5159
+ }
5160
+ break;
5161
+ case 'MAJ+TAB':
5162
+ switch (type) {
5163
+ case "autocomplete_unique":
5164
+ // We don't blur the select when we close it because we move the focus manually just after closing it.
5165
+ return [{ kind: 'SelectOption', target: 'lastHighlighted' }, { kind: 'CloseSelect', shouldBlur: false }, { kind: 'MoveFocus', target: 'previous' }];
5166
+ case "autocomplete_multiple":
5167
+ // We don't blur the select when we close it because we move the focus manually just after closing it.
5168
+ return [{ kind: 'CloseSelect', shouldBlur: false }, { kind: 'MoveFocus', target: 'previous' }];
5169
+ case "unique":
5170
+ case "multiple":
5171
+ return [{ kind: 'CloseSelect', shouldBlur: true }];
5172
+ }
5173
+ break;
5174
+ case 'UP_ARROW':
5175
+ switch (type) {
5176
+ case "autocomplete_unique":
5177
+ case "autocomplete_multiple":
5178
+ return [{ kind: 'HighlightOption', target: 'previous' }];
5179
+ case "unique":
5180
+ case "multiple":
5181
+ return [{ kind: 'FocusOption', target: 'previous' }];
5182
+ }
5183
+ break;
5184
+ case 'LEFT_ARROW':
5185
+ switch (type) {
5186
+ case "autocomplete_unique":
5187
+ case "autocomplete_multiple":
5188
+ // We do nothing (navigate between characters in input field)
5189
+ return [];
5190
+ case "unique":
5191
+ case "multiple":
5192
+ return [{ kind: 'FocusOption', target: 'previous' }];
5193
+ }
5194
+ break;
5195
+ case 'DOWN_ARROW':
5196
+ switch (type) {
5197
+ case "autocomplete_unique":
5198
+ case "autocomplete_multiple":
5199
+ return [{ kind: 'HighlightOption', target: 'next' }];
5200
+ case "unique":
5201
+ case "multiple":
5202
+ return [{ kind: 'FocusOption', target: 'next' }];
5203
+ }
5204
+ break;
5205
+ case 'RIGHT_ARROW':
5206
+ switch (type) {
5207
+ case "autocomplete_unique":
5208
+ case "autocomplete_multiple":
5209
+ // We do nothing (navigate between characters in input field)
5210
+ return [];
5211
+ case "unique":
5212
+ case "multiple":
5213
+ return [{ kind: 'FocusOption', target: 'next' }];
5214
+ }
5215
+ break;
5216
+ case "PAGE_UP":
5217
+ switch (type) {
5218
+ case "autocomplete_unique":
5219
+ case "autocomplete_multiple":
5220
+ return [{ kind: 'HighlightOption', target: 'first' }];
5221
+ case "unique":
5222
+ case "multiple":
5223
+ return [{ kind: 'FocusOption', target: 'first' }];
5224
+ }
5225
+ break;
5226
+ case "PAGE_DOWN":
5227
+ switch (type) {
5228
+ case "autocomplete_unique":
5229
+ case "autocomplete_multiple":
5230
+ return [{ kind: 'HighlightOption', target: 'last' }];
5231
+ case "unique":
5232
+ case "multiple":
5233
+ return [{ kind: 'FocusOption', target: 'last' }];
5234
+ }
5235
+ break;
5236
+ case "ENTER":
5237
+ switch (type) {
5238
+ case "autocomplete_unique":
5239
+ return [{ kind: 'SelectOption', target: 'lastHighlighted' }];
5240
+ case "autocomplete_multiple":
5241
+ return [{ kind: 'SelectOption', target: 'lastHighlighted' }];
5242
+ }
5243
+ break;
5244
+ }
5245
+ break;
5246
+ default:
5247
+ throw Error('Unknown error');
5248
+ }
5249
+ return [];
5250
+ }
5251
+
5252
+ const selectCss = "@keyframes mdc-ripple-fg-radius-in{from{animation-timing-function:cubic-bezier(0.4, 0, 0.2, 1);transform:translate(var(--mdc-ripple-fg-translate-start, 0)) scale(1)}to{transform:translate(var(--mdc-ripple-fg-translate-end, 0)) scale(var(--mdc-ripple-fg-scale, 1))}}@keyframes mdc-ripple-fg-opacity-in{from{animation-timing-function:linear;opacity:0}to{opacity:var(--mdc-ripple-fg-opacity, 0)}}@keyframes mdc-ripple-fg-opacity-out{from{animation-timing-function:linear;opacity:var(--mdc-ripple-fg-opacity, 0)}to{opacity:0}}.mdc-ripple-surface{--mdc-ripple-fg-size:0;--mdc-ripple-left:0;--mdc-ripple-top:0;--mdc-ripple-fg-scale:1;--mdc-ripple-fg-translate-end:0;--mdc-ripple-fg-translate-start:0;-webkit-tap-highlight-color:rgba(0, 0, 0, 0);will-change:transform, opacity;position:relative;outline:none;overflow:hidden}.mdc-ripple-surface::before,.mdc-ripple-surface::after{position:absolute;border-radius:50%;opacity:0;pointer-events:none;content:\"\"}.mdc-ripple-surface::before{transition:opacity 15ms linear, background-color 15ms linear;z-index:1;z-index:var(--mdc-ripple-z-index, 1)}.mdc-ripple-surface::after{z-index:0;z-index:var(--mdc-ripple-z-index, 0)}.mdc-ripple-surface.mdc-ripple-upgraded::before{transform:scale(var(--mdc-ripple-fg-scale, 1))}.mdc-ripple-surface.mdc-ripple-upgraded::after{top:0;left:0;transform:scale(0);transform-origin:center center}.mdc-ripple-surface.mdc-ripple-upgraded--unbounded::after{top:var(--mdc-ripple-top, 0);left:var(--mdc-ripple-left, 0)}.mdc-ripple-surface.mdc-ripple-upgraded--foreground-activation::after{animation:mdc-ripple-fg-radius-in 225ms forwards, mdc-ripple-fg-opacity-in 75ms forwards}.mdc-ripple-surface.mdc-ripple-upgraded--foreground-deactivation::after{animation:mdc-ripple-fg-opacity-out 150ms;transform:translate(var(--mdc-ripple-fg-translate-end, 0)) scale(var(--mdc-ripple-fg-scale, 1))}.mdc-ripple-surface::before,.mdc-ripple-surface::after{top:calc(50% - 100%);left:calc(50% - 100%);width:200%;height:200%}.mdc-ripple-surface.mdc-ripple-upgraded::after{width:var(--mdc-ripple-fg-size, 100%);height:var(--mdc-ripple-fg-size, 100%)}.mdc-ripple-surface[data-mdc-ripple-is-unbounded],.mdc-ripple-upgraded--unbounded{overflow:visible}.mdc-ripple-surface[data-mdc-ripple-is-unbounded]::before,.mdc-ripple-surface[data-mdc-ripple-is-unbounded]::after,.mdc-ripple-upgraded--unbounded::before,.mdc-ripple-upgraded--unbounded::after{top:calc(50% - 50%);left:calc(50% - 50%);width:100%;height:100%}.mdc-ripple-surface[data-mdc-ripple-is-unbounded].mdc-ripple-upgraded::before,.mdc-ripple-surface[data-mdc-ripple-is-unbounded].mdc-ripple-upgraded::after,.mdc-ripple-upgraded--unbounded.mdc-ripple-upgraded::before,.mdc-ripple-upgraded--unbounded.mdc-ripple-upgraded::after{top:var(--mdc-ripple-top, calc(50% - 50%));left:var(--mdc-ripple-left, calc(50% - 50%));width:var(--mdc-ripple-fg-size, 100%);height:var(--mdc-ripple-fg-size, 100%)}.mdc-ripple-surface[data-mdc-ripple-is-unbounded].mdc-ripple-upgraded::after,.mdc-ripple-upgraded--unbounded.mdc-ripple-upgraded::after{width:var(--mdc-ripple-fg-size, 100%);height:var(--mdc-ripple-fg-size, 100%)}.mdc-ripple-surface::before,.mdc-ripple-surface::after{background-color:#000;background-color:var(--mdc-ripple-color, #000)}.mdc-ripple-surface:hover::before,.mdc-ripple-surface.mdc-ripple-surface--hover::before{opacity:0.04;opacity:var(--mdc-ripple-hover-opacity, 0.04)}.mdc-ripple-surface.mdc-ripple-upgraded--background-focused::before,.mdc-ripple-surface:not(.mdc-ripple-upgraded):focus::before{transition-duration:75ms;opacity:0.12;opacity:var(--mdc-ripple-focus-opacity, 0.12)}.mdc-ripple-surface:not(.mdc-ripple-upgraded)::after{transition:opacity 150ms linear}.mdc-ripple-surface:not(.mdc-ripple-upgraded):active::after{transition-duration:75ms;opacity:0.12;opacity:var(--mdc-ripple-press-opacity, 0.12)}.mdc-ripple-surface.mdc-ripple-upgraded{--mdc-ripple-fg-opacity:var(--mdc-ripple-press-opacity, 0.12)}:host{--wcs-select-ligther-percentage:40;--wcs-select-border-radius:var(--wcs-border-radius);--wcs-select-background-color:var(--wcs-light);--wcs-select-placeholder-color:var(--wcs-text-medium);--wcs-select-value-color:var(--wcs-primary);--wcs-select-border-color:transparent;--wcs-select-overlay-max-height:360px;--wcs-select-option-height:var(--wcs-size-m);--wcs-select-border-width:1px;display:block;position:relative;outline:none;user-select:none;box-sizing:border-box}:host svg{flex-shrink:0}:host .arrow{fill:var(--wcs-select-value-color)}:host .chip{fill:var(--wcs-contrast);opacity:calc((100 - var(--wcs-select-ligther-percentage)) / 100)}:host .chip:hover{opacity:100}:host(.expanded){--wcs-select-border-color:var(--wcs-text-light)}:host(.expanded) .wcs-select-options{display:block}:host(:not(.expanded):focus-visible) .wcs-select-control{outline:2px dashed var(--wcs-primary);outline-offset:0;border-radius:var(--wcs-select-border-radius)}:host([disabled]){cursor:not-allowed}:host([disabled]) .wcs-select-control,:host([disabled]) label{cursor:default;pointer-events:none}:host([disabled]) label{color:var(--wcs-text-disabled)}:host([disabled]) .arrow{fill:var(--wcs-text-medium)}label{padding-left:calc(var(--wcs-padding) / 2 - var(--wcs-select-border-width));padding-right:calc(var(--wcs-padding) - var(--wcs-select-border-width));font-weight:500;cursor:pointer;color:var(--wcs-select-color);transition:color 125ms ease-in;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}:host([size=m]){min-height:var(--wcs-size-m);--wcs-select-font-size:1rem;--wcs-internal-select-chip-size:calc(var(--wcs-size-s) - 2px)}:host([size=m]) .wcs-select-control{min-height:var(--wcs-size-m)}:host([size=m]):host([autocomplete]) .autocomplete-field{height:calc(var(--wcs-size-s) - 2px)}:host([size=m]):host([autocomplete]) .wcs-select-value-container{padding-top:calc((var(--wcs-size-m) - var(--wcs-internal-select-chip-size)) / 2 - var(--wcs-select-border-width));padding-bottom:calc((var(--wcs-size-m) - var(--wcs-internal-select-chip-size)) / 2 - var(--wcs-select-border-width))}:host([size=l]){min-height:var(--wcs-size-l);--wcs-select-font-size:1.0625rem;--wcs-internal-select-chip-size:var(--wcs-size-s)}:host([size=l]) .wcs-select-control{min-height:var(--wcs-size-l)}:host([size=l]):host([autocomplete]) .autocomplete-field{height:var(--wcs-size-s)}:host([size=l]):host([autocomplete]) .wcs-select-value-container{padding-top:calc((var(--wcs-size-l) - var(--wcs-internal-select-chip-size)) / 2 - var(--wcs-select-border-width));padding-bottom:calc((var(--wcs-size-l) - var(--wcs-internal-select-chip-size)) / 2 - var(--wcs-select-border-width))}:host([chips]) .wcs-select-control{flex-wrap:wrap}.wcs-select-control{box-sizing:border-box;--mdc-ripple-fg-size:0;--mdc-ripple-left:0;--mdc-ripple-top:0;--mdc-ripple-fg-scale:1;--mdc-ripple-fg-translate-end:0;--mdc-ripple-fg-translate-start:0;-webkit-tap-highlight-color:rgba(0, 0, 0, 0);will-change:transform, opacity;overflow:hidden;display:flex;align-items:center;padding-right:var(--wcs-text-padding);background-color:var(--wcs-select-background-color);border-radius:var(--wcs-select-border-radius);border:var(--wcs-select-border-color) solid var(--wcs-select-border-width);font-size:var(--wcs-select-font-size, 1rem);line-height:1.5;cursor:pointer}.wcs-select-control::before,.wcs-select-control::after{position:absolute;border-radius:50%;opacity:0;pointer-events:none;content:\"\"}.wcs-select-control::before{transition:opacity 15ms linear, background-color 15ms linear;z-index:1;z-index:var(--mdc-ripple-z-index, 1)}.wcs-select-control::after{z-index:0;z-index:var(--mdc-ripple-z-index, 0)}.wcs-select-control.mdc-ripple-upgraded::before{transform:scale(var(--mdc-ripple-fg-scale, 1))}.wcs-select-control.mdc-ripple-upgraded::after{top:0;left:0;transform:scale(0);transform-origin:center center}.wcs-select-control.mdc-ripple-upgraded--unbounded::after{top:var(--mdc-ripple-top, 0);left:var(--mdc-ripple-left, 0)}.wcs-select-control.mdc-ripple-upgraded--foreground-activation::after{animation:mdc-ripple-fg-radius-in 225ms forwards, mdc-ripple-fg-opacity-in 75ms forwards}.wcs-select-control.mdc-ripple-upgraded--foreground-deactivation::after{animation:mdc-ripple-fg-opacity-out 150ms;transform:translate(var(--mdc-ripple-fg-translate-end, 0)) scale(var(--mdc-ripple-fg-scale, 1))}.wcs-select-control::before,.wcs-select-control::after{top:calc(50% - 100%);left:calc(50% - 100%);width:200%;height:200%}.wcs-select-control.mdc-ripple-upgraded::after{width:var(--mdc-ripple-fg-size, 100%);height:var(--mdc-ripple-fg-size, 100%)}.wcs-select-control::before,.wcs-select-control::after{background-color:#999;background-color:var(--mdc-ripple-color, #999)}.wcs-select-control:hover::before,.wcs-select-control.mdc-ripple-surface--hover::before{opacity:0.1;opacity:var(--mdc-ripple-hover-opacity, 0.1)}.wcs-select-control.mdc-ripple-upgraded--background-focused::before,.wcs-select-control:not(.mdc-ripple-upgraded):focus::before{transition-duration:75ms;opacity:0.2;opacity:var(--mdc-ripple-focus-opacity, 0.2)}.wcs-select-control:not(.mdc-ripple-upgraded)::after{transition:opacity 150ms linear}.wcs-select-control:not(.mdc-ripple-upgraded):active::after{transition-duration:75ms;opacity:0.3;opacity:var(--mdc-ripple-press-opacity, 0.3)}.wcs-select-control.mdc-ripple-upgraded{--mdc-ripple-fg-opacity:var(--mdc-ripple-press-opacity, 0.3)}.wcs-select-placeholder{color:var(--wcs-select-placeholder-color);font-style:italic;font-weight:400}.wcs-select-value{color:var(--wcs-select-value-color);font-weight:var(--wcs-font-weight-form-value)}.wcs-select-value-container{margin-top:4px;margin-bottom:4px;margin-left:calc(var(--wcs-margin) / 2);max-width:calc(100% - (24px + var(--wcs-base-margin)));display:flex;flex-direction:row;gap:4px;align-items:center;flex-wrap:wrap}.wcs-select-chip{box-sizing:border-box;height:var(--wcs-internal-select-chip-size);line-height:1.375;color:var(--wcs-contrast);background-color:var(--wcs-base);border-radius:0.75rem;display:flex;align-items:center;padding:calc((var(--wcs-padding) - 8px) / 2) var(--wcs-padding);overflow:initial;z-index:1}.wcs-select-options{display:none;position:absolute;z-index:999999999;border:solid var(--wcs-select-border-width) var(--wcs-select-border-color);border-radius:var(--wcs-select-border-radius);max-height:var(--wcs-select-overlay-max-height);overflow-y:auto;width:calc(100% - 2 * var(--wcs-select-border-width));background-color:var(--wcs-white);color:var(--wcs-text-medium)}:host([autocomplete]) .wcs-select-value-container{margin:0;width:100%;padding-left:var(--wcs-padding-m)}:host([autocomplete]) input{border-radius:var(--wcs-border-radius);font:unset;background-color:transparent;outline:none;border:none;padding:0 var(--wcs-margin);color:var(--wcs-primary);font-weight:var(--wcs-font-weight-form-value) !important;font-size:var(--wcs-select-font-size);line-height:1.5}:host([autocomplete]) input:focus-within{outline:2px dashed var(--wcs-primary);outline-offset:0;border-radius:var(--wcs-border-radius)}:host([autocomplete]) input::placeholder{font-style:italic;font-weight:400}.autocomplete-field{width:0;min-width:50px;border-radius:var(--wcs-border-radius);flex-grow:1}.noresult-container{margin:var(--wcs-margin)}";
4989
5253
 
4990
5254
  const SELECT_MACHINE_CONFIG = {
4991
5255
  key: 'select',
@@ -5015,20 +5279,24 @@ const Select = class {
5015
5279
  this.wcsChange = createEvent(this, "wcsChange", 7);
5016
5280
  this.wcsFocus = createEvent(this, "wcsFocus", 7);
5017
5281
  this.wcsBlur = createEvent(this, "wcsBlur", 7);
5282
+ this.wcsFilterChange = createEvent(this, "wcsFilterChange", 7);
5018
5283
  this.selectId = `wcs-select-${selectIds++}`;
5019
5284
  this.optionsId = generateUniqueId("OPTIONS");
5020
5285
  this.expanded = false;
5021
5286
  this.size = 'm';
5022
- this.hasLoaded = false;
5023
5287
  this.displayText = undefined;
5024
5288
  this.focused = undefined;
5025
5289
  this.value = undefined;
5026
5290
  this.placeholder = undefined;
5027
5291
  this.disabled = false;
5028
5292
  this.multiple = false;
5293
+ this.autocomplete = false;
5294
+ this.filterFn = undefined;
5029
5295
  this.chips = false;
5030
5296
  this.name = undefined;
5031
5297
  this.compareWith = (optionValue, selectedValue) => isEqual(optionValue, selectedValue);
5298
+ this.showNoResultFoundLabel = false;
5299
+ this.autocompleteValue = undefined;
5032
5300
  this.overlayDirection = 'bottom';
5033
5301
  }
5034
5302
  /** Open the component. */
@@ -5041,7 +5309,6 @@ const Select = class {
5041
5309
  }
5042
5310
  onValueChangeHandler(newValue) {
5043
5311
  this.updateSelectedValue(newValue);
5044
- this.emitChange(this.value);
5045
5312
  }
5046
5313
  updateSelectedValue(value) {
5047
5314
  // If no value is passed, the select is reset.
@@ -5078,6 +5345,9 @@ const Select = class {
5078
5345
  const isSelected = this.compareWith(opt.value, value);
5079
5346
  if (isSelected) {
5080
5347
  this.displayText = opt.innerText;
5348
+ if (this.autocomplete) {
5349
+ this.autocompleteValue = opt.innerText;
5350
+ }
5081
5351
  }
5082
5352
  opt.selected = isSelected;
5083
5353
  });
@@ -5090,6 +5360,9 @@ const Select = class {
5090
5360
  reset() {
5091
5361
  this.values = [];
5092
5362
  this.displayText = undefined;
5363
+ if (this.autocomplete) {
5364
+ this.autocompleteValue = undefined;
5365
+ }
5093
5366
  this.options.forEach((opt) => {
5094
5367
  opt.selected = false;
5095
5368
  });
@@ -5120,8 +5393,6 @@ const Select = class {
5120
5393
  if (this.labelElement) {
5121
5394
  this.labelElement.id = this.selectId + "-lbl";
5122
5395
  }
5123
- // TODO: is this still usefull for anything ?
5124
- this.hasLoaded = true;
5125
5396
  }
5126
5397
  createPopperInstance() {
5127
5398
  return createPopper(this.controlEl, this.optionsEl, {
@@ -5160,16 +5431,24 @@ const Select = class {
5160
5431
  });
5161
5432
  observer.observe(this.el, { childList: true });
5162
5433
  }
5434
+ componentWillRender() {
5435
+ if (this.multiple) {
5436
+ this.options
5437
+ .forEach((opt) => opt.multiple = true);
5438
+ }
5439
+ }
5163
5440
  componentWillLoad() {
5164
5441
  if (!isWcsSelectSize(this.size)) {
5165
5442
  console.error(`Invalid size value for wcs-select : "${this.size}". Must be one of "${WcsSelectSizeValue.join(', ')}"`);
5166
5443
  this.size = "m"; // Default fallback value
5167
5444
  }
5168
5445
  }
5169
- componentWillUpdate() {
5170
- if (this.multiple) {
5171
- this.options
5172
- .forEach((opt) => opt.multiple = true);
5446
+ async setAriaAttribute(attr, value) {
5447
+ if (this.autocomplete === false) {
5448
+ this.el.setAttribute(attr, value);
5449
+ }
5450
+ else {
5451
+ this.autocompleteInput.setAttribute(attr, value);
5173
5452
  }
5174
5453
  }
5175
5454
  get options() {
@@ -5182,7 +5461,7 @@ const Select = class {
5182
5461
  }
5183
5462
  get notDisabledOptions() {
5184
5463
  var _a;
5185
- const opts = (_a = this.el) === null || _a === void 0 ? void 0 : _a.querySelectorAll('wcs-select-option:not([disabled])');
5464
+ const opts = (_a = this.el) === null || _a === void 0 ? void 0 : _a.querySelectorAll('wcs-select-option:not([disabled]):not([aria-hidden])');
5186
5465
  if (opts && opts.length !== 0) {
5187
5466
  return opts;
5188
5467
  }
@@ -5192,15 +5471,25 @@ const Select = class {
5192
5471
  return {
5193
5472
  actions: {
5194
5473
  open: () => {
5195
- var _a;
5474
+ var _a, _b;
5196
5475
  if (!this.disabled) {
5197
5476
  this.expanded = true;
5198
5477
  this.focused = false;
5478
+ if (this.multiple === false && this.autocomplete && this.hasValue === false) {
5479
+ // If we open the select in single autocomplete mode, we update the autocomplete value at
5480
+ // the blur event so that the displayed value reflect the current select value.
5481
+ // Indeed, we have to tell the component to take the current filter state manually at the
5482
+ // opening (because the input event of the autocomplete field is not fired at this point).
5483
+ this.handleAutocompleteValueChange((_a = this.autocompleteValue) !== null && _a !== void 0 ? _a : '');
5484
+ }
5485
+ this.clearHighlightOnLastHighlightedOption();
5199
5486
  if (this.notDisabledOptions.length > 0) {
5200
- this.lastFocusedOptionElement = (_a = this.lastSelectedOptionElement) !== null && _a !== void 0 ? _a : this.notDisabledOptions[0];
5487
+ this.lastFocusedOptionElement = (_b = this.lastModifiedOptionElement) !== null && _b !== void 0 ? _b : this.notDisabledOptions[0];
5201
5488
  requestAnimationFrame(() => {
5202
- var _a;
5203
- (_a = this.lastFocusedOptionElement) === null || _a === void 0 ? void 0 : _a.focus();
5489
+ var _a, _b;
5490
+ this.autocomplete
5491
+ ? (_a = this.autocompleteInput) === null || _a === void 0 ? void 0 : _a.focus()
5492
+ : (_b = this.lastFocusedOptionElement) === null || _b === void 0 ? void 0 : _b.focus();
5204
5493
  });
5205
5494
  }
5206
5495
  }
@@ -5208,12 +5497,21 @@ const Select = class {
5208
5497
  close: (_, event) => {
5209
5498
  var _a, _b;
5210
5499
  if (event.type === 'CLOSE') {
5500
+ this.clearHighlightOnLastHighlightedOption();
5211
5501
  if ((_a = event.value) === null || _a === void 0 ? void 0 : _a.shouldBlur) {
5212
- (_b = this.el.closest("wcs-select")) === null || _b === void 0 ? void 0 : _b.focus();
5213
5502
  this.focused = false;
5214
5503
  }
5215
5504
  else {
5216
- this.el.focus();
5505
+ if (this.autocomplete && ((_b = event.value) === null || _b === void 0 ? void 0 : _b.fromKeyboard)) {
5506
+ // If we're in autocomplete mode, a keyboard event (e.g. escape) doesn't change the
5507
+ // focus (so this.el.focus() aren't called because the select was already focused)
5508
+ // but you still have to go back to the autocomplete input.
5509
+ this.focusAutocompleteInput();
5510
+ }
5511
+ else {
5512
+ // Otherwise, we focus the select element
5513
+ this.el.focus();
5514
+ }
5217
5515
  this.focused = true;
5218
5516
  }
5219
5517
  }
@@ -5221,7 +5519,24 @@ const Select = class {
5221
5519
  },
5222
5520
  selectOption: (_, event) => {
5223
5521
  if (event.type === 'OPTION_SELECTED') {
5224
- this.handleClickEvent(event.value);
5522
+ if (this.multiple) {
5523
+ this.handleOptionSelectedOnMultiple(event.value.option);
5524
+ }
5525
+ else {
5526
+ this.handleOptionSelectedOnSingle(event.value.option);
5527
+ this.stateService.send('CLOSE', { value: { fromKeyboard: event.value.fromKeyboard } });
5528
+ }
5529
+ if (this.autocomplete) {
5530
+ if (this.multiple) {
5531
+ requestAnimationFrame(() => {
5532
+ this.autocompleteInput.focus();
5533
+ });
5534
+ }
5535
+ else {
5536
+ this.autocompleteValue = event.value.option.displayText;
5537
+ }
5538
+ }
5539
+ this.emitChange(this.value);
5225
5540
  }
5226
5541
  }
5227
5542
  },
@@ -5230,28 +5545,18 @@ const Select = class {
5230
5545
  }
5231
5546
  };
5232
5547
  }
5233
- handleClickEvent(event) {
5234
- if (this.multiple) {
5235
- this.handleClickOnMultiple(event);
5236
- }
5237
- else {
5238
- this.handleNormalClick(event);
5239
- }
5240
- }
5241
- handleClickOnMultiple(event) {
5548
+ handleOptionSelectedOnMultiple(event) {
5242
5549
  const index = this.values.findIndex(v => v.value === event.value);
5243
5550
  if (index === -1) {
5244
5551
  const { value, displayText, chipColor, chipBackgroundColor } = event;
5245
5552
  this.values.push({ value, displayText, chipColor, chipBackgroundColor });
5246
5553
  event.source.selected = true;
5247
- this.lastSelectedOptionElement = event.source;
5248
5554
  }
5249
5555
  else {
5250
5556
  event.source.selected = false;
5251
5557
  this.values.splice(index, 1);
5252
- if (this.lastSelectedOptionElement === event.source)
5253
- this.lastSelectedOptionElement = null;
5254
5558
  }
5559
+ this.lastModifiedOptionElement = event.source;
5255
5560
  this.updateValueWithValues();
5256
5561
  }
5257
5562
  updateValueWithValues() {
@@ -5260,7 +5565,7 @@ const Select = class {
5260
5565
  ? this.values.map(v => v.displayText).join(', ')
5261
5566
  : undefined;
5262
5567
  }
5263
- handleNormalClick(event) {
5568
+ handleOptionSelectedOnSingle(event) {
5264
5569
  // Reset other options to false if they were selected.
5265
5570
  this.options
5266
5571
  .forEach(option => {
@@ -5270,8 +5575,7 @@ const Select = class {
5270
5575
  event.source.selected = true;
5271
5576
  this.value = event.value;
5272
5577
  this.displayText = event.displayText;
5273
- this.lastSelectedOptionElement = event.source;
5274
- this.stateService.send('CLOSE');
5578
+ this.lastModifiedOptionElement = event.source;
5275
5579
  }
5276
5580
  disconnectedCallback() {
5277
5581
  var _a;
@@ -5307,107 +5611,201 @@ const Select = class {
5307
5611
  // TODO: Move this logic in the state machine
5308
5612
  // FIXME: Doesnt work with single + disabled option
5309
5613
  if (this.expanded && !clickOnCurrentSelect) {
5310
- this.stateService.send('CLOSE');
5614
+ this.stateService.send({ type: 'CLOSE', value: { shouldBlur: true, fromKeyboard: false } });
5311
5615
  }
5312
5616
  }
5313
5617
  onKeyDown(_event) {
5314
- // close
5315
- if (this.stateService.getSnapshot().matches("closed")) {
5316
- if (isEnterKey(_event) || (_event.altKey && isDownArrowKey(_event)) || isSpaceKey(_event)) {
5317
- _event.preventDefault();
5318
- _event.stopPropagation();
5618
+ const currentState = this.stateService.getSnapshot().matches("closed") ? 'closed' : 'opened';
5619
+ let type;
5620
+ if (this.autocomplete) {
5621
+ type = this.multiple ? 'autocomplete_multiple' : 'autocomplete_unique';
5622
+ }
5623
+ else {
5624
+ type = this.multiple ? 'multiple' : 'unique';
5625
+ }
5626
+ const actionsFromKeyboardEvents = getActionForKeyboardEvent(_event, currentState, type);
5627
+ // If we have at least one associated actions, we prevent the default behavior of the event.
5628
+ // Except if the action is a focus move (we have to handle the preventDefault behavior ourselves in the action implementation)
5629
+ if (actionsFromKeyboardEvents.length != 0 && actionsFromKeyboardEvents.filter(a => a.kind === 'MoveFocus').length === 0) {
5630
+ _event.preventDefault();
5631
+ }
5632
+ for (const actionFromKeyboardEvent of actionsFromKeyboardEvents) {
5633
+ this.doActionFromKeyboardEventAssociatedAction(actionFromKeyboardEvent, _event);
5634
+ }
5635
+ }
5636
+ doActionFromKeyboardEventAssociatedAction(actionFromKeyboardEvent, event) {
5637
+ var _a, _b;
5638
+ switch (actionFromKeyboardEvent.kind) {
5639
+ case "CloseSelect":
5640
+ this.stateService.send({
5641
+ type: 'CLOSE',
5642
+ value: { shouldBlur: actionFromKeyboardEvent.shouldBlur, fromKeyboard: true }
5643
+ });
5644
+ break;
5645
+ case "OpenSelect":
5319
5646
  this.stateService.send('OPEN');
5320
- return;
5321
- }
5322
- if (this.multiple) {
5323
- if (isDownArrowKey(_event)) {
5324
- this.stateService.send('OPEN');
5325
- }
5326
- }
5327
- else {
5328
- if (isDownArrowKey(_event) || isRightArrowKey(_event)) {
5329
- _event.preventDefault();
5330
- this.selectClosestOption("next");
5647
+ break;
5648
+ case "SelectOption":
5649
+ switch (actionFromKeyboardEvent.target) {
5650
+ case "next":
5651
+ this.selectClosestOption('next');
5652
+ break;
5653
+ case "previous":
5654
+ this.selectClosestOption('previous');
5655
+ break;
5656
+ case "first":
5657
+ this.selectFirstOption();
5658
+ break;
5659
+ case "last":
5660
+ this.selectLastOption();
5661
+ break;
5662
+ case "lastHighlighted": {
5663
+ // We have to handle enterKey here because with autocomplete mode, a wcs-select-option
5664
+ // is only highlighted, therefore the event is not fired
5665
+ const indexToSelect = Array.from(this.notDisabledOptions).indexOf(this.lastHighlightedOptionElement);
5666
+ if (indexToSelect !== -1) {
5667
+ this.lastModifiedOptionElement = this.lastHighlightedOptionElement;
5668
+ this.selectOption(indexToSelect, true);
5669
+ }
5670
+ break;
5671
+ }
5331
5672
  }
5332
- if (isUpArrowKey(_event) || isLeftArrowKey(_event)) {
5333
- _event.preventDefault();
5334
- this.selectClosestOption("previous");
5673
+ break;
5674
+ case "ClearAutocompleteInput":
5675
+ this.autocompleteValue = '';
5676
+ break;
5677
+ case "ClearHighlight":
5678
+ this.clearHighlightOnLastHighlightedOption();
5679
+ break;
5680
+ case "HighlightOption":
5681
+ switch (actionFromKeyboardEvent.target) {
5682
+ case "next":
5683
+ this.highlightClosestOption('next');
5684
+ break;
5685
+ case "previous":
5686
+ this.highlightClosestOption('previous');
5687
+ break;
5688
+ case "first":
5689
+ this.highlightFirstOption();
5690
+ break;
5691
+ case "last":
5692
+ this.highlightLastOption();
5693
+ break;
5335
5694
  }
5336
- else if (isPageDownKey(_event)) {
5337
- _event.preventDefault();
5338
- this.selectLastOption();
5695
+ break;
5696
+ case "FocusOption":
5697
+ switch (actionFromKeyboardEvent.target) {
5698
+ case "next":
5699
+ this.focusClosestOption('next');
5700
+ break;
5701
+ case "previous":
5702
+ this.focusClosestOption('previous');
5703
+ break;
5704
+ case "first":
5705
+ this.focusFirstOption();
5706
+ break;
5707
+ case "last":
5708
+ this.focusLastOption();
5709
+ break;
5710
+ case "lastFocused":
5711
+ if (this.lastFocusedOptionElement != null) {
5712
+ this.focusOption(Array.from(this.notDisabledOptions).indexOf(this.lastFocusedOptionElement));
5713
+ }
5714
+ break;
5339
5715
  }
5340
- else if (isPageUpKey(_event) || isHomeKey(_event)) {
5341
- _event.preventDefault();
5342
- this.selectFirstOption();
5716
+ break;
5717
+ case "MoveFocus":
5718
+ switch (actionFromKeyboardEvent.target) {
5719
+ case "previous": {
5720
+ let elementToFocus = (_a = this.el.previousElementSibling) !== null && _a !== void 0 ? _a : this.el.parentElement;
5721
+ while (elementToFocus) {
5722
+ if (isFocusable(elementToFocus))
5723
+ break;
5724
+ elementToFocus = (_b = elementToFocus.previousElementSibling) !== null && _b !== void 0 ? _b : elementToFocus.parentElement;
5725
+ }
5726
+ if (elementToFocus) {
5727
+ event.preventDefault();
5728
+ elementToFocus.focus();
5729
+ }
5730
+ break;
5731
+ }
5343
5732
  }
5344
- }
5345
- }
5346
- // open
5347
- else if (this.stateService.getSnapshot().matches("opened")) {
5348
- if (isEscapeKey(_event) || (_event.altKey && isUpArrowKey(_event))) {
5349
- this.stateService.send({ type: "CLOSE", value: { shouldBlur: false } });
5350
- }
5351
- else if (isTabKey(_event) || (_event.shiftKey && isTabKey(_event))) {
5352
- this.stateService.send({ type: "CLOSE", value: { shouldBlur: true } });
5353
- }
5354
- else if (isDownArrowKey(_event)) {
5355
- _event.preventDefault();
5356
- this.focusClosestOption("next");
5357
- }
5358
- else if (isUpArrowKey(_event)) {
5359
- _event.preventDefault();
5360
- this.focusClosestOption("previous");
5361
- }
5362
- else if (isPageUpKey(_event) || isHomeKey(_event)) {
5363
- _event.preventDefault();
5364
- this.focusFirstOption();
5365
- }
5366
- else if (isPageDownKey(_event)) {
5367
- _event.preventDefault();
5368
- this.focusLastOption();
5369
- }
5733
+ break;
5734
+ default:
5735
+ throw new Error("Internal error");
5370
5736
  }
5371
5737
  }
5372
5738
  getClosestActiveOptionIndexForState(direction, state) {
5373
- let currentIndex = Array.from(this.notDisabledOptions).indexOf(state === 'focused' ? this.lastFocusedOptionElement : this.lastSelectedOptionElement);
5374
- if (direction === 'next' && currentIndex < this.notDisabledOptions.length - 1) {
5739
+ let concernedOption;
5740
+ switch (state) {
5741
+ case 'focused':
5742
+ concernedOption = this.lastFocusedOptionElement;
5743
+ break;
5744
+ case 'modified':
5745
+ concernedOption = this.lastModifiedOptionElement;
5746
+ break;
5747
+ case 'highlighted':
5748
+ concernedOption = this.lastHighlightedOptionElement;
5749
+ break;
5750
+ default:
5751
+ concernedOption = null;
5752
+ }
5753
+ let currentIndex = Array.from(this.notDisabledOptions).indexOf(concernedOption);
5754
+ const MIN_INDEX = 0;
5755
+ const MAX_INDEX = this.notDisabledOptions.length - 1;
5756
+ if (direction === 'next' && currentIndex < MAX_INDEX) {
5375
5757
  currentIndex++;
5376
5758
  }
5377
- else if (direction === 'previous' && currentIndex > 0) {
5759
+ else if (direction === 'previous' && currentIndex > MIN_INDEX) {
5378
5760
  currentIndex--;
5379
5761
  }
5380
5762
  else {
5381
- return 'nothing';
5763
+ if (!this.autocomplete)
5764
+ return 'nothing';
5765
+ // Used to scroll options infinitely with keyboard (autocomplete mode only)
5766
+ if (direction === 'next' && currentIndex >= MAX_INDEX) {
5767
+ currentIndex = 0;
5768
+ }
5769
+ if (direction === 'previous' && currentIndex === MIN_INDEX) {
5770
+ currentIndex = MAX_INDEX;
5771
+ }
5382
5772
  }
5383
5773
  return currentIndex;
5384
5774
  }
5385
- selectOption(indexToSelect) {
5386
- this.lastSelectedOptionElement = this.notDisabledOptions[indexToSelect];
5387
- this.lastSelectedOptionElement.selected = true;
5775
+ /**
5776
+ * Selects the non-disabled option with the index passed as a parameter.
5777
+ * The method sends an event to the state machine (the same as when clicking on an option with the mouse)
5778
+ * @param indexToSelect Option index within non-deactivated options list
5779
+ * @param fromKeyboard
5780
+ * @private
5781
+ */
5782
+ selectOption(indexToSelect, fromKeyboard = false) {
5783
+ const optionToSelect = this.notDisabledOptions[indexToSelect];
5784
+ if (!optionToSelect)
5785
+ return;
5388
5786
  this.sendOptionSelectedToStateMachine({
5389
- source: this.lastSelectedOptionElement,
5390
- value: this.value,
5391
- displayText: this.lastSelectedOptionElement.innerText
5392
- });
5787
+ source: optionToSelect,
5788
+ value: optionToSelect.value,
5789
+ displayText: optionToSelect.innerText
5790
+ }, fromKeyboard);
5393
5791
  }
5394
5792
  selectClosestOption(direction) {
5395
- const indexToSelect = this.getClosestActiveOptionIndexForState(direction, 'selected');
5793
+ const indexToSelect = this.getClosestActiveOptionIndexForState(direction, 'modified');
5396
5794
  if (indexToSelect === 'nothing')
5397
5795
  return;
5398
- this.selectOption(indexToSelect);
5796
+ this.selectOption(indexToSelect, true);
5399
5797
  }
5400
5798
  selectFirstOption() {
5401
5799
  if (this.notDisabledOptions.length < 1) {
5402
5800
  return;
5403
5801
  }
5404
- this.selectOption(0);
5802
+ this.selectOption(0, true);
5405
5803
  }
5406
5804
  selectLastOption() {
5407
5805
  if (this.notDisabledOptions.length < 1) {
5408
5806
  return;
5409
5807
  }
5410
- this.selectOption(this.notDisabledOptions.length - 1);
5808
+ this.selectOption(this.notDisabledOptions.length - 1, true);
5411
5809
  }
5412
5810
  focusOption(indexToFocus) {
5413
5811
  var _a;
@@ -5430,8 +5828,8 @@ const Select = class {
5430
5828
  selectedOptionChanged(event) {
5431
5829
  this.sendOptionSelectedToStateMachine(event.detail);
5432
5830
  }
5433
- sendOptionSelectedToStateMachine(event) {
5434
- this.stateService.send({ type: 'OPTION_SELECTED', value: event });
5831
+ sendOptionSelectedToStateMachine(event, fromKeyboard = false) {
5832
+ this.stateService.send({ type: 'OPTION_SELECTED', value: { option: event, fromKeyboard } });
5435
5833
  }
5436
5834
  onSlotchange() {
5437
5835
  this.updateSelectedValue(this.value);
@@ -5444,22 +5842,115 @@ const Select = class {
5444
5842
  }
5445
5843
  });
5446
5844
  }
5845
+ //region Autocomplete mode
5846
+ highlightOption(indexToHighlight) {
5847
+ this.clearHighlightOnLastHighlightedOption();
5848
+ this.lastHighlightedOptionElement = this.notDisabledOptions[indexToHighlight];
5849
+ if (this.lastHighlightedOptionElement) {
5850
+ this.lastHighlightedOptionElement.highlighted = true;
5851
+ this.autocompleteInput.setAttribute("aria-activedescendant", this.lastHighlightedOptionElement.id);
5852
+ requestAnimationFrame(() => {
5853
+ this.lastHighlightedOptionElement.scrollIntoView({ block: "nearest", inline: "nearest" });
5854
+ });
5855
+ }
5856
+ }
5857
+ highlightFirstOption() {
5858
+ this.highlightOption(0);
5859
+ }
5860
+ highlightLastOption() {
5861
+ this.highlightOption(this.notDisabledOptions.length - 1);
5862
+ }
5863
+ highlightClosestOption(direction) {
5864
+ const indexToHighlight = this.getClosestActiveOptionIndexForState(direction, 'highlighted');
5865
+ if (indexToHighlight === 'nothing')
5866
+ return;
5867
+ this.highlightOption(indexToHighlight);
5868
+ }
5869
+ /**
5870
+ * This method removes the highlight that applies to the last highlighted option if any.
5871
+ * This is used only for accessibility of autocomplete mode.
5872
+ * @private
5873
+ */
5874
+ clearHighlightOnLastHighlightedOption() {
5875
+ if (this.lastHighlightedOptionElement) {
5876
+ this.lastHighlightedOptionElement.highlighted = false;
5877
+ this.lastHighlightedOptionElement = null;
5878
+ }
5879
+ }
5880
+ onAutocompleteInputEvent(e) {
5881
+ var _a;
5882
+ const filter = (_a = this.autocompleteInput.value) !== null && _a !== void 0 ? _a : '';
5883
+ this.handleAutocompleteValueChange(filter);
5884
+ // Avoid the inputEvent event to bubble and be emitted, we rather use wcsFilterChange in this case :
5885
+ e.stopPropagation();
5886
+ }
5887
+ handleAutocompleteValueChange(filter) {
5888
+ var _a, _b;
5889
+ this.clearHighlightOnLastHighlightedOption();
5890
+ const newValueIsDifferentFromLastModifiedOption = this.lastModifiedOptionElement == null || ((_a = this.lastModifiedOptionElement) === null || _a === void 0 ? void 0 : _a.textContent) !== this.autocompleteValue;
5891
+ if (!this.expanded && newValueIsDifferentFromLastModifiedOption) {
5892
+ this.open();
5893
+ }
5894
+ if (filter.length) {
5895
+ const [matchingOptions, optionsToHide] = [[], []];
5896
+ const filteringFunction = (_b = this.filterFn) !== null && _b !== void 0 ? _b : WcsDefaultSelectFilterFn;
5897
+ this.options.forEach((optionEl) => (filteringFunction(optionEl, filter) ? matchingOptions : optionsToHide).push(optionEl));
5898
+ this.showNoResultFoundLabel = matchingOptions.length === 0;
5899
+ matchingOptions.forEach(o => {
5900
+ o.hidden = false;
5901
+ o.removeAttribute("aria-hidden");
5902
+ });
5903
+ optionsToHide.forEach(o => {
5904
+ o.hidden = true;
5905
+ o.setAttribute("aria-hidden", "true");
5906
+ });
5907
+ }
5908
+ else {
5909
+ this.showNoResultFoundLabel = false;
5910
+ this.options.forEach(o => {
5911
+ o.hidden = false;
5912
+ o.removeAttribute("aria-hidden");
5913
+ });
5914
+ }
5915
+ this.autocompleteValue = filter;
5916
+ this.wcsFilterChange.emit({
5917
+ value: filter,
5918
+ });
5919
+ }
5920
+ onFocus() {
5921
+ if (this.autocomplete) {
5922
+ this.focusAutocompleteInput();
5923
+ }
5924
+ }
5925
+ focusAutocompleteInput() {
5926
+ var _a;
5927
+ (_a = this.autocompleteInput) === null || _a === void 0 ? void 0 : _a.focus();
5928
+ }
5929
+ //endregion
5447
5930
  componentDidRender() {
5448
5931
  var _a;
5449
5932
  (_a = this.popper) === null || _a === void 0 ? void 0 : _a.update();
5450
5933
  }
5451
5934
  render() {
5935
+ var _a;
5452
5936
  const ariaLabelValue = `${this.labelElement ? this.labelElement.innerText : ''} ${this.hasValue ? this.displayText : ''}`.trimEnd();
5453
- return (h(Host, Object.assign({ class: this.expanded ? 'expanded ' : '', overlayDirection: this.overlayDirection }, this.focusedAttributes(), { role: "combobox", "aria-haspopup": "listbox", "aria-disabled": this.disabled ? 'true' : null, "aria-expanded": this.expanded ? 'true' : 'false', "aria-controls": this.optionsId, "aria-owns": this.optionsId, "aria-multiselectable": this.multiple ? 'true' : 'false', "aria-label": ariaLabelValue }), h("div", { class: "wcs-select-control" }, h("div", { class: "wcs-select-value-container" }, this.hasValue
5937
+ return (h(Host, Object.assign({ class: this.expanded ? 'expanded ' : '', overlayDirection: this.overlayDirection }, this.focusedAttributes(), { role: !this.autocomplete ? "combobox" : null, "aria-haspopup": !this.autocomplete ? "listbox" : null, "aria-owns": !this.autocomplete ? this.optionsId : null, "aria-controls": !this.autocomplete ? this.optionsId : null, "aria-disabled": this.disabled ? 'true' : null, "aria-expanded": this.expanded ? 'true' : 'false', "aria-multiselectable": this.multiple ? 'true' : 'false', "aria-label": ariaLabelValue }), h("div", { class: "wcs-select-control" }, h("div", { class: "wcs-select-value-container" }, this.hasValue
5454
5938
  ?
5455
5939
  (this.chips ?
5456
5940
  this.values.map((option) => h(SelectChips, { disabled: this.disabled, option: option, onRemove: this.removeChip.bind(this) }))
5457
- : h("label", { class: "wcs-select-value" }, this.displayText))
5458
- : h("label", { class: "wcs-select-placeholder" }, this.placeholder)), h(SelectArrow, { up: this.expanded })), h("div", { class: "wcs-select-options", id: this.optionsId, role: "listbox" }, h("slot", { name: "wcs-select-option", onSlotchange: this.onSlotchange.bind(this) }))));
5941
+ : (!this.autocomplete || this.autocomplete && this.multiple) &&
5942
+ h("label", { class: "wcs-select-value" }, this.displayText))
5943
+ : !this.autocomplete && h("label", { class: "wcs-select-placeholder" }, this.placeholder), this.autocomplete && h("input", { class: "autocomplete-field", value: this.autocompleteValue, role: "combobox", "aria-haspopup": "listbox", "aria-label": ariaLabelValue, "aria-disabled": this.disabled ? 'true' : null, "aria-expanded": this.expanded ? 'true' : 'false', "aria-controls": this.optionsId, "aria-owns": this.optionsId, "aria-multiselectable": this.multiple ? 'true' : 'false', "aria-autocomplete": "list", onBlur: (e) => this.onAutocompleteFieldBlur(e), placeholder: ((_a = this.values) === null || _a === void 0 ? void 0 : _a.length) ? null : this.placeholder, onInput: (e) => this.onAutocompleteInputEvent(e), ref: el => this.autocompleteInput = el })), h(SelectArrow, { up: this.expanded })), h("div", { class: "wcs-select-options", id: this.optionsId, role: "listbox" }, h("slot", { name: "options", onSlotchange: this.onSlotchange.bind(this) }), (this.autocomplete && this.showNoResultFoundLabel) &&
5944
+ h("div", { class: "noresult-container" }, h("slot", { name: "filter-no-result" }, h("span", null, "Aucun r\u00E9sultat"))))));
5459
5945
  }
5460
5946
  focusedAttributes() {
5461
5947
  return !this.disabled ? { tabIndex: 0 } : {};
5462
5948
  }
5949
+ onAutocompleteFieldBlur(_e) {
5950
+ if (this.multiple === false && this.autocomplete === true) {
5951
+ this.autocompleteValue = this.displayText;
5952
+ }
5953
+ }
5463
5954
  get el() { return getElement(this); }
5464
5955
  static get watchers() { return {
5465
5956
  "value": ["onValueChangeHandler"]
@@ -5468,7 +5959,7 @@ const Select = class {
5468
5959
  let selectIds = 0;
5469
5960
  Select.style = selectCss;
5470
5961
 
5471
- const selectOptionCss = "@keyframes mdc-ripple-fg-radius-in{from{animation-timing-function:cubic-bezier(0.4, 0, 0.2, 1);transform:translate(var(--mdc-ripple-fg-translate-start, 0)) scale(1)}to{transform:translate(var(--mdc-ripple-fg-translate-end, 0)) scale(var(--mdc-ripple-fg-scale, 1))}}@keyframes mdc-ripple-fg-opacity-in{from{animation-timing-function:linear;opacity:0}to{opacity:var(--mdc-ripple-fg-opacity, 0)}}@keyframes mdc-ripple-fg-opacity-out{from{animation-timing-function:linear;opacity:var(--mdc-ripple-fg-opacity, 0)}to{opacity:0}}.mdc-ripple-surface{--mdc-ripple-fg-size:0;--mdc-ripple-left:0;--mdc-ripple-top:0;--mdc-ripple-fg-scale:1;--mdc-ripple-fg-translate-end:0;--mdc-ripple-fg-translate-start:0;-webkit-tap-highlight-color:rgba(0, 0, 0, 0);will-change:transform, opacity;position:relative;outline:none;overflow:hidden}.mdc-ripple-surface::before,.mdc-ripple-surface::after{position:absolute;border-radius:50%;opacity:0;pointer-events:none;content:\"\"}.mdc-ripple-surface::before{transition:opacity 15ms linear, background-color 15ms linear;z-index:1;z-index:var(--mdc-ripple-z-index, 1)}.mdc-ripple-surface::after{z-index:0;z-index:var(--mdc-ripple-z-index, 0)}.mdc-ripple-surface.mdc-ripple-upgraded::before{transform:scale(var(--mdc-ripple-fg-scale, 1))}.mdc-ripple-surface.mdc-ripple-upgraded::after{top:0;left:0;transform:scale(0);transform-origin:center center}.mdc-ripple-surface.mdc-ripple-upgraded--unbounded::after{top:var(--mdc-ripple-top, 0);left:var(--mdc-ripple-left, 0)}.mdc-ripple-surface.mdc-ripple-upgraded--foreground-activation::after{animation:mdc-ripple-fg-radius-in 225ms forwards, mdc-ripple-fg-opacity-in 75ms forwards}.mdc-ripple-surface.mdc-ripple-upgraded--foreground-deactivation::after{animation:mdc-ripple-fg-opacity-out 150ms;transform:translate(var(--mdc-ripple-fg-translate-end, 0)) scale(var(--mdc-ripple-fg-scale, 1))}.mdc-ripple-surface::before,.mdc-ripple-surface::after{top:calc(50% - 100%);left:calc(50% - 100%);width:200%;height:200%}.mdc-ripple-surface.mdc-ripple-upgraded::after{width:var(--mdc-ripple-fg-size, 100%);height:var(--mdc-ripple-fg-size, 100%)}.mdc-ripple-surface[data-mdc-ripple-is-unbounded],.mdc-ripple-upgraded--unbounded{overflow:visible}.mdc-ripple-surface[data-mdc-ripple-is-unbounded]::before,.mdc-ripple-surface[data-mdc-ripple-is-unbounded]::after,.mdc-ripple-upgraded--unbounded::before,.mdc-ripple-upgraded--unbounded::after{top:calc(50% - 50%);left:calc(50% - 50%);width:100%;height:100%}.mdc-ripple-surface[data-mdc-ripple-is-unbounded].mdc-ripple-upgraded::before,.mdc-ripple-surface[data-mdc-ripple-is-unbounded].mdc-ripple-upgraded::after,.mdc-ripple-upgraded--unbounded.mdc-ripple-upgraded::before,.mdc-ripple-upgraded--unbounded.mdc-ripple-upgraded::after{top:var(--mdc-ripple-top, calc(50% - 50%));left:var(--mdc-ripple-left, calc(50% - 50%));width:var(--mdc-ripple-fg-size, 100%);height:var(--mdc-ripple-fg-size, 100%)}.mdc-ripple-surface[data-mdc-ripple-is-unbounded].mdc-ripple-upgraded::after,.mdc-ripple-upgraded--unbounded.mdc-ripple-upgraded::after{width:var(--mdc-ripple-fg-size, 100%);height:var(--mdc-ripple-fg-size, 100%)}.mdc-ripple-surface::before,.mdc-ripple-surface::after{background-color:#000;background-color:var(--mdc-ripple-color, #000)}.mdc-ripple-surface:hover::before,.mdc-ripple-surface.mdc-ripple-surface--hover::before{opacity:0.04;opacity:var(--mdc-ripple-hover-opacity, 0.04)}.mdc-ripple-surface.mdc-ripple-upgraded--background-focused::before,.mdc-ripple-surface:not(.mdc-ripple-upgraded):focus::before{transition-duration:75ms;opacity:0.12;opacity:var(--mdc-ripple-focus-opacity, 0.12)}.mdc-ripple-surface:not(.mdc-ripple-upgraded)::after{transition:opacity 150ms linear}.mdc-ripple-surface:not(.mdc-ripple-upgraded):active::after{transition-duration:75ms;opacity:0.12;opacity:var(--mdc-ripple-press-opacity, 0.12)}.mdc-ripple-surface.mdc-ripple-upgraded{--mdc-ripple-fg-opacity:var(--mdc-ripple-press-opacity, 0.12)}wcs-select-option{--mdc-ripple-fg-size:0;--mdc-ripple-left:0;--mdc-ripple-top:0;--mdc-ripple-fg-scale:1;--mdc-ripple-fg-translate-end:0;--mdc-ripple-fg-translate-start:0;-webkit-tap-highlight-color:rgba(0, 0, 0, 0);will-change:transform, opacity;overflow:hidden;display:flex;padding:0 var(--wcs-padding);height:var(--wcs-select-option-height);line-height:42px;cursor:pointer;user-select:none;font-weight:500;font-size:1rem;color:var(--wcs-black)}wcs-select-option::before,wcs-select-option::after{position:absolute;border-radius:50%;opacity:0;pointer-events:none;content:\"\"}wcs-select-option::before{transition:opacity 15ms linear, background-color 15ms linear;z-index:1;z-index:var(--mdc-ripple-z-index, 1)}wcs-select-option::after{z-index:0;z-index:var(--mdc-ripple-z-index, 0)}wcs-select-option.mdc-ripple-upgraded::before{transform:scale(var(--mdc-ripple-fg-scale, 1))}wcs-select-option.mdc-ripple-upgraded::after{top:0;left:0;transform:scale(0);transform-origin:center center}wcs-select-option.mdc-ripple-upgraded--unbounded::after{top:var(--mdc-ripple-top, 0);left:var(--mdc-ripple-left, 0)}wcs-select-option.mdc-ripple-upgraded--foreground-activation::after{animation:mdc-ripple-fg-radius-in 225ms forwards, mdc-ripple-fg-opacity-in 75ms forwards}wcs-select-option.mdc-ripple-upgraded--foreground-deactivation::after{animation:mdc-ripple-fg-opacity-out 150ms;transform:translate(var(--mdc-ripple-fg-translate-end, 0)) scale(var(--mdc-ripple-fg-scale, 1))}wcs-select-option::before,wcs-select-option::after{top:calc(50% - 100%);left:calc(50% - 100%);width:200%;height:200%}wcs-select-option.mdc-ripple-upgraded::after{width:var(--mdc-ripple-fg-size, 100%);height:var(--mdc-ripple-fg-size, 100%)}wcs-select-option::before,wcs-select-option::after{background-color:#999;background-color:var(--mdc-ripple-color, #999)}wcs-select-option:hover::before,wcs-select-option.mdc-ripple-surface--hover::before{opacity:0.1;opacity:var(--mdc-ripple-hover-opacity, 0.1)}wcs-select-option.mdc-ripple-upgraded--background-focused::before,wcs-select-option:not(.mdc-ripple-upgraded):focus::before{transition-duration:75ms;opacity:0.2;opacity:var(--mdc-ripple-focus-opacity, 0.2)}wcs-select-option:not(.mdc-ripple-upgraded)::after{transition:opacity 150ms linear}wcs-select-option:not(.mdc-ripple-upgraded):active::after{transition-duration:75ms;opacity:0.3;opacity:var(--mdc-ripple-press-opacity, 0.3)}wcs-select-option.mdc-ripple-upgraded{--mdc-ripple-fg-opacity:var(--mdc-ripple-press-opacity, 0.3)}wcs-select-option:hover{color:var(--wcs-primary);background-color:var(--wcs-light)}wcs-select-option:focus{outline:none}wcs-select-option[disabled]{cursor:not-allowed;pointer-events:none;color:var(--wcs-text-disabled)}wcs-select-option[selected]{color:var(--wcs-primary);background-color:var(--wcs-light)}wcs-select-option[multiple] wcs-checkbox{pointer-events:none;margin-right:10px}wcs-select-option[multiple]:hover wcs-checkbox{--wcs-checkbox-border-color:var(--wcs-primary)}";
5962
+ const selectOptionCss = "@keyframes mdc-ripple-fg-radius-in{from{animation-timing-function:cubic-bezier(0.4, 0, 0.2, 1);transform:translate(var(--mdc-ripple-fg-translate-start, 0)) scale(1)}to{transform:translate(var(--mdc-ripple-fg-translate-end, 0)) scale(var(--mdc-ripple-fg-scale, 1))}}@keyframes mdc-ripple-fg-opacity-in{from{animation-timing-function:linear;opacity:0}to{opacity:var(--mdc-ripple-fg-opacity, 0)}}@keyframes mdc-ripple-fg-opacity-out{from{animation-timing-function:linear;opacity:var(--mdc-ripple-fg-opacity, 0)}to{opacity:0}}.mdc-ripple-surface{--mdc-ripple-fg-size:0;--mdc-ripple-left:0;--mdc-ripple-top:0;--mdc-ripple-fg-scale:1;--mdc-ripple-fg-translate-end:0;--mdc-ripple-fg-translate-start:0;-webkit-tap-highlight-color:rgba(0, 0, 0, 0);will-change:transform, opacity;position:relative;outline:none;overflow:hidden}.mdc-ripple-surface::before,.mdc-ripple-surface::after{position:absolute;border-radius:50%;opacity:0;pointer-events:none;content:\"\"}.mdc-ripple-surface::before{transition:opacity 15ms linear, background-color 15ms linear;z-index:1;z-index:var(--mdc-ripple-z-index, 1)}.mdc-ripple-surface::after{z-index:0;z-index:var(--mdc-ripple-z-index, 0)}.mdc-ripple-surface.mdc-ripple-upgraded::before{transform:scale(var(--mdc-ripple-fg-scale, 1))}.mdc-ripple-surface.mdc-ripple-upgraded::after{top:0;left:0;transform:scale(0);transform-origin:center center}.mdc-ripple-surface.mdc-ripple-upgraded--unbounded::after{top:var(--mdc-ripple-top, 0);left:var(--mdc-ripple-left, 0)}.mdc-ripple-surface.mdc-ripple-upgraded--foreground-activation::after{animation:mdc-ripple-fg-radius-in 225ms forwards, mdc-ripple-fg-opacity-in 75ms forwards}.mdc-ripple-surface.mdc-ripple-upgraded--foreground-deactivation::after{animation:mdc-ripple-fg-opacity-out 150ms;transform:translate(var(--mdc-ripple-fg-translate-end, 0)) scale(var(--mdc-ripple-fg-scale, 1))}.mdc-ripple-surface::before,.mdc-ripple-surface::after{top:calc(50% - 100%);left:calc(50% - 100%);width:200%;height:200%}.mdc-ripple-surface.mdc-ripple-upgraded::after{width:var(--mdc-ripple-fg-size, 100%);height:var(--mdc-ripple-fg-size, 100%)}.mdc-ripple-surface[data-mdc-ripple-is-unbounded],.mdc-ripple-upgraded--unbounded{overflow:visible}.mdc-ripple-surface[data-mdc-ripple-is-unbounded]::before,.mdc-ripple-surface[data-mdc-ripple-is-unbounded]::after,.mdc-ripple-upgraded--unbounded::before,.mdc-ripple-upgraded--unbounded::after{top:calc(50% - 50%);left:calc(50% - 50%);width:100%;height:100%}.mdc-ripple-surface[data-mdc-ripple-is-unbounded].mdc-ripple-upgraded::before,.mdc-ripple-surface[data-mdc-ripple-is-unbounded].mdc-ripple-upgraded::after,.mdc-ripple-upgraded--unbounded.mdc-ripple-upgraded::before,.mdc-ripple-upgraded--unbounded.mdc-ripple-upgraded::after{top:var(--mdc-ripple-top, calc(50% - 50%));left:var(--mdc-ripple-left, calc(50% - 50%));width:var(--mdc-ripple-fg-size, 100%);height:var(--mdc-ripple-fg-size, 100%)}.mdc-ripple-surface[data-mdc-ripple-is-unbounded].mdc-ripple-upgraded::after,.mdc-ripple-upgraded--unbounded.mdc-ripple-upgraded::after{width:var(--mdc-ripple-fg-size, 100%);height:var(--mdc-ripple-fg-size, 100%)}.mdc-ripple-surface::before,.mdc-ripple-surface::after{background-color:#000;background-color:var(--mdc-ripple-color, #000)}.mdc-ripple-surface:hover::before,.mdc-ripple-surface.mdc-ripple-surface--hover::before{opacity:0.04;opacity:var(--mdc-ripple-hover-opacity, 0.04)}.mdc-ripple-surface.mdc-ripple-upgraded--background-focused::before,.mdc-ripple-surface:not(.mdc-ripple-upgraded):focus::before{transition-duration:75ms;opacity:0.12;opacity:var(--mdc-ripple-focus-opacity, 0.12)}.mdc-ripple-surface:not(.mdc-ripple-upgraded)::after{transition:opacity 150ms linear}.mdc-ripple-surface:not(.mdc-ripple-upgraded):active::after{transition-duration:75ms;opacity:0.12;opacity:var(--mdc-ripple-press-opacity, 0.12)}.mdc-ripple-surface.mdc-ripple-upgraded{--mdc-ripple-fg-opacity:var(--mdc-ripple-press-opacity, 0.12)}wcs-select-option{--mdc-ripple-fg-size:0;--mdc-ripple-left:0;--mdc-ripple-top:0;--mdc-ripple-fg-scale:1;--mdc-ripple-fg-translate-end:0;--mdc-ripple-fg-translate-start:0;-webkit-tap-highlight-color:rgba(0, 0, 0, 0);will-change:transform, opacity;overflow:hidden;display:flex;padding:0 var(--wcs-padding);height:var(--wcs-select-option-height);line-height:42px;cursor:pointer;user-select:none;font-weight:500;font-size:1rem;color:var(--wcs-black)}wcs-select-option::before,wcs-select-option::after{position:absolute;border-radius:50%;opacity:0;pointer-events:none;content:\"\"}wcs-select-option::before{transition:opacity 15ms linear, background-color 15ms linear;z-index:1;z-index:var(--mdc-ripple-z-index, 1)}wcs-select-option::after{z-index:0;z-index:var(--mdc-ripple-z-index, 0)}wcs-select-option.mdc-ripple-upgraded::before{transform:scale(var(--mdc-ripple-fg-scale, 1))}wcs-select-option.mdc-ripple-upgraded::after{top:0;left:0;transform:scale(0);transform-origin:center center}wcs-select-option.mdc-ripple-upgraded--unbounded::after{top:var(--mdc-ripple-top, 0);left:var(--mdc-ripple-left, 0)}wcs-select-option.mdc-ripple-upgraded--foreground-activation::after{animation:mdc-ripple-fg-radius-in 225ms forwards, mdc-ripple-fg-opacity-in 75ms forwards}wcs-select-option.mdc-ripple-upgraded--foreground-deactivation::after{animation:mdc-ripple-fg-opacity-out 150ms;transform:translate(var(--mdc-ripple-fg-translate-end, 0)) scale(var(--mdc-ripple-fg-scale, 1))}wcs-select-option::before,wcs-select-option::after{top:calc(50% - 100%);left:calc(50% - 100%);width:200%;height:200%}wcs-select-option.mdc-ripple-upgraded::after{width:var(--mdc-ripple-fg-size, 100%);height:var(--mdc-ripple-fg-size, 100%)}wcs-select-option::before,wcs-select-option::after{background-color:#999;background-color:var(--mdc-ripple-color, #999)}wcs-select-option:hover::before,wcs-select-option.mdc-ripple-surface--hover::before{opacity:0.1;opacity:var(--mdc-ripple-hover-opacity, 0.1)}wcs-select-option.mdc-ripple-upgraded--background-focused::before,wcs-select-option:not(.mdc-ripple-upgraded):focus::before{transition-duration:75ms;opacity:0.2;opacity:var(--mdc-ripple-focus-opacity, 0.2)}wcs-select-option:not(.mdc-ripple-upgraded)::after{transition:opacity 150ms linear}wcs-select-option:not(.mdc-ripple-upgraded):active::after{transition-duration:75ms;opacity:0.3;opacity:var(--mdc-ripple-press-opacity, 0.3)}wcs-select-option.mdc-ripple-upgraded{--mdc-ripple-fg-opacity:var(--mdc-ripple-press-opacity, 0.3)}wcs-select-option:hover{color:var(--wcs-primary);background-color:var(--wcs-light)}wcs-select-option:focus{outline:none}wcs-select-option[disabled]{cursor:not-allowed;pointer-events:none;color:var(--wcs-text-disabled)}wcs-select-option[hidden]{display:none}wcs-select-option[selected]{color:var(--wcs-primary);background-color:var(--wcs-light)}wcs-select-option[multiple] wcs-checkbox{pointer-events:none;margin-right:10px}wcs-select-option[multiple]:hover wcs-checkbox{--wcs-checkbox-border-color:var(--wcs-primary)}wcs-select-option[highlighted]{outline:solid 1px var(--wcs-primary);outline-offset:-1px;border-radius:var(--wcs-border-radius);color:var(--wcs-primary);background-color:var(--wcs-light)}wcs-select-option[highlighted] wcs-checkbox{--wcs-checkbox-border-color:var(--wcs-primary)}";
5472
5963
 
5473
5964
  const SelectOption = class {
5474
5965
  constructor(hostRef) {
@@ -5477,6 +5968,7 @@ const SelectOption = class {
5477
5968
  this.selectOptionId = generateUniqueId(this.el.tagName);
5478
5969
  this.disabled = false;
5479
5970
  this.selected = false;
5971
+ this.highlighted = false;
5480
5972
  this.value = undefined;
5481
5973
  this.chipColor = undefined;
5482
5974
  this.chipBackgroundColor = undefined;
@@ -5518,7 +6010,7 @@ const SelectOption = class {
5518
6010
  }
5519
6011
  }
5520
6012
  render() {
5521
- return (h(Host, { id: this.selectOptionId, "aria-selected": this.selected ? 'true' : 'false', slot: "wcs-select-option", role: "option", tabindex: "-1" }, this.multiple &&
6013
+ return (h(Host, { id: this.selectOptionId, "aria-selected": this.selected || this.highlighted ? 'true' : 'false', slot: "options", role: "option", tabindex: "-1" }, this.multiple &&
5522
6014
  h("wcs-checkbox", { tabindex: "-1", checked: this.selected }), h("slot", null)));
5523
6015
  }
5524
6016
  get el() { return getElement(this); }