@siemens/ix 0.0.0-20240419081748 → 0.0.0-20240508065324

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 (424) hide show
  1. package/components/dropdown.js +112 -9
  2. package/components/dropdown.js.map +1 -1
  3. package/components/group-context-menu.js +1 -1
  4. package/components/group-context-menu.js.map +1 -1
  5. package/components/group-item.js +3 -3
  6. package/components/group-item.js.map +1 -1
  7. package/components/ix-category-filter.js +34 -10
  8. package/components/ix-category-filter.js.map +1 -1
  9. package/components/ix-event-list-item.js +5 -4
  10. package/components/ix-event-list-item.js.map +1 -1
  11. package/components/ix-event-list.js +26 -25
  12. package/components/ix-event-list.js.map +1 -1
  13. package/components/ix-form-field.js +1 -1
  14. package/components/ix-form-field.js.map +1 -1
  15. package/components/ix-group.js +16 -9
  16. package/components/ix-group.js.map +1 -1
  17. package/components/ix-icon-toggle-button.js +1 -1
  18. package/components/ix-input-group.js +1 -1
  19. package/components/ix-key-value-list.js +1 -1
  20. package/components/ix-kpi.js +3 -3
  21. package/components/ix-link-button.js +3 -3
  22. package/components/ix-map-navigation.js +2 -2
  23. package/components/ix-menu-about-item.js +1 -1
  24. package/components/ix-menu-about-news.js +4 -4
  25. package/components/ix-menu-about.js +1 -1
  26. package/components/ix-menu-about.js.map +1 -1
  27. package/components/ix-menu-avatar.js +2 -2
  28. package/components/ix-menu-category.js +5 -5
  29. package/components/ix-menu-settings-item.js +1 -1
  30. package/components/ix-menu.js +11 -11
  31. package/components/ix-message-bar.js +1 -1
  32. package/components/ix-modal-example.js +1 -1
  33. package/components/ix-modal-footer.js +1 -1
  34. package/components/ix-modal-loading.js +1 -1
  35. package/components/ix-pagination.js +2 -2
  36. package/components/ix-pane-layout.js +1 -1
  37. package/components/ix-pill.js +4 -4
  38. package/components/ix-playground-internal.js +1 -1
  39. package/components/ix-split-button-item.js +1 -1
  40. package/components/ix-tile.js +4 -4
  41. package/components/ix-toggle-button.js +2 -2
  42. package/components/ix-toggle.js +2 -2
  43. package/components/ix-tree.js +1 -1
  44. package/components/ix-upload.js +3 -3
  45. package/components/ix-validation-tooltip.js +2 -2
  46. package/components/ix-workflow-step.js +3 -3
  47. package/components/ix-workflow-steps.js +1 -1
  48. package/components/map-navigation-overlay.js +2 -2
  49. package/components/menu-avatar-item.js +1 -1
  50. package/components/menu-expand-icon.js +1 -1
  51. package/components/menu-item.js +2 -2
  52. package/components/modal-content.js +1 -1
  53. package/components/modal-header.js +1 -1
  54. package/components/row.js +1 -1
  55. package/components/select-item.js +9 -1
  56. package/components/select-item.js.map +1 -1
  57. package/components/select.js +161 -42
  58. package/components/select.js.map +1 -1
  59. package/components/spinner.js +1 -1
  60. package/components/tabs.js +2 -2
  61. package/components/time-picker.js +1 -1
  62. package/components/time-picker.js.map +1 -1
  63. package/components/toast.js +2 -2
  64. package/components/tooltip.js +2 -2
  65. package/components/tree-item.js +4 -4
  66. package/dist/cjs/focus-9c8ffbb0.js +65 -0
  67. package/dist/cjs/focus-9c8ffbb0.js.map +1 -0
  68. package/dist/cjs/ix-avatar_2.cjs.entry.js +1 -1
  69. package/dist/cjs/ix-category-filter.cjs.entry.js +33 -10
  70. package/dist/cjs/ix-category-filter.cjs.entry.js.map +1 -1
  71. package/dist/cjs/ix-col_4.cjs.entry.js +1 -1
  72. package/dist/cjs/ix-dropdown.cjs.entry.js +52 -8
  73. package/dist/cjs/ix-dropdown.cjs.entry.js.map +1 -1
  74. package/dist/cjs/ix-event-list-item.cjs.entry.js +5 -4
  75. package/dist/cjs/ix-event-list-item.cjs.entry.js.map +1 -1
  76. package/dist/cjs/ix-event-list.cjs.entry.js +26 -25
  77. package/dist/cjs/ix-event-list.cjs.entry.js.map +1 -1
  78. package/dist/cjs/ix-filter-chip_2.cjs.entry.js +8 -1
  79. package/dist/cjs/ix-filter-chip_2.cjs.entry.js.map +1 -1
  80. package/dist/cjs/ix-form-field.cjs.entry.js +1 -1
  81. package/dist/cjs/ix-form-field.cjs.entry.js.map +1 -1
  82. package/dist/cjs/ix-group-context-menu_2.cjs.entry.js +4 -4
  83. package/dist/cjs/ix-group-context-menu_2.cjs.entry.js.map +1 -1
  84. package/dist/cjs/ix-group.cjs.entry.js +13 -7
  85. package/dist/cjs/ix-group.cjs.entry.js.map +1 -1
  86. package/dist/cjs/ix-icon-button_2.cjs.entry.js +1 -1
  87. package/dist/cjs/ix-icon-toggle-button.cjs.entry.js +1 -1
  88. package/dist/cjs/ix-input-group.cjs.entry.js +1 -1
  89. package/dist/cjs/ix-key-value-list.cjs.entry.js +1 -1
  90. package/dist/cjs/ix-kpi.cjs.entry.js +3 -3
  91. package/dist/cjs/ix-link-button.cjs.entry.js +3 -3
  92. package/dist/cjs/ix-map-navigation-overlay.cjs.entry.js +2 -2
  93. package/dist/cjs/ix-map-navigation.cjs.entry.js +2 -2
  94. package/dist/cjs/ix-menu-about-item.cjs.entry.js +1 -1
  95. package/dist/cjs/ix-menu-about-news.cjs.entry.js +4 -4
  96. package/dist/cjs/ix-menu-about.cjs.entry.js +1 -1
  97. package/dist/cjs/ix-menu-about.cjs.entry.js.map +1 -1
  98. package/dist/cjs/ix-menu-avatar.cjs.entry.js +2 -2
  99. package/dist/cjs/ix-menu-category.cjs.entry.js +5 -5
  100. package/dist/cjs/ix-menu-expand-icon.cjs.entry.js +1 -1
  101. package/dist/cjs/ix-menu-item.cjs.entry.js +2 -2
  102. package/dist/cjs/ix-menu-settings-item.cjs.entry.js +1 -1
  103. package/dist/cjs/ix-menu.cjs.entry.js +11 -11
  104. package/dist/cjs/ix-message-bar.cjs.entry.js +1 -1
  105. package/dist/cjs/ix-modal-content_2.cjs.entry.js +2 -2
  106. package/dist/cjs/ix-modal-example.cjs.entry.js +1 -1
  107. package/dist/cjs/ix-modal-footer.cjs.entry.js +1 -1
  108. package/dist/cjs/ix-modal-loading.cjs.entry.js +1 -1
  109. package/dist/cjs/ix-pagination.cjs.entry.js +2 -2
  110. package/dist/cjs/ix-pane-layout.cjs.entry.js +1 -1
  111. package/dist/cjs/ix-pill.cjs.entry.js +4 -4
  112. package/dist/cjs/ix-playground-internal.cjs.entry.js +1 -1
  113. package/dist/cjs/ix-select.cjs.entry.js +159 -39
  114. package/dist/cjs/ix-select.cjs.entry.js.map +1 -1
  115. package/dist/cjs/ix-split-button-item.cjs.entry.js +1 -1
  116. package/dist/cjs/ix-tab-item_2.cjs.entry.js +2 -2
  117. package/dist/cjs/ix-tile.cjs.entry.js +4 -4
  118. package/dist/cjs/ix-time-picker.cjs.entry.js +1 -1
  119. package/dist/cjs/ix-time-picker.cjs.entry.js.map +1 -1
  120. package/dist/cjs/ix-toast.cjs.entry.js +2 -2
  121. package/dist/cjs/ix-toggle-button.cjs.entry.js +2 -2
  122. package/dist/cjs/ix-toggle.cjs.entry.js +2 -2
  123. package/dist/cjs/ix-tooltip.cjs.entry.js +2 -2
  124. package/dist/cjs/ix-tree-item.cjs.entry.js +4 -4
  125. package/dist/cjs/ix-tree.cjs.entry.js +1 -1
  126. package/dist/cjs/ix-upload.cjs.entry.js +3 -3
  127. package/dist/cjs/ix-validation-tooltip.cjs.entry.js +2 -2
  128. package/dist/cjs/ix-workflow-step.cjs.entry.js +3 -3
  129. package/dist/cjs/ix-workflow-steps.cjs.entry.js +1 -1
  130. package/dist/cjs/loader.cjs.js +1 -1
  131. package/dist/cjs/siemens-ix.cjs.js +1 -1
  132. package/dist/collection/components/category-filter/category-filter.css +60 -24
  133. package/dist/collection/components/category-filter/category-filter.js +58 -9
  134. package/dist/collection/components/category-filter/category-filter.js.map +1 -1
  135. package/dist/collection/components/dropdown/dropdown.js +52 -8
  136. package/dist/collection/components/dropdown/dropdown.js.map +1 -1
  137. package/dist/collection/components/dropdown/test/dropdown.ct.js +42 -0
  138. package/dist/collection/components/dropdown/test/dropdown.ct.js.map +1 -1
  139. package/dist/collection/components/event-list/event-list.js +26 -25
  140. package/dist/collection/components/event-list/event-list.js.map +1 -1
  141. package/dist/collection/components/event-list/test/event-list.ct.js +61 -0
  142. package/dist/collection/components/event-list/test/event-list.ct.js.map +1 -0
  143. package/dist/collection/components/event-list/test/event-list.spec.js +0 -47
  144. package/dist/collection/components/event-list/test/event-list.spec.js.map +1 -1
  145. package/dist/collection/components/event-list-item/event-list-item.js +5 -4
  146. package/dist/collection/components/event-list-item/event-list-item.js.map +1 -1
  147. package/dist/collection/components/form-field/form-field.css +30 -12
  148. package/dist/collection/components/group/group-context-menu.css +3 -0
  149. package/dist/collection/components/group/group.js +16 -9
  150. package/dist/collection/components/group/group.js.map +1 -1
  151. package/dist/collection/components/group/test/group.ct.js +47 -0
  152. package/dist/collection/components/group/test/group.ct.js.map +1 -0
  153. package/dist/collection/components/group-item/group-item.css +9 -4
  154. package/dist/collection/components/group-item/group-item.js +2 -2
  155. package/dist/collection/components/icon-toggle-button/icon-toggle-button.js +1 -1
  156. package/dist/collection/components/input-group/input-group.js +1 -1
  157. package/dist/collection/components/key-value-list/key-value-list.js +1 -1
  158. package/dist/collection/components/kpi/kpi.js +3 -3
  159. package/dist/collection/components/link-button/link-button.js +3 -3
  160. package/dist/collection/components/map-navigation/map-navigation.js +2 -2
  161. package/dist/collection/components/map-navigation-overlay/map-navigation-overlay.js +2 -2
  162. package/dist/collection/components/menu/menu-expand-icon.js +1 -1
  163. package/dist/collection/components/menu/menu.js +11 -11
  164. package/dist/collection/components/menu-about/menu-about.js +2 -2
  165. package/dist/collection/components/menu-about/menu-about.js.map +1 -1
  166. package/dist/collection/components/menu-about-item/menu-about-item.js +1 -1
  167. package/dist/collection/components/menu-about-news/menu-about-news.js +4 -4
  168. package/dist/collection/components/menu-avatar/menu-avatar.js +2 -2
  169. package/dist/collection/components/menu-avatar-item/menu-avatar-item.js +1 -1
  170. package/dist/collection/components/menu-category/menu-category.js +5 -5
  171. package/dist/collection/components/menu-item/menu-item.js +2 -2
  172. package/dist/collection/components/menu-settings-item/menu-settings-item.js +1 -1
  173. package/dist/collection/components/message-bar/message-bar.js +1 -1
  174. package/dist/collection/components/modal-content/modal-content.js +1 -1
  175. package/dist/collection/components/modal-footer/modal-footer.js +1 -1
  176. package/dist/collection/components/modal-header/modal-header.js +1 -1
  177. package/dist/collection/components/modal-loading/modal-loading.js +1 -1
  178. package/dist/collection/components/pagination/pagination.js +2 -2
  179. package/dist/collection/components/pane-layout/pane-layout.js +1 -1
  180. package/dist/collection/components/pill/pill.js +4 -4
  181. package/dist/collection/components/playground/example-modal.js +1 -1
  182. package/dist/collection/components/playground/playground.js +1 -1
  183. package/dist/collection/components/row/row.js +1 -1
  184. package/dist/collection/components/select/select.css +27 -9
  185. package/dist/collection/components/select/select.js +159 -38
  186. package/dist/collection/components/select/select.js.map +1 -1
  187. package/dist/collection/components/select/test/select.ct.js +342 -0
  188. package/dist/collection/components/select/test/select.ct.js.map +1 -1
  189. package/dist/collection/components/select-item/select-item.js +32 -1
  190. package/dist/collection/components/select-item/select-item.js.map +1 -1
  191. package/dist/collection/components/spinner/spinner.js +1 -1
  192. package/dist/collection/components/split-button-item/split-button-item.js +1 -1
  193. package/dist/collection/components/tabs/tabs.js +2 -2
  194. package/dist/collection/components/tile/tile.js +4 -4
  195. package/dist/collection/components/time-picker/time-picker.css +30 -12
  196. package/dist/collection/components/toast/toast.js +2 -2
  197. package/dist/collection/components/toggle/toggle.js +2 -2
  198. package/dist/collection/components/toggle-button/toggle-button.js +2 -2
  199. package/dist/collection/components/tooltip/tooltip.js +2 -2
  200. package/dist/collection/components/tree/tree.js +1 -1
  201. package/dist/collection/components/tree-item/tree-item.js +4 -4
  202. package/dist/collection/components/upload/upload.js +3 -3
  203. package/dist/collection/components/utils/focus.js +60 -0
  204. package/dist/collection/components/utils/focus.js.map +1 -0
  205. package/dist/collection/components/validation-tooltip/validation-tooltip.js +2 -2
  206. package/dist/collection/components/workflow-step/workflow-step.js +3 -3
  207. package/dist/collection/components/workflow-steps/workflow-steps.js +1 -1
  208. package/dist/collection/tests/category-filter/category-filter.e2e.js +30 -0
  209. package/dist/collection/tests/category-filter/category-filter.e2e.js.map +1 -1
  210. package/dist/collection/tests/select/select.e2e.js +21 -0
  211. package/dist/collection/tests/select/select.e2e.js.map +1 -1
  212. package/dist/esm/focus-d4d3abaf.js +63 -0
  213. package/dist/esm/focus-d4d3abaf.js.map +1 -0
  214. package/dist/esm/ix-avatar_2.entry.js +1 -1
  215. package/dist/esm/ix-category-filter.entry.js +33 -10
  216. package/dist/esm/ix-category-filter.entry.js.map +1 -1
  217. package/dist/esm/ix-col_4.entry.js +1 -1
  218. package/dist/esm/ix-dropdown.entry.js +52 -8
  219. package/dist/esm/ix-dropdown.entry.js.map +1 -1
  220. package/dist/esm/ix-event-list-item.entry.js +5 -4
  221. package/dist/esm/ix-event-list-item.entry.js.map +1 -1
  222. package/dist/esm/ix-event-list.entry.js +26 -25
  223. package/dist/esm/ix-event-list.entry.js.map +1 -1
  224. package/dist/esm/ix-filter-chip_2.entry.js +8 -1
  225. package/dist/esm/ix-filter-chip_2.entry.js.map +1 -1
  226. package/dist/esm/ix-form-field.entry.js +1 -1
  227. package/dist/esm/ix-form-field.entry.js.map +1 -1
  228. package/dist/esm/ix-group-context-menu_2.entry.js +4 -4
  229. package/dist/esm/ix-group-context-menu_2.entry.js.map +1 -1
  230. package/dist/esm/ix-group.entry.js +14 -8
  231. package/dist/esm/ix-group.entry.js.map +1 -1
  232. package/dist/esm/ix-icon-button_2.entry.js +1 -1
  233. package/dist/esm/ix-icon-toggle-button.entry.js +1 -1
  234. package/dist/esm/ix-input-group.entry.js +1 -1
  235. package/dist/esm/ix-key-value-list.entry.js +1 -1
  236. package/dist/esm/ix-kpi.entry.js +3 -3
  237. package/dist/esm/ix-link-button.entry.js +3 -3
  238. package/dist/esm/ix-map-navigation-overlay.entry.js +2 -2
  239. package/dist/esm/ix-map-navigation.entry.js +2 -2
  240. package/dist/esm/ix-menu-about-item.entry.js +1 -1
  241. package/dist/esm/ix-menu-about-news.entry.js +4 -4
  242. package/dist/esm/ix-menu-about.entry.js +1 -1
  243. package/dist/esm/ix-menu-about.entry.js.map +1 -1
  244. package/dist/esm/ix-menu-avatar.entry.js +2 -2
  245. package/dist/esm/ix-menu-category.entry.js +5 -5
  246. package/dist/esm/ix-menu-expand-icon.entry.js +1 -1
  247. package/dist/esm/ix-menu-item.entry.js +2 -2
  248. package/dist/esm/ix-menu-settings-item.entry.js +1 -1
  249. package/dist/esm/ix-menu.entry.js +11 -11
  250. package/dist/esm/ix-message-bar.entry.js +1 -1
  251. package/dist/esm/ix-modal-content_2.entry.js +2 -2
  252. package/dist/esm/ix-modal-example.entry.js +1 -1
  253. package/dist/esm/ix-modal-footer.entry.js +1 -1
  254. package/dist/esm/ix-modal-loading.entry.js +1 -1
  255. package/dist/esm/ix-pagination.entry.js +2 -2
  256. package/dist/esm/ix-pane-layout.entry.js +1 -1
  257. package/dist/esm/ix-pill.entry.js +4 -4
  258. package/dist/esm/ix-playground-internal.entry.js +1 -1
  259. package/dist/esm/ix-select.entry.js +159 -39
  260. package/dist/esm/ix-select.entry.js.map +1 -1
  261. package/dist/esm/ix-split-button-item.entry.js +1 -1
  262. package/dist/esm/ix-tab-item_2.entry.js +2 -2
  263. package/dist/esm/ix-tile.entry.js +4 -4
  264. package/dist/esm/ix-time-picker.entry.js +1 -1
  265. package/dist/esm/ix-time-picker.entry.js.map +1 -1
  266. package/dist/esm/ix-toast.entry.js +2 -2
  267. package/dist/esm/ix-toggle-button.entry.js +2 -2
  268. package/dist/esm/ix-toggle.entry.js +2 -2
  269. package/dist/esm/ix-tooltip.entry.js +2 -2
  270. package/dist/esm/ix-tree-item.entry.js +4 -4
  271. package/dist/esm/ix-tree.entry.js +1 -1
  272. package/dist/esm/ix-upload.entry.js +3 -3
  273. package/dist/esm/ix-validation-tooltip.entry.js +2 -2
  274. package/dist/esm/ix-workflow-step.entry.js +3 -3
  275. package/dist/esm/ix-workflow-steps.entry.js +1 -1
  276. package/dist/esm/loader.js +1 -1
  277. package/dist/esm/siemens-ix.js +1 -1
  278. package/dist/playwright-ct.config.js +1 -1
  279. package/dist/playwright-ct.config.js.map +1 -1
  280. package/dist/siemens-ix/{p-d2ee87ae.entry.js → p-0a1bfcfc.entry.js} +2 -2
  281. package/dist/siemens-ix/{p-ca838b5c.entry.js → p-0b7741b7.entry.js} +2 -2
  282. package/dist/siemens-ix/{p-9c03b231.entry.js → p-114bb49b.entry.js} +2 -2
  283. package/dist/siemens-ix/{p-c2f6aaae.entry.js → p-262026ab.entry.js} +2 -2
  284. package/dist/siemens-ix/{p-d48a746d.entry.js → p-29b0bef3.entry.js} +2 -2
  285. package/dist/siemens-ix/{p-f2856faf.entry.js → p-30e8a26a.entry.js} +2 -2
  286. package/dist/siemens-ix/{p-1450ba99.entry.js → p-3b8e4fe5.entry.js} +2 -2
  287. package/dist/siemens-ix/{p-96615442.entry.js → p-418959d3.entry.js} +2 -2
  288. package/dist/siemens-ix/{p-96615442.entry.js.map → p-418959d3.entry.js.map} +1 -1
  289. package/dist/siemens-ix/p-4290098e.entry.js +2 -0
  290. package/dist/siemens-ix/{p-cb1c0d63.entry.js.map → p-4290098e.entry.js.map} +1 -1
  291. package/dist/siemens-ix/p-43a58a77.entry.js +2 -0
  292. package/dist/siemens-ix/{p-7289b0be.entry.js.map → p-43a58a77.entry.js.map} +1 -1
  293. package/dist/siemens-ix/p-4fd11865.entry.js +2 -0
  294. package/dist/siemens-ix/p-56bbdae4.entry.js +2 -0
  295. package/dist/siemens-ix/{p-0d268489.entry.js → p-5f08da2c.entry.js} +2 -2
  296. package/dist/siemens-ix/{p-26789c86.entry.js → p-601cfc6a.entry.js} +2 -2
  297. package/dist/siemens-ix/p-64c895ac.entry.js +2 -0
  298. package/dist/siemens-ix/p-64c895ac.entry.js.map +1 -0
  299. package/dist/siemens-ix/p-678d821f.entry.js +2 -0
  300. package/dist/siemens-ix/{p-b1ec7f32.entry.js → p-6ea6396e.entry.js} +2 -2
  301. package/dist/siemens-ix/{p-7c1fd9a0.entry.js → p-6eb4eefc.entry.js} +2 -2
  302. package/dist/siemens-ix/{p-af46164c.entry.js → p-784fe260.entry.js} +2 -2
  303. package/dist/siemens-ix/{p-9fcf9dcd.entry.js → p-8d161202.entry.js} +2 -2
  304. package/dist/siemens-ix/{p-d77fa665.entry.js → p-90c55341.entry.js} +2 -2
  305. package/dist/siemens-ix/p-90c55341.entry.js.map +1 -0
  306. package/dist/siemens-ix/p-96d2d21f.entry.js +2 -0
  307. package/dist/siemens-ix/p-96d2d21f.entry.js.map +1 -0
  308. package/dist/siemens-ix/{p-c5762d6c.entry.js → p-9dabe2f7.entry.js} +2 -2
  309. package/dist/siemens-ix/p-a039faa9.entry.js +2 -0
  310. package/dist/siemens-ix/p-a039faa9.entry.js.map +1 -0
  311. package/dist/siemens-ix/p-a35d02ea.entry.js +2 -0
  312. package/dist/siemens-ix/{p-31cc5367.entry.js → p-a3ad98bc.entry.js} +2 -2
  313. package/dist/siemens-ix/p-a6fbea5b.entry.js +2 -0
  314. package/dist/siemens-ix/p-a6fbea5b.entry.js.map +1 -0
  315. package/dist/siemens-ix/p-a9d1ab94.entry.js +2 -0
  316. package/dist/siemens-ix/{p-080653aa.entry.js.map → p-a9d1ab94.entry.js.map} +1 -1
  317. package/dist/siemens-ix/p-aa58d9d7.entry.js +2 -0
  318. package/dist/siemens-ix/p-aa58d9d7.entry.js.map +1 -0
  319. package/dist/siemens-ix/p-abb29515.entry.js +2 -0
  320. package/dist/siemens-ix/p-abb29515.entry.js.map +1 -0
  321. package/dist/siemens-ix/{p-f6635bfc.entry.js → p-ac1d46d6.entry.js} +2 -2
  322. package/dist/siemens-ix/p-add5b76c.entry.js +2 -0
  323. package/dist/siemens-ix/{p-33e903e1.entry.js.map → p-add5b76c.entry.js.map} +1 -1
  324. package/dist/siemens-ix/{p-d76ee9ff.entry.js → p-af74fc62.entry.js} +2 -2
  325. package/dist/siemens-ix/{p-32fa185a.entry.js → p-b02fd2c5.entry.js} +2 -2
  326. package/dist/siemens-ix/p-b32c2183.entry.js +2 -0
  327. package/dist/siemens-ix/{p-d0cf522c.entry.js.map → p-b32c2183.entry.js.map} +1 -1
  328. package/dist/siemens-ix/{p-6f056fc6.entry.js → p-bc5d33ce.entry.js} +2 -2
  329. package/dist/siemens-ix/{p-f17e4cce.entry.js → p-bd310180.entry.js} +2 -2
  330. package/dist/siemens-ix/p-c09553f3.js +2 -0
  331. package/dist/siemens-ix/p-c09553f3.js.map +1 -0
  332. package/dist/siemens-ix/{p-c89a070a.entry.js → p-c29aff68.entry.js} +2 -2
  333. package/dist/siemens-ix/{p-30f449bc.entry.js → p-ca65a043.entry.js} +2 -2
  334. package/dist/siemens-ix/{p-4bbae41b.entry.js → p-cbbe9dee.entry.js} +2 -2
  335. package/dist/siemens-ix/p-ccf1bd22.entry.js +2 -0
  336. package/dist/siemens-ix/{p-47017ce7.entry.js → p-d08cbeaf.entry.js} +2 -2
  337. package/dist/siemens-ix/p-d600ea55.entry.js +2 -0
  338. package/dist/siemens-ix/p-d600ea55.entry.js.map +1 -0
  339. package/dist/siemens-ix/{p-1255e76b.entry.js → p-d6a094cf.entry.js} +2 -2
  340. package/dist/siemens-ix/{p-3e4e3b23.entry.js → p-dbf234e5.entry.js} +2 -2
  341. package/dist/siemens-ix/{p-177f9a5c.entry.js → p-e2464e13.entry.js} +2 -2
  342. package/dist/siemens-ix/{p-d9d5389b.entry.js → p-e678bfc5.entry.js} +2 -2
  343. package/dist/siemens-ix/{p-c8e0563a.entry.js → p-ec741c06.entry.js} +2 -2
  344. package/dist/siemens-ix/{p-ca658a19.entry.js → p-ed2ec72f.entry.js} +2 -2
  345. package/dist/siemens-ix/{p-d9370972.entry.js → p-f2a81e70.entry.js} +2 -2
  346. package/dist/siemens-ix/{p-1ad7fd83.entry.js → p-fe273de4.entry.js} +2 -2
  347. package/dist/siemens-ix/siemens-ix-core.css +1 -1
  348. package/dist/siemens-ix/siemens-ix.css +30 -12
  349. package/dist/siemens-ix/siemens-ix.esm.js +1 -1
  350. package/dist/siemens-ix/siemens-ix.esm.js.map +1 -1
  351. package/dist/types/components/category-filter/category-filter.d.ts +10 -0
  352. package/dist/types/components/dropdown/dropdown.d.ts +7 -1
  353. package/dist/types/components/event-list/test/event-list.ct.d.ts +1 -0
  354. package/dist/types/components/group/group.d.ts +1 -0
  355. package/dist/types/components/group/test/group.ct.d.ts +1 -0
  356. package/dist/types/components/menu-about/menu-about.d.ts +1 -1
  357. package/dist/types/components/select/select.d.ts +15 -3
  358. package/dist/types/components/select-item/select-item.d.ts +5 -1
  359. package/dist/types/components/utils/focus.d.ts +10 -0
  360. package/dist/types/components.d.ts +15 -2
  361. package/package.json +1 -1
  362. package/scss/components/form/_input.scss +11 -8
  363. package/dist/siemens-ix/p-080653aa.entry.js +0 -2
  364. package/dist/siemens-ix/p-08bedeaa.entry.js +0 -2
  365. package/dist/siemens-ix/p-2a9673f3.entry.js +0 -2
  366. package/dist/siemens-ix/p-2a9673f3.entry.js.map +0 -1
  367. package/dist/siemens-ix/p-33e903e1.entry.js +0 -2
  368. package/dist/siemens-ix/p-37e4df76.entry.js +0 -2
  369. package/dist/siemens-ix/p-37e4df76.entry.js.map +0 -1
  370. package/dist/siemens-ix/p-7289b0be.entry.js +0 -2
  371. package/dist/siemens-ix/p-7b5ed355.entry.js +0 -2
  372. package/dist/siemens-ix/p-87fe9d5f.entry.js +0 -2
  373. package/dist/siemens-ix/p-87fe9d5f.entry.js.map +0 -1
  374. package/dist/siemens-ix/p-8a06a632.entry.js +0 -2
  375. package/dist/siemens-ix/p-96f2c71a.entry.js +0 -2
  376. package/dist/siemens-ix/p-96f2c71a.entry.js.map +0 -1
  377. package/dist/siemens-ix/p-9fd3ae7f.entry.js +0 -2
  378. package/dist/siemens-ix/p-a93df5f2.entry.js +0 -2
  379. package/dist/siemens-ix/p-a93df5f2.entry.js.map +0 -1
  380. package/dist/siemens-ix/p-ab446f83.entry.js +0 -2
  381. package/dist/siemens-ix/p-ab446f83.entry.js.map +0 -1
  382. package/dist/siemens-ix/p-b78fd38b.entry.js +0 -2
  383. package/dist/siemens-ix/p-b78fd38b.entry.js.map +0 -1
  384. package/dist/siemens-ix/p-c49701a0.entry.js +0 -2
  385. package/dist/siemens-ix/p-cb1c0d63.entry.js +0 -2
  386. package/dist/siemens-ix/p-d0cf522c.entry.js +0 -2
  387. package/dist/siemens-ix/p-d77fa665.entry.js.map +0 -1
  388. /package/dist/siemens-ix/{p-d2ee87ae.entry.js.map → p-0a1bfcfc.entry.js.map} +0 -0
  389. /package/dist/siemens-ix/{p-ca838b5c.entry.js.map → p-0b7741b7.entry.js.map} +0 -0
  390. /package/dist/siemens-ix/{p-9c03b231.entry.js.map → p-114bb49b.entry.js.map} +0 -0
  391. /package/dist/siemens-ix/{p-c2f6aaae.entry.js.map → p-262026ab.entry.js.map} +0 -0
  392. /package/dist/siemens-ix/{p-d48a746d.entry.js.map → p-29b0bef3.entry.js.map} +0 -0
  393. /package/dist/siemens-ix/{p-f2856faf.entry.js.map → p-30e8a26a.entry.js.map} +0 -0
  394. /package/dist/siemens-ix/{p-1450ba99.entry.js.map → p-3b8e4fe5.entry.js.map} +0 -0
  395. /package/dist/siemens-ix/{p-c49701a0.entry.js.map → p-4fd11865.entry.js.map} +0 -0
  396. /package/dist/siemens-ix/{p-9fd3ae7f.entry.js.map → p-56bbdae4.entry.js.map} +0 -0
  397. /package/dist/siemens-ix/{p-0d268489.entry.js.map → p-5f08da2c.entry.js.map} +0 -0
  398. /package/dist/siemens-ix/{p-26789c86.entry.js.map → p-601cfc6a.entry.js.map} +0 -0
  399. /package/dist/siemens-ix/{p-7b5ed355.entry.js.map → p-678d821f.entry.js.map} +0 -0
  400. /package/dist/siemens-ix/{p-b1ec7f32.entry.js.map → p-6ea6396e.entry.js.map} +0 -0
  401. /package/dist/siemens-ix/{p-7c1fd9a0.entry.js.map → p-6eb4eefc.entry.js.map} +0 -0
  402. /package/dist/siemens-ix/{p-af46164c.entry.js.map → p-784fe260.entry.js.map} +0 -0
  403. /package/dist/siemens-ix/{p-9fcf9dcd.entry.js.map → p-8d161202.entry.js.map} +0 -0
  404. /package/dist/siemens-ix/{p-c5762d6c.entry.js.map → p-9dabe2f7.entry.js.map} +0 -0
  405. /package/dist/siemens-ix/{p-08bedeaa.entry.js.map → p-a35d02ea.entry.js.map} +0 -0
  406. /package/dist/siemens-ix/{p-31cc5367.entry.js.map → p-a3ad98bc.entry.js.map} +0 -0
  407. /package/dist/siemens-ix/{p-f6635bfc.entry.js.map → p-ac1d46d6.entry.js.map} +0 -0
  408. /package/dist/siemens-ix/{p-d76ee9ff.entry.js.map → p-af74fc62.entry.js.map} +0 -0
  409. /package/dist/siemens-ix/{p-32fa185a.entry.js.map → p-b02fd2c5.entry.js.map} +0 -0
  410. /package/dist/siemens-ix/{p-6f056fc6.entry.js.map → p-bc5d33ce.entry.js.map} +0 -0
  411. /package/dist/siemens-ix/{p-f17e4cce.entry.js.map → p-bd310180.entry.js.map} +0 -0
  412. /package/dist/siemens-ix/{p-c89a070a.entry.js.map → p-c29aff68.entry.js.map} +0 -0
  413. /package/dist/siemens-ix/{p-30f449bc.entry.js.map → p-ca65a043.entry.js.map} +0 -0
  414. /package/dist/siemens-ix/{p-4bbae41b.entry.js.map → p-cbbe9dee.entry.js.map} +0 -0
  415. /package/dist/siemens-ix/{p-8a06a632.entry.js.map → p-ccf1bd22.entry.js.map} +0 -0
  416. /package/dist/siemens-ix/{p-47017ce7.entry.js.map → p-d08cbeaf.entry.js.map} +0 -0
  417. /package/dist/siemens-ix/{p-1255e76b.entry.js.map → p-d6a094cf.entry.js.map} +0 -0
  418. /package/dist/siemens-ix/{p-3e4e3b23.entry.js.map → p-dbf234e5.entry.js.map} +0 -0
  419. /package/dist/siemens-ix/{p-177f9a5c.entry.js.map → p-e2464e13.entry.js.map} +0 -0
  420. /package/dist/siemens-ix/{p-d9d5389b.entry.js.map → p-e678bfc5.entry.js.map} +0 -0
  421. /package/dist/siemens-ix/{p-c8e0563a.entry.js.map → p-ec741c06.entry.js.map} +0 -0
  422. /package/dist/siemens-ix/{p-ca658a19.entry.js.map → p-ed2ec72f.entry.js.map} +0 -0
  423. /package/dist/siemens-ix/{p-d9370972.entry.js.map → p-f2a81e70.entry.js.map} +0 -0
  424. /package/dist/siemens-ix/{p-1ad7fd83.entry.js.map → p-fe273de4.entry.js.map} +0 -0
