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
@@ -2,10 +2,11 @@
2
2
 
3
3
  Object.defineProperty(exports, '__esModule', { value: true });
4
4
 
5
- const index = require('./index-ca67a6dc.js');
6
- const selectArrow = require('./select-arrow-c9583ea9.js');
7
- const helpers = require('./helpers-4a14051a.js');
8
- const isEqual = require('./isEqual-9ea7ee49.js');
5
+ const index = require('./index-749d999e.js');
6
+ const selectArrow = require('./select-arrow-8169c0cb.js');
7
+ const helpers = require('./helpers-6280db6e.js');
8
+ const keyboardEvent = require('./keyboard-event-1cad4036.js');
9
+ const accessibility = require('./accessibility-c0c4e648.js');
9
10
  const popper = require('./popper-e3b74571.js');
10
11
  const component = require('./component-2a26e37d.js');
11
12
 
@@ -4966,6 +4967,16 @@ function Machine(config, options, initialContext) {
4966
4967
  return new StateNode(config, options, initialContext);
4967
4968
  }
4968
4969
 
4970
+ /**
4971
+ * Default filtering function. Compares the string start of wcs-select-option element's text content
4972
+ * with your filter input.
4973
+ * @param optionEl - wcs-select-option element
4974
+ * @param filter - input filter field value
4975
+ * @constructor
4976
+ */
4977
+ const WcsDefaultSelectFilterFn = (optionEl, filter) => {
4978
+ return optionEl.textContent.toLowerCase().startsWith(filter.toLowerCase());
4979
+ };
4969
4980
  const WcsSelectSizeValue = ['m', 'l']; // as const keyword is used to infer and preserve the exact literal values of an array or object.
4970
4981
  function isWcsSelectSize(size) {
4971
4982
  // @ts-ignore : ignore size type, as it is checked with WcsInputSizeValues
@@ -4989,7 +5000,260 @@ const SelectChips = ({ disabled, option, onRemove }) => {
4989
5000
  index.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)" })))));
4990
5001
  };
4991
5002
 