@@ -1,13 +1,14 @@
1
1
  import { proxyCustomElement, HTMLElement, createEvent, h, Host } from '@stencil/core/internal/client';
2
+ import { A as ArrowFocusController, d as defineCustomElement$6 } from './dropdown.js';
2
3
  import { O as OnListener } from './listener.js';
3
- import { d as defineCustomElement$6 } from './dropdown.js';
4
+ import { c as createMutationObserver } from './mutation-observer.js';
4
5
  import { d as defineCustomElement$5 } from './dropdown-item.js';
5
6
  import { d as defineCustomElement$4 } from './filter-chip.js';
6
7
  import { d as defineCustomElement$3 } from './icon-button.js';
7
8
  import { d as defineCustomElement$2 } from './select-item.js';
8
9
  import { d as defineCustomElement$1 } from './spinner.js';
9
10
 
10
- const selectCss = ":host{display:inline-block;position:relative;min-height:2rem;height:auto;border-radius:var(--theme-input--border-radius)}:host *,:host *::after,:host *::before{box-sizing:border-box}:host ::-webkit-scrollbar-button{display:none}:host ::-webkit-scrollbar{width:0.5rem;height:0.5rem}:host ::-webkit-scrollbar-track{border-radius:5px;background:var(--theme-scrollbar-track--background)}:host ::-webkit-scrollbar-track:hover{background:var(--theme-scrollbar-track--background--hover)}:host ::-webkit-scrollbar-thumb{border-radius:5px;background:var(--theme-scrollbar-thumb--background)}:host ::-webkit-scrollbar-thumb:hover{background:var(--theme-scrollbar-thumb--background--hover)}:host ::-webkit-scrollbar-corner{display:none}:host .d-none{display:none}:host .select{position:relative;display:flex;align-items:center;background-color:var(--theme-input--background);border:var(--theme-input--border-thickness) solid var(--theme-input--border-color);border-radius:var(--theme-input--border-radius);padding:0 0 0 0.5rem;box-shadow:var(--theme-inset-shadow-1) !important}:host .select:not(.disabled):not(:disabled){cursor:pointer}:host .select:not(.disabled):not(:disabled):hover{background-color:var(--theme-input--background--hover);border-color:var(--theme-input--border-color--hover)}:host .select:focus-within{background-color:var(--theme-input--background--focus);border-color:var(--theme-input--border-color--focus);outline:1px solid #119fff;outline-offset:var(--theme-input--focus--outline-offset)}:host .select.readonly{box-shadow:none !important;border:none;border-radius:0px;border-bottom:var(--theme-input--border-thickness) solid var(--theme-color-weak-bdr)}:host .select.readonly,:host .select.readonly:hover,:host .select.readonly:active{background-color:transparent !important}:host .select.readonly:focus,:host .select.readonly:focus-within,:host .select.readonly:focus-visible{outline:none}:host .select.readonly input{color:var(--theme-color-weak-text)}:host .select.readonly input:focus,:host .select.readonly input:focus-visible{outline:none}:host .hidden{display:none !important}:host .trigger{display:flex;align-items:center;flex-grow:1;height:100%}:host .input-container{display:flex;position:relative;align-items:flex-start;width:100%;height:100%}:host .input-container .chips{position:relative;display:flex;align-items:center;flex-wrap:wrap;height:100%;max-height:3.5rem;flex-grow:1;overflow-y:auto}:host .input-container .chips>ix-filter-chip{margin:0.1rem}:host .input-container input{overflow:hidden;text-overflow:ellipsis;white-space:nowrap;-webkit-font-smoothing:antialiased;-moz-osx-font-smooting:grayscale;font-family:Siemens Sans, sans-serif;font-size:0.875rem;font-weight:400;line-height:1.429em;color:var(--theme-color-std-text);background:transparent;height:1.75rem;width:100%}:host .input-container input,:host .input-container input:hover,:host .input-container input:focus-visible{border:none;outline:none}:host .input-container input::-moz-placeholder{color:var(--theme-input-select-icon--color)}:host .input-container input::placeholder{color:var(--theme-input-select-icon--color)}:host .input-container input.hide-placeholder::-moz-placeholder{opacity:0}:host .input-container input.hide-placeholder::placeholder{opacity:0}:host .dropdown-visible{--ix-icon-button-color:var(--theme-color-dynamic--hover)}:host .add-item{display:flex;justify-content:flex-start;align-items:center;position:relative;width:100%}:host .select-list-header{overflow:hidden;text-overflow:ellipsis;white-space:nowrap;display:flex;align-items:center;height:2rem;color:var(--theme-select-list-item-hint--color);margin:0 0.5rem 0 1rem}";
11
+ const selectCss = ":host{display:inline-block;position:relative;min-height:2rem;height:auto;border-radius:var(--theme-input--border-radius)}:host *,:host *::after,:host *::before{box-sizing:border-box}:host ::-webkit-scrollbar-button{display:none}:host ::-webkit-scrollbar{width:0.5rem;height:0.5rem}:host ::-webkit-scrollbar-track{border-radius:5px;background:var(--theme-scrollbar-track--background)}:host ::-webkit-scrollbar-track:hover{background:var(--theme-scrollbar-track--background--hover)}:host ::-webkit-scrollbar-thumb{border-radius:5px;background:var(--theme-scrollbar-thumb--background)}:host ::-webkit-scrollbar-thumb:hover{background:var(--theme-scrollbar-thumb--background--hover)}:host ::-webkit-scrollbar-corner{display:none}:host .d-none{display:none}:host .select{position:relative;display:flex;align-items:center;background-color:var(--theme-input--background);border:var(--theme-input--border-thickness) solid var(--theme-input--border-color);border-radius:var(--theme-input--border-radius);padding:0 0 0 0.5rem;box-shadow:var(--theme-inset-shadow-1) !important}:host .select:not(.disabled):not(:disabled){cursor:pointer}:host .select:not(.disabled):not(:disabled):hover{background-color:var(--theme-input--background--hover);border-color:var(--theme-input--border-color--hover)}:host .select:focus-within{background-color:var(--theme-input--background--focus);border-color:var(--theme-input--border-color--focus);outline:1px solid #119fff;outline-offset:var(--theme-input--focus--outline-offset)}:host .select.readonly,:host .select.disabled{box-shadow:none !important;border:none;border-radius:0;cursor:pointer}:host .select.readonly,:host .select.readonly:hover,:host .select.readonly:active,:host .select.disabled,:host .select.disabled:hover,:host .select.disabled:active{background-color:transparent !important}:host .select.readonly:focus,:host .select.readonly:focus-within,:host .select.readonly:focus-visible,:host .select.disabled:focus,:host .select.disabled:focus-within,:host .select.disabled:focus-visible{outline:none}:host .select.readonly input:focus,:host .select.readonly input:focus-visible,:host .select.disabled input:focus,:host .select.disabled input:focus-visible{outline:none}:host .select.disabled{border-bottom:var(--theme-input--border-thickness) solid var(--theme-color-weak-bdr)}:host .select.disabled input{color:var(--theme-color-weak-text)}:host .select.readonly{border-bottom:var(--theme-input--border-thickness) solid var(--theme-color-soft-bdr)}:host .select.readonly input{color:var(--theme-color-std-text)}:host .hidden{display:none !important}:host .trigger{display:flex;align-items:center;flex-grow:1;height:100%}:host .input-container{display:flex;position:relative;align-items:flex-start;width:100%;height:100%}:host .input-container .chips{position:relative;display:flex;align-items:center;flex-wrap:wrap;height:100%;max-height:3.5rem;flex-grow:1;overflow-y:auto}:host .input-container .chips>ix-filter-chip{margin:0.1rem}:host .input-container input{overflow:hidden;text-overflow:ellipsis;white-space:nowrap;-webkit-font-smoothing:antialiased;-moz-osx-font-smooting:grayscale;font-family:Siemens Sans, sans-serif;font-size:0.875rem;font-weight:400;line-height:1.429em;color:var(--theme-color-std-text);background:transparent;height:1.75rem;width:100%}:host .input-container input,:host .input-container input:hover,:host .input-container input:focus-visible{border:none;outline:none}:host .input-container input::-moz-placeholder{color:var(--theme-input-select-icon--color)}:host .input-container input::placeholder{color:var(--theme-input-select-icon--color)}:host .input-container input.hide-placeholder::-moz-placeholder{opacity:0}:host .input-container input.hide-placeholder::placeholder{opacity:0}:host .dropdown-visible{--ix-icon-button-color:var(--theme-color-dynamic--hover)}:host .add-item{display:flex;justify-content:flex-start;align-items:center;position:relative;width:100%}:host .select-list-header{overflow:hidden;text-overflow:ellipsis;white-space:nowrap;display:flex;align-items:center;height:2rem;color:var(--theme-select-list-item-hint--color);margin:0 0.5rem 0 1rem}";
11
12
  const IxSelectStyle0 = selectCss;