4992
- 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)}";
5003
+ /**
5004
+ * We follow this https://www.w3.org/WAI/ARIA/apg/patterns/combobox/examples/combobox-select-only/
5005
+ * @param event
5006
+ * @param currentState
5007
+ * @param type
5008
+ */
5009
+ function getActionForKeyboardEvent(event, currentState, type) {
5010
+ const keyboardShortcut = keyboardEvent.keyboardShortcutFromKeyboardEvent(event);
5011
+ if (keyboardShortcut === 'UNKNOWN') {
5012
+ return [];
5013
+ }
5014
+ switch (currentState) {
5015
+ case "closed":
5016
+ // We handle every available shortcut for the closed state
5017
+ switch (keyboardShortcut) {
5018
+ case "MAJ+TAB":
5019
+ switch (type) {
5020
+ case "unique":
5021
+ case "multiple":
5022
+ return [];
5023
+ case "autocomplete_unique":
5024
+ case "autocomplete_multiple":
5025
+ // We need to move focus to previous focusable element in order to ignore the wcs-select component
5026
+ return [{ kind: 'MoveFocus', target: 'previous' }];
5027
+ }
5028
+ break;
5029
+ case 'DOWN_ARROW':
5030
+ switch (type) {
5031
+ case "unique":
5032
+ return [{ kind: 'SelectOption', target: 'next' }];
5033
+ case "autocomplete_multiple":
5034
+ case "autocomplete_unique":
5035
+ return [{ kind: 'OpenSelect' }, { kind: 'HighlightOption', target: 'first' }];
5036
+ case "multiple":
5037
+ return [{ kind: 'OpenSelect' }, { kind: 'FocusOption', target: 'first' }];
5038
+ }
5039
+ break;
5040
+ case 'RIGHT_ARROW':
5041
+ switch (type) {
5042
+ case "autocomplete_unique":
5043
+ case "autocomplete_multiple":
5044
+ // Do nothing, we navigate between characters inside input field
5045
+ return [];
5046
+ case "unique":
5047
+ return [{ kind: 'SelectOption', target: 'next' }];
5048
+ case "multiple":
5049
+ return [{ kind: 'OpenSelect' }, { kind: 'FocusOption', target: 'first' }];
5050
+ }
5051
+ break;
5052
+ case 'UP_ARROW':
5053
+ switch (type) {
5054
+ case "autocomplete_unique":
5055
+ case "autocomplete_multiple":
5056
+ return [{ kind: 'OpenSelect' }, { kind: 'HighlightOption', target: 'last' }];
5057
+ case "multiple":
5058
+ break;
5059
+ case "unique":
5060
+ return [{ kind: 'SelectOption', target: 'previous' }];
5061
+ }
5062
+ break;
5063
+ case 'LEFT_ARROW':
5064
+ switch (type) {
5065
+ case "autocomplete_unique":
5066
+ case "autocomplete_multiple":
5067
+ // Do nothing, we navigate between characters inside input field
5068
+ return [];
5069
+ case "unique":
5070
+ return [{ kind: 'SelectOption', target: 'previous' }];
5071
+ }
5072
+ break;
5073
+ case 'ALT+DOWN_ARROW':
5074
+ case 'ALT+UP_ARROW':
5075
+ switch (type) {
5076
+ case "unique":
5077
+ return [{ kind: 'OpenSelect' }, { kind: 'FocusOption', target: 'first' }];
5078
+ case "autocomplete_unique":
5079
+ case "autocomplete_multiple":
5080
+ case "multiple":
5081
+ return [{ kind: 'OpenSelect' }];
5082
+ }
5083
+ break;
5084
+ case 'SPACE':
5085
+ case 'ENTER':
5086
+ switch (type) {
5087
+ case "autocomplete_unique":
5088
+ case "autocomplete_multiple":
5089
+ return [];
5090
+ case "unique":
5091
+ case "multiple":
5092
+ return [{ kind: 'OpenSelect' }, { kind: 'FocusOption', target: 'lastFocused' }];
5093
+ }
5094
+ break;
5095
+ case 'ESCAPE':
5096
+ switch (type) {
5097
+ case "autocomplete_unique":
5098
+ case "autocomplete_multiple":
5099
+ return [{ kind: 'ClearAutocompleteInput' }];
5100
+ case 'unique':
5101
+ case 'multiple':
5102
+ return [];
5103
+ }
5104
+ break;
5105
+ case 'PAGE_UP':
5106
+ switch (type) {
5107
+ case "autocomplete_unique":
5108
+ return [];
5109
+ case "autocomplete_multiple":
5110
+ return [];
5111
+ case "unique":
5112
+ return [{ kind: 'SelectOption', target: 'first' }];
5113
+ case "multiple":
5114
+ return [];
5115
+ }
5116
+ break;
5117
+ case 'PAGE_DOWN':
5118
+ switch (type) {
5119
+ case "autocomplete_unique":
5120
+ return [];
5121
+ case "autocomplete_multiple":
5122
+ return [];
5123
+ case "unique":
5124
+ return [{ kind: 'SelectOption', target: 'last' }];
5125
+ case "multiple":
5126
+ return [];
5127
+ }
5128
+ break;
5129
+ }
5130
+ break;
5131
+ case 'opened':
5132
+ // We handle every available shortcut for the opened state
5133
+ switch (keyboardShortcut) {
5134
+ case 'ESCAPE':
5135
+ switch (type) {
5136
+ case 'unique':
5137
+ case 'multiple':
5138
+ case 'autocomplete_unique':
5139
+ case 'autocomplete_multiple':
5140
+ return [{ kind: 'CloseSelect', shouldBlur: false }];
5141
+ }
5142
+ break;
5143
+ case 'ALT+UP_ARROW':
5144
+ switch (type) {
5145
+ case 'unique':
5146
+ case 'multiple':
5147
+ return [{ kind: 'CloseSelect', shouldBlur: false }];
5148
+ case 'autocomplete_unique':
5149
+ case 'autocomplete_multiple':
5150
+ // We must keep select autocomplete opened
5151
+ return [];
5152
+ }
5153
+ break;
5154
+ case 'TAB':
5155
+ switch (type) {
5156
+ case "autocomplete_unique":
5157
+ return [{ kind: 'SelectOption', target: 'lastHighlighted' }, { kind: 'CloseSelect', shouldBlur: false }];
5158
+ case "autocomplete_multiple":
5159
+ return [{ kind: 'CloseSelect', shouldBlur: false }];
5160
+ case "unique":
5161
+ case "multiple":
5162
+ return [{ kind: 'CloseSelect', shouldBlur: true }];
5163
+ }
5164
+ break;
5165
+ case 'MAJ+TAB':
5166
+ switch (type) {
5167
+ case "autocomplete_unique":
5168
+ // We don't blur the select when we close it because we move the focus manually just after closing it.
5169
+ return [{ kind: 'SelectOption', target: 'lastHighlighted' }, { kind: 'CloseSelect', shouldBlur: false }, { kind: 'MoveFocus', target: 'previous' }];
5170
+ case "autocomplete_multiple":
5171
+ // We don't blur the select when we close it because we move the focus manually just after closing it.
5172
+ return [{ kind: 'CloseSelect', shouldBlur: false }, { kind: 'MoveFocus', target: 'previous' }];
5173
+ case "unique":
5174
+ case "multiple":
5175
+ return [{ kind: 'CloseSelect', shouldBlur: true }];
5176
+ }
5177
+ break;
5178
+ case 'UP_ARROW':
5179
+ switch (type) {
5180
+ case "autocomplete_unique":
5181
+ case "autocomplete_multiple":
5182
+ return [{ kind: 'HighlightOption', target: 'previous' }];
5183
+ case "unique":
5184
+ case "multiple":
5185
+ return [{ kind: 'FocusOption', target: 'previous' }];
5186
+ }
5187
+ break;
5188
+ case 'LEFT_ARROW':
5189
+ switch (type) {
5190
+ case "autocomplete_unique":
5191
+ case "autocomplete_multiple":
5192
+ // We do nothing (navigate between characters in input field)
5193
+ return [];
5194
+ case "unique":
5195
+ case "multiple":
5196
+ return [{ kind: 'FocusOption', target: 'previous' }];
5197
+ }
5198
+ break;
5199
+ case 'DOWN_ARROW':
5200
+ switch (type) {
5201
+ case "autocomplete_unique":
5202
+ case "autocomplete_multiple":
5203
+ return [{ kind: 'HighlightOption', target: 'next' }];
5204
+ case "unique":
5205
+ case "multiple":
5206
+ return [{ kind: 'FocusOption', target: 'next' }];
5207
+ }
5208
+ break;
5209
+ case 'RIGHT_ARROW':
5210
+ switch (type) {
5211
+ case "autocomplete_unique":
5212
+ case "autocomplete_multiple":
5213
+ // We do nothing (navigate between characters in input field)
5214
+ return [];
5215
+ case "unique":
5216
+ case "multiple":
5217
+ return [{ kind: 'FocusOption', target: 'next' }];
5218
+ }
5219
+ break;
5220
+ case "PAGE_UP":
5221
+ switch (type) {
5222
+ case "autocomplete_unique":
5223
+ case "autocomplete_multiple":
5224
+ return [{ kind: 'HighlightOption', target: 'first' }];
5225
+ case "unique":
5226
+ case "multiple":
5227
+ return [{ kind: 'FocusOption', target: 'first' }];
5228
+ }
5229
+ break;
5230
+ case "PAGE_DOWN":
5231
+ switch (type) {
5232
+ case "autocomplete_unique":
5233
+ case "autocomplete_multiple":
5234
+ return [{ kind: 'HighlightOption', target: 'last' }];
5235
+ case "unique":
5236
+ case "multiple":
5237
+ return [{ kind: 'FocusOption', target: 'last' }];
5238
+ }
5239
+ break;
5240
+ case "ENTER":
5241
+ switch (type) {
5242
+ case "autocomplete_unique":
5243
+ return [{ kind: 'SelectOption', target: 'lastHighlighted' }];
5244
+ case "autocomplete_multiple":
5245
+ return [{ kind: 'SelectOption', target: 'lastHighlighted' }];
5246
+ }
5247
+ break;
5248
+ }
5249
+ break;
5250
+ default:
5251
+ throw Error('Unknown error');
5252
+ }
5253
+ return [];
5254
+ }
5255
+
5256
+ 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)}";
4993
5257
 
4994
5258
  const SELECT_MACHINE_CONFIG = {
4995
5259
  key: 'select',
@@ -5019,20 +5283,24 @@ const Select = class {
5019
5283
  this.wcsChange = index.createEvent(this, "wcsChange", 7);
5020
5284
  this.wcsFocus = index.createEvent(this, "wcsFocus", 7);
5021
5285
  this.wcsBlur = index.createEvent(this, "wcsBlur", 7);
5286
+ this.wcsFilterChange = index.createEvent(this, "wcsFilterChange", 7);
5022
5287
  this.selectId = `wcs-select-${selectIds++}`;
5023
5288
  this.optionsId = helpers.generateUniqueId("OPTIONS");
5024
5289
  this.expanded = false;
5025
5290
  this.size = 'm';
5026
- this.hasLoaded = false;
5027
5291
  this.displayText = undefined;
5028
5292
  this.focused = undefined;
5029
5293
  this.value = undefined;
5030
5294
  this.placeholder = undefined;
5031
5295
  this.disabled = false;
5032
5296
  this.multiple = false;
5297
+ this.autocomplete = false;
5298
+ this.filterFn = undefined;
5033
5299
  this.chips = false;
5034
5300
  this.name = undefined;
5035
- this.compareWith = (optionValue, selectedValue) => isEqual.isEqual(optionValue, selectedValue);
5301
+ this.compareWith = (optionValue, selectedValue) => keyboardEvent.isEqual(optionValue, selectedValue);
5302
+ this.showNoResultFoundLabel = false;
5303
+ this.autocompleteValue = undefined;
5036
5304
  this.overlayDirection = 'bottom';
5037
5305
  }
5038
5306
  /** Open the component. */
@@ -5045,7 +5313,6 @@ const Select = class {
5045
5313
  }
5046
5314
  onValueChangeHandler(newValue) {
5047
5315
  this.updateSelectedValue(newValue);
5048
- this.emitChange(this.value);
5049
5316
  }
5050
5317
  updateSelectedValue(value) {
5051
5318
  // If no value is passed, the select is reset.
@@ -5082,6 +5349,9 @@ const Select = class {
5082
5349
  const isSelected = this.compareWith(opt.value, value);
5083
5350
  if (isSelected) {
5084
5351
  this.displayText = opt.innerText;
5352
+ if (this.autocomplete) {
5353
+ this.autocompleteValue = opt.innerText;
5354
+ }
5085
5355
  }
5086
5356
  opt.selected = isSelected;
5087
5357
  });
@@ -5094,6 +5364,9 @@ const Select = class {
5094
5364
  reset() {
5095
5365
  this.values = [];
5096
5366
  this.displayText = undefined;
5367
+ if (this.autocomplete) {
5368
+ this.autocompleteValue = undefined;
5369
+ }
5097
5370
  this.options.forEach((opt) => {
5098
5371
  opt.selected = false;
5099
5372
  });
@@ -5124,8 +5397,6 @@ const Select = class {
5124
5397
  if (this.labelElement) {
5125
5398
  this.labelElement.id = this.selectId + "-lbl";
5126
5399
  }
5127
- // TODO: is this still usefull for anything ?
5128
- this.hasLoaded = true;
5129
5400
  }
5130
5401
  createPopperInstance() {
5131
5402
  return popper.createPopper(this.controlEl, this.optionsEl, {
@@ -5164,16 +5435,24 @@ const Select = class {
5164
5435
  });
5165
5436
  observer.observe(this.el, { childList: true });
5166
5437
  }
5438
+ componentWillRender() {
5439
+ if (this.multiple) {
5440
+ this.options
5441
+ .forEach((opt) => opt.multiple = true);
5442
+ }
5443
+ }
5167
5444
  componentWillLoad() {
5168
5445
  if (!isWcsSelectSize(this.size)) {
5169
5446
  console.error(`Invalid size value for wcs-select : "${this.size}". Must be one of "${WcsSelectSizeValue.join(', ')}"`);
5170
5447
  this.size = "m"; // Default fallback value
5171
5448
  }
5172
5449
  }
5173
- componentWillUpdate() {
5174
- if (this.multiple) {
5175
- this.options
5176
- .forEach((opt) => opt.multiple = true);
5450
+ async setAriaAttribute(attr, value) {
5451
+ if (this.autocomplete === false) {
5452
+ this.el.setAttribute(attr, value);
5453
+ }
5454
+ else {
5455
+ this.autocompleteInput.setAttribute(attr, value);
5177
5456
  }
5178
5457
  }
5179
5458
  get options() {
@@ -5186,7 +5465,7 @@ const Select = class {
5186
5465
  }
5187
5466
  get notDisabledOptions() {
5188
5467
  var _a;
5189
- const opts = (_a = this.el) === null || _a === void 0 ? void 0 : _a.querySelectorAll('wcs-select-option:not([disabled])');
5468
+ const opts = (_a = this.el) === null || _a === void 0 ? void 0 : _a.querySelectorAll('wcs-select-option:not([disabled]):not([aria-hidden])');
5190
5469
  if (opts && opts.length !== 0) {
5191
5470
  return opts;
5192
5471
  }
@@ -5196,15 +5475,25 @@ const Select = class {
5196
5475
  return {
5197
5476
  actions: {
5198
5477
  open: () => {
5199
- var _a;
5478
+ var _a, _b;
5200
5479
  if (!this.disabled) {
5201
5480
  this.expanded = true;
5202
5481
  this.focused = false;
5482
+ if (this.multiple === false && this.autocomplete && this.hasValue === false) {
5483
+ // If we open the select in single autocomplete mode, we update the autocomplete value at
5484
+ // the blur event so that the displayed value reflect the current select value.
5485
+ // Indeed, we have to tell the component to take the current filter state manually at the
5486
+ // opening (because the input event of the autocomplete field is not fired at this point).
5487
+ this.handleAutocompleteValueChange((_a = this.autocompleteValue) !== null && _a !== void 0 ? _a : '');
5488
+ }
5489
+ this.clearHighlightOnLastHighlightedOption();
5203
5490
  if (this.notDisabledOptions.length > 0) {
5204
- this.lastFocusedOptionElement = (_a = this.lastSelectedOptionElement) !== null && _a !== void 0 ? _a : this.notDisabledOptions[0];
5491
+ this.lastFocusedOptionElement = (_b = this.lastModifiedOptionElement) !== null && _b !== void 0 ? _b : this.notDisabledOptions[0];
5205
5492
  requestAnimationFrame(() => {
5206
- var _a;
5207
- (_a = this.lastFocusedOptionElement) === null || _a === void 0 ? void 0 : _a.focus();
5493
+ var _a, _b;
5494
+ this.autocomplete
5495
+ ? (_a = this.autocompleteInput) === null || _a === void 0 ? void 0 : _a.focus()
5496
+ : (_b = this.lastFocusedOptionElement) === null || _b === void 0 ? void 0 : _b.focus();
5208
5497
  });
5209
5498
  }
5210
5499
  }
@@ -5212,12 +5501,21 @@ const Select = class {
5212
5501
  close: (_, event) => {
5213
5502
  var _a, _b;
5214
5503
  if (event.type === 'CLOSE') {
5504
+ this.clearHighlightOnLastHighlightedOption();
5215
5505
  if ((_a = event.value) === null || _a === void 0 ? void 0 : _a.shouldBlur) {
5216
- (_b = this.el.closest("wcs-select")) === null || _b === void 0 ? void 0 : _b.focus();
5217
5506
  this.focused = false;
5218
5507
  }
5219
5508
  else {
5220
- this.el.focus();
5509
+ if (this.autocomplete && ((_b = event.value) === null || _b === void 0 ? void 0 : _b.fromKeyboard)) {
5510
+ // If we're in autocomplete mode, a keyboard event (e.g. escape) doesn't change the
5511
+ // focus (so this.el.focus() aren't called because the select was already focused)
5512
+ // but you still have to go back to the autocomplete input.
5513
+ this.focusAutocompleteInput();
5514
+ }
5515
+ else {
5516
+ // Otherwise, we focus the select element
5517
+ this.el.focus();
5518
+ }
5221
5519
  this.focused = true;
5222
5520
  }
5223
5521
  }
@@ -5225,7 +5523,24 @@ const Select = class {
5225
5523
  },
5226
5524
  selectOption: (_, event) => {
5227
5525
  if (event.type === 'OPTION_SELECTED') {
5228
- this.handleClickEvent(event.value);
5526
+ if (this.multiple) {
5527
+ this.handleOptionSelectedOnMultiple(event.value.option);
5528
+ }
5529
+ else {
5530
+ this.handleOptionSelectedOnSingle(event.value.option);
5531
+ this.stateService.send('CLOSE', { value: { fromKeyboard: event.value.fromKeyboard } });
5532
+ }
5533
+ if (this.autocomplete) {
5534
+ if (this.multiple) {
5535
+ requestAnimationFrame(() => {
5536
+ this.autocompleteInput.focus();
5537
+ });
5538
+ }
5539
+ else {
5540
+ this.autocompleteValue = event.value.option.displayText;
5541
+ }
5542
+ }
5543
+ this.emitChange(this.value);
5229
5544
  }
5230
5545
  }
5231
5546
  },
@@ -5234,28 +5549,18 @@ const Select = class {
5234
5549
  }
5235
5550
  };
5236
5551
  }
5237
- handleClickEvent(event) {
5238
- if (this.multiple) {
5239
- this.handleClickOnMultiple(event);
5240
- }
5241
- else {
5242
- this.handleNormalClick(event);
5243
- }
5244
- }
5245
- handleClickOnMultiple(event) {
5552
+ handleOptionSelectedOnMultiple(event) {
5246
5553
  const index = this.values.findIndex(v => v.value === event.value);
5247
5554
  if (index === -1) {
5248
5555
  const { value, displayText, chipColor, chipBackgroundColor } = event;
5249
5556
  this.values.push({ value, displayText, chipColor, chipBackgroundColor });
5250
5557
  event.source.selected = true;
5251
- this.lastSelectedOptionElement = event.source;
5252
5558
  }
5253
5559
  else {
5254
5560
  event.source.selected = false;
5255
5561
  this.values.splice(index, 1);
5256
- if (this.lastSelectedOptionElement === event.source)
5257
- this.lastSelectedOptionElement = null;
5258
5562
  }
5563
+ this.lastModifiedOptionElement = event.source;
5259
5564
  this.updateValueWithValues();
5260
5565
  }
5261
5566
  updateValueWithValues() {
@@ -5264,7 +5569,7 @@ const Select = class {
5264
5569
  ? this.values.map(v => v.displayText).join(', ')
5265
5570
  : undefined;
5266
5571
  }
5267
- handleNormalClick(event) {
5572
+ handleOptionSelectedOnSingle(event) {
5268
5573
  // Reset other options to false if they were selected.
5269
5574
  this.options
5270
5575
  .forEach(option => {
@@ -5274,8 +5579,7 @@ const Select = class {
5274
5579
  event.source.selected = true;
5275
5580
  this.value = event.value;
5276
5581
  this.displayText = event.displayText;
5277
- this.lastSelectedOptionElement = event.source;
5278
- this.stateService.send('CLOSE');
5582
+ this.lastModifiedOptionElement = event.source;
5279
5583
  }
5280
5584
  disconnectedCallback() {
5281
5585
  var _a;
@@ -5311,107 +5615,201 @@ const Select = class {
5311
5615
  // TODO: Move this logic in the state machine
5312
5616
  // FIXME: Doesnt work with single + disabled option
5313
5617
  if (this.expanded && !clickOnCurrentSelect) {
5314
- this.stateService.send('CLOSE');
5618
+ this.stateService.send({ type: 'CLOSE', value: { shouldBlur: true, fromKeyboard: false } });
5315
5619
  }
5316
5620
  }
5317
5621
  onKeyDown(_event) {
5318
- // close
5319
- if (this.stateService.getSnapshot().matches("closed")) {
5320
- if (helpers.isEnterKey(_event) || (_event.altKey && helpers.isDownArrowKey(_event)) || helpers.isSpaceKey(_event)) {
5321
- _event.preventDefault();
5322
- _event.stopPropagation();
5622
+ const currentState = this.stateService.getSnapshot().matches("closed") ? 'closed' : 'opened';
5623
+ let type;
5624
+ if (this.autocomplete) {
5625
+ type = this.multiple ? 'autocomplete_multiple' : 'autocomplete_unique';
5626
+ }
5627
+ else {
5628
+ type = this.multiple ? 'multiple' : 'unique';
5629
+ }
5630
+ const actionsFromKeyboardEvents = getActionForKeyboardEvent(_event, currentState, type);
5631
+ // If we have at least one associated actions, we prevent the default behavior of the event.
5632
+ // Except if the action is a focus move (we have to handle the preventDefault behavior ourselves in the action implementation)
5633
+ if (actionsFromKeyboardEvents.length != 0 && actionsFromKeyboardEvents.filter(a => a.kind === 'MoveFocus').length === 0) {
5634
+ _event.preventDefault();
5635
+ }
5636
+ for (const actionFromKeyboardEvent of actionsFromKeyboardEvents) {
5637
+ this.doActionFromKeyboardEventAssociatedAction(actionFromKeyboardEvent, _event);
5638
+ }
5639
+ }
5640
+ doActionFromKeyboardEventAssociatedAction(actionFromKeyboardEvent, event) {
5641
+ var _a, _b;
5642
+ switch (actionFromKeyboardEvent.kind) {
5643
+ case "CloseSelect":
5644
+ this.stateService.send({
5645
+ type: 'CLOSE',
5646
+ value: { shouldBlur: actionFromKeyboardEvent.shouldBlur, fromKeyboard: true }
5647
+ });
5648
+ break;
5649
+ case "OpenSelect":
5323
5650
  this.stateService.send('OPEN');
5324
- return;
5325
- }
5326
- if (this.multiple) {
5327
- if (helpers.isDownArrowKey(_event)) {
5328
- this.stateService.send('OPEN');
5329
- }
5330
- }
5331
- else {
5332
- if (helpers.isDownArrowKey(_event) || helpers.isRightArrowKey(_event)) {
5333
- _event.preventDefault();
5334
- this.selectClosestOption("next");
5651
+ break;
5652
+ case "SelectOption":
5653
+ switch (actionFromKeyboardEvent.target) {
5654
+ case "next":
5655
+ this.selectClosestOption('next');
5656
+ break;
5657
+ case "previous":
5658
+ this.selectClosestOption('previous');
5659
+ break;
5660
+ case "first":
5661
+ this.selectFirstOption();
5662
+ break;
5663
+ case "last":
5664
+ this.selectLastOption();
5665
+ break;
5666
+ case "lastHighlighted": {
5667
+ // We have to handle enterKey here because with autocomplete mode, a wcs-select-option
5668
+ // is only highlighted, therefore the event is not fired
5669
+ const indexToSelect = Array.from(this.notDisabledOptions).indexOf(this.lastHighlightedOptionElement);
5670
+ if (indexToSelect !== -1) {
5671
+ this.lastModifiedOptionElement = this.lastHighlightedOptionElement;
5672
+ this.selectOption(indexToSelect, true);
5673
+ }
5674
+ break;
5675
+ }
5335
5676
  }
5336
- if (helpers.isUpArrowKey(_event) || helpers.isLeftArrowKey(_event)) {
5337
- _event.preventDefault();
5338
- this.selectClosestOption("previous");
5677
+ break;
5678
+ case "ClearAutocompleteInput":
5679
+ this.autocompleteValue = '';
5680
+ break;
5681
+ case "ClearHighlight":
5682
+ this.clearHighlightOnLastHighlightedOption();
5683
+ break;
5684
+ case "HighlightOption":
5685
+ switch (actionFromKeyboardEvent.target) {
5686
+ case "next":
5687
+ this.highlightClosestOption('next');
5688
+ break;
5689
+ case "previous":
5690
+ this.highlightClosestOption('previous');
5691
+ break;
5692
+ case "first":
5693
+ this.highlightFirstOption();
5694
+ break;
5695
+ case "last":
5696
+ this.highlightLastOption();
5697
+ break;
5339
5698
  }
5340
- else if (helpers.isPageDownKey(_event)) {
5341
- _event.preventDefault();
5342
- this.selectLastOption();
5699
+ break;
5700
+ case "FocusOption":
5701
+ switch (actionFromKeyboardEvent.target) {
5702
+ case "next":
5703
+ this.focusClosestOption('next');
5704
+ break;
5705
+ case "previous":
5706
+ this.focusClosestOption('previous');
5707
+ break;
5708
+ case "first":
5709
+ this.focusFirstOption();
5710
+ break;
5711
+ case "last":
5712
+ this.focusLastOption();
5713
+ break;
5714
+ case "lastFocused":
5715
+ if (this.lastFocusedOptionElement != null) {
5716
+ this.focusOption(Array.from(this.notDisabledOptions).indexOf(this.lastFocusedOptionElement));
5717
+ }
5718
+ break;
5343
5719
  }
5344
- else if (helpers.isPageUpKey(_event) || helpers.isHomeKey(_event)) {
5345
- _event.preventDefault();
5346
- this.selectFirstOption();
5720
+ break;
5721
+ case "MoveFocus":
5722
+ switch (actionFromKeyboardEvent.target) {
5723
+ case "previous": {
5724
+ let elementToFocus = (_a = this.el.previousElementSibling) !== null && _a !== void 0 ? _a : this.el.parentElement;
5725
+ while (elementToFocus) {
5726
+ if (accessibility.isFocusable(elementToFocus))
5727
+ break;
5728
+ elementToFocus = (_b = elementToFocus.previousElementSibling) !== null && _b !== void 0 ? _b : elementToFocus.parentElement;
5729
+ }
5730
+ if (elementToFocus) {
5731
+ event.preventDefault();
5732
+ elementToFocus.focus();
5733
+ }
5734
+ break;
5735
+ }
5347
5736
  }
5348
- }
5349
- }
5350
- // open
5351
- else if (this.stateService.getSnapshot().matches("opened")) {
5352
- if (helpers.isEscapeKey(_event) || (_event.altKey && helpers.isUpArrowKey(_event))) {
5353
- this.stateService.send({ type: "CLOSE", value: { shouldBlur: false } });
5354
- }
5355
- else if (helpers.isTabKey(_event) || (_event.shiftKey && helpers.isTabKey(_event))) {
5356
- this.stateService.send({ type: "CLOSE", value: { shouldBlur: true } });
5357
- }
5358
- else if (helpers.isDownArrowKey(_event)) {
5359
- _event.preventDefault();
5360
- this.focusClosestOption("next");
5361
- }
5362
- else if (helpers.isUpArrowKey(_event)) {
5363
- _event.preventDefault();
5364
- this.focusClosestOption("previous");
5365
- }
5366
- else if (helpers.isPageUpKey(_event) || helpers.isHomeKey(_event)) {
5367
- _event.preventDefault();
5368
- this.focusFirstOption();
5369
- }
5370
- else if (helpers.isPageDownKey(_event)) {
5371
- _event.preventDefault();
5372
- this.focusLastOption();
5373
- }
5737
+ break;
5738
+ default:
5739
+ throw new Error("Internal error");
5374
5740
  }
5375
5741
  }
5376
5742
  getClosestActiveOptionIndexForState(direction, state) {
5377
- let currentIndex = Array.from(this.notDisabledOptions).indexOf(state === 'focused' ? this.lastFocusedOptionElement : this.lastSelectedOptionElement);
5378
- if (direction === 'next' && currentIndex < this.notDisabledOptions.length - 1) {
5743
+ let concernedOption;
5744
+ switch (state) {
5745
+ case 'focused':
5746
+ concernedOption = this.lastFocusedOptionElement;
5747
+ break;
5748
+ case 'modified':
5749
+ concernedOption = this.lastModifiedOptionElement;
5750
+ break;
5751
+ case 'highlighted':
5752
+ concernedOption = this.lastHighlightedOptionElement;
5753
+ break;
5754
+ default:
5755
+ concernedOption = null;
5756
+ }
5757
+ let currentIndex = Array.from(this.notDisabledOptions).indexOf(concernedOption);
5758
+ const MIN_INDEX = 0;
5759
+ const MAX_INDEX = this.notDisabledOptions.length - 1;
5760
+ if (direction === 'next' && currentIndex < MAX_INDEX) {
5379
5761
  currentIndex++;
5380
5762
  }
5381
- else if (direction === 'previous' && currentIndex > 0) {
5763
+ else if (direction === 'previous' && currentIndex > MIN_INDEX) {
5382
5764
  currentIndex--;
5383
5765
  }
5384
5766
  else {
5385
- return 'nothing';
5767
+ if (!this.autocomplete)
5768
+ return 'nothing';
5769
+ // Used to scroll options infinitely with keyboard (autocomplete mode only)
5770
+ if (direction === 'next' && currentIndex >= MAX_INDEX) {
5771
+ currentIndex = 0;
5772
+ }
5773
+ if (direction === 'previous' && currentIndex === MIN_INDEX) {
5774
+ currentIndex = MAX_INDEX;
5775
+ }
5386
5776
  }
5387
5777
  return currentIndex;
5388
5778
  }
5389
- selectOption(indexToSelect) {
5390
- this.lastSelectedOptionElement = this.notDisabledOptions[indexToSelect];
5391
- this.lastSelectedOptionElement.selected = true;
5779
+ /**
5780
+ * Selects the non-disabled option with the index passed as a parameter.
5781
+ * The method sends an event to the state machine (the same as when clicking on an option with the mouse)
5782
+ * @param indexToSelect Option index within non-deactivated options list
5783
+ * @param fromKeyboard
5784
+ * @private
5785
+ */
5786
+ selectOption(indexToSelect, fromKeyboard = false) {
5787
+ const optionToSelect = this.notDisabledOptions[indexToSelect];
5788
+ if (!optionToSelect)
5789
+ return;
5392
5790
  this.sendOptionSelectedToStateMachine({
5393
- source: this.lastSelectedOptionElement,
5394
- value: this.value,
5395
- displayText: this.lastSelectedOptionElement.innerText
5396
- });
5791
+ source: optionToSelect,
5792
+ value: optionToSelect.value,
5793
+ displayText: optionToSelect.innerText
5794
+ }, fromKeyboard);
5397
5795
  }
5398
5796
  selectClosestOption(direction) {
5399
- const indexToSelect = this.getClosestActiveOptionIndexForState(direction, 'selected');
5797
+ const indexToSelect = this.getClosestActiveOptionIndexForState(direction, 'modified');
5400
5798
  if (indexToSelect === 'nothing')
5401
5799
  return;
5402
- this.selectOption(indexToSelect);
5800
+ this.selectOption(indexToSelect, true);
5403
5801
  }
5404
5802
  selectFirstOption() {
5405
5803
  if (this.notDisabledOptions.length < 1) {
5406
5804
  return;
5407
5805
  }
5408
- this.selectOption(0);
5806
+ this.selectOption(0, true);
5409
5807
  }
5410
5808
  selectLastOption() {
5411
5809
  if (this.notDisabledOptions.length < 1) {
5412
5810
  return;
5413
5811
  }
5414
- this.selectOption(this.notDisabledOptions.length - 1);
5812
+ this.selectOption(this.notDisabledOptions.length - 1, true);
5415
5813
  }
5416
5814
  focusOption(indexToFocus) {
5417
5815
  var _a;
@@ -5434,8 +5832,8 @@ const Select = class {
5434
5832
  selectedOptionChanged(event) {
5435
5833
  this.sendOptionSelectedToStateMachine(event.detail);
5436
5834
  }
5437
- sendOptionSelectedToStateMachine(event) {
5438
- this.stateService.send({ type: 'OPTION_SELECTED', value: event });
5835
+ sendOptionSelectedToStateMachine(event, fromKeyboard = false) {
5836
+ this.stateService.send({ type: 'OPTION_SELECTED', value: { option: event, fromKeyboard } });
5439
5837
  }
5440
5838
  onSlotchange() {
5441
5839
  this.updateSelectedValue(this.value);
@@ -5448,22 +5846,115 @@ const Select = class {
5448
5846
  }
5449
5847
  });
5450
5848
  }
5849
+ //region Autocomplete mode
5850
+ highlightOption(indexToHighlight) {
5851
+ this.clearHighlightOnLastHighlightedOption();
5852
+ this.lastHighlightedOptionElement = this.notDisabledOptions[indexToHighlight];
5853
+ if (this.lastHighlightedOptionElement) {
5854
+ this.lastHighlightedOptionElement.highlighted = true;
5855
+ this.autocompleteInput.setAttribute("aria-activedescendant", this.lastHighlightedOptionElement.id);
5856
+ requestAnimationFrame(() => {
5857
+ this.lastHighlightedOptionElement.scrollIntoView({ block: "nearest", inline: "nearest" });
5858
+ });
5859
+ }
5860
+ }
5861
+ highlightFirstOption() {
5862
+ this.highlightOption(0);
5863
+ }
5864
+ highlightLastOption() {
5865
+ this.highlightOption(this.notDisabledOptions.length - 1);
5866
+ }
5867
+ highlightClosestOption(direction) {
5868
+ const indexToHighlight = this.getClosestActiveOptionIndexForState(direction, 'highlighted');
5869
+ if (indexToHighlight === 'nothing')
5870
+ return;
5871
+ this.highlightOption(indexToHighlight);
5872
+ }
5873
+ /**
5874
+ * This method removes the highlight that applies to the last highlighted option if any.
5875
+ * This is used only for accessibility of autocomplete mode.
5876
+ * @private
5877
+ */
5878
+ clearHighlightOnLastHighlightedOption() {
5879
+ if (this.lastHighlightedOptionElement) {
5880
+ this.lastHighlightedOptionElement.highlighted = false;
5881
+ this.lastHighlightedOptionElement = null;
5882
+ }
5883
+ }
5884
+ onAutocompleteInputEvent(e) {
5885
+ var _a;
5886
+ const filter = (_a = this.autocompleteInput.value) !== null && _a !== void 0 ? _a : '';
5887
+ this.handleAutocompleteValueChange(filter);
5888
+ // Avoid the inputEvent event to bubble and be emitted, we rather use wcsFilterChange in this case :
5889
+ e.stopPropagation();
5890
+ }
5891
+ handleAutocompleteValueChange(filter) {
5892
+ var _a, _b;
5893
+ this.clearHighlightOnLastHighlightedOption();
5894
+ const newValueIsDifferentFromLastModifiedOption = this.lastModifiedOptionElement == null || ((_a = this.lastModifiedOptionElement) === null || _a === void 0 ? void 0 : _a.textContent) !== this.autocompleteValue;
5895
+ if (!this.expanded && newValueIsDifferentFromLastModifiedOption) {
5896
+ this.open();
5897
+ }
5898
+ if (filter.length) {
5899
+ const [matchingOptions, optionsToHide] = [[], []];
5900
+ const filteringFunction = (_b = this.filterFn) !== null && _b !== void 0 ? _b : WcsDefaultSelectFilterFn;
5901
+ this.options.forEach((optionEl) => (filteringFunction(optionEl, filter) ? matchingOptions : optionsToHide).push(optionEl));
5902
+ this.showNoResultFoundLabel = matchingOptions.length === 0;
5903
+ matchingOptions.forEach(o => {
5904
+ o.hidden = false;
5905
+ o.removeAttribute("aria-hidden");
5906
+ });
5907
+ optionsToHide.forEach(o => {
5908
+ o.hidden = true;
5909
+ o.setAttribute("aria-hidden", "true");
5910
+ });
5911
+ }
5912
+ else {
5913
+ this.showNoResultFoundLabel = false;
5914
+ this.options.forEach(o => {
5915
+ o.hidden = false;
5916
+ o.removeAttribute("aria-hidden");
5917
+ });
5918
+ }
5919
+ this.autocompleteValue = filter;
5920
+ this.wcsFilterChange.emit({
5921
+ value: filter,
5922
+ });
5923
+ }
5924
+ onFocus() {
5925
+ if (this.autocomplete) {
5926
+ this.focusAutocompleteInput();
5927
+ }
5928
+ }
5929
+ focusAutocompleteInput() {
5930
+ var _a;
5931
+ (_a = this.autocompleteInput) === null || _a === void 0 ? void 0 : _a.focus();
5932
+ }
5933
+ //endregion
5451
5934
  componentDidRender() {
5452
5935
  var _a;
5453
5936
  (_a = this.popper) === null || _a === void 0 ? void 0 : _a.update();
5454
5937
  }
5455
5938
  render() {
5939
+ var _a;
5456
5940
  const ariaLabelValue = `${this.labelElement ? this.labelElement.innerText : ''} ${this.hasValue ? this.displayText : ''}`.trimEnd();
5457
- return (index.h(index.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 }), index.h("div", { class: "wcs-select-control" }, index.h("div", { class: "wcs-select-value-container" }, this.hasValue
5941
+ return (index.h(index.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 }), index.h("div", { class: "wcs-select-control" }, index.h("div", { class: "wcs-select-value-container" }, this.hasValue
5458
5942
  ?
5459
5943
  (this.chips ?
5460
5944
  this.values.map((option) => index.h(SelectChips, { disabled: this.disabled, option: option, onRemove: this.removeChip.bind(this) }))
5461
- : index.h("label", { class: "wcs-select-value" }, this.displayText))
5462
- : index.h("label", { class: "wcs-select-placeholder" }, this.placeholder)), index.h(selectArrow.SelectArrow, { up: this.expanded })), index.h("div", { class: "wcs-select-options", id: this.optionsId, role: "listbox" }, index.h("slot", { name: "wcs-select-option", onSlotchange: this.onSlotchange.bind(this) }))));
5945
+ : (!this.autocomplete || this.autocomplete && this.multiple) &&
5946
+ index.h("label", { class: "wcs-select-value" }, this.displayText))
5947
+ : !this.autocomplete && index.h("label", { class: "wcs-select-placeholder" }, this.placeholder), this.autocomplete && index.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 })), index.h(selectArrow.SelectArrow, { up: this.expanded })), index.h("div", { class: "wcs-select-options", id: this.optionsId, role: "listbox" }, index.h("slot", { name: "options", onSlotchange: this.onSlotchange.bind(this) }), (this.autocomplete && this.showNoResultFoundLabel) &&
5948
+ index.h("div", { class: "noresult-container" }, index.h("slot", { name: "filter-no-result" }, index.h("span", null, "Aucun r\u00E9sultat"))))));
5463
5949
  }
5464
5950
  focusedAttributes() {
5465
5951
  return !this.disabled ? { tabIndex: 0 } : {};
5466
5952
  }
5953
+ onAutocompleteFieldBlur(_e) {
5954
+ if (this.multiple === false && this.autocomplete === true) {
5955
+ this.autocompleteValue = this.displayText;
5956
+ }
5957
+ }
5467
5958
  get el() { return index.getElement(this); }
5468
5959
  static get watchers() { return {
5469
5960
  "value": ["onValueChangeHandler"]
@@ -5472,7 +5963,7 @@ const Select = class {
5472
5963
  let selectIds = 0;
5473
5964
  Select.style = selectCss;
5474
5965
 
5475
- 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)}";
5966
+ 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)}";
5476
5967
 
5477
5968
  const SelectOption = class {
5478
5969
  constructor(hostRef) {
@@ -5481,6 +5972,7 @@ const SelectOption = class {
5481
5972
  this.selectOptionId = helpers.generateUniqueId(this.el.tagName);
5482
5973
  this.disabled = false;
5483
5974
  this.selected = false;
5975
+ this.highlighted = false;
5484
5976
  this.value = undefined;
5485
5977
  this.chipColor = undefined;
5486
5978
  this.chipBackgroundColor = undefined;
@@ -5522,7 +6014,7 @@ const SelectOption = class {
5522
6014
  }
5523
6015
  }
5524
6016
  render() {
5525
- return (index.h(index.Host, { id: this.selectOptionId, "aria-selected": this.selected ? 'true' : 'false', slot: "wcs-select-option", role: "option", tabindex: "-1" }, this.multiple &&
6017
+ return (index.h(index.Host, { id: this.selectOptionId, "aria-selected": this.selected || this.highlighted ? 'true' : 'false', slot: "options", role: "option", tabindex: "-1" }, this.multiple &&
5526
6018
  index.h("wcs-checkbox", { tabindex: "-1", checked: this.selected }), index.h("slot", null)));
5527
6019
  }
5528
6020
  get el() { return index.getElement(this); }