12
13
 
13
14
  /*
@@ -37,6 +38,10 @@ const Select = /*@__PURE__*/ proxyCustomElement(class Select extends HTMLElement
37
38
  this.itemSelectionChange = createEvent(this, "itemSelectionChange", 7);
38
39
  this.inputChange = createEvent(this, "inputChange", 7);
39
40
  this.addItem = createEvent(this, "addItem", 7);
41
+ this.focusControllerCallbackBind = this.focusDropdownItem.bind(this);
42
+ this.itemObserver = createMutationObserver(() => {
43
+ this.arrowFocusController.items = this.visibleNonShadowItems;
44
+ });
40
45
  this.selectedIndices = undefined;
41
46
  this.value = undefined;
42
47
  this.allowClear = false;
@@ -54,16 +59,27 @@ const Select = /*@__PURE__*/ proxyCustomElement(class Select extends HTMLElement
54
59
  this.dropdownWrapperRef = undefined;
55
60
  this.dropdownAnchor = undefined;
56
61
  this.isDropdownEmpty = false;
57
- this.hasFocus = false;
58
62
  this.navigationItem = undefined;
59
63
  this.inputFilterText = undefined;
60
64
  this.inputValue = undefined;
61
65
  }
66
+ get nonShadowItems() {
67
+ return Array.from(this.hostElement.querySelectorAll('ix-select-item'));
68
+ }
69
+ get visibleNonShadowItems() {
70
+ return this.nonShadowItems.filter((item) => !item.classList.contains('d-none'));
71
+ }
72
+ get shadowItems() {
73
+ return Array.from(this.hostElement.shadowRoot.querySelectorAll('ix-select-item'));
74
+ }
75
+ get visibleShadowItems() {
76
+ return this.shadowItems.filter((item) => !item.classList.contains('d-none'));
77
+ }
62
78
  get items() {
63
- return [
64
- ...Array.from(this.hostElement.querySelectorAll('ix-select-item')),
65
- ...Array.from(this.hostElement.shadowRoot.querySelectorAll('ix-select-item')),
66
- ];
79
+ return [...this.nonShadowItems, ...this.shadowItems];
80
+ }
81
+ get visibleItems() {
82
+ return this.items.filter((item) => !item.classList.contains('d-none'));
67
83
  }
68
84
  get selectedItems() {
69
85
  return this.items.filter((item) => item.selected);
@@ -88,23 +104,48 @@ const Select = /*@__PURE__*/ proxyCustomElement(class Select extends HTMLElement
88
104
  this.selectedIndices = value;
89
105
  this.updateSelection();
90
106
  }
107
+ watchDropdownShow(show) {
108
+ if (show) {
109
+ this.arrowFocusController = new ArrowFocusController(this.visibleNonShadowItems, this.dropdownRef, this.focusControllerCallbackBind);
110
+ this.arrowFocusController.wrap = !this.editable;
111
+ this.itemObserver.observe(this.dropdownRef, {
112
+ childList: true,
113
+ subtree: true,
114
+ });
115
+ }
116
+ else {
117
+ this.arrowFocusController.disconnect();
118
+ this.arrowFocusController = undefined;
119
+ this.itemObserver.disconnect();
120
+ }
121
+ }
91
122
  onItemClicked(event) {
92
123
  const newId = event.detail;
93
124
  this.itemClick(newId);
94
125
  }
126
+ focusDropdownItem(index) {
127
+ var _a;
128
+ this.navigationItem = undefined;
129
+ if (index < this.visibleNonShadowItems.length) {
130
+ const nestedDropdownItem = (_a = this.visibleNonShadowItems[index]) === null || _a === void 0 ? void 0 : _a.shadowRoot.querySelector('ix-dropdown-item');
131
+ requestAnimationFrame(() => {
132
+ nestedDropdownItem.shadowRoot.querySelector('button').focus();
133
+ });
134
+ }
135
+ }
95
136
  itemClick(newId) {
96
137
  this.value = this.toggleValue(newId);
97
138
  this.updateSelection();
98
139
  this.emitValueChange();
99
140
  }
100
141
  emitAddItem(value) {
101
- if (value.trim() === '') {
142
+ if (value === undefined || value.trim() === '') {
102
143
  return;
103
144
  }
104
145
  const newItem = document.createElement('ix-select-item');
105
146
  newItem.value = value;
106
147
  newItem.label = value;
107
- this.addItemRef.appendChild(newItem);
148
+ this.customItemsContainerRef.appendChild(newItem);
108
149
  this.clearInput();
109
150
  this.itemClick(value);
110
151
  this.addItem.emit(value);
@@ -142,10 +183,9 @@ const Select = /*@__PURE__*/ proxyCustomElement(class Select extends HTMLElement
142
183
  : ''));
143
184
  });
144
185
  this.selectedLabels = this.selectedItems.map((item) => item.label);
145
- if (this.isSingleMode) {
146
- this.inputValue = ((_a = this.selectedLabels) === null || _a === void 0 ? void 0 : _a.length)
147
- ? this.selectedLabels[0]
148
- : null;
186
+ if (this.isSingleMode && ((_a = this.selectedLabels) === null || _a === void 0 ? void 0 : _a.length)) {
187
+ this.inputValue = this.selectedLabels[0];
188
+ this.inputRef && (this.inputRef.value = this.inputValue);
149
189
  return;
150
190
  }
151
191
  this.inputValue = null;
@@ -177,8 +217,8 @@ const Select = /*@__PURE__*/ proxyCustomElement(class Select extends HTMLElement
177
217
  this.updateSelection();
178
218
  }
179
219
  disconnectedCallback() {
180
- if (this.labelMutationObserver) {
181
- this.labelMutationObserver.disconnect();
220
+ if (this.itemMutationObserver) {
221
+ this.itemMutationObserver.disconnect();
182
222
  }
183
223
  }
184
224
  itemExists(item) {
@@ -186,7 +226,6 @@ const Select = /*@__PURE__*/ proxyCustomElement(class Select extends HTMLElement
186
226
  }
187
227
  dropdownVisibilityChanged(event) {
188
228
  this.dropdownShow = event.detail;
189
- this.hasFocus = event.detail;
190
229
  if (event.detail) {
191
230
  this.inputRef.focus();
192
231
  this.inputRef.select();
@@ -195,11 +234,13 @@ const Select = /*@__PURE__*/ proxyCustomElement(class Select extends HTMLElement
195
234
  }
196
235
  else {
197
236
  this.navigationItem = undefined;
237
+ this.updateSelection();
238
+ this.inputFilterText = '';
198
239
  }
199
240
  }
200
241
  async onKeyDown(event) {
201
242
  if (event.code === 'ArrowDown' || event.code === 'ArrowUp') {
202
- this.onArrowNavigation(event, event.code);
243
+ await this.onArrowNavigation(event, event.code);
203
244
  }
204
245
  if (!this.dropdownShow) {
205
246
  return;
@@ -212,38 +253,101 @@ const Select = /*@__PURE__*/ proxyCustomElement(class Select extends HTMLElement
212
253
  }
213
254
  }
214
255
  async onEnterNavigation() {
215
- var _a, _b;
256
+ var _a;
216
257
  if (this.isMultipleMode) {
217
258
  return;
218
259
  }
260
+ let item;
219
261
  if (this.editable && !this.itemExists(this.inputFilterText)) {
220
262
  this.emitAddItem(this.inputFilterText);
221
- this.navigationItem = this.items[this.items.length - 1];
263
+ item = this.items[this.items.length - 1];
222
264
  }
223
- (_a = this.navigationItem) === null || _a === void 0 ? void 0 : _a.onItemClick();
224
- await ((_b = this.dropdownRef) === null || _b === void 0 ? void 0 : _b.updatePosition());
265
+ if (item) {
266
+ item.onItemClick();
267
+ }
268
+ await ((_a = this.dropdownRef) === null || _a === void 0 ? void 0 : _a.updatePosition());
225
269
  if (this.isSingleMode && !this.editable) {
226
270
  this.dropdownShow = false;
227
271
  }
228
272
  }
229
- onArrowNavigation(event, key) {
273
+ async onArrowNavigation(event, key) {
274
+ if (event.defaultPrevented) {
275
+ return;
276
+ }
230
277
  event.preventDefault();
231
278
  event.stopPropagation();
232
279
  this.dropdownShow = true;
233
- const items = this.items.filter((i) => !i.classList.contains('d-none'));
234
- if (this.navigationItem === undefined) {
235
- this.applyFocusTo(items[0]);
280
+ if (!this.navigationItem && document.activeElement === this.hostElement) {
281
+ if (this.visibleItems.length) {
282
+ this.applyFocusTo(this.visibleItems.shift());
283
+ }
284
+ else if (this.isAddItemVisible()) {
285
+ this.focusAddItemButton();
286
+ }
236
287
  return;
237
288
  }
238
- let indexOfNavigationItem = items.findIndex((item) => item === this.navigationItem);
239
- if (key === 'ArrowDown') {
240
- indexOfNavigationItem++;
289
+ const moveUp = key === 'ArrowUp';
290
+ const indexNonShadow = this.visibleNonShadowItems.indexOf(document.activeElement);
291
+ // Slotted select items
292
+ if (indexNonShadow === 0) {
293
+ if (!this.visibleShadowItems.length && this.isAddItemVisible()) {
294
+ this.focusAddItemButton();
295
+ }
296
+ else {
297
+ this.applyFocusTo(this.visibleShadowItems.pop());
298
+ }
299
+ return;
300
+ }
301
+ else if (indexNonShadow !== -1 &&
302
+ indexNonShadow === this.visibleNonShadowItems.length - 1) {
303
+ if (this.visibleShadowItems.length) {
304
+ this.applyFocusTo(this.visibleShadowItems.shift());
305
+ }
306
+ else if (this.isAddItemVisible()) {
307
+ this.focusAddItemButton();
308
+ }
309
+ return;
310
+ }
311
+ if (this.isAddItemVisible() &&
312
+ this.addItemRef.contains(await this.navigationItem.getDropdownItemElement())) {
313
+ if (moveUp) {
314
+ this.applyFocusTo(this.visibleItems.pop());
315
+ }
316
+ else {
317
+ if (this.visibleItems.length) {
318
+ this.applyFocusTo(this.visibleItems.shift());
319
+ }
320
+ }
321
+ return;
322
+ }
323
+ // Custom select items
324
+ const indexShadow = this.visibleShadowItems.indexOf(this.navigationItem);
325
+ if (moveUp) {
326
+ if (indexShadow === 0) {
327
+ if (this.visibleNonShadowItems.length) {
328
+ this.applyFocusTo(this.visibleNonShadowItems.pop());
329
+ }
330
+ else if (this.isAddItemVisible()) {
331
+ this.focusAddItemButton();
332
+ }
333
+ }
334
+ else {
335
+ this.applyFocusTo(this.visibleShadowItems[indexShadow - 1]);
336
+ }
241
337
  }
242
338
  else {
243
- indexOfNavigationItem--;
339
+ if (indexShadow === this.visibleShadowItems.length - 1) {
340
+ if (this.isAddItemVisible()) {
341
+ this.focusAddItemButton();
342
+ }
343
+ else {
344
+ this.applyFocusTo(this.visibleItems.shift());
345
+ }
346
+ }
347
+ else {
348
+ this.applyFocusTo(this.visibleShadowItems[indexShadow + 1]);
349
+ }
244
350
  }
245
- const newFocusItem = items[indexOfNavigationItem];
246
- this.applyFocusTo(newFocusItem);
247
351
  }
248
352
  applyFocusTo(element) {
249
353
  if (!element) {
@@ -257,6 +361,12 @@ const Select = /*@__PURE__*/ proxyCustomElement(class Select extends HTMLElement
257
361
  .focus();
258
362
  });
259
363
  }
364
+ focusAddItemButton() {
365
+ if (this.addItemButton) {
366
+ this.addItemButton.shadowRoot.querySelector('button').focus();
367
+ this.navigationItem = this.addItemRef;
368
+ }
369
+ }
260
370
  filterItemsWithTypeahead() {
261
371
  this.inputFilterText = this.inputRef.value;
262
372
  if (this.isSingleMode && this.inputFilterText === this.selectedLabels[0]) {
@@ -273,6 +383,9 @@ const Select = /*@__PURE__*/ proxyCustomElement(class Select extends HTMLElement
273
383
  else {
274
384
  this.removeHiddenFromItems();
275
385
  }
386
+ if (this.arrowFocusController) {
387
+ this.arrowFocusController.items = this.visibleNonShadowItems;
388
+ }
276
389
  this.isDropdownEmpty = this.isEveryDropdownItemHidden;
277
390
  }
278
391
  removeHiddenFromItems() {
@@ -303,12 +416,15 @@ const Select = /*@__PURE__*/ proxyCustomElement(class Select extends HTMLElement
303
416
  }
304
417
  }
305
418
  placeholderValue() {
306
- if (this.editable) {
307
- return this.i18nPlaceholderEditable;
419
+ if (this.disabled) {
420
+ return '';
308
421
  }
309
422
  if (this.readonly) {
310
423
  return '';
311
424
  }
425
+ if (this.editable) {
426
+ return this.i18nPlaceholderEditable;
427
+ }
312
428
  return this.i18nPlaceholder;
313
429
  }
314
430
  isAddItemVisible() {
@@ -318,7 +434,7 @@ const Select = /*@__PURE__*/ proxyCustomElement(class Select extends HTMLElement
318
434
  }
319
435
  render() {
320
436
  var _a, _b, _c;
321
- return (h(Host, { key: 'c3436b72b89db710173be26ccc34d44eaef48096' }, h("div", { key: '19b6245bdbd79faa3d4bbf25a4d106e2084875d9', class: {
437
+ return (h(Host, { key: '7708ebeef204960e387864c06de4cf3d0d92620b' }, h("div", { key: '76ae70f1d3e1c3988a8db625b8c41626dcc0b28e', class: {
322
438
  select: true,
323
439
  disabled: this.disabled,
324
440
  readonly: this.readonly,
@@ -326,13 +442,13 @@ const Select = /*@__PURE__*/ proxyCustomElement(class Select extends HTMLElement
326
442
  this.dropdownAnchor = ref;
327
443
  if (!this.editable)
328
444
  this.dropdownWrapperRef = ref;
329
- } }, h("div", { key: '283b9918b77987f4a5c943eeba63679cb4cd979c', class: "input-container" }, h("div", { key: 'eb809d645c40ae085805d0ec3fcbbb48534cfb2c', class: "chips" }, this.isMultipleMode
445
+ } }, h("div", { key: '4cc234c24f76895f3dbc4a004c748352ef8aaa33', class: "input-container" }, h("div", { key: '066c71f9a1ead8f39685ea66fb1c83c6ad45f6a6', class: "chips" }, this.isMultipleMode
330
446
  ? (_a = this.selectedItems) === null || _a === void 0 ? void 0 : _a.map((item) => (h("ix-filter-chip", { disabled: this.disabled || this.readonly, key: item.value, onCloseClick: (e) => {
331
447
  e.preventDefault();
332
448
  e.stopPropagation();
333
449
  this.itemClick(item.value);
334
450
  } }, item.label)))
335
- : '', h("div", { key: 'e2faa64250d72d63afaf05139a0f6ed144097f69', class: "trigger" }, h("input", { key: '3aa2890f133b801bb14f8cc9d568cbee3eb83d13', autocomplete: "off", "data-testid": "input", disabled: this.disabled, readOnly: this.readonly, type: "text", class: {
451
+ : '', h("div", { key: '513a21a42da236852e5baa0dd15246f6108fcb0e', class: "trigger" }, h("input", { key: '7e059a58466f1ef24af5465a31842dc373be681c', autocomplete: "off", "data-testid": "input", disabled: this.disabled, readOnly: this.readonly, type: "text", class: {
336
452
  'allow-clear': this.allowClear && !!((_b = this.selectedLabels) === null || _b === void 0 ? void 0 : _b.length),
337
453
  }, placeholder: this.placeholderValue(), value: this.inputValue, ref: (ref) => (this.inputRef = ref), onBlur: (e) => this.onInputBlur(e), onFocus: () => {
338
454
  this.navigationItem = undefined;
@@ -344,27 +460,30 @@ const Select = /*@__PURE__*/ proxyCustomElement(class Select extends HTMLElement
344
460
  } })) : null, this.disabled || this.readonly ? null : (h("ix-icon-button", { "data-select-dropdown": true, class: { 'dropdown-visible': this.dropdownShow }, icon: "chevron-down-small", ghost: true, ref: (ref) => {
345
461
  if (this.editable)
346
462
  this.dropdownWrapperRef = ref;
347
- } })))))), h("ix-dropdown", { key: '571d47a09fb16445a94a304e9fae4a1a592d078b', ref: (ref) => (this.dropdownRef = ref), show: this.dropdownShow, closeBehavior: this.isMultipleMode ? 'outside' : 'both', class: {
463
+ } })))))), h("ix-dropdown", { key: '90d7f4d393e170384c3849a81cc2d0f9cafdaba4', ref: (ref) => (this.dropdownRef = ref), show: this.dropdownShow, closeBehavior: this.isMultipleMode ? 'outside' : 'both', class: {
348
464
  'd-none': this.disabled || this.readonly,
349
465
  }, anchor: this.dropdownAnchor, trigger: this.dropdownWrapperRef, onShowChanged: (e) => this.dropdownVisibilityChanged(e), placement: "bottom-start", overwriteDropdownStyle: async () => {
350
466
  return {
351
467
  minWidth: `${this.hostElement.clientWidth}px`,
352
468
  };
353
- } }, h("div", { key: '2751511a275b502709f59e600eb494cf33085d80', class: {
469
+ } }, h("div", { key: '5ca9e64a4bd8b566e33717f2d2bac21f86638aeb', class: {
354
470
  'select-list-header': true,
355
471
  hidden: this.hideListHeader || this.isDropdownEmpty,
356
- }, title: this.i18nSelectListHeader }, this.i18nSelectListHeader), h("slot", { key: '8f894985df712df0f0b0d4527ee7b136d2c84a60' }), h("div", { key: '4edce84e19a13a67defc8de67ca1e23fb7319be7', ref: (ref) => (this.addItemRef = ref), class: "d-contents" }), this.isAddItemVisible() ? (h("ix-dropdown-item", { "data-testid": "add-item", icon: 'plus', class: {
472
+ }, title: this.i18nSelectListHeader }, this.i18nSelectListHeader), h("slot", { key: 'c2b10c1b09dd64eb0ab0a6bc51d43f98e876031a' }), h("div", { key: 'a7076d2f894af20584a45109b397b0362ea6f6a5', ref: (ref) => (this.customItemsContainerRef = ref), class: "d-contents" }), this.isAddItemVisible() ? (h("ix-dropdown-item", { "data-testid": "add-item", icon: 'plus', class: {
357
473
  'add-item': true,
358
474
  }, label: this.inputFilterText, onItemClick: (e) => {
359
475
  e.preventDefault();
360
476
  e.stopPropagation();
361
477
  this.emitAddItem(this.inputFilterText);
478
+ }, onFocus: () => (this.navigationItem = this.addItemRef), ref: (ref) => {
479
+ this.addItemRef = ref;
362
480
  } })) : null, this.isDropdownEmpty && !this.editable ? (h("div", { class: "select-list-header" }, this.i18nNoMatches)) : (''))));
363
481
  }
364
482
  get hostElement() { return this; }
365
483
  static get watchers() { return {
366
484
  "selectedIndices": ["watchSelectedIndices"],
367
- "value": ["watchValue"]
485
+ "value": ["watchValue"],
486
+ "dropdownShow": ["watchDropdownShow"]
368
487
  }; }
369
488
  static get style() { return IxSelectStyle0; }
370
489
  }, [1, "ix-select", {
@@ -385,13 +504,13 @@ const Select = /*@__PURE__*/ proxyCustomElement(class Select extends HTMLElement
385
504
  "dropdownWrapperRef": [32],
386
505
  "dropdownAnchor": [32],
387
506
  "isDropdownEmpty": [32],
388
- "hasFocus": [32],
389
507
  "navigationItem": [32],
390
508
  "inputFilterText": [32],
391
509
  "inputValue": [32]
392
510
  }, [[0, "itemClick", "onItemClicked"], [0, "ix-select-item:labelChange", "onLabelChange"]], {
393
511
  "selectedIndices": ["watchSelectedIndices"],
394
- "value": ["watchValue"]
512
+ "value": ["watchValue"],
513
+ "dropdownShow": ["watchDropdownShow"]
395
514
  }]);
396
515
  __decorate([
397
516
  OnListener('keydown', (self) => self.dropdownShow)
@@ -1 +1 @@
1
- {"file":"select.js","mappings":"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","names":[],"sources":["src/components/select/select.scss?tag=ix-select&encapsulation=shadow","src/components/select/select.tsx"],"sourcesContent":["/*\n * SPDX-FileCopyrightText: 2023 Siemens AG\n *\n * SPDX-License-Identifier: MIT\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n */\n\n@import 'common-variables';\n@import 'legacy/mixins/fonts';\n@import 'mixins/hover';\n@import 'mixins/text-truncation';\n@import 'mixins/shadow-dom/component';\n\n:host {\n @include ix-component;\n\n display: inline-block;\n position: relative;\n min-height: 2rem;\n height: auto;\n border-radius: var(--theme-input--border-radius);\n\n .d-none {\n display: none;\n }\n\n .select {\n position: relative;\n display: flex;\n align-items: center;\n background-color: var(--theme-input--background);\n border: var(--theme-input--border-thickness) solid\n var(--theme-input--border-color);\n border-radius: var(--theme-input--border-radius);\n padding: 0 0 0 $small-space;\n box-shadow: var(--theme-inset-shadow-1) !important;\n\n @include hover {\n background-color: var(--theme-input--background--hover);\n border-color: var(--theme-input--border-color--hover);\n }\n\n &:focus-within {\n background-color: var(--theme-input--background--focus);\n border-color: var(--theme-input--border-color--focus);\n outline: 1px solid #119fff;\n outline-offset: var(--theme-input--focus--outline-offset);\n }\n }\n\n .select.readonly {\n box-shadow: none !important;\n border: none;\n border-radius: 0px;\n border-bottom: var(--theme-input--border-thickness) solid\n var(--theme-color-weak-bdr);\n\n &,\n &:hover,\n &:active {\n background-color: transparent !important;\n }\n\n &:focus,\n &:focus-within,\n &:focus-visible {\n outline: none;\n }\n\n input {\n color: var(--theme-color-weak-text);\n }\n\n input:focus,\n input:focus-visible {\n outline: none;\n }\n }\n\n .hidden {\n display: none !important;\n }\n\n .trigger {\n display: flex;\n align-items: center;\n flex-grow: 1;\n height: 100%;\n }\n\n .input-container {\n display: flex;\n position: relative;\n align-items: flex-start;\n width: 100%;\n height: 100%;\n\n .chips {\n position: relative;\n display: flex;\n align-items: center;\n flex-wrap: wrap;\n height: 100%;\n max-height: 3.5rem;\n flex-grow: 1;\n overflow-y: auto;\n\n > ix-filter-chip {\n margin: 0.1rem;\n }\n }\n\n input {\n @include ellipsis;\n @include text-default;\n background: transparent;\n height: 1.75rem;\n width: 100%;\n\n &,\n &:hover,\n &:focus-visible {\n border: none;\n outline: none;\n }\n\n &::placeholder {\n color: var(--theme-input-select-icon--color);\n }\n\n &.hide-placeholder::placeholder {\n opacity: 0;\n }\n }\n }\n\n .dropdown-visible {\n --ix-icon-button-color: var(--theme-color-dynamic--hover);\n }\n\n .add-item {\n display: flex;\n justify-content: flex-start;\n align-items: center;\n position: relative;\n width: 100%;\n }\n\n .select-list-header {\n @include ellipsis;\n display: flex;\n align-items: center;\n height: $default-control-height;\n color: var(--theme-select-list-item-hint--color);\n margin: 0 $small-space 0 1rem;\n }\n}\n","/*\n * SPDX-FileCopyrightText: 2023 Siemens AG\n *\n * SPDX-License-Identifier: MIT\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n */\n\nimport {\n Component,\n Element,\n Event,\n EventEmitter,\n h,\n Host,\n Listen,\n Prop,\n State,\n Watch,\n} from '@stencil/core';\nimport { IxSelectItemLabelChangeEvent } from '../select-item/events';\nimport { OnListener } from '../utils/listener';\n\n@Component({\n tag: 'ix-select',\n styleUrl: 'select.scss',\n shadow: true,\n})\nexport class Select {\n @Element() hostElement!: HTMLIxSelectElement;\n\n /**\n * Indices of selected items.\n * This corresponds to the value property of ix-select-items and therefor not necessarily the indices of the items in the list.\n * @deprecated since 2.0.0. Use the `value` property instead.\n */\n @Prop({ mutable: true }) selectedIndices?: string | string[];\n\n /**\n * Current selected value.\n * This corresponds to the value property of ix-select-items\n * @since 2.0.0\n */\n @Prop({ mutable: true }) value?: string | string[];\n\n /**\n * Show clear button\n */\n @Prop() allowClear = false;\n\n /**\n * Selection mode\n */\n @Prop() mode: 'single' | 'multiple' = 'single';\n\n /**\n * Select is extendable\n */\n @Prop() editable = false;\n\n /**\n * If true the select will be in disabled state\n */\n @Prop() disabled = false;\n\n /**\n * If true the select will be in readonly mode\n */\n @Prop() readonly = false;\n\n /**\n * Input field placeholder\n */\n @Prop() i18nPlaceholder = 'Select an option';\n\n /**\n * Input field placeholder for editable select\n */\n @Prop() i18nPlaceholderEditable = 'Type of select option';\n\n /**\n * Select list header\n */\n @Prop() i18nSelectListHeader = 'Please select an option';\n\n /**\n * Hint inside of dropdown if no items where found with current filter text\n *\n * @since 1.5.0\n */\n @Prop() i18nNoMatches = 'No matches';\n\n /**\n * Hide list header\n *\n * @since 1.5.0\n */\n @Prop() hideListHeader = false;\n\n /**\n * Value changed\n * @since 2.0.0\n */\n @Event() valueChange: EventEmitter<string | string[]>;\n\n /**\n * Item selection changed\n * @deprecated since 2.0.0. Use `valueChange` instead.\n */\n @Event() itemSelectionChange: EventEmitter<string[]>;\n\n /**\n * Event dispatched whenever the text input changes.\n *\n * @since 2.0.0\n */\n @Event() inputChange: EventEmitter<string>;\n\n /**\n * Item added to selection\n */\n @Event() addItem: EventEmitter<string>;\n\n @State() dropdownShow = false;\n @State() selectedLabels: string[];\n @State() dropdownWrapperRef!: HTMLElement;\n @State() dropdownAnchor!: HTMLElement;\n @State() isDropdownEmpty = false;\n @State() hasFocus = false;\n @State() navigationItem: HTMLIxSelectItemElement;\n @State() inputFilterText: string;\n @State() inputValue: string;\n\n private inputRef!: HTMLInputElement;\n private dropdownRef!: HTMLIxDropdownElement;\n private addItemRef!: HTMLDivElement;\n\n private labelMutationObserver: MutationObserver;\n\n get items() {\n return [\n ...Array.from(this.hostElement.querySelectorAll('ix-select-item')),\n ...Array.from(\n this.hostElement.shadowRoot.querySelectorAll('ix-select-item')\n ),\n ];\n }\n\n get selectedItems() {\n return this.items.filter((item) => item.selected);\n }\n\n get addItemButton() {\n return this.hostElement.shadowRoot.querySelector('.add-item');\n }\n\n get isSingleMode() {\n return this.mode === 'single';\n }\n\n get isMultipleMode() {\n return this.mode === 'multiple';\n }\n\n get isEveryDropdownItemHidden() {\n return this.items.every((item) => item.classList.contains('d-none'));\n }\n\n @Watch('selectedIndices')\n watchSelectedIndices(value: string | string[]) {\n this.value = value;\n this.updateSelection();\n }\n\n @Watch('value')\n watchValue(value: string | string[]) {\n this.selectedIndices = value;\n this.updateSelection();\n }\n\n @Listen('itemClick')\n onItemClicked(event: CustomEvent<string>) {\n const newId = event.detail;\n this.itemClick(newId);\n }\n\n private itemClick(newId: string) {\n this.value = this.toggleValue(newId);\n this.updateSelection();\n this.emitValueChange();\n }\n\n private emitAddItem(value: string) {\n if (value.trim() === '') {\n return;\n }\n\n const newItem = document.createElement('ix-select-item');\n newItem.value = value;\n newItem.label = value;\n\n this.addItemRef.appendChild(newItem);\n\n this.clearInput();\n this.itemClick(value);\n this.addItem.emit(value);\n }\n\n private toggleValue(itemValue: string) {\n if (!this.isMultipleMode) {\n return itemValue;\n }\n\n if (!this.value) {\n return [itemValue];\n }\n\n let value = this.value;\n\n if (!Array.isArray(value)) {\n value = [value];\n }\n\n if (value.includes(itemValue)) {\n return value.filter((value) => value !== itemValue);\n } else {\n return [...value, itemValue];\n }\n }\n\n private updateSelection() {\n let ids = [];\n\n if (this.value) {\n ids = Array.isArray(this.value) ? [...this.value] : [this.value];\n }\n\n this.items.forEach((item) => {\n item.selected = ids.some(\n // Check can be removed if value is type of string in future releases\n (i) =>\n i ===\n (item.value !== undefined && item.value !== null\n ? item.value.toString()\n : '')\n );\n });\n\n this.selectedLabels = this.selectedItems.map((item) => item.label);\n\n if (this.isSingleMode) {\n this.inputValue = this.selectedLabels?.length\n ? this.selectedLabels[0]\n : null;\n return;\n }\n\n this.inputValue = null;\n }\n\n private emitValueChange() {\n this.valueChange.emit(this.value);\n\n if (!this.value) {\n this.itemSelectionChange.emit(null);\n } else {\n this.itemSelectionChange.emit(\n Array.isArray(this.value) ? this.value : [this.value]\n );\n }\n }\n\n componentDidLoad() {\n this.inputRef.addEventListener('input', () => {\n this.dropdownShow = true;\n this.inputChange.emit(this.inputRef.value);\n });\n }\n\n componentWillLoad() {\n if (this.selectedIndices && !this.value) {\n this.value = this.selectedIndices;\n }\n\n this.updateSelection();\n }\n\n @Listen('ix-select-item:labelChange')\n onLabelChange(event: IxSelectItemLabelChangeEvent) {\n event.preventDefault();\n event.stopImmediatePropagation();\n this.updateSelection();\n }\n\n disconnectedCallback() {\n if (this.labelMutationObserver) {\n this.labelMutationObserver.disconnect();\n }\n }\n\n private itemExists(item: string) {\n return this.items.find((i) => i.label === item);\n }\n\n private dropdownVisibilityChanged(event: CustomEvent<boolean>) {\n this.dropdownShow = event.detail;\n this.hasFocus = event.detail;\n\n if (event.detail) {\n this.inputRef.focus();\n this.inputRef.select();\n\n this.removeHiddenFromItems();\n this.isDropdownEmpty = this.isEveryDropdownItemHidden;\n } else {\n this.navigationItem = undefined;\n }\n }\n\n @OnListener<Select>('keydown', (self) => self.dropdownShow)\n async onKeyDown(event: KeyboardEvent) {\n if (event.code === 'ArrowDown' || event.code === 'ArrowUp') {\n this.onArrowNavigation(event, event.code);\n }\n\n if (!this.dropdownShow) {\n return;\n }\n\n if (event.code === 'Enter' || event.code === 'NumpadEnter') {\n await this.onEnterNavigation();\n }\n\n if (event.code === 'Escape') {\n this.dropdownShow = false;\n }\n }\n\n private async onEnterNavigation() {\n if (this.isMultipleMode) {\n return;\n }\n\n if (this.editable && !this.itemExists(this.inputFilterText)) {\n this.emitAddItem(this.inputFilterText);\n this.navigationItem = this.items[this.items.length - 1];\n }\n\n this.navigationItem?.onItemClick();\n await this.dropdownRef?.updatePosition();\n\n if (this.isSingleMode && !this.editable) {\n this.dropdownShow = false;\n }\n }\n\n private onArrowNavigation(\n event: KeyboardEvent,\n key: 'ArrowDown' | 'ArrowUp'\n ) {\n event.preventDefault();\n event.stopPropagation();\n\n this.dropdownShow = true;\n\n const items = this.items.filter((i) => !i.classList.contains('d-none'));\n if (this.navigationItem === undefined) {\n this.applyFocusTo(items[0]);\n return;\n }\n\n let indexOfNavigationItem = items.findIndex(\n (item) => item === this.navigationItem\n );\n\n if (key === 'ArrowDown') {\n indexOfNavigationItem++;\n } else {\n indexOfNavigationItem--;\n }\n\n const newFocusItem = items[indexOfNavigationItem];\n this.applyFocusTo(newFocusItem);\n }\n\n private applyFocusTo(element: HTMLIxSelectItemElement) {\n if (!element) {\n return;\n }\n this.navigationItem = element;\n\n setTimeout(() => {\n element.shadowRoot\n .querySelector('ix-dropdown-item')\n .shadowRoot.querySelector('button')\n .focus();\n });\n }\n\n private filterItemsWithTypeahead() {\n this.inputFilterText = this.inputRef.value;\n\n if (this.isSingleMode && this.inputFilterText === this.selectedLabels[0]) {\n return;\n }\n\n if (this.inputFilterText) {\n this.items.forEach((item) => {\n item.classList.remove('d-none');\n if (\n !item.label.toLowerCase().includes(this.inputFilterText.toLowerCase())\n ) {\n item.classList.add('d-none');\n }\n });\n } else {\n this.removeHiddenFromItems();\n }\n\n this.isDropdownEmpty = this.isEveryDropdownItemHidden;\n }\n\n private removeHiddenFromItems() {\n this.items.forEach((item) => {\n item.classList.remove('d-none');\n });\n }\n\n private clearInput() {\n this.inputRef.value = '';\n this.inputFilterText = '';\n }\n\n private clear() {\n this.clearInput();\n this.selectedLabels = [];\n this.value = [];\n this.valueChange.emit(null);\n this.dropdownShow = false;\n }\n\n private onInputBlur(e) {\n if (this.editable) {\n return;\n }\n\n if (this.isSingleMode) {\n return;\n }\n\n if (!this.dropdownShow && this.mode !== 'multiple') {\n e.target['value'] = this.selectedLabels;\n }\n }\n\n private placeholderValue() {\n if (this.editable) {\n return this.i18nPlaceholderEditable;\n }\n\n if (this.readonly) {\n return '';\n }\n\n return this.i18nPlaceholder;\n }\n\n private isAddItemVisible() {\n return (\n !this.itemExists(this.inputFilterText) &&\n this.editable &&\n this.inputFilterText\n );\n }\n\n render() {\n return (\n <Host>\n <div\n class={{\n select: true,\n disabled: this.disabled,\n readonly: this.readonly,\n }}\n ref={(ref) => {\n this.dropdownAnchor = ref;\n if (!this.editable) this.dropdownWrapperRef = ref;\n }}\n >\n <div class=\"input-container\">\n <div class=\"chips\">\n {this.isMultipleMode\n ? this.selectedItems?.map((item) => (\n <ix-filter-chip\n disabled={this.disabled || this.readonly}\n key={item.value}\n onCloseClick={(e) => {\n e.preventDefault();\n e.stopPropagation();\n this.itemClick(item.value);\n }}\n >\n {item.label}\n </ix-filter-chip>\n ))\n : ''}\n <div class=\"trigger\">\n <input\n autocomplete=\"off\"\n data-testid=\"input\"\n disabled={this.disabled}\n readOnly={this.readonly}\n type=\"text\"\n class={{\n 'allow-clear':\n this.allowClear && !!this.selectedLabels?.length,\n }}\n placeholder={this.placeholderValue()}\n value={this.inputValue}\n ref={(ref) => (this.inputRef = ref)}\n onBlur={(e) => this.onInputBlur(e)}\n onFocus={() => {\n this.navigationItem = undefined;\n }}\n onInput={() => this.filterItemsWithTypeahead()}\n onKeyDown={(e) => this.onKeyDown(e)}\n />\n {this.allowClear &&\n (this.selectedLabels?.length || this.inputFilterText) ? (\n <ix-icon-button\n class=\"clear\"\n icon={'clear'}\n ghost\n oval\n size=\"16\"\n onClick={(e) => {\n e.preventDefault();\n e.stopPropagation();\n this.clear();\n }}\n />\n ) : null}\n {this.disabled || this.readonly ? null : (\n <ix-icon-button\n data-select-dropdown\n class={{ 'dropdown-visible': this.dropdownShow }}\n icon=\"chevron-down-small\"\n ghost\n ref={(ref) => {\n if (this.editable) this.dropdownWrapperRef = ref;\n }}\n ></ix-icon-button>\n )}\n </div>\n </div>\n </div>\n </div>\n <ix-dropdown\n ref={(ref) => (this.dropdownRef = ref)}\n show={this.dropdownShow}\n closeBehavior={this.isMultipleMode ? 'outside' : 'both'}\n class={{\n 'd-none': this.disabled || this.readonly,\n }}\n anchor={this.dropdownAnchor}\n trigger={this.dropdownWrapperRef}\n onShowChanged={(e) => this.dropdownVisibilityChanged(e)}\n placement=\"bottom-start\"\n overwriteDropdownStyle={async () => {\n return {\n minWidth: `${this.hostElement.clientWidth}px`,\n };\n }}\n >\n <div\n class={{\n 'select-list-header': true,\n hidden: this.hideListHeader || this.isDropdownEmpty,\n }}\n title={this.i18nSelectListHeader}\n >\n {this.i18nSelectListHeader}\n </div>\n <slot></slot>\n <div ref={(ref) => (this.addItemRef = ref)} class=\"d-contents\"></div>\n {this.isAddItemVisible() ? (\n <ix-dropdown-item\n data-testid=\"add-item\"\n icon={'plus'}\n class={{\n 'add-item': true,\n }}\n label={this.inputFilterText}\n onItemClick={(e) => {\n e.preventDefault();\n e.stopPropagation();\n this.emitAddItem(this.inputFilterText);\n }}\n ></ix-dropdown-item>\n ) : null}\n {this.isDropdownEmpty && !this.editable ? (\n <div class=\"select-list-header\">{this.i18nNoMatches}</div>\n ) : (\n ''\n )}\n </ix-dropdown>\n </Host>\n );\n }\n}\n"],"version":3}
1
+ {"file":"select.js","mappings":"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","names":[],"sources":["src/components/select/select.scss?tag=ix-select&encapsulation=shadow","src/components/select/select.tsx"],"sourcesContent":["/*\n * SPDX-FileCopyrightText: 2023 Siemens AG\n *\n * SPDX-License-Identifier: MIT\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n */\n\n@import 'common-variables';\n@import 'legacy/mixins/fonts';\n@import 'mixins/hover';\n@import 'mixins/text-truncation';\n@import 'mixins/shadow-dom/component';\n\n:host {\n @include ix-component;\n\n display: inline-block;\n position: relative;\n min-height: 2rem;\n height: auto;\n border-radius: var(--theme-input--border-radius);\n\n .d-none {\n display: none;\n }\n\n .select {\n position: relative;\n display: flex;\n align-items: center;\n background-color: var(--theme-input--background);\n border: var(--theme-input--border-thickness) solid\n var(--theme-input--border-color);\n border-radius: var(--theme-input--border-radius);\n padding: 0 0 0 $small-space;\n box-shadow: var(--theme-inset-shadow-1) !important;\n\n @include hover {\n background-color: var(--theme-input--background--hover);\n border-color: var(--theme-input--border-color--hover);\n }\n\n &:focus-within {\n background-color: var(--theme-input--background--focus);\n border-color: var(--theme-input--border-color--focus);\n outline: 1px solid #119fff;\n outline-offset: var(--theme-input--focus--outline-offset);\n }\n }\n\n .select.readonly,\n .select.disabled {\n box-shadow: none !important;\n border: none;\n border-radius: 0;\n cursor: pointer;\n\n &,\n &:hover,\n &:active {\n background-color: transparent !important;\n }\n\n &:focus,\n &:focus-within,\n &:focus-visible {\n outline: none;\n }\n\n input:focus,\n input:focus-visible {\n outline: none;\n }\n }\n\n .select.disabled {\n border-bottom: var(--theme-input--border-thickness) solid\n var(--theme-color-weak-bdr);\n\n input {\n color: var(--theme-color-weak-text);\n }\n }\n\n .select.readonly {\n border-bottom: var(--theme-input--border-thickness) solid\n var(--theme-color-soft-bdr);\n\n input {\n color: var(--theme-color-std-text);\n }\n }\n\n .hidden {\n display: none !important;\n }\n\n .trigger {\n display: flex;\n align-items: center;\n flex-grow: 1;\n height: 100%;\n }\n\n .input-container {\n display: flex;\n position: relative;\n align-items: flex-start;\n width: 100%;\n height: 100%;\n\n .chips {\n position: relative;\n display: flex;\n align-items: center;\n flex-wrap: wrap;\n height: 100%;\n max-height: 3.5rem;\n flex-grow: 1;\n overflow-y: auto;\n\n > ix-filter-chip {\n margin: 0.1rem;\n }\n }\n\n input {\n @include ellipsis;\n @include text-default;\n background: transparent;\n height: 1.75rem;\n width: 100%;\n\n &,\n &:hover,\n &:focus-visible {\n border: none;\n outline: none;\n }\n\n &::placeholder {\n color: var(--theme-input-select-icon--color);\n }\n\n &.hide-placeholder::placeholder {\n opacity: 0;\n }\n }\n }\n\n .dropdown-visible {\n --ix-icon-button-color: var(--theme-color-dynamic--hover);\n }\n\n .add-item {\n display: flex;\n justify-content: flex-start;\n align-items: center;\n position: relative;\n width: 100%;\n }\n\n .select-list-header {\n @include ellipsis;\n display: flex;\n align-items: center;\n height: $default-control-height;\n color: var(--theme-select-list-item-hint--color);\n margin: 0 $small-space 0 1rem;\n }\n}\n","/*\n * SPDX-FileCopyrightText: 2023 Siemens AG\n *\n * SPDX-License-Identifier: MIT\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n */\n\nimport {\n Component,\n Element,\n Event,\n EventEmitter,\n h,\n Host,\n Listen,\n Prop,\n State,\n Watch,\n} from '@stencil/core';\nimport { IxSelectItemLabelChangeEvent } from '../select-item/events';\nimport { ArrowFocusController } from '../utils/focus';\nimport { OnListener } from '../utils/listener';\nimport { createMutationObserver } from '../utils/mutation-observer';\nimport { DropdownItemWrapper } from '../dropdown/dropdown-controller';\n\n@Component({\n tag: 'ix-select',\n styleUrl: 'select.scss',\n shadow: true,\n})\nexport class Select {\n @Element() hostElement!: HTMLIxSelectElement;\n\n /**\n * Indices of selected items.\n * This corresponds to the value property of ix-select-items and therefor not necessarily the indices of the items in the list.\n * @deprecated since 2.0.0. Use the `value` property instead.\n */\n @Prop({ mutable: true }) selectedIndices?: string | string[];\n\n /**\n * Current selected value.\n * This corresponds to the value property of ix-select-items\n * @since 2.0.0\n */\n @Prop({ mutable: true }) value?: string | string[];\n\n /**\n * Show clear button\n */\n @Prop() allowClear = false;\n\n /**\n * Selection mode\n */\n @Prop() mode: 'single' | 'multiple' = 'single';\n\n /**\n * Select is extendable\n */\n @Prop() editable = false;\n\n /**\n * If true the select will be in disabled state\n */\n @Prop() disabled = false;\n\n /**\n * If true the select will be in readonly mode\n */\n @Prop() readonly = false;\n\n /**\n * Input field placeholder\n */\n @Prop() i18nPlaceholder = 'Select an option';\n\n /**\n * Input field placeholder for editable select\n */\n @Prop() i18nPlaceholderEditable = 'Type of select option';\n\n /**\n * Select list header\n */\n @Prop() i18nSelectListHeader = 'Please select an option';\n\n /**\n * Hint inside of dropdown if no items where found with current filter text\n *\n * @since 1.5.0\n */\n @Prop() i18nNoMatches = 'No matches';\n\n /**\n * Hide list header\n *\n * @since 1.5.0\n */\n @Prop() hideListHeader = false;\n\n /**\n * Value changed\n * @since 2.0.0\n */\n @Event() valueChange: EventEmitter<string | string[]>;\n\n /**\n * Item selection changed\n * @deprecated since 2.0.0. Use `valueChange` instead.\n */\n @Event() itemSelectionChange: EventEmitter<string[]>;\n\n /**\n * Event dispatched whenever the text input changes.\n *\n * @since 2.0.0\n */\n @Event() inputChange: EventEmitter<string>;\n\n /**\n * Item added to selection\n */\n @Event() addItem: EventEmitter<string>;\n\n @State() dropdownShow = false;\n @State() selectedLabels: string[];\n @State() dropdownWrapperRef!: HTMLElement;\n @State() dropdownAnchor!: HTMLElement;\n @State() isDropdownEmpty = false;\n @State() navigationItem: DropdownItemWrapper;\n @State() inputFilterText: string;\n @State() inputValue: string;\n\n private inputRef!: HTMLInputElement;\n private dropdownRef!: HTMLIxDropdownElement;\n private customItemsContainerRef!: HTMLDivElement;\n private addItemRef!: HTMLIxDropdownItemElement;\n\n private itemMutationObserver: MutationObserver;\n\n private arrowFocusController: ArrowFocusController;\n private focusControllerCallbackBind = this.focusDropdownItem.bind(this);\n\n private itemObserver = createMutationObserver(() => {\n this.arrowFocusController.items = this.visibleNonShadowItems;\n });\n\n get nonShadowItems() {\n return Array.from(this.hostElement.querySelectorAll('ix-select-item'));\n }\n\n get visibleNonShadowItems() {\n return this.nonShadowItems.filter(\n (item) => !item.classList.contains('d-none')\n );\n }\n\n get shadowItems() {\n return Array.from(\n this.hostElement.shadowRoot.querySelectorAll('ix-select-item')\n );\n }\n\n get visibleShadowItems() {\n return this.shadowItems.filter(\n (item) => !item.classList.contains('d-none')\n );\n }\n\n get items() {\n return [...this.nonShadowItems, ...this.shadowItems];\n }\n\n get visibleItems() {\n return this.items.filter((item) => !item.classList.contains('d-none'));\n }\n\n get selectedItems() {\n return this.items.filter((item) => item.selected);\n }\n\n get addItemButton() {\n return this.hostElement.shadowRoot.querySelector('.add-item');\n }\n\n get isSingleMode() {\n return this.mode === 'single';\n }\n\n get isMultipleMode() {\n return this.mode === 'multiple';\n }\n\n get isEveryDropdownItemHidden() {\n return this.items.every((item) => item.classList.contains('d-none'));\n }\n\n @Watch('selectedIndices')\n watchSelectedIndices(value: string | string[]) {\n this.value = value;\n this.updateSelection();\n }\n\n @Watch('value')\n watchValue(value: string | string[]) {\n this.selectedIndices = value;\n this.updateSelection();\n }\n\n @Watch('dropdownShow')\n watchDropdownShow(show: boolean) {\n if (show) {\n this.arrowFocusController = new ArrowFocusController(\n this.visibleNonShadowItems,\n this.dropdownRef,\n this.focusControllerCallbackBind\n );\n\n this.arrowFocusController.wrap = !this.editable;\n\n this.itemObserver.observe(this.dropdownRef, {\n childList: true,\n subtree: true,\n });\n } else {\n this.arrowFocusController.disconnect();\n this.arrowFocusController = undefined;\n this.itemObserver.disconnect();\n }\n }\n\n @Listen('itemClick')\n onItemClicked(event: CustomEvent<string>) {\n const newId = event.detail;\n this.itemClick(newId);\n }\n\n private focusDropdownItem(index: number) {\n this.navigationItem = undefined;\n\n if (index < this.visibleNonShadowItems.length) {\n const nestedDropdownItem =\n this.visibleNonShadowItems[index]?.shadowRoot.querySelector(\n 'ix-dropdown-item'\n );\n\n requestAnimationFrame(() => {\n nestedDropdownItem.shadowRoot.querySelector('button').focus();\n });\n }\n }\n\n private itemClick(newId: string) {\n this.value = this.toggleValue(newId);\n this.updateSelection();\n this.emitValueChange();\n }\n\n private emitAddItem(value: string) {\n if (value === undefined || value.trim() === '') {\n return;\n }\n\n const newItem = document.createElement('ix-select-item');\n newItem.value = value;\n newItem.label = value;\n\n this.customItemsContainerRef.appendChild(newItem);\n\n this.clearInput();\n this.itemClick(value);\n this.addItem.emit(value);\n }\n\n private toggleValue(itemValue: string) {\n if (!this.isMultipleMode) {\n return itemValue;\n }\n\n if (!this.value) {\n return [itemValue];\n }\n\n let value = this.value;\n\n if (!Array.isArray(value)) {\n value = [value];\n }\n\n if (value.includes(itemValue)) {\n return value.filter((value) => value !== itemValue);\n } else {\n return [...value, itemValue];\n }\n }\n\n private updateSelection() {\n let ids = [];\n\n if (this.value) {\n ids = Array.isArray(this.value) ? [...this.value] : [this.value];\n }\n\n this.items.forEach((item) => {\n item.selected = ids.some(\n // Check can be removed if value is type of string in future releases\n (i) =>\n i ===\n (item.value !== undefined && item.value !== null\n ? item.value.toString()\n : '')\n );\n });\n\n this.selectedLabels = this.selectedItems.map((item) => item.label);\n\n if (this.isSingleMode && this.selectedLabels?.length) {\n this.inputValue = this.selectedLabels[0];\n this.inputRef && (this.inputRef.value = this.inputValue);\n return;\n }\n\n this.inputValue = null;\n }\n\n private emitValueChange() {\n this.valueChange.emit(this.value);\n\n if (!this.value) {\n this.itemSelectionChange.emit(null);\n } else {\n this.itemSelectionChange.emit(\n Array.isArray(this.value) ? this.value : [this.value]\n );\n }\n }\n\n componentDidLoad() {\n this.inputRef.addEventListener('input', () => {\n this.dropdownShow = true;\n this.inputChange.emit(this.inputRef.value);\n });\n }\n\n componentWillLoad() {\n if (this.selectedIndices && !this.value) {\n this.value = this.selectedIndices;\n }\n\n this.updateSelection();\n }\n\n @Listen('ix-select-item:labelChange')\n onLabelChange(event: IxSelectItemLabelChangeEvent) {\n event.preventDefault();\n event.stopImmediatePropagation();\n this.updateSelection();\n }\n\n disconnectedCallback() {\n if (this.itemMutationObserver) {\n this.itemMutationObserver.disconnect();\n }\n }\n\n private itemExists(item: string) {\n return this.items.find((i) => i.label === item);\n }\n\n private dropdownVisibilityChanged(event: CustomEvent<boolean>) {\n this.dropdownShow = event.detail;\n\n if (event.detail) {\n this.inputRef.focus();\n this.inputRef.select();\n\n this.removeHiddenFromItems();\n this.isDropdownEmpty = this.isEveryDropdownItemHidden;\n } else {\n this.navigationItem = undefined;\n this.updateSelection();\n this.inputFilterText = '';\n }\n }\n\n @OnListener<Select>('keydown', (self) => self.dropdownShow)\n async onKeyDown(event: KeyboardEvent) {\n if (event.code === 'ArrowDown' || event.code === 'ArrowUp') {\n await this.onArrowNavigation(event, event.code);\n }\n\n if (!this.dropdownShow) {\n return;\n }\n\n if (event.code === 'Enter' || event.code === 'NumpadEnter') {\n await this.onEnterNavigation();\n }\n\n if (event.code === 'Escape') {\n this.dropdownShow = false;\n }\n }\n\n private async onEnterNavigation() {\n if (this.isMultipleMode) {\n return;\n }\n\n let item: HTMLIxSelectItemElement;\n\n if (this.editable && !this.itemExists(this.inputFilterText)) {\n this.emitAddItem(this.inputFilterText);\n item = this.items[this.items.length - 1];\n }\n\n if (item) {\n item.onItemClick();\n }\n\n await this.dropdownRef?.updatePosition();\n\n if (this.isSingleMode && !this.editable) {\n this.dropdownShow = false;\n }\n }\n\n private async onArrowNavigation(\n event: KeyboardEvent,\n key: 'ArrowDown' | 'ArrowUp'\n ) {\n if (event.defaultPrevented) {\n return;\n }\n\n event.preventDefault();\n event.stopPropagation();\n\n this.dropdownShow = true;\n\n if (!this.navigationItem && document.activeElement === this.hostElement) {\n if (this.visibleItems.length) {\n this.applyFocusTo(this.visibleItems.shift());\n } else if (this.isAddItemVisible()) {\n this.focusAddItemButton();\n }\n return;\n }\n\n const moveUp = key === 'ArrowUp';\n const indexNonShadow = this.visibleNonShadowItems.indexOf(\n document.activeElement as any\n );\n\n // Slotted select items\n if (indexNonShadow === 0) {\n if (!this.visibleShadowItems.length && this.isAddItemVisible()) {\n this.focusAddItemButton();\n } else {\n this.applyFocusTo(this.visibleShadowItems.pop());\n }\n return;\n } else if (\n indexNonShadow !== -1 &&\n indexNonShadow === this.visibleNonShadowItems.length - 1\n ) {\n if (this.visibleShadowItems.length) {\n this.applyFocusTo(this.visibleShadowItems.shift());\n } else if (this.isAddItemVisible()) {\n this.focusAddItemButton();\n }\n return;\n }\n\n if (\n this.isAddItemVisible() &&\n this.addItemRef.contains(\n await this.navigationItem.getDropdownItemElement()\n )\n ) {\n if (moveUp) {\n this.applyFocusTo(this.visibleItems.pop());\n } else {\n if (this.visibleItems.length) {\n this.applyFocusTo(this.visibleItems.shift());\n }\n }\n return;\n }\n\n // Custom select items\n const indexShadow = this.visibleShadowItems.indexOf(\n this.navigationItem as any\n );\n\n if (moveUp) {\n if (indexShadow === 0) {\n if (this.visibleNonShadowItems.length) {\n this.applyFocusTo(this.visibleNonShadowItems.pop());\n } else if (this.isAddItemVisible()) {\n this.focusAddItemButton();\n }\n } else {\n this.applyFocusTo(this.visibleShadowItems[indexShadow - 1]);\n }\n } else {\n if (indexShadow === this.visibleShadowItems.length - 1) {\n if (this.isAddItemVisible()) {\n this.focusAddItemButton();\n } else {\n this.applyFocusTo(this.visibleItems.shift());\n }\n } else {\n this.applyFocusTo(this.visibleShadowItems[indexShadow + 1]);\n }\n }\n }\n\n private applyFocusTo(element: HTMLIxSelectItemElement) {\n if (!element) {\n return;\n }\n\n this.navigationItem = element;\n\n setTimeout(() => {\n element.shadowRoot\n .querySelector('ix-dropdown-item')\n .shadowRoot.querySelector('button')\n .focus();\n });\n }\n\n private focusAddItemButton() {\n if (this.addItemButton) {\n this.addItemButton.shadowRoot.querySelector('button').focus();\n this.navigationItem = this.addItemRef;\n }\n }\n\n private filterItemsWithTypeahead() {\n this.inputFilterText = this.inputRef.value;\n\n if (this.isSingleMode && this.inputFilterText === this.selectedLabels[0]) {\n return;\n }\n\n if (this.inputFilterText) {\n this.items.forEach((item) => {\n item.classList.remove('d-none');\n if (\n !item.label.toLowerCase().includes(this.inputFilterText.toLowerCase())\n ) {\n item.classList.add('d-none');\n }\n });\n } else {\n this.removeHiddenFromItems();\n }\n\n if (this.arrowFocusController) {\n this.arrowFocusController.items = this.visibleNonShadowItems;\n }\n\n this.isDropdownEmpty = this.isEveryDropdownItemHidden;\n }\n\n private removeHiddenFromItems() {\n this.items.forEach((item) => {\n item.classList.remove('d-none');\n });\n }\n\n private clearInput() {\n this.inputRef.value = '';\n this.inputFilterText = '';\n }\n\n private clear() {\n this.clearInput();\n this.selectedLabels = [];\n this.value = [];\n this.valueChange.emit(null);\n this.dropdownShow = false;\n }\n\n private onInputBlur(e) {\n if (this.editable) {\n return;\n }\n\n if (this.isSingleMode) {\n return;\n }\n\n if (!this.dropdownShow && this.mode !== 'multiple') {\n e.target['value'] = this.selectedLabels;\n }\n }\n\n private placeholderValue() {\n if (this.disabled) {\n return '';\n }\n\n if (this.readonly) {\n return '';\n }\n\n if (this.editable) {\n return this.i18nPlaceholderEditable;\n }\n\n return this.i18nPlaceholder;\n }\n\n private isAddItemVisible() {\n return (\n !this.itemExists(this.inputFilterText) &&\n this.editable &&\n this.inputFilterText\n );\n }\n\n render() {\n return (\n <Host>\n <div\n class={{\n select: true,\n disabled: this.disabled,\n readonly: this.readonly,\n }}\n ref={(ref) => {\n this.dropdownAnchor = ref;\n if (!this.editable) this.dropdownWrapperRef = ref;\n }}\n >\n <div class=\"input-container\">\n <div class=\"chips\">\n {this.isMultipleMode\n ? this.selectedItems?.map((item) => (\n <ix-filter-chip\n disabled={this.disabled || this.readonly}\n key={item.value}\n onCloseClick={(e) => {\n e.preventDefault();\n e.stopPropagation();\n this.itemClick(item.value);\n }}\n >\n {item.label}\n </ix-filter-chip>\n ))\n : ''}\n <div class=\"trigger\">\n <input\n autocomplete=\"off\"\n data-testid=\"input\"\n disabled={this.disabled}\n readOnly={this.readonly}\n type=\"text\"\n class={{\n 'allow-clear':\n this.allowClear && !!this.selectedLabels?.length,\n }}\n placeholder={this.placeholderValue()}\n value={this.inputValue}\n ref={(ref) => (this.inputRef = ref)}\n onBlur={(e) => this.onInputBlur(e)}\n onFocus={() => {\n this.navigationItem = undefined;\n }}\n onInput={() => this.filterItemsWithTypeahead()}\n onKeyDown={(e) => this.onKeyDown(e)}\n />\n {this.allowClear &&\n (this.selectedLabels?.length || this.inputFilterText) ? (\n <ix-icon-button\n class=\"clear\"\n icon={'clear'}\n ghost\n oval\n size=\"16\"\n onClick={(e) => {\n e.preventDefault();\n e.stopPropagation();\n this.clear();\n }}\n />\n ) : null}\n {this.disabled || this.readonly ? null : (\n <ix-icon-button\n data-select-dropdown\n class={{ 'dropdown-visible': this.dropdownShow }}\n icon=\"chevron-down-small\"\n ghost\n ref={(ref) => {\n if (this.editable) this.dropdownWrapperRef = ref;\n }}\n ></ix-icon-button>\n )}\n </div>\n </div>\n </div>\n </div>\n <ix-dropdown\n ref={(ref) => (this.dropdownRef = ref)}\n show={this.dropdownShow}\n closeBehavior={this.isMultipleMode ? 'outside' : 'both'}\n class={{\n 'd-none': this.disabled || this.readonly,\n }}\n anchor={this.dropdownAnchor}\n trigger={this.dropdownWrapperRef}\n onShowChanged={(e) => this.dropdownVisibilityChanged(e)}\n placement=\"bottom-start\"\n overwriteDropdownStyle={async () => {\n return {\n minWidth: `${this.hostElement.clientWidth}px`,\n };\n }}\n >\n <div\n class={{\n 'select-list-header': true,\n hidden: this.hideListHeader || this.isDropdownEmpty,\n }}\n title={this.i18nSelectListHeader}\n >\n {this.i18nSelectListHeader}\n </div>\n <slot></slot>\n <div\n ref={(ref) => (this.customItemsContainerRef = ref)}\n class=\"d-contents\"\n ></div>\n {this.isAddItemVisible() ? (\n <ix-dropdown-item\n data-testid=\"add-item\"\n icon={'plus'}\n class={{\n 'add-item': true,\n }}\n label={this.inputFilterText}\n onItemClick={(e) => {\n e.preventDefault();\n e.stopPropagation();\n this.emitAddItem(this.inputFilterText);\n }}\n onFocus={() => (this.navigationItem = this.addItemRef)}\n ref={(ref) => {\n this.addItemRef = ref;\n }}\n ></ix-dropdown-item>\n ) : null}\n {this.isDropdownEmpty && !this.editable ? (\n <div class=\"select-list-header\">{this.i18nNoMatches}</div>\n ) : (\n ''\n )}\n </ix-dropdown>\n </Host>\n );\n }\n}\n"],"version":3}
@@ -13,7 +13,7 @@ const Spinner = /*@__PURE__*/ proxyCustomElement(class Spinner extends HTMLEleme
13
13
  this.hideTrack = false;
14
14
  }
15
15
  render() {
16
- return (h(Host, { key: 'ae03c01022d0144ced3c631a78d947934fdef0cf', class: {
16
+ return (h(Host, { key: '6ca735841b5d203cf8ef66f8675f73d2988d7518', class: {
17
17
  primary: this.variant === 'primary',
18
18
  'xx-small': this.size === 'xx-small',
19
19
  'x-small': this.size === 'x-small',
@@ -220,13 +220,13 @@ const Tabs = /*@__PURE__*/ proxyCustomElement(class Tabs extends HTMLElement {
220
220
  });
221
221
  }
222
222
  render() {
223
- return (h(Host, { key: '134654adbcf4c3492c3a20162ad48c21f3ffa3dc' }, h("div", { key: 'eecd05941c8a8decc31f6647deb48ab2e279966b', class: "arrow", "data-arrow-left": true, onClick: () => this.move(this.scrollAmount, true) }, h("ix-icon", { key: '45448aa96b97f0bce6d37fec9700a2ac2fd591ad', name: 'chevron-left-small' })), h("div", { key: '705552c2894e0a655c27d855cb55a46e75a1fcf7', class: {
223
+ return (h(Host, { key: 'd78a0e8848762853905f0a00ad0e29eb8010f058' }, h("div", { key: '81f8018608a4ead1b07a2c8dbc275f3e6b1a4f9f', class: "arrow", "data-arrow-left": true, onClick: () => this.move(this.scrollAmount, true) }, h("ix-icon", { key: '74ac11767dded217d438e58f3d9af659b5f7913c', name: 'chevron-left-small' })), h("div", { key: '22172b312ee82c63c590780030766262d5655be3', class: {
224
224
  'tab-items': true,
225
225
  'overflow-shadow': true,
226
226
  'shadow-left': this.showPreviousArrow(),
227
227
  'shadow-right': this.showNextArrow(),
228
228
  'shadow-both': this.showNextArrow() && this.showPreviousArrow(),
229
- } }, h("div", { key: '7f23535c4a4926e2162067024b0e37c13a8149f2', class: "items-content" }, h("slot", { key: 'e1e727370413ea4338f4eda6999eb6803228311c' }))), h("div", { key: '0cd120d1127015dcd779be2cee9292eef6ace6a6', class: "arrow right", "data-arrow-right": true, onClick: () => this.move(-this.scrollAmount, true) }, h("ix-icon", { key: '5f9c9a088f2929b64f3eca33bb5800b7a32b7397', name: 'chevron-right-small' }))));
229
+ } }, h("div", { key: '31a8df74124a12d6abc6e3af8c45e2f59c9e8e7f', class: "items-content" }, h("slot", { key: '0a37dea0573b5123c6de66831c028401d1da86b4' }))), h("div", { key: 'cd946069a8dbb2708bc90923c2bb8a897eeaf3b5', class: "arrow right", "data-arrow-right": true, onClick: () => this.move(-this.scrollAmount, true) }, h("ix-icon", { key: '3542fc3e7cba8477f2367492620dc16cdaecbad8', name: 'chevron-right-small' }))));
230
230
  }
231
231
  get hostElement() { return this; }
232
232
  static get style() { return IxTabsStyle0; }