@siemens/ix 1.5.0-beta.1 → 1.5.0-beta.3

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 (276) hide show
  1. package/dist/cjs/index-478a4b66.js.map +1 -1
  2. package/dist/cjs/ix-blind.cjs.entry.js +24 -6
  3. package/dist/cjs/ix-blind.cjs.entry.js.map +1 -1
  4. package/dist/cjs/ix-breadcrumb_2.cjs.entry.js +6 -2
  5. package/dist/cjs/ix-breadcrumb_2.cjs.entry.js.map +1 -1
  6. package/dist/cjs/ix-category-filter.cjs.entry.js +17 -3
  7. package/dist/cjs/ix-category-filter.cjs.entry.js.map +1 -1
  8. package/dist/cjs/ix-date-picker_2.cjs.entry.js +3133 -3872
  9. package/dist/cjs/ix-date-picker_2.cjs.entry.js.map +1 -1
  10. package/dist/cjs/ix-datetime-picker.cjs.entry.js +2 -2
  11. package/dist/cjs/ix-datetime-picker.cjs.entry.js.map +1 -1
  12. package/dist/cjs/ix-dropdown_2.cjs.entry.js +4 -3
  13. package/dist/cjs/ix-dropdown_2.cjs.entry.js.map +1 -1
  14. package/dist/cjs/ix-group_3.cjs.entry.js +33 -11
  15. package/dist/cjs/ix-group_3.cjs.entry.js.map +1 -1
  16. package/dist/cjs/ix-modal_2.cjs.entry.js +17 -5
  17. package/dist/cjs/ix-modal_2.cjs.entry.js.map +1 -1
  18. package/dist/cjs/ix-pagination.cjs.entry.js +17 -9
  19. package/dist/cjs/ix-pagination.cjs.entry.js.map +1 -1
  20. package/dist/cjs/ix-select_2.cjs.entry.js +54 -35
  21. package/dist/cjs/ix-select_2.cjs.entry.js.map +1 -1
  22. package/dist/cjs/ix-toggle.cjs.entry.js +1 -1
  23. package/dist/cjs/ix-toggle.cjs.entry.js.map +1 -1
  24. package/dist/cjs/ix-tooltip.cjs.entry.js +34 -10
  25. package/dist/cjs/ix-tooltip.cjs.entry.js.map +1 -1
  26. package/dist/cjs/ix-workflow-step_2.cjs.entry.js +51 -36
  27. package/dist/cjs/ix-workflow-step_2.cjs.entry.js.map +1 -1
  28. package/dist/cjs/loader.cjs.js +2 -2
  29. package/dist/cjs/loader.cjs.js.map +1 -1
  30. package/dist/cjs/siemens-ix.cjs.js +2 -2
  31. package/dist/cjs/siemens-ix.cjs.js.map +1 -1
  32. package/dist/collection/collection-manifest.json +1 -1
  33. package/dist/collection/components/blind/blind.css +10 -2
  34. package/dist/collection/components/blind/blind.js +12 -5
  35. package/dist/collection/components/blind/blind.js.map +1 -1
  36. package/dist/collection/components/breadcrumb/breadcrumb.css +2 -1
  37. package/dist/collection/components/breadcrumb/breadcrumb.js +5 -1
  38. package/dist/collection/components/breadcrumb/breadcrumb.js.map +1 -1
  39. package/dist/collection/components/category-filter/category-filter.js +17 -3
  40. package/dist/collection/components/category-filter/category-filter.js.map +1 -1
  41. package/dist/collection/components/date-picker/date-picker.css +3 -0
  42. package/dist/collection/components/date-picker/date-picker.js +64 -45
  43. package/dist/collection/components/date-picker/date-picker.js.map +1 -1
  44. package/dist/collection/components/datetime-picker/datetime-picker.css +6 -5
  45. package/dist/collection/components/datetime-picker/datetime-picker.js +1 -1
  46. package/dist/collection/components/datetime-picker/datetime-picker.js.map +1 -1
  47. package/dist/collection/components/dropdown/dropdown.js +2 -1
  48. package/dist/collection/components/dropdown/dropdown.js.map +1 -1
  49. package/dist/collection/components/dropdown-item/dropdown-item.css +0 -1
  50. package/dist/collection/components/dropdown-item/dropdown-item.js +1 -1
  51. package/dist/collection/components/dropdown-item/dropdown-item.js.map +1 -1
  52. package/dist/collection/components/group/group.css +21 -12
  53. package/dist/collection/components/group/group.js +34 -10
  54. package/dist/collection/components/group/group.js.map +1 -1
  55. package/dist/collection/components/group-item/group-item.css +8 -4
  56. package/dist/collection/components/modal/modal.js +6 -1
  57. package/dist/collection/components/modal/modal.js.map +1 -1
  58. package/dist/collection/components/modal-container/modal-container.js +11 -4
  59. package/dist/collection/components/modal-container/modal-container.js.map +1 -1
  60. package/dist/collection/components/pagination/pagination.css +1 -1
  61. package/dist/collection/components/pagination/pagination.js +17 -9
  62. package/dist/collection/components/pagination/pagination.js.map +1 -1
  63. package/dist/collection/components/select/select.css +4 -1
  64. package/dist/collection/components/select/select.js +96 -34
  65. package/dist/collection/components/select/select.js.map +1 -1
  66. package/dist/collection/components/select-item/select-item.css +0 -3
  67. package/dist/collection/components/select-item/select-item.js +1 -1
  68. package/dist/collection/components/select-item/select-item.js.map +1 -1
  69. package/dist/collection/components/toggle/toggle.css +7 -4
  70. package/dist/collection/components/tooltip/tooltip.js +55 -10
  71. package/dist/collection/components/tooltip/tooltip.js.map +1 -1
  72. package/dist/collection/components/utils/a11y.js +10 -0
  73. package/dist/collection/components/utils/a11y.js.map +1 -0
  74. package/dist/collection/components/workflow-step/workflow-step.css +6 -3
  75. package/dist/collection/components/workflow-step/workflow-step.js +45 -6
  76. package/dist/collection/components/workflow-step/workflow-step.js.map +1 -1
  77. package/dist/collection/components/workflow-steps/workflow-steps.css +0 -3
  78. package/dist/collection/components/workflow-steps/workflow-steps.js +48 -39
  79. package/dist/collection/components/workflow-steps/workflow-steps.js.map +1 -1
  80. package/dist/collection/tests/utils/test/page.js +29 -1
  81. package/dist/collection/tests/utils/test/page.js.map +1 -1
  82. package/dist/components/application-header.js +1 -1
  83. package/dist/components/burger-menu.js +1 -1
  84. package/dist/components/button.js +1 -1
  85. package/dist/components/date-picker.js +63 -44
  86. package/dist/components/date-picker.js.map +1 -1
  87. package/dist/components/date-time-card.js +1 -1
  88. package/dist/components/dropdown-item.js +3 -3
  89. package/dist/components/dropdown-item.js.map +1 -1
  90. package/dist/components/dropdown.js +3 -2
  91. package/dist/components/dropdown.js.map +1 -1
  92. package/dist/components/filter-chip.js +1 -1
  93. package/dist/components/group-context-menu.js +1 -1
  94. package/dist/components/group-item.js +2 -2
  95. package/dist/components/group-item.js.map +1 -1
  96. package/dist/components/icon-button.js +1 -1
  97. package/dist/components/icon.js +1 -1
  98. package/dist/components/index-button.js +1 -1
  99. package/dist/components/ix-animated-tab.js +1 -1
  100. package/dist/components/ix-animated-tabs.js +1 -1
  101. package/dist/components/ix-basic-navigation.js +1 -1
  102. package/dist/components/ix-blind.js +26 -7
  103. package/dist/components/ix-blind.js.map +1 -1
  104. package/dist/components/ix-breadcrumb-item.js +1 -1
  105. package/dist/components/ix-breadcrumb.js +7 -3
  106. package/dist/components/ix-breadcrumb.js.map +1 -1
  107. package/dist/components/ix-category-filter.js +18 -4
  108. package/dist/components/ix-category-filter.js.map +1 -1
  109. package/dist/components/ix-chip.js +1 -1
  110. package/dist/components/ix-counter-pill.js +1 -1
  111. package/dist/components/ix-datetime-picker.js +3 -3
  112. package/dist/components/ix-datetime-picker.js.map +1 -1
  113. package/dist/components/ix-divider.js +1 -1
  114. package/dist/components/ix-drawer.js +1 -1
  115. package/dist/components/ix-dropdown-button.js +1 -1
  116. package/dist/components/ix-dropdown-quick-actions.js +1 -1
  117. package/dist/components/ix-event-list-item.js +1 -1
  118. package/dist/components/ix-event-list.js +1 -1
  119. package/dist/components/ix-expanding-search.js +1 -1
  120. package/dist/components/ix-flip-tile-content.js +1 -1
  121. package/dist/components/ix-flip-tile.js +1 -1
  122. package/dist/components/ix-group-dropdown-item.js +1 -1
  123. package/dist/components/ix-group.js +36 -12
  124. package/dist/components/ix-group.js.map +1 -1
  125. package/dist/components/ix-input-group.js +1 -1
  126. package/dist/components/ix-kpi.js +1 -1
  127. package/dist/components/ix-map-navigation.js +1 -1
  128. package/dist/components/ix-menu-about-item.js +1 -1
  129. package/dist/components/ix-menu-about-news.js +1 -1
  130. package/dist/components/ix-menu-about.js +1 -1
  131. package/dist/components/ix-menu-avatar.js +1 -1
  132. package/dist/components/ix-menu-settings-item.js +1 -1
  133. package/dist/components/ix-menu-settings.js +1 -1
  134. package/dist/components/ix-menu.js +1 -1
  135. package/dist/components/ix-message-bar.js +1 -1
  136. package/dist/components/ix-modal-example.js +1 -1
  137. package/dist/components/ix-pagination.js +18 -10
  138. package/dist/components/ix-pagination.js.map +1 -1
  139. package/dist/components/ix-pill.js +1 -1
  140. package/dist/components/ix-split-button-item.js +1 -1
  141. package/dist/components/ix-split-button.js +1 -1
  142. package/dist/components/ix-tile.js +1 -1
  143. package/dist/components/ix-toast-container.js +1 -1
  144. package/dist/components/ix-toggle.js +2 -2
  145. package/dist/components/ix-toggle.js.map +1 -1
  146. package/dist/components/ix-tooltip.js +36 -11
  147. package/dist/components/ix-tooltip.js.map +1 -1
  148. package/dist/components/ix-tree.js +1 -1
  149. package/dist/components/ix-upload.js +1 -1
  150. package/dist/components/ix-validation-tooltip.js +1 -1
  151. package/dist/components/ix-workflow-step.js +10 -4
  152. package/dist/components/ix-workflow-step.js.map +1 -1
  153. package/dist/components/ix-workflow-steps.js +45 -36
  154. package/dist/components/ix-workflow-steps.js.map +1 -1
  155. package/dist/components/luxon.js +3077 -3835
  156. package/dist/components/luxon.js.map +1 -1
  157. package/dist/components/map-navigation-overlay.js +1 -1
  158. package/dist/components/menu-avatar-item.js +1 -1
  159. package/dist/components/menu-item.js +1 -1
  160. package/dist/components/modal-container.js +12 -5
  161. package/dist/components/modal-container.js.map +1 -1
  162. package/dist/components/modal.js +7 -2
  163. package/dist/components/modal.js.map +1 -1
  164. package/dist/components/my-component.js +1 -1
  165. package/dist/components/select-item.js +3 -3
  166. package/dist/components/select-item.js.map +1 -1
  167. package/dist/components/select.js +55 -34
  168. package/dist/components/select.js.map +1 -1
  169. package/dist/components/spinner.js +1 -1
  170. package/dist/components/tab-item.js +1 -1
  171. package/dist/components/tabs.js +1 -1
  172. package/dist/components/time-picker.js +1 -1
  173. package/dist/components/toast.js +1 -1
  174. package/dist/components/tree-item.js +1 -1
  175. package/dist/components/typography.js +1 -1
  176. package/dist/esm/index-3d163acd.js.map +1 -1
  177. package/dist/esm/ix-blind.entry.js +24 -6
  178. package/dist/esm/ix-blind.entry.js.map +1 -1
  179. package/dist/esm/ix-breadcrumb_2.entry.js +6 -2
  180. package/dist/esm/ix-breadcrumb_2.entry.js.map +1 -1
  181. package/dist/esm/ix-category-filter.entry.js +17 -3
  182. package/dist/esm/ix-category-filter.entry.js.map +1 -1
  183. package/dist/esm/ix-date-picker_2.entry.js +3133 -3872
  184. package/dist/esm/ix-date-picker_2.entry.js.map +1 -1
  185. package/dist/esm/ix-datetime-picker.entry.js +2 -2
  186. package/dist/esm/ix-datetime-picker.entry.js.map +1 -1
  187. package/dist/esm/ix-dropdown_2.entry.js +4 -3
  188. package/dist/esm/ix-dropdown_2.entry.js.map +1 -1
  189. package/dist/esm/ix-group_3.entry.js +33 -11
  190. package/dist/esm/ix-group_3.entry.js.map +1 -1
  191. package/dist/esm/ix-modal_2.entry.js +17 -5
  192. package/dist/esm/ix-modal_2.entry.js.map +1 -1
  193. package/dist/esm/ix-pagination.entry.js +18 -10
  194. package/dist/esm/ix-pagination.entry.js.map +1 -1
  195. package/dist/esm/ix-select_2.entry.js +54 -35
  196. package/dist/esm/ix-select_2.entry.js.map +1 -1
  197. package/dist/esm/ix-toggle.entry.js +1 -1
  198. package/dist/esm/ix-toggle.entry.js.map +1 -1
  199. package/dist/esm/ix-tooltip.entry.js +34 -10
  200. package/dist/esm/ix-tooltip.entry.js.map +1 -1
  201. package/dist/esm/ix-workflow-step_2.entry.js +52 -37
  202. package/dist/esm/ix-workflow-step_2.entry.js.map +1 -1
  203. package/dist/esm/loader.js +2 -2
  204. package/dist/esm/loader.js.map +1 -1
  205. package/dist/esm/siemens-ix.js +2 -2
  206. package/dist/esm/siemens-ix.js.map +1 -1
  207. package/dist/siemens-ix/{p-41f0a2b2.entry.js → p-2ea2fc07.entry.js} +2 -2
  208. package/dist/siemens-ix/{p-41f0a2b2.entry.js.map → p-2ea2fc07.entry.js.map} +1 -1
  209. package/dist/siemens-ix/p-33160fe4.entry.js +2 -0
  210. package/dist/siemens-ix/p-33160fe4.entry.js.map +1 -0
  211. package/dist/siemens-ix/p-4c8d5207.entry.js +2 -0
  212. package/dist/siemens-ix/p-4c8d5207.entry.js.map +1 -0
  213. package/dist/siemens-ix/p-53c69375.entry.js +2 -0
  214. package/dist/siemens-ix/p-53c69375.entry.js.map +1 -0
  215. package/dist/siemens-ix/p-626b3af5.entry.js +2 -0
  216. package/dist/siemens-ix/p-626b3af5.entry.js.map +1 -0
  217. package/dist/siemens-ix/p-663724a8.entry.js +2 -0
  218. package/dist/siemens-ix/p-663724a8.entry.js.map +1 -0
  219. package/dist/siemens-ix/p-78f2b858.entry.js +2 -0
  220. package/dist/siemens-ix/p-78f2b858.entry.js.map +1 -0
  221. package/dist/siemens-ix/p-7fb5fa79.entry.js +2 -0
  222. package/dist/siemens-ix/p-7fb5fa79.entry.js.map +1 -0
  223. package/dist/siemens-ix/p-8fcd6f85.js.map +1 -1
  224. package/dist/siemens-ix/p-b998abe4.entry.js +2 -0
  225. package/dist/siemens-ix/p-b998abe4.entry.js.map +1 -0
  226. package/dist/siemens-ix/{p-24d2d95e.entry.js → p-c9c9f2b5.entry.js} +2 -2
  227. package/dist/siemens-ix/p-c9c9f2b5.entry.js.map +1 -0
  228. package/dist/siemens-ix/p-caae2fa5.entry.js +2 -0
  229. package/dist/siemens-ix/p-caae2fa5.entry.js.map +1 -0
  230. package/dist/siemens-ix/p-dbcf33de.entry.js +2 -0
  231. package/dist/siemens-ix/p-dbcf33de.entry.js.map +1 -0
  232. package/dist/siemens-ix/{p-28f50519.entry.js → p-eb799bdd.entry.js} +2 -2
  233. package/dist/siemens-ix/p-eb799bdd.entry.js.map +1 -0
  234. package/dist/siemens-ix/siemens-ix.css +15 -0
  235. package/dist/siemens-ix/siemens-ix.esm.js +1 -1
  236. package/dist/siemens-ix/siemens-ix.esm.js.map +1 -1
  237. package/dist/types/components/blind/blind.d.ts +1 -0
  238. package/dist/types/components/category-filter/category-filter.d.ts +1 -0
  239. package/dist/types/components/date-picker/date-picker.d.ts +7 -6
  240. package/dist/types/components/group/group.d.ts +4 -0
  241. package/dist/types/components/modal/modal.d.ts +1 -0
  242. package/dist/types/components/modal-container/modal-container.d.ts +1 -0
  243. package/dist/types/components/pagination/pagination.d.ts +2 -0
  244. package/dist/types/components/select/select.d.ts +17 -1
  245. package/dist/types/components/time-picker/time-picker.d.ts +3 -3
  246. package/dist/types/components/tooltip/tooltip.d.ts +8 -0
  247. package/dist/types/components/utils/a11y.d.ts +1 -0
  248. package/dist/types/components/workflow-step/workflow-step.d.ts +9 -1
  249. package/dist/types/components/workflow-steps/workflow-steps.d.ts +6 -2
  250. package/dist/types/components.d.ts +49 -9
  251. package/dist/types/tests/utils/test/page.d.ts +5 -0
  252. package/loader/index.d.ts +1 -1
  253. package/package.json +7 -8
  254. package/scss/components/_forms.scss +6 -0
  255. package/dist/siemens-ix/p-01f9f803.entry.js +0 -2
  256. package/dist/siemens-ix/p-01f9f803.entry.js.map +0 -1
  257. package/dist/siemens-ix/p-030078b4.entry.js +0 -2
  258. package/dist/siemens-ix/p-030078b4.entry.js.map +0 -1
  259. package/dist/siemens-ix/p-1701b127.entry.js +0 -2
  260. package/dist/siemens-ix/p-1701b127.entry.js.map +0 -1
  261. package/dist/siemens-ix/p-24d2d95e.entry.js.map +0 -1
  262. package/dist/siemens-ix/p-28f50519.entry.js.map +0 -1
  263. package/dist/siemens-ix/p-446a0a3f.entry.js +0 -2
  264. package/dist/siemens-ix/p-446a0a3f.entry.js.map +0 -1
  265. package/dist/siemens-ix/p-58ef1328.entry.js +0 -2
  266. package/dist/siemens-ix/p-58ef1328.entry.js.map +0 -1
  267. package/dist/siemens-ix/p-6facc3cc.entry.js +0 -2
  268. package/dist/siemens-ix/p-6facc3cc.entry.js.map +0 -1
  269. package/dist/siemens-ix/p-73f7ef87.entry.js +0 -2
  270. package/dist/siemens-ix/p-73f7ef87.entry.js.map +0 -1
  271. package/dist/siemens-ix/p-a4178e26.entry.js +0 -2
  272. package/dist/siemens-ix/p-a4178e26.entry.js.map +0 -1
  273. package/dist/siemens-ix/p-a92126b5.entry.js +0 -2
  274. package/dist/siemens-ix/p-a92126b5.entry.js.map +0 -1
  275. package/dist/siemens-ix/p-b64e82ce.entry.js +0 -2
  276. package/dist/siemens-ix/p-b64e82ce.entry.js.map +0 -1
@@ -0,0 +1,2 @@
1
+ import{r as e,c as r,h as i,H as o,g as t}from"./p-8fcd6f85.js";import{c as s}from"./p-c0454c9a.js";const n=".sc-ix-group-h{overflow:hidden;text-overflow:ellipsis;white-space:nowrap;display:flex;flex-direction:column;position:relative;max-width:19.75rem;border-color:var(--theme-group-item--border-color)}.sc-ix-group-h .group-header.sc-ix-group{height:4rem;min-height:4rem;max-height:4rem;border-radius:var(--theme-group--border-radius) var(--theme-group--border-radius) 0 0;display:flex;background-color:var(--theme-group-item--background);color:var(--theme-group-header--color);cursor:pointer}.sc-ix-group-h .group-header.sc-ix-group:not(.disabled):not(:disabled){cursor:pointer}.sc-ix-group-h .group-header.sc-ix-group:not(.disabled):not(:disabled):hover{background-color:var(--theme-group-item--background--hover)}.sc-ix-group-h .group-header.sc-ix-group:not(.disabled):not(:disabled):hover.selected{background-color:var(--theme-group-item--background--selected)}.sc-ix-group-h .group-header.sc-ix-group:not(.disabled):not(:disabled){cursor:pointer}.sc-ix-group-h .group-header.sc-ix-group:not(.disabled):not(:disabled):active{background-color:var(--theme-group-item--background--active)}.sc-ix-group-h .group-header.sc-ix-group:not(.disabled):not(:disabled):active.selected{background-color:var(--theme-group-item--background--selected)}.sc-ix-group-h .group-header.sc-ix-group:not(.disabled):not(:disabled):focus-visible{border:1px solid var(--theme-color-focus-bdr);border-radius:var(--theme-default-border-radius) var(--theme-default-border-radius) 0px 0px;outline:none}.sc-ix-group-h .group-header.selected.sc-ix-group{background-color:var(--theme-group-item--background--selected)}.sc-ix-group-h .group-header.selected.sc-ix-group .group-header-selection-indicator.sc-ix-group{background-color:var(--theme-group-item-indicator--background--selected)}.sc-ix-group-h .group-header.sc-ix-group .group-header-selection-indicator.sc-ix-group{background-color:var(--theme-color-input--focus)}.sc-ix-group-h .group-header.sc-ix-group .group-header-selection-indicator.group-header-selection-indicator-item-selected.sc-ix-group{background-color:var(--theme-group-item-indicator--background--selected)}.sc-ix-group-h .group-header-clickable.sc-ix-group{overflow:hidden;text-overflow:ellipsis;white-space:nowrap;display:flex;width:100%;min-width:0}.sc-ix-group-h .group-header-selection-indicator.sc-ix-group{width:0.25rem;border-top-left-radius:var(--theme-group--border-radius)}.sc-ix-group-h .group-header-content.sc-ix-group{overflow:hidden;text-overflow:ellipsis;white-space:nowrap;display:flex;flex-direction:row;justify-content:space-between;min-width:0;flex-grow:1;padding:0.5rem;padding-left:0}.sc-ix-group-h .group-header-content.sc-ix-group .group-header-props-container.sc-ix-group{width:100%}.sc-ix-group-h .group-header-content.sc-ix-group .group-header-title.sc-ix-group{display:flex;align-items:center;font-size:1rem;font-weight:700;height:1.5rem}.sc-ix-group-h .group-header-content.sc-ix-group .group-header-title.sc-ix-group>*.sc-ix-group{overflow:hidden;text-overflow:ellipsis;white-space:nowrap;min-width:0}.sc-ix-group-h .group-header-content.sc-ix-group .group-subheader.sc-ix-group{overflow:hidden;text-overflow:ellipsis;white-space:nowrap;height:1.25rem;font-size:0.875rem;color:var(--theme-group-subheader--color)}.sc-ix-group-h .expand-icon.sc-ix-group{padding:0.125rem 0.437rem;color:var(--theme-color-std-text)}.sc-ix-group-h .btn-expand-header.sc-ix-group{margin:0.5rem;-webkit-margin-end:0.25rem;margin-inline-end:0.25rem;min-width:1.5rem}.sc-ix-group-h .group-content.sc-ix-group{display:flex;flex-direction:column}.sc-ix-group-h .footer.sc-ix-group{height:auto;min-height:0}.sc-ix-group-h .hidden.sc-ix-group{display:none}";const d=class{get dropdownItems(){return Array.from(this.hostElement.querySelectorAll("ix-group-dropdown-item"))}get groupItems(){return Array.from(this.hostElement.querySelectorAll("ix-group-item:not(.footer)"))}get groupContent(){return this.hostElement.querySelector(".group-content")}get footer(){return this.hostElement.querySelector(".footer")}constructor(i){e(this,i);this.selectGroup=r(this,"selectGroup",7);this.selectItem=r(this,"selectItem",7);this.collapsedChanged=r(this,"collapsedChanged",7);this.suppressHeaderSelection=false;this.header=undefined;this.subHeader=undefined;this.collapsed=true;this.selected=undefined;this.index=undefined;this.expandOnHeaderClick=false;this.itemSelected=false;this.dropdownTriggerRef=undefined;this.slotSize=this.groupItems.length}async onKeyDown(e){const r=e.target;if(!this.hostElement.contains(r)){return}if(e.code==="Enter"||e.code==="NumpadEnter"){if(r.classList.contains("group-header")){if(this.suppressHeaderSelection){this.collapsed=!this.collapsed}else{this.selected=!this.selected}}else if(r.matches("ix-group-item")){const e=r;e.selected=!e.selected}}}onExpandClick(e){this.collapsed=!this.collapsed;this.collapsedChanged.emit(this.collapsed);e.stopPropagation()}onHeaderClick(e){this.setGroupSelection(!this.selected);if(this.suppressHeaderSelection){this.onExpandClick(e)}}onItemClick(e){if(e===this.index){this.index=undefined;this.selectItem.emit(undefined)}else{this.index=e;this.selectItem.emit(e)}if(this.index>=0){this.itemSelected=true}else this.itemSelected=false;this.setGroupSelection(false)}setGroupSelection(e){if(!this.suppressHeaderSelection){this.selected=e;this.selectGroup.emit(this.selected)}}componentWillRender(){var e;this.groupItems.forEach(((e,r)=>{var i;if(this.selected===true){e.selected=false;this.index=undefined;this.itemSelected=false;return}e.selected=r===this.index;e.index=r;e.classList.remove("last");if(!((i=this.footer)===null||i===void 0?void 0:i.children.length)&&r===this.slotSize-1){e.classList.add("last")}}));if(((e=this.footer)===null||e===void 0?void 0:e.childElementCount)>1){this.groupContent.appendChild(this.footer)}}componentDidLoad(){this.observer=s((()=>{this.slotSize=this.groupItems.length}));this.observer.observe(this.groupContent,{childList:true});this.groupContent.addEventListener("selectedChanged",(e=>{this.onItemClick(e.detail.index)}))}disconnectedCallback(){if(this.observer){this.observer.disconnect()}}render(){return i(o,null,i("div",{class:{"group-header":true,expand:!this.collapsed,selected:this.selected},tabindex:"0"},i("div",{class:"group-header-clickable",onClick:e=>this.onHeaderClick(e)},i("div",{class:{"group-header-selection-indicator":true,"group-header-selection-indicator-item-selected":this.itemSelected}}),i("div",{class:"btn-expand-header"},i("ix-icon",{class:{hidden:this.slotSize===0},name:`chevron-${this.collapsed?"right":"down"}-small`,onClick:e=>this.onExpandClick(e)})),i("div",{class:"group-header-content"},this.header?i("div",{class:"group-header-props-container"},i("div",{class:"group-header-title"},i("span",{title:this.header},this.header)),i("div",{class:"group-subheader",title:this.subHeader},this.subHeader)):null,i("slot",{name:"header"}))),i("ix-group-context-menu",null,i("slot",{name:"dropdown"}))),i("div",{class:{"group-content":true,"d-none":this.collapsed}},i("slot",null)),i("div",{class:"d-none"},i("ix-group-item",{class:"footer last",suppressSelection:true,focusable:false},i("slot",{name:"footer"}))))}get hostElement(){return t(this)}};d.style=n;const c=".sc-ix-group-dropdown-item-h{display:contents}";const a=class{constructor(r){e(this,r);this.label=undefined;this.icon=undefined}render(){return i(o,null,i("ix-dropdown-item",{label:this.label,icon:this.icon},i("slot",null)))}};a.style=c;const u=".sc-ix-group-item-h{display:flex;min-height:2.25rem;height:2.25rem;align-items:center;justify-content:space-between;padding:0.5rem 1.5rem 0.5rem 2.5rem;position:relative;margin-top:0.0625rem;outline:none;background-color:var(--theme-group-item--background)}.last.sc-ix-group-item-h{border-bottom-left-radius:0.25rem;border-bottom-right-radius:0.25rem}.sc-ix-group-item-h ix-icon.sc-ix-group-item{margin-right:0.25rem;margin-top:-0.125rem}.sc-ix-group-item-h .group-entry-selection-indicator.sc-ix-group-item{position:absolute;left:0;height:100%;width:0.25rem}.sc-ix-group-item-h .group-entry-text.sc-ix-group-item{overflow:hidden;text-overflow:ellipsis;white-space:nowrap;flex-grow:1}.sc-ix-group-item-h .group-entry-text-secondary.sc-ix-group-item{display:flex;justify-content:flex-end;flex-grow:1;white-space:nowrap;color:var(--theme-color-soft-text);font-size:0.875rem}.sc-ix-group-item-h .group-entry-text-secondary.sc-ix-group-item,.sc-ix-group-item-h .group-entry-text-secondary.sc-ix-group-item span.sc-ix-group-item{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.sc-ix-group-item-h:not(.suppress-selection):not(.disabled):not(:disabled){cursor:pointer}.sc-ix-group-item-h:not(.suppress-selection):not(.disabled):not(:disabled):hover{background-color:var(--theme-group-item--background--hover);border-color:var(--theme-group-item--border-color--hover)}.sc-ix-group-item-h:not(.suppress-selection):not(.disabled):not(:disabled):hover.selected{background-color:var(--theme-group-item--background--selected)}.sc-ix-group-item-h:not(.suppress-selection):not(.disabled):not(:disabled){cursor:pointer}.sc-ix-group-item-h:not(.suppress-selection):not(.disabled):not(:disabled):active{background-color:var(--theme-group-item--background--active);border-color:var(--theme-group-item--border-color--active)}.sc-ix-group-item-h:not(.suppress-selection):not(.disabled):not(:disabled):active.selected{background-color:var(--theme-group-item--background--selected)}.selected.sc-ix-group-item-h{border-top-width:0.062rem !important;background-color:var(--theme-group-item--background--selected)}.selected.sc-ix-group-item-h .group-entry-selection-indicator.sc-ix-group-item{background-color:var(--theme-group-item-indicator--background--selected)}.sc-ix-group-item-h:not(.disabled):not(:disabled):focus-visible{border:1px solid var(--theme-color-focus-bdr) !important}";const h=class{constructor(i){e(this,i);this.selectedChanged=r(this,"selectedChanged",7);this.icon=undefined;this.text=undefined;this.secondaryText=undefined;this.suppressSelection=false;this.selected=undefined;this.focusable=true;this.index=undefined}clickListen(){if(this.suppressSelection){return}this.selectedChanged.emit(this.hostElement)}render(){return i(o,{class:{selected:this.selected&&!this.suppressSelection,"suppress-selection":this.suppressSelection},tabindex:this.focusable?0:-1},i("div",{class:"group-entry-selection-indicator"}),this.icon?i("ix-icon",{size:"16",name:this.icon}):null,this.text?i("span",{class:"group-entry-text"},i("span",{title:this.text},this.text)):null,this.secondaryText?i("span",{class:"group-entry-text-secondary"},i("span",{title:this.secondaryText},this.secondaryText)):null,i("slot",null))}get hostElement(){return t(this)}};h.style=u;export{d as ix_group,a as ix_group_dropdown_item,h as ix_group_item};
2
+ //# sourceMappingURL=p-b998abe4.entry.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"names":["groupCss","Group","dropdownItems","Array","from","this","hostElement","querySelectorAll","groupItems","groupContent","querySelector","footer","constructor","hostRef","registerInstance","selectGroup","createEvent","selectItem","collapsedChanged","suppressHeaderSelection","header","undefined","subHeader","collapsed","selected","index","expandOnHeaderClick","itemSelected","dropdownTriggerRef","slotSize","length","async","event","targetElement","target","contains","code","classList","matches","groupItem","onExpandClick","emit","stopPropagation","onHeaderClick","setGroupSelection","onItemClick","selection","componentWillRender","forEach","item","remove","_a","children","add","childElementCount","appendChild","componentDidLoad","observer","createMutationObserver","observe","childList","addEventListener","evt","detail","disconnectedCallback","disconnect","render","h","Host","class","expand","tabindex","onClick","e","hidden","name","title","suppressSelection","focusable","groupDropdownItemCss","GroupDropdownItem","label","icon","groupItemCss","GroupItem","clickListen","selectedChanged","size","text","secondaryText"],"sources":["./src/components/group/group.scss?tag=ix-group&encapsulation=scoped","./src/components/group/group.tsx","./src/components/group-dropdown-item/group-dropdown-item.scss?tag=ix-group-dropdown-item&encapsulation=scoped","./src/components/group-dropdown-item/group-dropdown-item.tsx","./src/components/group-item/group-item.scss?tag=ix-group-item&encapsulation=scoped","./src/components/group-item/group-item.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 'mixins/fonts';\n@import 'mixins/hover';\n@import 'mixins/text-truncation';\n\n:host {\n @include ellipsis;\n\n display: flex;\n flex-direction: column;\n position: relative;\n max-width: 19.75rem;\n border-color: var(--theme-group-item--border-color);\n\n .group-header {\n height: 4rem;\n min-height: 4rem;\n max-height: 4rem;\n border-radius: var(--theme-group--border-radius)\n var(--theme-group--border-radius) 0 0;\n display: flex;\n background-color: var(--theme-group-item--background);\n color: var(--theme-group-header--color);\n\n cursor: pointer;\n\n @include hover {\n background-color: var(--theme-group-item--background--hover);\n\n &.selected {\n background-color: var(--theme-group-item--background--selected);\n }\n }\n\n @include active {\n background-color: var(--theme-group-item--background--active);\n\n &.selected {\n background-color: var(--theme-group-item--background--selected);\n }\n }\n\n @include focus-visible {\n border: 1px solid var(--theme-color-focus-bdr);\n border-radius: var(--theme-default-border-radius)\n var(--theme-default-border-radius) 0px 0px;\n outline: none;\n }\n\n &.selected {\n background-color: var(--theme-group-item--background--selected);\n\n .group-header-selection-indicator {\n background-color: var(\n --theme-group-item-indicator--background--selected\n );\n }\n }\n\n .group-header-selection-indicator {\n background-color: var(--theme-color-input--focus);\n\n &.group-header-selection-indicator-item-selected {\n background-color: var(\n --theme-group-item-indicator--background--selected\n );\n }\n }\n }\n\n .group-header-clickable {\n @include ellipsis;\n\n display: flex;\n width: 100%;\n min-width: 0;\n }\n\n .group-header-selection-indicator {\n width: $tiny-space;\n border-top-left-radius: var(--theme-group--border-radius);\n }\n\n .group-header-content {\n @include ellipsis;\n\n display: flex;\n flex-direction: row;\n justify-content: space-between;\n min-width: 0;\n flex-grow: 1;\n padding: 0.5rem;\n padding-left: 0;\n\n .group-header-props-container {\n width: 100%;\n }\n\n .group-header-title {\n display: flex;\n align-items: center;\n font-size: 1rem;\n font-weight: $font-weight-bold;\n height: 1.5rem;\n\n & > * {\n @include ellipsis;\n\n min-width: 0;\n }\n }\n\n .group-subheader {\n @include ellipsis();\n\n height: 1.25rem;\n font-size: 0.875rem;\n color: var(--theme-group-subheader--color);\n }\n }\n\n .expand-icon {\n padding: 0.125rem 0.437rem;\n color: var(--theme-color-std-text);\n }\n\n .btn-expand-header {\n margin: $small-space;\n margin-inline-end: $tiny-space;\n min-width: 1.5rem;\n }\n\n .group-content {\n display: flex;\n flex-direction: column;\n }\n\n .footer {\n height: auto;\n min-height: 0;\n }\n\n .hidden {\n display: none;\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} from '@stencil/core';\nimport { createMutationObserver } from '../utils/mutation-observer';\n\n@Component({\n tag: 'ix-group',\n styleUrl: 'group.scss',\n scoped: true,\n})\nexport class Group {\n /**\n * Prevent header from being selectable\n */\n @Prop() suppressHeaderSelection = false;\n\n /**\n * Group header\n */\n @Prop() header: string;\n\n /**\n * Group header subtitle\n */\n @Prop() subHeader: string;\n\n /**\n * Whether the group is collapsed or expanded. Defaults to true.\n */\n @Prop({ mutable: true, reflect: true }) collapsed = true;\n\n /**\n * Whether the group is selected.\n */\n @Prop({ mutable: true, reflect: true }) selected: boolean;\n\n /**\n * The index of the selected group entry.\n * If undefined no group item is selected.\n */\n @Prop({ mutable: true, reflect: true }) index: number;\n\n /**\n * Expand the group if the header is clicked\n */\n @Prop() expandOnHeaderClick = false;\n\n /**\n * Emits when whole group gets selected.\n */\n @Event() selectGroup: EventEmitter<boolean>;\n\n /**\n * Emits when group item gets selected.\n */\n @Event() selectItem: EventEmitter<number>;\n\n /**\n * Group collapsed\n */\n @Event() collapsedChanged: EventEmitter<boolean>;\n\n @Element() hostElement!: HTMLIxGroupElement;\n\n @State() itemSelected = false;\n\n get dropdownItems() {\n return Array.from(\n this.hostElement.querySelectorAll('ix-group-dropdown-item')\n );\n }\n\n get groupItems(): Array<HTMLIxGroupItemElement> {\n return Array.from(\n this.hostElement.querySelectorAll('ix-group-item:not(.footer)')\n );\n }\n\n get groupContent() {\n return this.hostElement.querySelector('.group-content');\n }\n\n get footer() {\n return this.hostElement.querySelector('.footer');\n }\n\n @State() dropdownTriggerRef: HTMLElement;\n\n @State() slotSize = this.groupItems.length;\n\n constructor() {}\n\n @Listen('keydown', {\n target: 'window',\n })\n async onKeyDown(event: KeyboardEvent) {\n const targetElement = event.target as HTMLElement;\n\n if (!this.hostElement.contains(targetElement)) {\n return;\n }\n\n if (event.code === 'Enter' || event.code === 'NumpadEnter') {\n if (targetElement.classList.contains('group-header')) {\n if (this.suppressHeaderSelection) {\n this.collapsed = !this.collapsed;\n } else {\n this.selected = !this.selected;\n }\n } else if (targetElement.matches('ix-group-item')) {\n const groupItem = targetElement as HTMLIxGroupItemElement;\n groupItem.selected = !groupItem.selected;\n }\n }\n }\n\n private onExpandClick(event: Event) {\n this.collapsed = !this.collapsed;\n\n this.collapsedChanged.emit(this.collapsed);\n event.stopPropagation();\n }\n\n private onHeaderClick(event: Event) {\n this.setGroupSelection(!this.selected);\n\n if (this.suppressHeaderSelection) {\n this.onExpandClick(event);\n }\n }\n\n private onItemClick(index: number) {\n if (index === this.index) {\n this.index = undefined;\n this.selectItem.emit(undefined);\n } else {\n this.index = index;\n this.selectItem.emit(index);\n }\n\n if (this.index >= 0) {\n this.itemSelected = true;\n } else this.itemSelected = false;\n\n this.setGroupSelection(false);\n }\n\n private setGroupSelection(selection: boolean) {\n if (!this.suppressHeaderSelection) {\n this.selected = selection;\n this.selectGroup.emit(this.selected);\n }\n }\n\n componentWillRender() {\n this.groupItems.forEach((item, index) => {\n if (this.selected === true) {\n item.selected = false;\n this.index = undefined;\n this.itemSelected = false;\n return;\n }\n item.selected = index === this.index;\n item.index = index;\n item.classList.remove('last');\n if (!this.footer?.children.length && index === this.slotSize - 1) {\n item.classList.add('last');\n }\n });\n\n if (this.footer?.childElementCount > 1) {\n this.groupContent.appendChild(this.footer);\n }\n }\n\n private observer: MutationObserver;\n\n componentDidLoad() {\n this.observer = createMutationObserver(() => {\n this.slotSize = this.groupItems.length;\n });\n\n this.observer.observe(this.groupContent, {\n childList: true,\n });\n\n this.groupContent.addEventListener(\n 'selectedChanged',\n (evt: CustomEvent<HTMLIxGroupItemElement>) => {\n this.onItemClick(evt.detail.index);\n }\n );\n }\n\n disconnectedCallback() {\n if (this.observer) {\n this.observer.disconnect();\n }\n }\n\n render() {\n return (\n <Host>\n <div\n class={{\n 'group-header': true,\n expand: !this.collapsed,\n selected: this.selected,\n }}\n tabindex=\"0\"\n >\n <div\n class=\"group-header-clickable\"\n onClick={(e) => this.onHeaderClick(e)}\n >\n <div\n class={{\n 'group-header-selection-indicator': true,\n 'group-header-selection-indicator-item-selected':\n this.itemSelected,\n }}\n ></div>\n <div class=\"btn-expand-header\">\n <ix-icon\n class={{\n hidden: this.slotSize === 0,\n }}\n name={`chevron-${this.collapsed ? 'right' : 'down'}-small`}\n onClick={(e) => this.onExpandClick(e)}\n ></ix-icon>\n </div>\n\n <div class=\"group-header-content\">\n {this.header ? (\n <div class=\"group-header-props-container\">\n <div class=\"group-header-title\">\n <span title={this.header}>{this.header}</span>\n </div>\n <div class=\"group-subheader\" title={this.subHeader}>\n {this.subHeader}\n </div>\n </div>\n ) : null}\n <slot name=\"header\"></slot>\n </div>\n </div>\n <ix-group-context-menu>\n <slot name=\"dropdown\"></slot>\n </ix-group-context-menu>\n </div>\n <div\n class={{\n 'group-content': true,\n 'd-none': this.collapsed,\n }}\n >\n <slot></slot>\n </div>\n <div class=\"d-none\">\n <ix-group-item\n class=\"footer last\"\n suppressSelection={true}\n focusable={false}\n >\n <slot name=\"footer\"></slot>\n </ix-group-item>\n </div>\n </Host>\n );\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\n:host {\n display: contents;\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 { Component, h, Host, Prop } from '@stencil/core';\n\n@Component({\n tag: 'ix-group-dropdown-item',\n styleUrl: 'group-dropdown-item.scss',\n scoped: true,\n})\nexport class GroupDropdownItem {\n /**\n * Group dropdown label\n */\n @Prop() label: string;\n\n /**\n * Group dropdown icon\n */\n @Prop() icon: string;\n\n render() {\n return (\n <Host>\n <ix-dropdown-item label={this.label} icon={this.icon}>\n <slot></slot>\n </ix-dropdown-item>\n </Host>\n );\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\n@import 'common-variables';\n@import 'mixins/fonts';\n@import 'mixins/hover';\n@import 'mixins/text-truncation';\n\n:host {\n display: flex;\n min-height: 2.25rem;\n height: 2.25rem;\n align-items: center;\n justify-content: space-between;\n padding: $small-space $large-space $small-space 2.5rem;\n position: relative;\n margin-top: 0.0625rem;\n outline: none;\n background-color: var(--theme-group-item--background);\n\n &.last {\n border-bottom-left-radius: 0.25rem;\n border-bottom-right-radius: 0.25rem;\n }\n\n ix-icon {\n margin-right: $tiny-space;\n margin-top: -0.125rem;\n }\n\n .group-entry-selection-indicator {\n position: absolute;\n left: 0;\n height: 100%;\n width: $tiny-space;\n }\n\n .group-entry-text {\n @include ellipsis();\n flex-grow: 1;\n }\n\n .group-entry-text-secondary {\n &,\n span {\n @include ellipsis;\n }\n\n display: flex;\n justify-content: flex-end;\n flex-grow: 1;\n white-space: nowrap;\n color: var(--theme-color-soft-text);\n font-size: 0.875rem;\n }\n\n &:not(.suppress-selection) {\n @include hover {\n background-color: var(--theme-group-item--background--hover);\n border-color: var(--theme-group-item--border-color--hover);\n\n &.selected {\n background-color: var(--theme-group-item--background--selected);\n }\n }\n\n @include active {\n background-color: var(--theme-group-item--background--active);\n border-color: var(--theme-group-item--border-color--active);\n\n &.selected {\n background-color: var(--theme-group-item--background--selected);\n }\n }\n }\n\n &.selected {\n border-top-width: 0.062rem !important;\n background-color: var(--theme-group-item--background--selected);\n\n .group-entry-selection-indicator {\n background-color: var(--theme-group-item-indicator--background--selected);\n }\n }\n\n @include focus-visible {\n border: 1px solid var(--theme-color-focus-bdr) !important;\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} from '@stencil/core';\n\n@Component({\n tag: 'ix-group-item',\n styleUrl: 'group-item.scss',\n scoped: true,\n})\nexport class GroupItem {\n @Element() hostElement!: HTMLIxGroupItemElement;\n\n /**\n * Group item icon\n */\n @Prop() icon: string;\n\n /**\n * Group item text\n */\n @Prop() text: string;\n\n /**\n * Group item secondary text\n */\n @Prop() secondaryText: string;\n\n /**\n * Supress the selection of the group\n */\n @Prop() suppressSelection = false;\n\n /**\n * Show selected state\n */\n @Prop() selected: boolean;\n\n /**\n * The elements tabindex attribute will get set accordingly.\n * If true tabindex will be 0, -1 otherwise.\n */\n @Prop() focusable = true;\n\n /**\n * Selection changed\n */\n @Event() selectedChanged: EventEmitter<HTMLIxGroupItemElement>;\n\n /**\n * Index\n */\n @Prop() index: number;\n\n @Listen('click', { passive: true })\n clickListen() {\n if (this.suppressSelection) {\n return;\n }\n this.selectedChanged.emit(this.hostElement);\n }\n\n render() {\n return (\n <Host\n class={{\n selected: this.selected && !this.suppressSelection,\n 'suppress-selection': this.suppressSelection,\n }}\n tabindex={this.focusable ? 0 : -1}\n >\n <div class=\"group-entry-selection-indicator\"></div>\n {this.icon ? <ix-icon size=\"16\" name={this.icon}></ix-icon> : null}\n {this.text ? (\n <span class=\"group-entry-text\">\n <span title={this.text}>{this.text}</span>\n </span>\n ) : null}\n {this.secondaryText ? (\n <span class=\"group-entry-text-secondary\">\n <span title={this.secondaryText}>{this.secondaryText}</span>\n </span>\n ) : null}\n <slot></slot>\n </Host>\n );\n }\n}\n"],"mappings":"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"}
@@ -1,2 +1,2 @@
1
- import{r as t,c as e,h as i,H as r,g as s}from"./p-8fcd6f85.js";import{L as o,I as n}from"./p-6f819085.js";const a=".sc-ix-category-filter-h{display:block;position:relative}.sc-ix-category-filter-h .focus.sc-ix-category-filter{border-color:var(--theme-color-primary);box-shadow:0 0 0.25rem 0 var(--theme-color-primary) !important}.sc-ix-category-filter-h .reset-button.sc-ix-category-filter{position:absolute;top:0.25rem;right:0.25rem}.sc-ix-category-filter-h .reset-button.hide-reset-button.sc-ix-category-filter{display:none}.sc-ix-category-filter-h .input-container.sc-ix-category-filter{display:flex;height:100%;max-height:3.75rem;padding:1px 1.5rem 1px 2rem}.sc-ix-category-filter-h .input-container.no-icon.sc-ix-category-filter{padding-left:0.25rem}.sc-ix-category-filter-h .token-container.sc-ix-category-filter{flex-grow:1;overflow:hidden}.sc-ix-category-filter-h .text-input.sc-ix-category-filter{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;flex-grow:1;height:1.75rem}.sc-ix-category-filter-h .text-input.sc-ix-category-filter,.sc-ix-category-filter-h .text-input.sc-ix-category-filter:hover,.sc-ix-category-filter-h .text-input.sc-ix-category-filter:focus-visible{border:none;outline:none}.sc-ix-category-filter-h .text-input.hide-placeholder.sc-ix-category-filter::-moz-placeholder{opacity:0}.sc-ix-category-filter-h .text-input.hide-placeholder.sc-ix-category-filter::placeholder{opacity:0}.sc-ix-category-filter-h .list-unstyled.sc-ix-category-filter{display:flex;flex-wrap:wrap;list-style:none;padding:0;margin:0;overflow-y:auto}.sc-ix-category-filter-h ix-icon.sc-ix-category-filter{position:absolute;top:0.5rem;left:0.5rem}.sc-ix-category-filter-h ix-filter-chip.sc-ix-category-filter{margin-right:0.5rem}.sc-ix-category-filter-h .category-preview.sc-ix-category-filter{display:flex;align-items:center;height:1.5rem;background-color:var(--theme-bg-3);border-top-left-radius:1rem;border-bottom-left-radius:1rem;padding:0.5rem;margin:2px 0}.sc-ix-category-filter-h ul.sc-ix-category-filter{height:100%}.sc-ix-category-filter-h ul.sc-ix-category-filter>li.sc-ix-category-filter,.sc-ix-category-filter-h input.sc-ix-category-filter{padding-top:2px;padding-bottom:2px}.sc-ix-category-filter-h ix-dropdown.sc-ix-category-filter{min-width:10rem !important}.sc-ix-category-filter-h ix-dropdown.sc-ix-category-filter .dropdown-item-container.sc-ix-category-filter{display:flex;flex-direction:column}.sc-ix-category-filter-h ix-dropdown.sc-ix-category-filter .dropdown-item-container.sc-ix-category-filter .dropdown-item.sc-ix-category-filter{-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.143em;color:var(--theme-color-std-text);overflow:hidden;text-overflow:ellipsis;white-space:nowrap;height:2.5rem;margin:0.25rem 0.5rem;padding-inline:0.5rem;border-radius:100rem;width:auto}.sc-ix-category-filter-h ix-dropdown.sc-ix-category-filter .dropdown-item-container.sc-ix-category-filter .category-item.sc-ix-category-filter{border-end-end-radius:0;border-start-end-radius:0}.sc-ix-category-filter-h ix-dropdown.sc-ix-category-filter .dropdown-item-container.sc-ix-category-filter .category-item-value.sc-ix-category-filter{border-start-start-radius:0;border-end-start-radius:0}.sc-ix-category-filter-h ix-dropdown.sc-ix-category-filter .btn-toggle-operator.sc-ix-category-filter{margin-inline:0.5rem}";const c=class{constructor(i){t(this,i);this.inputChanged=e(this,"inputChanged",7);this.filterChanged=e(this,"filterChanged",7);this.ID_CUSTOM_FILTER_VALUE="CW_CUSTOM_FILTER_VALUE";this.textInput=undefined;this.hasFocus=undefined;this.categoryLogicalOperator=o.EQUAL;this.inputValue=undefined;this.category=undefined;this.filterTokens=[];this.initialState=undefined;this.filterState=undefined;this.placeholder=undefined;this.categories=undefined;this.nonSelectableCategories={};this.suggestions=undefined;this.icon="search";this.hideIcon=undefined;this.repeatCategories=true;this.tmpDisableScrollIntoView=true;this.labelCategories="Categories";this.i18nPlainText="Filter by text"}watchFilterState(t){this.setFilterState(t)}componentDidLoad(){var t,e;if(this.initialState!==undefined){this.setFilterState(this.initialState)}else if(this.filterState!==undefined){setTimeout((()=>this.setFilterState(this.filterState)))}(t=this.hostElement)===null||t===void 0?void 0:t.addEventListener("keydown",this.handleFormElementKeyDown.bind(this));(e=this.formElement)===null||e===void 0?void 0:e.addEventListener("submit",(t=>t.preventDefault()));if(this.textInput==null){console.warn("ix-category-filter - unable to add event listeners to native input element");return}this.textInput.addEventListener("focusin",(()=>{this.hasFocus=true}));this.textInput.addEventListener("focusout",(()=>this.hasFocus=false));this.textInput.addEventListener("input",(()=>{this.inputValue=this.textInput.value;const t=new n(this.inputValue,this.category);this.inputChanged.emit(t)}));this.textInput.addEventListener("keydown",this.handleInputElementKeyDown.bind(this))}setFilterState(t){this.filterTokens=[];for(const e of t.tokens){this.addToken(e,this.ID_CUSTOM_FILTER_VALUE,this.categoryLogicalOperator,false)}for(const e of t.categories){this.addToken(e.value,e.id,e.operator,false)}this.emitFilterEvent()}closeDropdown(){this.hostElement.querySelector("ix-dropdown").show=false}handleFormElementKeyDown(t){switch(t.code){case"Enter":case"NumpadEnter":if(!document.activeElement.classList.contains("dropdown-item")){return}const e=document.activeElement.getAttribute("data-id");if(this.hasCategorySelection()){if(this.category){this.addToken(e,this.category)}else if(document.activeElement.classList.contains("category-item-id")){this.selectCategory(e)}}else{this.addToken(e)}t.preventDefault();break;case"ArrowUp":this.focusPreviousItem();t.preventDefault();break;case"ArrowDown":this.focusNextItem();t.preventDefault();break;case"Escape":this.closeDropdown();break}}focusPreviousItem(){const t=document.activeElement.previousSibling;if(t instanceof HTMLElement){t.focus()}}focusNextItem(){const t=document.activeElement.nextSibling;if(t instanceof HTMLElement){t.focus()}}handleInputElementKeyDown(t){var e;switch(t.code){case"ArrowDown":const i=`.category-item-${this.category?"value":"id"}`;let r=this.hostElement.querySelector(i);if(r instanceof HTMLElement){r.focus();t.stopPropagation()}else if((e=this.suggestions)===null||e===void 0?void 0:e.length){r=this.hostElement.querySelector(".category-item");if(r instanceof HTMLElement){r.focus();t.stopPropagation()}}break;case"Backspace":if(this.textInput.value!==""){return}if(this.category){this.category=undefined;return}const s=this.filterTokens.length;if(s>0){this.removeToken(s-1)}break;case"Enter":case"NumpadEnter":this.addToken(this.inputValue,this.category);t.preventDefault();break}}emitFilterEvent(){const t=this.filterTokens.filter((t=>t.id===this.ID_CUSTOM_FILTER_VALUE)).map((t=>t.value));const e=this.filterTokens.filter((t=>t.id!==this.ID_CUSTOM_FILTER_VALUE));const i={tokens:t,categories:e};this.filterChanged.emit(i)}addToken(t,e=this.ID_CUSTOM_FILTER_VALUE,i=this.categoryLogicalOperator,r=true){if(t===undefined||t===null){return}const s=t.trim();if(s===""){return}if(this.filterTokens.find((t=>(t===null||t===void 0?void 0:t.value)===s))){return}const n={id:e,value:s,operator:i};this.filterTokens=[...this.filterTokens,n];this.textInput.value="";this.inputValue="";this.categoryLogicalOperator=o.EQUAL;if(this.category){this.category=undefined}this.isScrollStateDirty=true;this.textInput.focus();if(r){this.emitFilterEvent()}this.closeDropdown()}removeToken(t){this.filterTokens=this.filterTokens.filter(((e,i)=>i!==t));this.emitFilterEvent()}getCategoryIds(){const t=[];for(const e in this.categories){if(Object.prototype.hasOwnProperty.call(this.categories,e)){t.push(e)}}return t}selectCategory(t){this.category=t;this.textInput.value="";this.inputValue="";this.textInput.focus()}resetFilter(){this.closeDropdown();this.filterTokens=[];this.emitFilterEvent()}filterMultiples(t){if(this.repeatCategories){return true}const e=this.filterTokens.find((e=>e.id===t));return!e}filterDuplicateTokens(t){const e=this.filterTokens.some((e=>e.value===t));return!e}filterByInput(t){if(this.inputValue===undefined||this.inputValue===""){return true}return t.toLowerCase().indexOf(this.inputValue.toLowerCase())!==-1}toggleCategoryOperator(){switch(this.categoryLogicalOperator){case o.EQUAL:this.categoryLogicalOperator=o.NOT_EQUAL;break;case o.NOT_EQUAL:this.categoryLogicalOperator=o.EQUAL;break}}getFilterChipLabel(t){var e,i,r;if(t.id===this.ID_CUSTOM_FILTER_VALUE){return t.value}const s=t.operator===o.EQUAL?"=":"!=";const n=(r=(i=(e=this.categories[t.id])===null||e===void 0?void 0:e.label)!==null&&i!==void 0?i:this.nonSelectableCategories[t.id])!==null&&r!==void 0?r:t.id;return`${n} ${s} ${t.value}`}getFilteredSuggestions(){var t,e;if(!((t=this.suggestions)===null||t===void 0?void 0:t.length)){return[]}return(e=this.suggestions)===null||e===void 0?void 0:e.filter((t=>this.filterByInput(t))).filter((t=>this.filterDuplicateTokens(t)))}hasCategorySelection(){return this.categories!==undefined}displayDropdown(){if(this.hasCategorySelection()){return true}if(this.suggestions!==undefined){return this.getFilteredSuggestions().length>0}return false}renderPlainSuggestions(){return i("div",{class:"dropdown-item-container"},this.getFilteredSuggestions().map((t=>i("button",{class:"dropdown-item","data-id":t,onClick:()=>this.addToken(t),key:t,title:t},t))))}renderCategoryValues(){var t,e;return i("div",{class:"dropdown-item-container"},i("button",{class:"btn btn-invisible-secondary btn-icon btn-toggle-operator",onClick:()=>this.toggleCategoryOperator(),tabindex:"-1"},this.categoryLogicalOperator===o.NOT_EQUAL?"=":"!="),i("div",{class:"dropdown-header"},(t=this.categories[this.category])===null||t===void 0?void 0:t.label),(e=this.categories[this.category])===null||e===void 0?void 0:e.options.filter((t=>this.filterByInput(t))).filter((t=>this.filterDuplicateTokens(t))).map((t=>i("button",{class:"dropdown-item category-item-value","data-id":t,title:t,key:t,onClick:()=>this.addToken(t,this.category)},`${this.categoryLogicalOperator===o.EQUAL?"=":"!="} ${t}`))))}renderDropdownContent(){if(this.hasCategorySelection()){if(this.category){return this.renderCategoryValues()}else{return this.renderCategorySelection()}}else return this.renderPlainSuggestions()}renderCategorySelection(){var t;return i("div",{class:"dropdown-item-container"},(t=this.getCategoryIds())===null||t===void 0?void 0:t.filter((t=>this.filterByInput(this.categories[t].label))).filter((t=>this.filterMultiples(t))).map((t=>{var e;return i("button",{class:"dropdown-item category-item category-item-id","data-id":t,title:this.categories[t].label,key:t,onClick:()=>this.selectCategory(t),tabindex:"0"},(e=this.categories[t])===null||e===void 0?void 0:e.label)})))}getDropdownHeader(){if(this.categories){if(this.category){return null}else{return this.labelCategories}}return this.i18nPlainText}componentDidRender(){if(this.isScrollStateDirty){if(!this.tmpDisableScrollIntoView){this.textInput.scrollIntoView()}this.isScrollStateDirty=false}}getResetButton(){return i("ix-icon-button",{onClick:()=>this.resetFilter(),class:{"reset-button":true,"hide-reset-button":!this.filterTokens.length&&!this.category},variant:"Primary",ghost:true,oval:true,icon:"clear",size:"16",tabindex:"1"})}render(){var t;return i(r,null,i("form",{ref:t=>this.formElement=t},i("div",{class:{"form-control":true,"input-container":true,focus:this.hasFocus,"no-icon":this.hideIcon}},i("ix-icon",{class:{"d-none":this.hideIcon},name:this.icon,size:"16"}),i("div",{class:"token-container"},i("ul",{class:"list-unstyled"},this.filterTokens.map(((t,e)=>i("li",{key:t.toString(),class:{animate__animated:true,animate__fadein:true}},i("ix-filter-chip",{onCloseClick:()=>this.removeToken(e)},this.getFilterChipLabel(t))))),this.categories===undefined?"":i("li",{class:{"category-preview":true,"d-none":!this.category}},(t=this.categories[this.category])===null||t===void 0?void 0:t.label),i("input",{class:{"text-input":true,"hide-placeholder":this.category!==undefined},ref:t=>this.textInput=t,type:"text",placeholder:this.placeholder}))),this.getResetButton())),i("ix-dropdown",{closeBehavior:"outside",trigger:this.textInput,triggerEvent:["click","focus"],header:this.getDropdownHeader(),class:{"d-none":!this.displayDropdown()}},this.renderDropdownContent()))}get hostElement(){return s(this)}static get watchers(){return{filterState:["watchFilterState"]}}};c.style=a;export{c as ix_category_filter};
2
- //# sourceMappingURL=p-24d2d95e.entry.js.map
1
+ import{r as t,c as e,h as i,H as r,g as s}from"./p-8fcd6f85.js";import{L as o,I as n}from"./p-6f819085.js";const a=".sc-ix-category-filter-h{display:block;position:relative}.sc-ix-category-filter-h .focus.sc-ix-category-filter{border-color:var(--theme-color-primary);box-shadow:0 0 0.25rem 0 var(--theme-color-primary) !important}.sc-ix-category-filter-h .reset-button.sc-ix-category-filter{position:absolute;top:0.25rem;right:0.25rem}.sc-ix-category-filter-h .reset-button.hide-reset-button.sc-ix-category-filter{display:none}.sc-ix-category-filter-h .input-container.sc-ix-category-filter{display:flex;height:100%;max-height:3.75rem;padding:1px 1.5rem 1px 2rem}.sc-ix-category-filter-h .input-container.no-icon.sc-ix-category-filter{padding-left:0.25rem}.sc-ix-category-filter-h .token-container.sc-ix-category-filter{flex-grow:1;overflow:hidden}.sc-ix-category-filter-h .text-input.sc-ix-category-filter{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;flex-grow:1;height:1.75rem}.sc-ix-category-filter-h .text-input.sc-ix-category-filter,.sc-ix-category-filter-h .text-input.sc-ix-category-filter:hover,.sc-ix-category-filter-h .text-input.sc-ix-category-filter:focus-visible{border:none;outline:none}.sc-ix-category-filter-h .text-input.hide-placeholder.sc-ix-category-filter::-moz-placeholder{opacity:0}.sc-ix-category-filter-h .text-input.hide-placeholder.sc-ix-category-filter::placeholder{opacity:0}.sc-ix-category-filter-h .list-unstyled.sc-ix-category-filter{display:flex;flex-wrap:wrap;list-style:none;padding:0;margin:0;overflow-y:auto}.sc-ix-category-filter-h ix-icon.sc-ix-category-filter{position:absolute;top:0.5rem;left:0.5rem}.sc-ix-category-filter-h ix-filter-chip.sc-ix-category-filter{margin-right:0.5rem}.sc-ix-category-filter-h .category-preview.sc-ix-category-filter{display:flex;align-items:center;height:1.5rem;background-color:var(--theme-bg-3);border-top-left-radius:1rem;border-bottom-left-radius:1rem;padding:0.5rem;margin:2px 0}.sc-ix-category-filter-h ul.sc-ix-category-filter{height:100%}.sc-ix-category-filter-h ul.sc-ix-category-filter>li.sc-ix-category-filter,.sc-ix-category-filter-h input.sc-ix-category-filter{padding-top:2px;padding-bottom:2px}.sc-ix-category-filter-h ix-dropdown.sc-ix-category-filter{min-width:10rem !important}.sc-ix-category-filter-h ix-dropdown.sc-ix-category-filter .dropdown-item-container.sc-ix-category-filter{display:flex;flex-direction:column}.sc-ix-category-filter-h ix-dropdown.sc-ix-category-filter .dropdown-item-container.sc-ix-category-filter .dropdown-item.sc-ix-category-filter{-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.143em;color:var(--theme-color-std-text);overflow:hidden;text-overflow:ellipsis;white-space:nowrap;height:2.5rem;margin:0.25rem 0.5rem;padding-inline:0.5rem;border-radius:100rem;width:auto}.sc-ix-category-filter-h ix-dropdown.sc-ix-category-filter .dropdown-item-container.sc-ix-category-filter .category-item.sc-ix-category-filter{border-end-end-radius:0;border-start-end-radius:0}.sc-ix-category-filter-h ix-dropdown.sc-ix-category-filter .dropdown-item-container.sc-ix-category-filter .category-item-value.sc-ix-category-filter{border-start-start-radius:0;border-end-start-radius:0}.sc-ix-category-filter-h ix-dropdown.sc-ix-category-filter .btn-toggle-operator.sc-ix-category-filter{margin-inline:0.5rem}";const c=class{constructor(i){t(this,i);this.inputChanged=e(this,"inputChanged",7);this.filterChanged=e(this,"filterChanged",7);this.ID_CUSTOM_FILTER_VALUE="CW_CUSTOM_FILTER_VALUE";this.textInput=undefined;this.hasFocus=undefined;this.categoryLogicalOperator=o.EQUAL;this.inputValue=undefined;this.category=undefined;this.filterTokens=[];this.initialState=undefined;this.filterState=undefined;this.placeholder=undefined;this.categories=undefined;this.nonSelectableCategories={};this.suggestions=undefined;this.icon="search";this.hideIcon=undefined;this.repeatCategories=true;this.tmpDisableScrollIntoView=true;this.labelCategories="Categories";this.i18nPlainText="Filter by text"}watchFilterState(t){this.setFilterState(t)}componentDidLoad(){var t,e;if(this.initialState!==undefined){this.setFilterState(this.initialState)}else if(this.filterState!==undefined){setTimeout((()=>this.setFilterState(this.filterState)))}(t=this.hostElement)===null||t===void 0?void 0:t.addEventListener("keydown",this.handleFormElementKeyDown.bind(this));(e=this.formElement)===null||e===void 0?void 0:e.addEventListener("submit",(t=>t.preventDefault()));if(this.textInput==null){console.warn("ix-category-filter - unable to add event listeners to native input element");return}this.textInput.addEventListener("focusin",(()=>{this.hasFocus=true}));this.textInput.addEventListener("focusout",(()=>this.hasFocus=false));this.textInput.addEventListener("input",(()=>{this.inputValue=this.textInput.value;const t=new n(this.inputValue,this.category);this.inputChanged.emit(t)}));this.textInput.addEventListener("keydown",this.handleInputElementKeyDown.bind(this))}setFilterState(t){this.filterTokens=[];for(const e of t.tokens){this.addToken(e,this.ID_CUSTOM_FILTER_VALUE,this.categoryLogicalOperator,false)}for(const e of t.categories){this.addToken(e.value,e.id,e.operator,false)}this.emitFilterEvent()}closeDropdown(){this.hostElement.querySelector("ix-dropdown").show=false}handleFormElementKeyDown(t){switch(t.code){case"Enter":case"NumpadEnter":if(!document.activeElement.classList.contains("dropdown-item")){return}const e=document.activeElement.getAttribute("data-id");if(this.hasCategorySelection()){if(this.category){this.addToken(e,this.category)}else if(document.activeElement.classList.contains("category-item-id")){this.selectCategory(e)}}else{this.addToken(e)}t.preventDefault();break;case"ArrowUp":this.focusPreviousItem();t.preventDefault();break;case"ArrowDown":this.focusNextItem();t.preventDefault();break;case"Escape":this.closeDropdown();break}}focusPreviousItem(){const t=document.activeElement.previousSibling;if(t instanceof HTMLElement){t.focus()}}focusNextItem(){const t=document.activeElement.nextSibling;if(t instanceof HTMLElement){t.focus()}}handleInputElementKeyDown(t){var e;switch(t.code){case"ArrowDown":const i=`.category-item-${this.category?"value":"id"}`;let r=this.hostElement.querySelector(i);if(r instanceof HTMLElement){r.focus();t.stopPropagation()}else if((e=this.suggestions)===null||e===void 0?void 0:e.length){r=this.hostElement.querySelector(".category-item");if(r instanceof HTMLElement){r.focus();t.stopPropagation()}}break;case"Backspace":if(this.textInput.value!==""){return}if(this.category){this.category=undefined;return}const s=this.filterTokens.length;if(s>0){this.removeToken(s-1)}break;case"Enter":case"NumpadEnter":this.addToken(this.inputValue,this.category);t.preventDefault();break}}emitFilterEvent(){const t=this.filterTokens.filter((t=>t.id===this.ID_CUSTOM_FILTER_VALUE)).map((t=>t.value));const e=this.filterTokens.filter((t=>t.id!==this.ID_CUSTOM_FILTER_VALUE));const i={tokens:t,categories:e};this.filterChanged.emit(i)}addToken(t,e=this.ID_CUSTOM_FILTER_VALUE,i=this.categoryLogicalOperator,r=true){if(t===undefined||t===null){return}const s=t.trim();if(s===""){return}if(this.hasToken(s)){return}const n={id:e,value:s,operator:i};this.filterTokens=[...this.filterTokens,n];this.textInput.value="";this.inputValue="";this.categoryLogicalOperator=o.EQUAL;if(this.category){this.category=undefined}this.isScrollStateDirty=true;this.textInput.focus();if(r){this.emitFilterEvent()}this.closeDropdown()}removeToken(t){this.filterTokens=this.filterTokens.filter(((e,i)=>i!==t));this.emitFilterEvent()}getCategoryIds(){const t=[];for(const e in this.categories){if(Object.prototype.hasOwnProperty.call(this.categories,e)){t.push(e)}}return t}selectCategory(t){this.category=t;this.textInput.value="";this.inputValue="";this.textInput.focus()}resetFilter(){this.closeDropdown();this.filterTokens=[];this.emitFilterEvent()}filterMultiples(t){if(this.repeatCategories){return true}const e=this.filterTokens.find((e=>e.id===t));return!e}hasToken(t){return this.filterTokens.some((e=>{const i=e.value===t;if(!i){return false}if(this.category){return this.category===e.id}if(e.id){return e.id===this.ID_CUSTOM_FILTER_VALUE}return i}))}filterDuplicateTokens(t){return!this.hasToken(t)}filterByInput(t){if(this.inputValue===undefined||this.inputValue===""){return true}return t.toLowerCase().indexOf(this.inputValue.toLowerCase())!==-1}toggleCategoryOperator(){switch(this.categoryLogicalOperator){case o.EQUAL:this.categoryLogicalOperator=o.NOT_EQUAL;break;case o.NOT_EQUAL:this.categoryLogicalOperator=o.EQUAL;break}}getFilterChipLabel(t){var e,i,r;if(t.id===this.ID_CUSTOM_FILTER_VALUE){return t.value}const s=t.operator===o.EQUAL?"=":"!=";const n=(r=(i=(e=this.categories[t.id])===null||e===void 0?void 0:e.label)!==null&&i!==void 0?i:this.nonSelectableCategories[t.id])!==null&&r!==void 0?r:t.id;return`${n} ${s} ${t.value}`}getFilteredSuggestions(){var t,e;if(!((t=this.suggestions)===null||t===void 0?void 0:t.length)){return[]}return(e=this.suggestions)===null||e===void 0?void 0:e.filter((t=>this.filterByInput(t))).filter((t=>this.filterDuplicateTokens(t)))}hasCategorySelection(){return this.categories!==undefined}displayDropdown(){if(this.hasCategorySelection()){return true}if(this.suggestions!==undefined){return this.getFilteredSuggestions().length>0}return false}renderPlainSuggestions(){return i("div",{class:"dropdown-item-container"},this.getFilteredSuggestions().map((t=>i("button",{class:"dropdown-item","data-id":t,onClick:()=>this.addToken(t),key:t,title:t},t))))}renderCategoryValues(){var t,e;return i("div",{class:"dropdown-item-container"},i("button",{class:"btn btn-invisible-secondary btn-icon btn-toggle-operator",onClick:()=>this.toggleCategoryOperator(),tabindex:"-1"},this.categoryLogicalOperator===o.NOT_EQUAL?"=":"!="),i("div",{class:"dropdown-header"},(t=this.categories[this.category])===null||t===void 0?void 0:t.label),(e=this.categories[this.category])===null||e===void 0?void 0:e.options.filter((t=>this.filterByInput(t))).filter((t=>this.filterDuplicateTokens(t))).map((t=>i("button",{class:"dropdown-item category-item-value","data-id":t,title:t,key:t,onClick:()=>this.addToken(t,this.category)},`${this.categoryLogicalOperator===o.EQUAL?"=":"!="} ${t}`))))}renderDropdownContent(){if(this.hasCategorySelection()){if(this.category){return this.renderCategoryValues()}else{return this.renderCategorySelection()}}else return this.renderPlainSuggestions()}renderCategorySelection(){var t;return i("div",{class:"dropdown-item-container"},(t=this.getCategoryIds())===null||t===void 0?void 0:t.filter((t=>this.filterByInput(this.categories[t].label))).filter((t=>this.filterMultiples(t))).map((t=>{var e;return i("button",{class:"dropdown-item category-item category-item-id","data-id":t,title:this.categories[t].label,key:t,onClick:()=>this.selectCategory(t),tabindex:"0"},(e=this.categories[t])===null||e===void 0?void 0:e.label)})))}getDropdownHeader(){if(this.categories){if(this.category){return null}else{return this.labelCategories}}return this.i18nPlainText}componentDidRender(){if(this.isScrollStateDirty){if(!this.tmpDisableScrollIntoView){this.textInput.scrollIntoView()}this.isScrollStateDirty=false}}getResetButton(){return i("ix-icon-button",{onClick:()=>this.resetFilter(),class:{"reset-button":true,"hide-reset-button":!this.filterTokens.length&&!this.category},variant:"Primary",ghost:true,oval:true,icon:"clear",size:"16",tabindex:"1"})}render(){var t;return i(r,null,i("form",{ref:t=>this.formElement=t},i("div",{class:{"form-control":true,"input-container":true,focus:this.hasFocus,"no-icon":this.hideIcon}},i("ix-icon",{class:{"d-none":this.hideIcon},name:this.icon,size:"16"}),i("div",{class:"token-container"},i("ul",{class:"list-unstyled"},this.filterTokens.map(((t,e)=>i("li",{key:t.toString(),class:{animate__animated:true,animate__fadein:true}},i("ix-filter-chip",{onCloseClick:()=>this.removeToken(e)},this.getFilterChipLabel(t))))),this.categories===undefined?"":i("li",{class:{"category-preview":true,"d-none":!this.category}},(t=this.categories[this.category])===null||t===void 0?void 0:t.label),i("input",{class:{"text-input":true,"hide-placeholder":this.category!==undefined},ref:t=>this.textInput=t,type:"text",placeholder:this.placeholder}))),this.getResetButton())),i("ix-dropdown",{closeBehavior:"outside",trigger:this.textInput,triggerEvent:["click","focus"],header:this.getDropdownHeader(),class:{"d-none":!this.displayDropdown()}},this.renderDropdownContent()))}get hostElement(){return s(this)}static get watchers(){return{filterState:["watchFilterState"]}}};c.style=a;export{c as ix_category_filter};
2
+ //# sourceMappingURL=p-c9c9f2b5.entry.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"names":["categoryFilterCss","CategoryFilter","this","ID_CUSTOM_FILTER_VALUE","LogicalFilterOperator","EQUAL","watchFilterState","newValue","setFilterState","componentDidLoad","initialState","undefined","filterState","setTimeout","_a","hostElement","addEventListener","handleFormElementKeyDown","bind","_b","formElement","e","preventDefault","textInput","console","warn","hasFocus","inputValue","value","inputState","InputState","category","inputChanged","emit","handleInputElementKeyDown","state","filterTokens","token","tokens","addToken","categoryLogicalOperator","categories","id","operator","emitFilterEvent","closeDropdown","querySelector","show","code","document","activeElement","classList","contains","getAttribute","hasCategorySelection","selectCategory","focusPreviousItem","focusNextItem","sibling","previousSibling","HTMLElement","focus","nextSibling","selector","item","stopPropagation","suggestions","length","tokenCount","removeToken","filter","map","filterChanged","emitEvent","newToken","trim","hasToken","pair","isScrollStateDirty","index","_","i","getCategoryIds","ids","Object","prototype","hasOwnProperty","call","push","resetFilter","filterMultiples","repeatCategories","isCategoryAlreadySet","find","some","filterToken","hasSameValue","filterDuplicateTokens","filterByInput","toLowerCase","indexOf","toggleCategoryOperator","NOT_EQUAL","getFilterChipLabel","operatorString","label","_c","nonSelectableCategories","getFilteredSuggestions","displayDropdown","renderPlainSuggestions","h","class","suggestion","onClick","key","title","renderCategoryValues","tabindex","options","renderDropdownContent","renderCategorySelection","getDropdownHeader","labelCategories","i18nPlainText","componentDidRender","tmpDisableScrollIntoView","scrollIntoView","getResetButton","variant","ghost","oval","icon","size","render","Host","ref","el","hideIcon","name","toString","animate__animated","animate__fadein","onCloseClick","type","placeholder","closeBehavior","trigger","triggerEvent","header"],"sources":["./src/components/category-filter/category-filter.scss?tag=ix-category-filter&encapsulation=scoped","./src/components/category-filter/category-filter.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 'mixins/fonts';\n@import 'mixins/hover';\n@import 'mixins/shadows';\n@import 'mixins/text-truncation';\n\n:host {\n display: block;\n position: relative;\n\n .focus {\n border-color: var(--theme-color-primary);\n box-shadow: 0 0 $tiny-space 0 var(--theme-color-primary) !important;\n }\n\n .reset-button {\n position: absolute;\n top: $tiny-space;\n right: $tiny-space;\n }\n\n .reset-button.hide-reset-button {\n display: none;\n }\n\n .input-container {\n display: flex;\n height: 100%;\n max-height: 3.75rem;\n padding: 1px $large-space 1px $x-large-space;\n\n &.no-icon {\n padding-left: $tiny-space;\n }\n }\n\n .token-container {\n flex-grow: 1;\n overflow: hidden;\n }\n\n .text-input {\n @include ellipsis;\n @include text-default;\n background: transparent;\n flex-grow: 1;\n height: 1.75rem;\n\n &,\n &:hover,\n &:focus-visible {\n border: none;\n outline: none;\n }\n\n &.hide-placeholder::placeholder {\n opacity: 0;\n }\n }\n\n .list-unstyled {\n display: flex;\n flex-wrap: wrap;\n list-style: none;\n padding: 0;\n margin: 0;\n overflow-y: auto;\n }\n\n ix-icon {\n position: absolute;\n top: $small-space;\n left: $small-space;\n }\n\n ix-filter-chip {\n margin-right: $small-space;\n }\n\n .category-preview {\n display: flex;\n align-items: center;\n height: $large-space;\n background-color: var(--theme-bg-3);\n border-top-left-radius: $default-space;\n border-bottom-left-radius: $default-space;\n padding: $small-space;\n margin: 2px 0;\n }\n\n ul {\n height: 100%;\n }\n\n ul > li,\n input {\n padding-top: 2px;\n padding-bottom: 2px;\n }\n\n ix-dropdown {\n min-width: 10rem !important;\n\n .dropdown-item-container {\n display: flex;\n flex-direction: column;\n\n .dropdown-item {\n @include text-default-single;\n @include ellipsis;\n height: $large-control-height;\n margin: $tiny-space $small-space;\n padding-inline: $small-space;\n border-radius: 100rem;\n width: auto;\n }\n\n .category-item {\n border-end-end-radius: 0;\n border-start-end-radius: 0;\n }\n\n .category-item-value {\n border-start-start-radius: 0;\n border-end-start-radius: 0;\n }\n }\n\n .btn-toggle-operator {\n margin-inline: $small-space;\n }\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 Prop,\n State,\n Watch,\n} from '@stencil/core';\nimport { FilterState } from './filter-state';\nimport { InputState } from './input-state';\nimport { LogicalFilterOperator } from './logical-filter-operator';\n\n@Component({\n tag: 'ix-category-filter',\n styleUrl: 'category-filter.scss',\n scoped: true,\n})\nexport class CategoryFilter {\n private readonly ID_CUSTOM_FILTER_VALUE = 'CW_CUSTOM_FILTER_VALUE';\n\n @State() private textInput?: HTMLInputElement;\n private formElement?: HTMLFormElement;\n private isScrollStateDirty: boolean;\n\n @Element() hostElement: HTMLIxCategoryFilterElement;\n\n @State() hasFocus: boolean;\n @State() categoryLogicalOperator = LogicalFilterOperator.EQUAL;\n @State() inputValue: string;\n @State() category: string;\n @State() filterTokens: Array<{\n id: string;\n value: string;\n operator: LogicalFilterOperator;\n }> = [];\n\n /**\n * When set this will initially populate the component with the provided search criteria.\n * This will trigger all input events accordingly.\n * @deprecated Will be removed with 2.0.0. Use the member filterState instead.\n */\n @Prop() initialState: FilterState;\n\n /**\n * A set of search criteria to populate the component with.\n */\n @Prop() filterState: FilterState;\n\n /**\n * Placeholder text to be displayed in an empty input field.\n */\n @Prop() placeholder: string;\n\n /**\n * Configuration object hash used to populate the dropwdown menu for typeahead and quick selection functionality.\n * Each ID maps to an object with a label and an array of options to select from.\n */\n @Prop() categories: {\n [id: string]: {\n label: string;\n options: string[];\n };\n };\n\n /**\n * In certain use cases some categories may not be available for selection anymore.\n * To allow proper display of set filters with these categories this ID to label mapping can be populated.\n *\n * Configuration object hash used to supply labels to the filter chips in the input field.\n * Each ID maps to a string representing the label to display.\n */\n @Prop() nonSelectableCategories?: {\n [id: string]: string;\n } = {};\n\n /**\n * A list of strings that will be supplied as typeahead suggestions not tied to any categories.\n */\n @Prop() suggestions: string[];\n\n /**\n * The icon next to the actual text input\n * Defaults to 'search'\n */\n @Prop() icon = 'search';\n\n /**\n * Allows to hide the icon inside the text input.\n * Defaults to false\n */\n @Prop() hideIcon: boolean;\n\n /**\n * If set to true allows that a single category can be set more than once.\n * An already set category will not appear in the category dropdown if set to false.\n *\n * Defaults to true\n */\n @Prop() repeatCategories = true;\n\n /**\n * @internal For debugging purposes only!\n */\n @Prop() tmpDisableScrollIntoView = true;\n\n /**\n * i18n\n */\n @Prop() labelCategories = 'Categories';\n\n /**\n * i18n\n */\n @Prop() i18nPlainText = 'Filter by text';\n\n /**\n * Event dispatched whenever the text input changes.\n */\n @Event() inputChanged: EventEmitter<InputState>;\n\n /**\n * Event dispatched whenever the filter state changes.\n */\n @Event() filterChanged: EventEmitter<FilterState>;\n\n @Watch('filterState')\n watchFilterState(newValue) {\n this.setFilterState(newValue);\n }\n\n componentDidLoad() {\n if (this.initialState !== undefined) {\n this.setFilterState(this.initialState);\n } else if (this.filterState !== undefined) {\n setTimeout(() => this.setFilterState(this.filterState));\n }\n\n this.hostElement?.addEventListener(\n 'keydown',\n this.handleFormElementKeyDown.bind(this)\n );\n\n this.formElement?.addEventListener('submit', (e) => e.preventDefault());\n\n if (this.textInput == null) {\n console.warn(\n 'ix-category-filter - unable to add event listeners to native input element'\n );\n return;\n }\n\n this.textInput.addEventListener('focusin', () => {\n this.hasFocus = true;\n });\n this.textInput.addEventListener('focusout', () => (this.hasFocus = false));\n this.textInput.addEventListener('input', () => {\n this.inputValue = this.textInput.value;\n const inputState = new InputState(this.inputValue, this.category);\n this.inputChanged.emit(inputState);\n });\n this.textInput.addEventListener(\n 'keydown',\n this.handleInputElementKeyDown.bind(this)\n );\n }\n\n private setFilterState(state: FilterState) {\n this.filterTokens = [];\n\n for (const token of state.tokens) {\n this.addToken(\n token,\n this.ID_CUSTOM_FILTER_VALUE,\n this.categoryLogicalOperator,\n false\n );\n }\n\n for (const category of state.categories) {\n this.addToken(category.value, category.id, category.operator, false);\n }\n\n this.emitFilterEvent();\n }\n\n private closeDropdown() {\n this.hostElement.querySelector('ix-dropdown').show = false;\n }\n\n private handleFormElementKeyDown(e: KeyboardEvent) {\n switch (e.code) {\n case 'Enter':\n case 'NumpadEnter':\n if (!document.activeElement.classList.contains('dropdown-item')) {\n return;\n }\n\n const token = document.activeElement.getAttribute('data-id');\n\n if (this.hasCategorySelection()) {\n if (this.category) {\n this.addToken(token, this.category);\n } else if (\n document.activeElement.classList.contains('category-item-id')\n ) {\n this.selectCategory(token);\n }\n } else {\n this.addToken(token);\n }\n\n e.preventDefault();\n break;\n\n case 'ArrowUp':\n this.focusPreviousItem();\n e.preventDefault();\n break;\n\n case 'ArrowDown':\n this.focusNextItem();\n e.preventDefault();\n break;\n\n case 'Escape':\n this.closeDropdown();\n break;\n }\n }\n\n private focusPreviousItem() {\n const sibling = document.activeElement.previousSibling;\n if (sibling instanceof HTMLElement) {\n sibling.focus();\n }\n }\n\n private focusNextItem() {\n const sibling = document.activeElement.nextSibling;\n if (sibling instanceof HTMLElement) {\n sibling.focus();\n }\n }\n\n private handleInputElementKeyDown(e: KeyboardEvent) {\n switch (e.code) {\n case 'ArrowDown':\n const selector = `.category-item-${this.category ? 'value' : 'id'}`;\n let item = this.hostElement.querySelector(selector);\n\n if (item instanceof HTMLElement) {\n item.focus();\n e.stopPropagation();\n } else if (this.suggestions?.length) {\n item = this.hostElement.querySelector('.category-item');\n if (item instanceof HTMLElement) {\n item.focus();\n e.stopPropagation();\n }\n }\n break;\n\n case 'Backspace':\n if (this.textInput.value !== '') {\n return;\n }\n\n if (this.category) {\n this.category = undefined;\n return;\n }\n\n const tokenCount = this.filterTokens.length;\n if (tokenCount > 0) {\n this.removeToken(tokenCount - 1);\n }\n break;\n\n case 'Enter':\n case 'NumpadEnter':\n this.addToken(this.inputValue, this.category);\n e.preventDefault();\n break;\n }\n }\n\n private emitFilterEvent() {\n const tokens = this.filterTokens\n .filter((item) => item.id === this.ID_CUSTOM_FILTER_VALUE)\n .map((item) => item.value);\n const categories = this.filterTokens.filter(\n (item) => item.id !== this.ID_CUSTOM_FILTER_VALUE\n );\n const filterState: FilterState = {\n tokens,\n categories,\n };\n\n this.filterChanged.emit(filterState);\n }\n\n private addToken(\n token: string,\n category: string = this.ID_CUSTOM_FILTER_VALUE,\n operator = this.categoryLogicalOperator,\n emitEvent = true\n ) {\n if (token === undefined || token === null) {\n return;\n }\n\n const newToken = token.trim();\n\n if (newToken === '') {\n return;\n }\n\n if (this.hasToken(newToken)) {\n return;\n }\n\n const pair = { id: category, value: newToken, operator };\n this.filterTokens = [...this.filterTokens, pair];\n this.textInput.value = '';\n this.inputValue = '';\n this.categoryLogicalOperator = LogicalFilterOperator.EQUAL;\n\n if (this.category) {\n this.category = undefined;\n }\n\n this.isScrollStateDirty = true;\n\n this.textInput.focus();\n\n if (emitEvent) {\n this.emitFilterEvent();\n }\n\n this.closeDropdown();\n }\n\n private removeToken(index: number) {\n this.filterTokens = this.filterTokens.filter((_, i) => i !== index);\n this.emitFilterEvent();\n }\n\n private getCategoryIds() {\n const ids = [];\n for (const id in this.categories) {\n if (Object.prototype.hasOwnProperty.call(this.categories, id)) {\n ids.push(id);\n }\n }\n\n return ids;\n }\n\n private selectCategory(category: string) {\n this.category = category;\n this.textInput.value = '';\n this.inputValue = '';\n this.textInput.focus();\n }\n\n private resetFilter() {\n this.closeDropdown();\n this.filterTokens = [];\n this.emitFilterEvent();\n }\n\n private filterMultiples(value: string) {\n if (this.repeatCategories) {\n return true;\n }\n\n const isCategoryAlreadySet = this.filterTokens.find(\n (token) => token.id === value\n );\n\n return !isCategoryAlreadySet;\n }\n\n private hasToken(token: string) {\n return this.filterTokens.some((filterToken) => {\n const hasSameValue = filterToken.value === token;\n\n if (!hasSameValue) {\n return false;\n }\n\n if (this.category) {\n return this.category === filterToken.id;\n }\n\n if (filterToken.id) {\n return filterToken.id === this.ID_CUSTOM_FILTER_VALUE;\n }\n\n return hasSameValue;\n });\n }\n\n private filterDuplicateTokens(value: string) {\n return !this.hasToken(value);\n }\n\n private filterByInput(value: string) {\n if (this.inputValue === undefined || this.inputValue === '') {\n return true;\n }\n\n return value.toLowerCase().indexOf(this.inputValue.toLowerCase()) !== -1;\n }\n\n private toggleCategoryOperator() {\n switch (this.categoryLogicalOperator) {\n case LogicalFilterOperator.EQUAL:\n this.categoryLogicalOperator = LogicalFilterOperator.NOT_EQUAL;\n break;\n\n case LogicalFilterOperator.NOT_EQUAL:\n this.categoryLogicalOperator = LogicalFilterOperator.EQUAL;\n break;\n }\n }\n\n private getFilterChipLabel(value: {\n id: string;\n value: string;\n operator: LogicalFilterOperator;\n }): string {\n if (value.id === this.ID_CUSTOM_FILTER_VALUE) {\n return value.value;\n }\n\n const operatorString =\n value.operator === LogicalFilterOperator.EQUAL ? '=' : '!=';\n const label =\n this.categories[value.id]?.label ??\n this.nonSelectableCategories[value.id] ??\n value.id;\n\n return `${label} ${operatorString} ${value.value}`;\n }\n\n private getFilteredSuggestions() {\n if (!this.suggestions?.length) {\n return [];\n }\n\n return this.suggestions\n ?.filter((value) => this.filterByInput(value))\n .filter((value) => this.filterDuplicateTokens(value));\n }\n\n private hasCategorySelection() {\n return this.categories !== undefined;\n }\n\n private displayDropdown() {\n if (this.hasCategorySelection()) {\n return true;\n }\n\n if (this.suggestions !== undefined) {\n return this.getFilteredSuggestions().length > 0;\n }\n\n return false;\n }\n\n private renderPlainSuggestions() {\n return (\n <div class=\"dropdown-item-container\">\n {this.getFilteredSuggestions().map((suggestion) => (\n <button\n class=\"dropdown-item\"\n data-id={suggestion}\n onClick={() => this.addToken(suggestion)}\n key={suggestion}\n title={suggestion}\n >\n {suggestion}\n </button>\n ))}\n </div>\n );\n }\n\n private renderCategoryValues() {\n return (\n <div class=\"dropdown-item-container\">\n <button\n class=\"btn btn-invisible-secondary btn-icon btn-toggle-operator\"\n onClick={() => this.toggleCategoryOperator()}\n tabindex=\"-1\"\n >\n {this.categoryLogicalOperator === LogicalFilterOperator.NOT_EQUAL\n ? '='\n : '!='}\n </button>\n <div class=\"dropdown-header\">\n {this.categories[this.category]?.label}\n </div>\n {this.categories[this.category]?.options\n .filter((value) => this.filterByInput(value))\n .filter((value) => this.filterDuplicateTokens(value))\n .map((id) => (\n <button\n class=\"dropdown-item category-item-value\"\n data-id={id}\n title={id}\n key={id}\n onClick={() => this.addToken(id, this.category)}\n >\n {`${\n this.categoryLogicalOperator === LogicalFilterOperator.EQUAL\n ? '='\n : '!='\n } ${id}`}\n </button>\n ))}\n </div>\n );\n }\n\n private renderDropdownContent() {\n if (this.hasCategorySelection()) {\n if (this.category) {\n return this.renderCategoryValues();\n } else {\n return this.renderCategorySelection();\n }\n } else return this.renderPlainSuggestions();\n }\n\n private renderCategorySelection() {\n return (\n <div class=\"dropdown-item-container\">\n {this.getCategoryIds()\n ?.filter((id) => this.filterByInput(this.categories[id].label))\n .filter((id) => this.filterMultiples(id))\n .map((id) => (\n <button\n class=\"dropdown-item category-item category-item-id\"\n data-id={id}\n title={this.categories[id].label}\n key={id}\n onClick={() => this.selectCategory(id)}\n tabindex=\"0\"\n >\n {this.categories[id]?.label}\n </button>\n ))}\n </div>\n );\n }\n\n private getDropdownHeader() {\n if (this.categories) {\n if (this.category) {\n return null;\n } else {\n return this.labelCategories;\n }\n }\n\n return this.i18nPlainText;\n }\n\n componentDidRender() {\n if (this.isScrollStateDirty) {\n if (!this.tmpDisableScrollIntoView) {\n this.textInput.scrollIntoView();\n }\n this.isScrollStateDirty = false;\n }\n }\n\n private getResetButton() {\n return (\n <ix-icon-button\n onClick={() => this.resetFilter()}\n class={{\n 'reset-button': true,\n 'hide-reset-button': !this.filterTokens.length && !this.category,\n }}\n variant=\"Primary\"\n ghost\n oval\n icon=\"clear\"\n size=\"16\"\n tabindex=\"1\"\n ></ix-icon-button>\n );\n }\n\n render() {\n return (\n <Host>\n <form ref={(el) => (this.formElement = el)}>\n <div\n class={{\n 'form-control': true,\n 'input-container': true,\n focus: this.hasFocus,\n 'no-icon': this.hideIcon,\n }}\n >\n <ix-icon\n class={{ 'd-none': this.hideIcon }}\n name={this.icon}\n size=\"16\"\n ></ix-icon>\n <div class=\"token-container\">\n <ul class=\"list-unstyled\">\n {this.filterTokens.map((value, index) => (\n <li\n key={value.toString()}\n class={{\n animate__animated: true,\n animate__fadein: true,\n }}\n >\n <ix-filter-chip\n onCloseClick={() => this.removeToken(index)}\n >\n {this.getFilterChipLabel(value)}\n </ix-filter-chip>\n </li>\n ))}\n {this.categories === undefined ? (\n ''\n ) : (\n <li\n class={{\n 'category-preview': true,\n 'd-none': !this.category,\n }}\n >\n {this.categories[this.category]?.label}\n </li>\n )}\n <input\n class={{\n 'text-input': true,\n 'hide-placeholder': this.category !== undefined,\n }}\n ref={(el) => (this.textInput = el)}\n type=\"text\"\n placeholder={this.placeholder}\n ></input>\n </ul>\n </div>\n {this.getResetButton()}\n </div>\n </form>\n\n <ix-dropdown\n closeBehavior=\"outside\"\n trigger={this.textInput}\n triggerEvent={['click', 'focus']}\n header={this.getDropdownHeader()}\n class={{ 'd-none': !this.displayDropdown() }}\n >\n {this.renderDropdownContent()}\n </ix-dropdown>\n </Host>\n );\n }\n}\n"],"mappings":"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"}
@@ -0,0 +1,2 @@
1
+ import{r as e,c as t,h as i,H as s,g as n}from"./p-8fcd6f85.js";const l=".sc-ix-select-h{display:inline-block;position:relative;height:auto;width:100%}.sc-ix-select-h .select.sc-ix-select{position:relative;display:flex;align-items:center;height:auto;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}.sc-ix-select-h .select.sc-ix-select:not(.disabled):not(:disabled){cursor:pointer}.sc-ix-select-h .select.sc-ix-select:not(.disabled):not(:disabled):hover{background-color:var(--theme-input--background--hover);border-color:var(--theme-input--border-color--hover)}.sc-ix-select-h .select.sc-ix-select:focus-within{background-color:var(--theme-input--background--focus);border-color:var(--theme-input--border-color--focus);outline:1px solid #119fff !important;outline-offset:var(--theme-input--focus--outline-offset)}.sc-ix-select-h .hidden.sc-ix-select{display:none !important}.sc-ix-select-h .trigger.sc-ix-select{display:flex;align-items:center;flex-grow:1;height:100%}.sc-ix-select-h .input-container.sc-ix-select{display:flex;position:relative;align-items:flex-start;width:100%}.sc-ix-select-h .input-container.sc-ix-select .chips.sc-ix-select{position:relative;display:flex;align-items:center;flex-wrap:wrap;height:100%;max-height:3.5rem;flex-grow:1;overflow-y:auto}.sc-ix-select-h .input-container.sc-ix-select .chips.sc-ix-select>ix-filter-chip.sc-ix-select{margin:0.1rem}.sc-ix-select-h .input-container.sc-ix-select input.sc-ix-select{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%}.sc-ix-select-h .input-container.sc-ix-select input.sc-ix-select,.sc-ix-select-h .input-container.sc-ix-select input.sc-ix-select:hover,.sc-ix-select-h .input-container.sc-ix-select input.sc-ix-select:focus-visible{border:none;outline:none}.sc-ix-select-h .input-container.sc-ix-select input.sc-ix-select::-moz-placeholder{color:var(--theme-input-select-icon--color)}.sc-ix-select-h .input-container.sc-ix-select input.sc-ix-select::placeholder{color:var(--theme-input-select-icon--color)}.sc-ix-select-h .input-container.sc-ix-select input.hide-placeholder.sc-ix-select::-moz-placeholder{opacity:0}.sc-ix-select-h .input-container.sc-ix-select input.hide-placeholder.sc-ix-select::placeholder{opacity:0}.sc-ix-select-h .chevron-down-container.sc-ix-select{display:flex;align-items:center;justify-content:center;width:2rem;min-width:2rem;height:100%}.sc-ix-select-h .editable.sc-ix-select .chevron-down-container.sc-ix-select:not(.disabled):not(:disabled){cursor:pointer}.sc-ix-select-h .editable.sc-ix-select .chevron-down-container.sc-ix-select:not(.disabled):not(:disabled):hover{background-color:var(--theme-btn-invisible-secondary--background--hover)}.sc-ix-select-h .editable.sc-ix-select .chevron-down-container.sc-ix-select:not(.disabled):not(:disabled){cursor:pointer}.sc-ix-select-h .editable.sc-ix-select .chevron-down-container.sc-ix-select:not(.disabled):not(:disabled):active{background-color:var(--theme-btn-invisible-secondary--background--active)}.sc-ix-select-h .add-item.sc-ix-select{display:flex;justify-content:flex-start;align-items:center;position:relative;width:100%}.sc-ix-select-h .select-list-header.sc-ix-select{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 2rem}";const c=class{constructor(i){e(this,i);this.itemSelectionChange=t(this,"itemSelectionChange",7);this.addItem=t(this,"addItem",7);this.selectedIndices=[];this.allowClear=false;this.mode="single";this.editable=false;this.disabled=false;this.readonly=false;this.i18nPlaceholder="Select an option";this.i18nPlaceholderEditable="Type of select option";this.i18nSelectListHeader="Please select an option";this.i18nNoMatches="No matches";this.hideListHeader=false;this.dropdownShow=false;this.value=undefined;this.dropdownWrapperRef=undefined;this.dropdownAnchor=undefined;this.isDropdownEmpty=false;this.hasFocus=false;this.navigationItem=undefined;this.inputFilterText=undefined;this.inputValue=undefined}get items(){return Array.from(this.hostElement.querySelectorAll("ix-select-item"))}get selectedItems(){return this.items.filter((e=>e.selected))}get addItemButton(){return this.hostElement.querySelector(".add-item")}get isSingleMode(){return this.mode==="single"}get isMultipleMode(){return this.mode==="multiple"}get isEveryDropdownItemHidden(){return this.items.every((e=>e.classList.contains("d-none")))}watchSelectedIndices(e){if(!e){this.selectValue([]);return}if(Array.isArray(e)){this.selectValue([...e]);return}this.selectValue([e])}onItemClicked(e){const t=e.detail;this.emitItemClick(t)}emitItemClick(e){if(this.isMultipleMode&&Array.isArray(this.selectedIndices)){if(this.selectedIndices.includes(e)){this.selectedIndices=this.selectedIndices.filter((t=>t!==e))}else{this.selectedIndices=[...this.selectedIndices,e]}}else{this.selectedIndices=[e]}this.selectValue(this.selectedIndices);this.itemSelectionChange.emit(this.selectedIndices)}emitAddItem(e){if(e.trim()===""){return}const t=document.createElement("ix-select-item");t.value=e;t.label=e;this.addItemRef.appendChild(t);this.clearInput();this.emitItemClick(e);this.addItem.emit(e)}selectValue(e){var t;this.items.forEach((t=>{t.selected=e.some((e=>e===t.value))}));this.value=this.selectedItems.map((e=>e.label));if(this.isSingleMode){this.inputValue=((t=this.value)===null||t===void 0?void 0:t.length)?this.value[0]:null;return}this.inputValue=null}componentWillLoad(){if(this.selectedIndices){this.selectValue(Array.isArray(this.selectedIndices)?this.selectedIndices:[this.selectedIndices])}}onLabelChange(e){e.preventDefault();e.stopImmediatePropagation();this.selectValue(Array.isArray(this.selectedIndices)?this.selectedIndices:[this.selectedIndices])}disconnectedCallback(){if(this.labelMutationObserver){this.labelMutationObserver.disconnect()}}itemExists(e){return this.items.find((t=>t.label===e))}dropdownVisibilityChanged(e){this.dropdownShow=e.detail;this.hasFocus=e.detail;if(e.detail){this.inputRef.focus();this.inputRef.select();this.removeHiddenFromItems();this.isDropdownEmpty=this.isEveryDropdownItemHidden}else{this.navigationItem=undefined}}async onKeyDown(e){if(!this.dropdownShow){return}if(e.code==="ArrowDown"||e.code==="ArrowUp"){this.onArrowNavigation(e)}if(e.code==="Enter"||e.code==="NumpadEnter"){await this.onEnterNavigation()}if(e.code==="Escape"){this.dropdownShow=false}}async onEnterNavigation(){var e,t;if(this.isMultipleMode){return}if(this.editable&&!this.itemExists(this.inputFilterText)){this.emitAddItem(this.inputFilterText);this.navigationItem=this.items[this.items.length-1]}(e=this.navigationItem)===null||e===void 0?void 0:e.onItemClick();await((t=this.dropdownRef)===null||t===void 0?void 0:t.updatePosition());if(this.isSingleMode&&!this.editable){this.dropdownShow=false}}onArrowNavigation(e){e.stopPropagation();e.preventDefault();const t=this.items.find((e=>document.activeElement===e.querySelector("button")));this.navigationItem=t;const i=this.items.filter((e=>!e.classList.contains("d-none")));const s=i.indexOf(this.navigationItem);if(e.code==="ArrowDown"&&s<i.length-1){this.navigationItem=i[s+1]}else if(e.code==="ArrowUp"&&s>0){this.navigationItem=i[s-1]}this.setHoverEffectForNavigatedSelectItem()}setHoverEffectForNavigatedSelectItem(){var e;(e=this.navigationItem)===null||e===void 0?void 0:e.querySelector("button").focus()}filterItemsWithTypeahead(){this.inputFilterText=this.inputRef.value;if(this.inputFilterText){this.items.forEach((e=>{e.classList.remove("d-none");if(!e.label.toLowerCase().includes(this.inputFilterText.toLowerCase())){e.classList.add("d-none")}}))}else{this.removeHiddenFromItems()}this.isDropdownEmpty=this.isEveryDropdownItemHidden}removeHiddenFromItems(){this.items.forEach((e=>{e.classList.remove("d-none")}))}clearInput(){this.inputRef.value="";this.inputFilterText=""}clear(){this.clearInput();this.value=[];this.selectedIndices=[];this.itemSelectionChange.emit(null);this.dropdownShow=false}onInputBlur(e){if(this.editable){return}if(this.isSingleMode){if(this.dropdownShow&&this.isDropdownEmpty){this.dropdownShow=false}}if(!this.dropdownShow&&this.mode!=="multiple"){e.target["value"]=this.value}}placeholderValue(){if(this.editable){return this.i18nPlaceholderEditable}if(this.readonly){return""}return this.i18nPlaceholder}render(){var e,t,n;return i(s,null,i("div",{class:{"form-control":true,select:true,focus:this.hasFocus,editable:this.editable,disabled:this.disabled,readonly:this.readonly},ref:e=>{this.dropdownAnchor=e;if(!this.editable)this.dropdownWrapperRef=e}},i("div",{class:"input-container"},i("div",{class:"chips"},this.isMultipleMode?(e=this.selectedItems)===null||e===void 0?void 0:e.map((e=>i("ix-filter-chip",{disabled:this.disabled||this.readonly,key:e.value,onCloseClick:t=>{t.preventDefault();t.stopPropagation();this.emitItemClick(e.value)}},e.label))):"",i("div",{class:"trigger"},i("input",{"data-testid":"input",disabled:this.disabled,readOnly:this.readonly,type:"text",class:{"allow-clear":this.allowClear&&!!((t=this.value)===null||t===void 0?void 0:t.length)},placeholder:this.placeholderValue(),value:this.inputValue,ref:e=>this.inputRef=e,onBlur:e=>this.onInputBlur(e),onInput:()=>this.filterItemsWithTypeahead()}),this.allowClear&&(((n=this.value)===null||n===void 0?void 0:n.length)||this.inputFilterText)?i("ix-icon-button",{class:"clear",icon:"clear",ghost:true,oval:true,size:"16",onClick:e=>{e.preventDefault();e.stopPropagation();this.clear()}}):null,this.disabled||this.readonly?null:i("div",{class:"chevron-down-container",ref:e=>{if(this.editable)this.dropdownWrapperRef=e}},i("ix-icon",{class:"chevron",name:"chevron-down-small"})))))),i("ix-dropdown",{ref:e=>this.dropdownRef=e,show:this.dropdownShow,class:{"d-none":this.disabled||this.readonly},anchor:this.dropdownAnchor,trigger:this.dropdownWrapperRef,onShowChanged:e=>this.dropdownVisibilityChanged(e),placement:"auto-start",overwriteDropdownStyle:async()=>({minWidth:`${this.hostElement.clientWidth}px`})},i("div",{class:{"select-list-header":true,hidden:this.hideListHeader||this.isDropdownEmpty},title:this.i18nSelectListHeader},this.i18nSelectListHeader),i("slot",null),i("div",{ref:e=>this.addItemRef=e,class:"d-contents"}),this.itemExists(this.inputFilterText)?"":i("ix-dropdown-item",{"data-testid":"add-item",icon:"plus",class:{"add-item":true,"d-none":!(this.editable&&this.inputFilterText)},label:this.inputFilterText,onItemClick:e=>{e.preventDefault();e.stopPropagation();this.emitAddItem(this.inputFilterText)}}),this.isDropdownEmpty&&!this.editable?i("div",{class:"select-list-header"},this.i18nNoMatches):""))}get hostElement(){return n(this)}static get watchers(){return{selectedIndices:["watchSelectedIndices"]}}};c.style=l;class h extends CustomEvent{constructor(e){super("ix-select-item:labelChange",{bubbles:true,detail:e})}}const o=".sc-ix-select-item-h{display:block}";const r=class{constructor(i){e(this,i);this.itemClick=t(this,"itemClick",7);this.label=undefined;this.value=undefined;this.selected=false;this.hover=false}async onItemClick(e){e===null||e===void 0?void 0:e.preventDefault();e===null||e===void 0?void 0:e.stopPropagation();this.itemClick.emit(this.value)}componentDidRender(){if(!this.value){throw Error("ix-select-item must have a `value` property")}}labelChange(e,t){this.hostElement.dispatchEvent(new h({newValue:e,oldValue:t}))}render(){return i(s,null,i("ix-dropdown-item",{checked:this.selected,label:this.label?this.label:this.value,onItemClick:e=>this.onItemClick(e)}))}get hostElement(){return n(this)}static get watchers(){return{label:["labelChange"]}}};r.style=o;export{c as ix_select,r as ix_select_item};
2
+ //# sourceMappingURL=p-caae2fa5.entry.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"names":["selectCss","Select","items","Array","from","this","hostElement","querySelectorAll","selectedItems","filter","item","selected","addItemButton","querySelector","isSingleMode","mode","isMultipleMode","isEveryDropdownItemHidden","every","classList","contains","watchSelectedIndices","newId","selectValue","isArray","onItemClicked","event","detail","emitItemClick","selectedIndices","includes","i","itemSelectionChange","emit","emitAddItem","value","trim","newItem","document","createElement","label","addItemRef","appendChild","clearInput","addItem","ids","forEach","some","map","inputValue","_a","length","componentWillLoad","onLabelChange","preventDefault","stopImmediatePropagation","disconnectedCallback","labelMutationObserver","disconnect","itemExists","find","dropdownVisibilityChanged","dropdownShow","hasFocus","inputRef","focus","select","removeHiddenFromItems","isDropdownEmpty","navigationItem","undefined","async","code","onArrowNavigation","onEnterNavigation","editable","inputFilterText","onItemClick","_b","dropdownRef","updatePosition","stopPropagation","focusItem","activeElement","selectItems","index","indexOf","setHoverEffectForNavigatedSelectItem","filterItemsWithTypeahead","remove","toLowerCase","add","clear","onInputBlur","e","target","placeholderValue","i18nPlaceholderEditable","readonly","i18nPlaceholder","render","h","Host","class","disabled","ref","dropdownAnchor","dropdownWrapperRef","key","onCloseClick","readOnly","type","allowClear","placeholder","onBlur","onInput","_c","icon","ghost","oval","size","onClick","name","show","anchor","trigger","onShowChanged","placement","overwriteDropdownStyle","minWidth","clientWidth","hidden","hideListHeader","title","i18nSelectListHeader","i18nNoMatches","IxSelectItemLabelChangeEvent","CustomEvent","constructor","super","bubbles","selectItemCss","SelectItem","itemClick","componentDidRender","Error","labelChange","newValue","oldValue","dispatchEvent","checked"],"sources":["./src/components/select/select.scss?tag=ix-select&encapsulation=scoped","./src/components/select/select.tsx","./src/components/select-item/events.ts","./src/components/select-item/select-item.scss?tag=ix-select-item&encapsulation=scoped","./src/components/select-item/select-item.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 'mixins/fonts';\n@import 'mixins/hover';\n@import 'mixins/text-truncation';\n\n:host {\n display: inline-block;\n position: relative;\n height: auto;\n width: 100%;\n\n .select {\n position: relative;\n display: flex;\n align-items: center;\n height: auto;\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\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 !important;\n outline-offset: var(--theme-input--focus--outline-offset);\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\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 .chevron-down-container {\n display: flex;\n align-items: center;\n justify-content: center;\n width: $x-large-space;\n min-width: $x-large-space;\n height: 100%;\n }\n\n .editable {\n .chevron-down-container {\n @include hover {\n background-color: var(\n --theme-btn-invisible-secondary--background--hover\n );\n }\n\n @include active {\n background-color: var(\n --theme-btn-invisible-secondary--background--active\n );\n }\n }\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 $x-large-space;\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';\n\n@Component({\n tag: 'ix-select',\n styleUrl: 'select.scss',\n scoped: 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 neccessarily the indices of the items in the list.\n */\n @Prop({ mutable: true }) selectedIndices: 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 */\n @Prop() hideListHeader = false;\n\n /**\n * Item selection changed\n */\n @Event() itemSelectionChange: EventEmitter<string | string[]>;\n\n /**\n * Item added to selection\n */\n @Event() addItem: EventEmitter<string>;\n\n @State() dropdownShow = false;\n @State() value: 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 Array.from(this.hostElement.querySelectorAll('ix-select-item'));\n }\n\n get selectedItems() {\n return this.items.filter((item) => item.selected);\n }\n\n get addItemButton() {\n return this.hostElement.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(newId: string | string[]) {\n if (!newId) {\n this.selectValue([]);\n return;\n }\n\n if (Array.isArray(newId)) {\n this.selectValue([...newId]);\n return;\n }\n\n this.selectValue([newId]);\n }\n\n @Listen('itemClick')\n onItemClicked(event: CustomEvent<string>) {\n const newId = event.detail;\n this.emitItemClick(newId);\n }\n\n private emitItemClick(newId: string) {\n if (this.isMultipleMode && Array.isArray(this.selectedIndices)) {\n if (this.selectedIndices.includes(newId)) {\n this.selectedIndices = this.selectedIndices.filter((i) => i !== newId);\n } else {\n this.selectedIndices = [...this.selectedIndices, newId];\n }\n } else {\n this.selectedIndices = [newId];\n }\n\n this.selectValue(this.selectedIndices);\n this.itemSelectionChange.emit(this.selectedIndices);\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.emitItemClick(value);\n this.addItem.emit(value);\n }\n\n private selectValue(ids: string[]) {\n this.items.forEach((item) => {\n item.selected = ids.some((i) => i === item.value);\n });\n\n this.value = this.selectedItems.map((item) => item.label);\n\n if (this.isSingleMode) {\n this.inputValue = this.value?.length ? this.value[0] : null;\n return;\n }\n\n this.inputValue = null;\n }\n\n componentWillLoad() {\n if (this.selectedIndices) {\n this.selectValue(\n Array.isArray(this.selectedIndices)\n ? this.selectedIndices\n : [this.selectedIndices]\n );\n }\n }\n\n @Listen('ix-select-item:labelChange')\n onLabelChange(event: IxSelectItemLabelChangeEvent) {\n event.preventDefault();\n event.stopImmediatePropagation();\n this.selectValue(\n Array.isArray(this.selectedIndices)\n ? this.selectedIndices\n : [this.selectedIndices]\n );\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 @Listen('keydown', {\n target: 'window',\n })\n async onKeyDown(event: KeyboardEvent) {\n if (!this.dropdownShow) {\n return;\n }\n\n if (event.code === 'ArrowDown' || event.code === 'ArrowUp') {\n this.onArrowNavigation(event);\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(event: KeyboardEvent) {\n event.stopPropagation();\n event.preventDefault();\n\n const focusItem = this.items.find(\n (item) => document.activeElement === item.querySelector('button')\n );\n this.navigationItem = focusItem;\n\n const selectItems = this.items.filter(\n (i) => !i.classList.contains('d-none')\n );\n\n const index = selectItems.indexOf(this.navigationItem);\n\n if (event.code === 'ArrowDown' && index < selectItems.length - 1) {\n this.navigationItem = selectItems[index + 1];\n } else if (event.code === 'ArrowUp' && index > 0) {\n this.navigationItem = selectItems[index - 1];\n }\n\n this.setHoverEffectForNavigatedSelectItem();\n }\n\n private setHoverEffectForNavigatedSelectItem() {\n this.navigationItem?.querySelector('button').focus();\n }\n\n private filterItemsWithTypeahead() {\n this.inputFilterText = this.inputRef.value;\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.value = [];\n this.selectedIndices = [];\n this.itemSelectionChange.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 if (this.dropdownShow && this.isDropdownEmpty) {\n this.dropdownShow = false;\n }\n }\n\n if (!this.dropdownShow && this.mode !== 'multiple') {\n e.target['value'] = this.value;\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 render() {\n return (\n <Host>\n <div\n class={{\n 'form-control': true,\n select: true,\n focus: this.hasFocus,\n editable: this.editable,\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.emitItemClick(item.value);\n }}\n >\n {item.label}\n </ix-filter-chip>\n ))\n : ''}\n <div class=\"trigger\">\n <input\n data-testid=\"input\"\n disabled={this.disabled}\n readOnly={this.readonly}\n type=\"text\"\n class={{\n 'allow-clear': this.allowClear && !!this.value?.length,\n }}\n placeholder={this.placeholderValue()}\n value={this.inputValue}\n ref={(ref) => (this.inputRef = ref)}\n onBlur={(e) => this.onInputBlur(e)}\n onInput={() => this.filterItemsWithTypeahead()}\n />\n {this.allowClear &&\n (this.value?.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 <div\n class=\"chevron-down-container\"\n ref={(ref) => {\n if (this.editable) this.dropdownWrapperRef = ref;\n }}\n >\n <ix-icon class=\"chevron\" name=\"chevron-down-small\" />\n </div>\n )}\n </div>\n </div>\n </div>\n </div>\n <ix-dropdown\n ref={(ref) => (this.dropdownRef = ref)}\n show={this.dropdownShow}\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=\"auto-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.itemExists(this.inputFilterText) ? (\n ''\n ) : (\n <ix-dropdown-item\n data-testid=\"add-item\"\n icon=\"plus\"\n class={{\n 'add-item': true,\n 'd-none': !(this.editable && this.inputFilterText),\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 )}\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","/*\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 */\nexport class IxSelectItemLabelChangeEvent extends CustomEvent<{\n oldValue: string;\n newValue: string;\n}> {\n constructor(detail: { oldValue: string; newValue: string }) {\n super('ix-select-item:labelChange', {\n bubbles: true,\n detail,\n });\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\n:host {\n display: block;\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 Method,\n Prop,\n Watch,\n} from '@stencil/core';\nimport { IxSelectItemLabelChangeEvent } from './events';\n\n@Component({\n tag: 'ix-select-item',\n styleUrl: 'select-item.scss',\n scoped: true,\n})\nexport class SelectItem {\n @Element() hostElement: HTMLIxSelectItemElement;\n\n /**\n * Displayed name of the item\n */\n @Prop({ reflect: true }) label: string;\n\n /**\n * Item value\n */\n @Prop({ reflect: true }) value!: any;\n\n /**\n * Whether the item is selected.\n */\n @Prop() selected = false;\n\n /**\n * @internal\n */\n @Prop() hover = false;\n\n /**\n * Item clicked\n */\n @Event() itemClick: EventEmitter<string>;\n\n /**\n * @internal\n * @param event\n */\n @Method()\n async onItemClick(event?: CustomEvent<HTMLIxDropdownItemElement>) {\n event?.preventDefault();\n event?.stopPropagation();\n\n this.itemClick.emit(this.value);\n }\n\n componentDidRender() {\n if (!this.value) {\n throw Error('ix-select-item must have a `value` property');\n }\n }\n\n @Watch('label')\n labelChange(newValue: string, oldValue: string) {\n this.hostElement.dispatchEvent(\n new IxSelectItemLabelChangeEvent({\n newValue: newValue,\n oldValue: oldValue,\n })\n );\n }\n\n render() {\n return (\n <Host>\n <ix-dropdown-item\n checked={this.selected}\n label={this.label ? this.label : this.value}\n onItemClick={(e) => this.onItemClick(e)}\n ></ix-dropdown-item>\n </Host>\n );\n }\n}\n"],"mappings":"gEAAA,MAAMA,EAAY,qjH,MC4BLC,EAAM,M,wIAO6C,G,gBAKzC,M,UAKiB,S,cAKnB,M,cAKA,M,cAKA,M,qBAKO,mB,6BAKQ,wB,0BAKH,0B,mBAOP,a,oBAQC,M,kBAYD,M,0GAIG,M,cACP,M,uFAWhBC,YACF,OAAOC,MAAMC,KAAKC,KAAKC,YAAYC,iBAAiB,kB,CAGlDC,oBACF,OAAOH,KAAKH,MAAMO,QAAQC,GAASA,EAAKC,U,CAGtCC,oBACF,OAAOP,KAAKC,YAAYO,cAAc,Y,CAGpCC,mBACF,OAAOT,KAAKU,OAAS,Q,CAGnBC,qBACF,OAAOX,KAAKU,OAAS,U,CAGnBE,gCACF,OAAOZ,KAAKH,MAAMgB,OAAOR,GAASA,EAAKS,UAAUC,SAAS,W,CAI5DC,qBAAqBC,GACnB,IAAKA,EAAO,CACVjB,KAAKkB,YAAY,IACjB,M,CAGF,GAAIpB,MAAMqB,QAAQF,GAAQ,CACxBjB,KAAKkB,YAAY,IAAID,IACrB,M,CAGFjB,KAAKkB,YAAY,CAACD,G,CAIpBG,cAAcC,GACZ,MAAMJ,EAAQI,EAAMC,OACpBtB,KAAKuB,cAAcN,E,CAGbM,cAAcN,GACpB,GAAIjB,KAAKW,gBAAkBb,MAAMqB,QAAQnB,KAAKwB,iBAAkB,CAC9D,GAAIxB,KAAKwB,gBAAgBC,SAASR,GAAQ,CACxCjB,KAAKwB,gBAAkBxB,KAAKwB,gBAAgBpB,QAAQsB,GAAMA,IAAMT,G,KAC3D,CACLjB,KAAKwB,gBAAkB,IAAIxB,KAAKwB,gBAAiBP,E,MAE9C,CACLjB,KAAKwB,gBAAkB,CAACP,E,CAG1BjB,KAAKkB,YAAYlB,KAAKwB,iBACtBxB,KAAK2B,oBAAoBC,KAAK5B,KAAKwB,gB,CAG7BK,YAAYC,GAClB,GAAIA,EAAMC,SAAW,GAAI,CACvB,M,CAGF,MAAMC,EAAUC,SAASC,cAAc,kBACvCF,EAAQF,MAAQA,EAChBE,EAAQG,MAAQL,EAEhB9B,KAAKoC,WAAWC,YAAYL,GAE5BhC,KAAKsC,aACLtC,KAAKuB,cAAcO,GACnB9B,KAAKuC,QAAQX,KAAKE,E,CAGZZ,YAAYsB,G,MAClBxC,KAAKH,MAAM4C,SAASpC,IAClBA,EAAKC,SAAWkC,EAAIE,MAAMhB,GAAMA,IAAMrB,EAAKyB,OAAM,IAGnD9B,KAAK8B,MAAQ9B,KAAKG,cAAcwC,KAAKtC,GAASA,EAAK8B,QAEnD,GAAInC,KAAKS,aAAc,CACrBT,KAAK4C,aAAaC,EAAA7C,KAAK8B,SAAK,MAAAe,SAAA,SAAAA,EAAEC,QAAS9C,KAAK8B,MAAM,GAAK,KACvD,M,CAGF9B,KAAK4C,WAAa,I,CAGpBG,oBACE,GAAI/C,KAAKwB,gBAAiB,CACxBxB,KAAKkB,YACHpB,MAAMqB,QAAQnB,KAAKwB,iBACfxB,KAAKwB,gBACL,CAACxB,KAAKwB,iB,EAMhBwB,cAAc3B,GACZA,EAAM4B,iBACN5B,EAAM6B,2BACNlD,KAAKkB,YACHpB,MAAMqB,QAAQnB,KAAKwB,iBACfxB,KAAKwB,gBACL,CAACxB,KAAKwB,iB,CAId2B,uBACE,GAAInD,KAAKoD,sBAAuB,CAC9BpD,KAAKoD,sBAAsBC,Y,EAIvBC,WAAWjD,GACjB,OAAOL,KAAKH,MAAM0D,MAAM7B,GAAMA,EAAES,QAAU9B,G,CAGpCmD,0BAA0BnC,GAChCrB,KAAKyD,aAAepC,EAAMC,OAC1BtB,KAAK0D,SAAWrC,EAAMC,OAEtB,GAAID,EAAMC,OAAQ,CAChBtB,KAAK2D,SAASC,QACd5D,KAAK2D,SAASE,SAEd7D,KAAK8D,wBACL9D,KAAK+D,gBAAkB/D,KAAKY,yB,KACvB,CACLZ,KAAKgE,eAAiBC,S,EAO1BC,gBAAgB7C,GACd,IAAKrB,KAAKyD,aAAc,CACtB,M,CAGF,GAAIpC,EAAM8C,OAAS,aAAe9C,EAAM8C,OAAS,UAAW,CAC1DnE,KAAKoE,kBAAkB/C,E,CAGzB,GAAIA,EAAM8C,OAAS,SAAW9C,EAAM8C,OAAS,cAAe,OACpDnE,KAAKqE,mB,CAGb,GAAIhD,EAAM8C,OAAS,SAAU,CAC3BnE,KAAKyD,aAAe,K,EAIhBS,0B,QACN,GAAIlE,KAAKW,eAAgB,CACvB,M,CAGF,GAAIX,KAAKsE,WAAatE,KAAKsD,WAAWtD,KAAKuE,iBAAkB,CAC3DvE,KAAK6B,YAAY7B,KAAKuE,iBACtBvE,KAAKgE,eAAiBhE,KAAKH,MAAMG,KAAKH,MAAMiD,OAAS,E,EAGvDD,EAAA7C,KAAKgE,kBAAc,MAAAnB,SAAA,SAAAA,EAAE2B,qBACfC,EAAAzE,KAAK0E,eAAW,MAAAD,SAAA,SAAAA,EAAEE,kBAExB,GAAI3E,KAAKS,eAAiBT,KAAKsE,SAAU,CACvCtE,KAAKyD,aAAe,K,EAIhBW,kBAAkB/C,GACxBA,EAAMuD,kBACNvD,EAAM4B,iBAEN,MAAM4B,EAAY7E,KAAKH,MAAM0D,MAC1BlD,GAAS4B,SAAS6C,gBAAkBzE,EAAKG,cAAc,YAE1DR,KAAKgE,eAAiBa,EAEtB,MAAME,EAAc/E,KAAKH,MAAMO,QAC5BsB,IAAOA,EAAEZ,UAAUC,SAAS,YAG/B,MAAMiE,EAAQD,EAAYE,QAAQjF,KAAKgE,gBAEvC,GAAI3C,EAAM8C,OAAS,aAAea,EAAQD,EAAYjC,OAAS,EAAG,CAChE9C,KAAKgE,eAAiBe,EAAYC,EAAQ,E,MACrC,GAAI3D,EAAM8C,OAAS,WAAaa,EAAQ,EAAG,CAChDhF,KAAKgE,eAAiBe,EAAYC,EAAQ,E,CAG5ChF,KAAKkF,sC,CAGCA,uC,OACNrC,EAAA7C,KAAKgE,kBAAc,MAAAnB,SAAA,SAAAA,EAAErC,cAAc,UAAUoD,O,CAGvCuB,2BACNnF,KAAKuE,gBAAkBvE,KAAK2D,SAAS7B,MAErC,GAAI9B,KAAKuE,gBAAiB,CACxBvE,KAAKH,MAAM4C,SAASpC,IAClBA,EAAKS,UAAUsE,OAAO,UACtB,IACG/E,EAAK8B,MAAMkD,cAAc5D,SAASzB,KAAKuE,gBAAgBc,eACxD,CACAhF,EAAKS,UAAUwE,IAAI,S,SAGlB,CACLtF,KAAK8D,uB,CAGP9D,KAAK+D,gBAAkB/D,KAAKY,yB,CAGtBkD,wBACN9D,KAAKH,MAAM4C,SAASpC,IAClBA,EAAKS,UAAUsE,OAAO,SAAS,G,CAI3B9C,aACNtC,KAAK2D,SAAS7B,MAAQ,GACtB9B,KAAKuE,gBAAkB,E,CAGjBgB,QACNvF,KAAKsC,aACLtC,KAAK8B,MAAQ,GACb9B,KAAKwB,gBAAkB,GACvBxB,KAAK2B,oBAAoBC,KAAK,MAC9B5B,KAAKyD,aAAe,K,CAGd+B,YAAYC,GAClB,GAAIzF,KAAKsE,SAAU,CACjB,M,CAGF,GAAItE,KAAKS,aAAc,CACrB,GAAIT,KAAKyD,cAAgBzD,KAAK+D,gBAAiB,CAC7C/D,KAAKyD,aAAe,K,EAIxB,IAAKzD,KAAKyD,cAAgBzD,KAAKU,OAAS,WAAY,CAClD+E,EAAEC,OAAO,SAAW1F,KAAK8B,K,EAIrB6D,mBACN,GAAI3F,KAAKsE,SAAU,CACjB,OAAOtE,KAAK4F,uB,CAGd,GAAI5F,KAAK6F,SAAU,CACjB,MAAO,E,CAGT,OAAO7F,KAAK8F,e,CAGdC,S,UACE,OACEC,EAACC,EAAI,KACHD,EAAA,OACEE,MAAO,CACL,eAAgB,KAChBrC,OAAQ,KACRD,MAAO5D,KAAK0D,SACZY,SAAUtE,KAAKsE,SACf6B,SAAUnG,KAAKmG,SACfN,SAAU7F,KAAK6F,UAEjBO,IAAMA,IACJpG,KAAKqG,eAAiBD,EACtB,IAAKpG,KAAKsE,SAAUtE,KAAKsG,mBAAqBF,CAAG,GAGnDJ,EAAA,OAAKE,MAAM,mBACTF,EAAA,OAAKE,MAAM,SACRlG,KAAKW,gBACFkC,EAAA7C,KAAKG,iBAAa,MAAA0C,SAAA,SAAAA,EAAEF,KAAKtC,GACvB2F,EAAA,kBACEG,SAAUnG,KAAKmG,UAAYnG,KAAK6F,SAChCU,IAAKlG,EAAKyB,MACV0E,aAAef,IACbA,EAAExC,iBACFwC,EAAEb,kBACF5E,KAAKuB,cAAclB,EAAKyB,MAAM,GAG/BzB,EAAK8B,SAGV,GACJ6D,EAAA,OAAKE,MAAM,WACTF,EAAA,uBACc,QACZG,SAAUnG,KAAKmG,SACfM,SAAUzG,KAAK6F,SACfa,KAAK,OACLR,MAAO,CACL,cAAelG,KAAK2G,gBAAgBlC,EAAAzE,KAAK8B,SAAK,MAAA2C,SAAA,SAAAA,EAAE3B,SAElD8D,YAAa5G,KAAK2F,mBAClB7D,MAAO9B,KAAK4C,WACZwD,IAAMA,GAASpG,KAAK2D,SAAWyC,EAC/BS,OAASpB,GAAMzF,KAAKwF,YAAYC,GAChCqB,QAAS,IAAM9G,KAAKmF,6BAErBnF,KAAK2G,eACLI,EAAA/G,KAAK8B,SAAK,MAAAiF,SAAA,SAAAA,EAAEjE,SAAU9C,KAAKuE,iBAC1ByB,EAAA,kBACEE,MAAM,QACNc,KAAK,QACLC,MAAK,KACLC,KAAI,KACJC,KAAK,KACLC,QAAU3B,IACRA,EAAExC,iBACFwC,EAAEb,kBACF5E,KAAKuF,OAAO,IAGd,KACHvF,KAAKmG,UAAYnG,KAAK6F,SAAW,KAChCG,EAAA,OACEE,MAAM,yBACNE,IAAMA,IACJ,GAAIpG,KAAKsE,SAAUtE,KAAKsG,mBAAqBF,CAAG,GAGlDJ,EAAA,WAASE,MAAM,UAAUmB,KAAK,4BAO1CrB,EAAA,eACEI,IAAMA,GAASpG,KAAK0E,YAAc0B,EAClCkB,KAAMtH,KAAKyD,aACXyC,MAAO,CACL,SAAUlG,KAAKmG,UAAYnG,KAAK6F,UAElC0B,OAAQvH,KAAKqG,eACbmB,QAASxH,KAAKsG,mBACdmB,cAAgBhC,GAAMzF,KAAKwD,0BAA0BiC,GACrDiC,UAAU,aACVC,uBAAwBzD,UACf,CACL0D,SAAU,GAAG5H,KAAKC,YAAY4H,mBAIlC7B,EAAA,OACEE,MAAO,CACL,qBAAsB,KACtB4B,OAAQ9H,KAAK+H,gBAAkB/H,KAAK+D,iBAEtCiE,MAAOhI,KAAKiI,sBAEXjI,KAAKiI,sBAERjC,EAAA,aACAA,EAAA,OAAKI,IAAMA,GAASpG,KAAKoC,WAAagE,EAAMF,MAAM,eACjDlG,KAAKsD,WAAWtD,KAAKuE,iBAAgB,GAGpCyB,EAAA,kCACc,WACZgB,KAAK,OACLd,MAAO,CACL,WAAY,KACZ,WAAYlG,KAAKsE,UAAYtE,KAAKuE,kBAEpCpC,MAAOnC,KAAKuE,gBACZC,YAAciB,IACZA,EAAExC,iBACFwC,EAAEb,kBACF5E,KAAK6B,YAAY7B,KAAKuE,gBAAgB,IAI3CvE,KAAK+D,kBAAoB/D,KAAKsE,SAC7B0B,EAAA,OAAKE,MAAM,sBAAsBlG,KAAKkI,eAAoB,I,2HCxfzDC,UAAqCC,YAIhDC,YAAY/G,GACVgH,MAAM,6BAA8B,CAClCC,QAAS,KACTjH,U,ECfN,MAAMkH,EAAgB,sC,MC2BTC,EAAU,M,sHAgBF,M,WAKH,K,CAYhBvE,kBAAkB7C,GAChBA,IAAK,MAALA,SAAK,SAALA,EAAO4B,iBACP5B,IAAK,MAALA,SAAK,SAALA,EAAOuD,kBAEP5E,KAAK0I,UAAU9G,KAAK5B,KAAK8B,M,CAG3B6G,qBACE,IAAK3I,KAAK8B,MAAO,CACf,MAAM8G,MAAM,8C,EAKhBC,YAAYC,EAAkBC,GAC5B/I,KAAKC,YAAY+I,cACf,IAAIb,EAA6B,CAC/BW,SAAUA,EACVC,SAAUA,I,CAKhBhD,SACE,OACEC,EAACC,EAAI,KACHD,EAAA,oBACEiD,QAASjJ,KAAKM,SACd6B,MAAOnC,KAAKmC,MAAQnC,KAAKmC,MAAQnC,KAAK8B,MACtC0C,YAAciB,GAAMzF,KAAKwE,YAAYiB,K"}
@@ -0,0 +1,2 @@
1
+ import{r,c as e,h as c,H as b,g as i}from"./p-8fcd6f85.js";import{a as t}from"./p-810b5232.js";import{c as a}from"./p-c0454c9a.js";const s=".sc-ix-breadcrumb-h{display:flex;height:2.5rem;justify-content:flex-start;align-items:center;background-color:transparent;overflow:hidden}.sc-ix-breadcrumb-h .crumb.sc-ix-breadcrumb{position:relative;display:flex;justify-content:flex-start;align-items:center;white-space:nowrap;border-radius:var(--theme-breadcrumb--border-radius);height:2rem;max-height:2rem;min-width:0;-webkit-margin-end:0.25rem;margin-inline-end:0.25rem;padding:0.5rem 0 0.5rem 0.25rem;outline:none;cursor:pointer}.sc-ix-breadcrumb-h .crumb.sc-ix-breadcrumb:not(.disabled):not(:disabled){cursor:pointer}.sc-ix-breadcrumb-h .crumb.sc-ix-breadcrumb:not(.disabled):not(:disabled):hover{background-color:var(--theme-breadcrumb-btn--background--hover)}.sc-ix-breadcrumb-h .crumb.sc-ix-breadcrumb:not(.disabled):not(:disabled):hover .crumb-text.sc-ix-breadcrumb,.sc-ix-breadcrumb-h .crumb.sc-ix-breadcrumb:not(.disabled):not(:disabled):hover .glyph.sc-ix-breadcrumb{color:var(--theme-breadcrumb-btn--color--hover)}.sc-ix-breadcrumb-h .crumb.sc-ix-breadcrumb:not(.disabled):not(:disabled):hover .crumb-text.sc-ix-breadcrumb+.glyph-chevron-right-small.sc-ix-breadcrumb{color:var(--theme-breadcrumb-btn-arrow--color--hover)}.sc-ix-breadcrumb-h .crumb.sc-ix-breadcrumb:not(.disabled):not(:disabled){cursor:pointer}.sc-ix-breadcrumb-h .crumb.sc-ix-breadcrumb:not(.disabled):not(:disabled):active{background-color:var(--theme-breadcrumb-btn--background--active)}.sc-ix-breadcrumb-h .crumb.sc-ix-breadcrumb:not(.disabled):not(:disabled):active .crumb-text.sc-ix-breadcrumb,.sc-ix-breadcrumb-h .crumb.sc-ix-breadcrumb:not(.disabled):not(:disabled):active .glyph.sc-ix-breadcrumb{color:var(--theme-breadcrumb-btn--color--active)}.sc-ix-breadcrumb-h .crumb.sc-ix-breadcrumb:not(.disabled):not(:disabled):active .crumb-text.sc-ix-breadcrumb+.glyph-chevron-right-small.sc-ix-breadcrumb{color:var(--theme-breadcrumb-btn-arrow--color--active)}.sc-ix-breadcrumb-h .crumb.sc-ix-breadcrumb .crumb-text.sc-ix-breadcrumb{overflow:hidden;text-overflow:ellipsis;white-space:nowrap;display:flex;align-items:center;min-width:0;font-weight:700}.sc-ix-breadcrumb-h .crumb.sc-ix-breadcrumb .crumb-text.sc-ix-breadcrumb ix-icon.sc-ix-breadcrumb{-webkit-margin-end:0.25rem;margin-inline-end:0.25rem}.sc-ix-breadcrumb-h .crumb.sc-ix-breadcrumb .crumb-text.sc-ix-breadcrumb+.glyph-chevron-right-small.sc-ix-breadcrumb{-webkit-margin-start:0.25rem;margin-inline-start:0.25rem;-webkit-margin-end:0;margin-inline-end:0}.sc-ix-breadcrumb-h .crumb.last.sc-ix-breadcrumb{background-color:transparent !important;cursor:default;-webkit-padding-end:0.25rem;padding-inline-end:0.25rem}.sc-ix-breadcrumb-h .crumb.clickable.sc-ix-breadcrumb:not(.remove-hover):not(.disabled):not(:disabled):focus-visible{border-color:var(--theme-focus--border-color)}.sc-ix-breadcrumb-h .crumb.sc-ix-breadcrumb:not(:last-of-type){flex-shrink:0;max-width:14rem}.sc-ix-breadcrumb-h .crumb-dropdown.sc-ix-breadcrumb{overflow:visible}.sc-ix-breadcrumb-h .crumb-dropdown.sc-ix-breadcrumb .glyph.sc-ix-breadcrumb::after{display:none}.sc-ix-breadcrumb-h .remove-anchor.sc-ix-breadcrumb::after{display:none}.sc-ix-breadcrumb-h .more-text.sc-ix-breadcrumb{display:flex}.sc-ix-breadcrumb-h .more-text.sc-ix-breadcrumb .more-text-ellipsis.sc-ix-breadcrumb{width:1rem;display:inline-block;font-weight:700}.sc-ix-breadcrumb-h .more-text.sc-ix-breadcrumb .glyph.sc-ix-breadcrumb{line-height:unset}.sc-ix-breadcrumb-h .crumb-items.sc-ix-breadcrumb{display:contents}.sc-ix-breadcrumb-h .crumb.btn.sc-ix-breadcrumb{background-color:var(--theme-breadcrumb-btn--background);border:var(--theme-btn--btn-thickness) solid transparent;transition:150ms}.sc-ix-breadcrumb-h .crumb.btn.sc-ix-breadcrumb .crumb-text.sc-ix-breadcrumb,.sc-ix-breadcrumb-h .crumb.btn.sc-ix-breadcrumb .glyph.sc-ix-breadcrumb{color:var(--theme-breadcrumb-btn--color)}.sc-ix-breadcrumb-h .crumb.btn.sc-ix-breadcrumb .crumb-text.sc-ix-breadcrumb+.glyph-chevron-right-small.sc-ix-breadcrumb{color:var(--theme-breadcrumb-btn-arrow--color)}.sc-ix-breadcrumb-h .crumb.btn.last.sc-ix-breadcrumb .crumb-text.sc-ix-breadcrumb{color:var(--theme-breadcrumb-btn-last--color)}.sc-ix-breadcrumb-h .crumb.btn.clickable.sc-ix-breadcrumb:not(.remove-hover):not(.disabled):not(:disabled){cursor:pointer}.sc-ix-breadcrumb-h .crumb.btn.clickable.sc-ix-breadcrumb:not(.remove-hover):not(.disabled):not(:disabled):hover{background-color:var(--theme-breadcrumb-btn--background--hover)}.sc-ix-breadcrumb-h .crumb.btn.clickable.sc-ix-breadcrumb:not(.remove-hover):not(.disabled):not(:disabled):hover .crumb-text.sc-ix-breadcrumb,.sc-ix-breadcrumb-h .crumb.btn.clickable.sc-ix-breadcrumb:not(.remove-hover):not(.disabled):not(:disabled):hover .glyph.sc-ix-breadcrumb{color:var(--theme-breadcrumb-btn--color--hover)}.sc-ix-breadcrumb-h .crumb.btn.clickable.sc-ix-breadcrumb:not(.remove-hover):not(.disabled):not(:disabled):hover .crumb-text.sc-ix-breadcrumb+.glyph-chevron-right-small.sc-ix-breadcrumb{color:var(--theme-breadcrumb-btn-arrow--color--hover)}.sc-ix-breadcrumb-h .crumb.btn.clickable.sc-ix-breadcrumb:not(.remove-hover):not(.disabled):not(:disabled){cursor:pointer}.sc-ix-breadcrumb-h .crumb.btn.clickable.sc-ix-breadcrumb:not(.remove-hover):not(.disabled):not(:disabled):active{background-color:var(--theme-breadcrumb-btn--background--active)}.sc-ix-breadcrumb-h .crumb.btn.clickable.sc-ix-breadcrumb:not(.remove-hover):not(.disabled):not(:disabled):active .crumb-text.sc-ix-breadcrumb,.sc-ix-breadcrumb-h .crumb.btn.clickable.sc-ix-breadcrumb:not(.remove-hover):not(.disabled):not(:disabled):active .glyph.sc-ix-breadcrumb{color:var(--theme-breadcrumb-btn--color--active)}.sc-ix-breadcrumb-h .crumb.btn.clickable.sc-ix-breadcrumb:not(.remove-hover):not(.disabled):not(:disabled):active .crumb-text.sc-ix-breadcrumb+.glyph-chevron-right-small.sc-ix-breadcrumb{color:var(--theme-breadcrumb-btn-arrow--color--active)}.sc-ix-breadcrumb-h .crumb.ghost.sc-ix-breadcrumb{background-color:var(--theme-breadcrumb-ghost--background);border:var(--theme-btn--ghost-thickness) solid transparent;transition:150ms}.sc-ix-breadcrumb-h .crumb.ghost.sc-ix-breadcrumb .crumb-text.sc-ix-breadcrumb,.sc-ix-breadcrumb-h .crumb.ghost.sc-ix-breadcrumb .glyph.sc-ix-breadcrumb{color:var(--theme-breadcrumb-ghost--color)}.sc-ix-breadcrumb-h .crumb.ghost.sc-ix-breadcrumb .crumb-text.sc-ix-breadcrumb+.glyph-chevron-right-small.sc-ix-breadcrumb{color:var(--theme-breadcrumb-ghost-arrow--color)}.sc-ix-breadcrumb-h .crumb.ghost.last.sc-ix-breadcrumb .crumb-text.sc-ix-breadcrumb{color:var(--theme-breadcrumb-ghost-last--color)}.sc-ix-breadcrumb-h .crumb.ghost.clickable.sc-ix-breadcrumb:not(.remove-hover):not(.disabled):not(:disabled){cursor:pointer}.sc-ix-breadcrumb-h .crumb.ghost.clickable.sc-ix-breadcrumb:not(.remove-hover):not(.disabled):not(:disabled):hover{background-color:var(--theme-breadcrumb-ghost--background--hover)}.sc-ix-breadcrumb-h .crumb.ghost.clickable.sc-ix-breadcrumb:not(.remove-hover):not(.disabled):not(:disabled):hover .crumb-text.sc-ix-breadcrumb,.sc-ix-breadcrumb-h .crumb.ghost.clickable.sc-ix-breadcrumb:not(.remove-hover):not(.disabled):not(:disabled):hover .glyph.sc-ix-breadcrumb{color:var(--theme-breadcrumb-ghost--color--hover)}.sc-ix-breadcrumb-h .crumb.ghost.clickable.sc-ix-breadcrumb:not(.remove-hover):not(.disabled):not(:disabled):hover .crumb-text.sc-ix-breadcrumb+.glyph-chevron-right-small.sc-ix-breadcrumb{color:var(--theme-breadcrumb-ghost-arrow--color--hover)}.sc-ix-breadcrumb-h .crumb.ghost.clickable.sc-ix-breadcrumb:not(.remove-hover):not(.disabled):not(:disabled){cursor:pointer}.sc-ix-breadcrumb-h .crumb.ghost.clickable.sc-ix-breadcrumb:not(.remove-hover):not(.disabled):not(:disabled):active{background-color:var(--theme-breadcrumb-ghost--background--active)}.sc-ix-breadcrumb-h .crumb.ghost.clickable.sc-ix-breadcrumb:not(.remove-hover):not(.disabled):not(:disabled):active .crumb-text.sc-ix-breadcrumb,.sc-ix-breadcrumb-h .crumb.ghost.clickable.sc-ix-breadcrumb:not(.remove-hover):not(.disabled):not(:disabled):active .glyph.sc-ix-breadcrumb{color:var(--theme-breadcrumb-ghost--color--active)}.sc-ix-breadcrumb-h .crumb.ghost.clickable.sc-ix-breadcrumb:not(.remove-hover):not(.disabled):not(:disabled):active .crumb-text.sc-ix-breadcrumb+.glyph-chevron-right-small.sc-ix-breadcrumb{color:var(--theme-breadcrumb-ghost-arrow--color--active)}";const o=class{constructor(c){r(this,c);this.itemClick=e(this,"itemClick",7);this.nextClick=e(this,"nextClick",7);this.visibleItemCount=9;this.nextItems=[];this.ghost=false;this.previousButtonRef=undefined;this.nextButtonRef=undefined;this.items=[]}get breadcrumbItems(){return Array.from(this.hostElement.querySelectorAll("ix-breadcrumb-item"))}get crumbItems(){return Array.from(this.hostElement.querySelectorAll(".crumb-items .crumb"))}onItemClick(r){this.itemClick.emit(r)}componentDidLoad(){this.mutationObserver=a((()=>{const r=this.getItems();const e=()=>{this.items=r};if(r.length>=this.items.length){e()}else if(r.length<this.items.length){const r=this.crumbItems[this.crumbItems.length-1];this.animationFadeOut(r,(()=>e()))}}));this.mutationObserver.observe(this.hostElement.querySelector(".crumb-items"),{subtree:true,childList:true})}componentWillLoad(){this.items=this.getItems()}getItems(){return this.breadcrumbItems.map((r=>({label:r.label,icon:r.icon})))}disconnectedCallback(){var r;(r=this.mutationObserver)===null||r===void 0?void 0:r.disconnect()}animationFadeOut(r,e){t({targets:r,translateX:"-100%",duration:150,opacity:[1,0],easing:"linear",complete:()=>e()})}animationFadeIn(r){t({targets:r,duration:150,opacity:[0,1],translateX:["-100%","0%"],easing:"linear"})}handleLastButtonRef(r,e){var c;if(e){this.animationFadeIn(r)}if(e&&((c=this.nextItems)===null||c===void 0?void 0:c.length)){this.nextButtonRef=r}}sliceHiddenItems(){let r=0;if(this.items.length>this.visibleItemCount){r=this.items.length-this.visibleItemCount}return this.items.slice(r)}clickItem(r,e){if(!e){this.onItemClick(r)}}renderBreadcrumbItems(){return this.sliceHiddenItems().map(((r,e,b)=>{var i;const t=e===b.length-1;const a=t&&!((i=this.nextItems)===null||i===void 0?void 0:i.length);return c("div",{ref:r=>this.handleLastButtonRef(r,t),"data-breadcrumb":e,class:{crumb:true,clickable:true,ghost:this.ghost,btn:!this.ghost,last:a,"remove-hover":a},onClick:()=>this.clickItem(r.label,t),"data-testid":"item"},c("span",{class:"crumb-text remove-anchor"},r.icon?c("ix-icon",{name:r.icon,size:"16"}):"",c("span",{style:{whiteSpace:"nowrap",overflow:"hidden",textOverflow:"ellipsis"}},r.label)),!a?c("span",{class:"glyph glyph-18 glyph-chevron-right-small text-default-text"}):null)}))}render(){var r,e,i;return c(b,null,c("ix-dropdown",{trigger:((r=this.items)===null||r===void 0?void 0:r.length)>this.visibleItemCount?this.previousButtonRef:null},this.items.slice(0,this.items.length-this.visibleItemCount).map((r=>c("ix-dropdown-item",{label:r.label,onClick:()=>this.onItemClick(r.label)})))),((e=this.items)===null||e===void 0?void 0:e.length)>this.visibleItemCount?c("div",{class:"crumb crumb-dropdown",ref:r=>this.previousButtonRef=r},c("span",{class:"remove-anchor more-text"},c("span",{class:"more-text-ellipsis"},"..."),c("span",{class:"glyph glyph-16 glyph-chevron-right"}))):null,c("div",{class:"crumb-items"},this.renderBreadcrumbItems(),c("slot",null)),c("ix-dropdown",{trigger:this.nextButtonRef},(i=this.nextItems)===null||i===void 0?void 0:i.map((r=>c("ix-dropdown-item",{label:r,onClick:e=>{this.nextClick.emit({event:e,item:r})}})))))}get hostElement(){return i(this)}};o.style=s;const d=".sc-ix-breadcrumb-item-h{display:block}";const m=class{constructor(e){r(this,e);this.label=undefined;this.icon=undefined}render(){return c(b,null,c("slot",null))}};m.style=d;export{o as ix_breadcrumb,m as ix_breadcrumb_item};
2
+ //# sourceMappingURL=p-dbcf33de.entry.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"names":["breadcrumbCss","Breadcrumb","breadcrumbItems","Array","from","this","hostElement","querySelectorAll","crumbItems","onItemClick","item","itemClick","emit","componentDidLoad","mutationObserver","createMutationObserver","updatedItems","getItems","update","items","length","last","animationFadeOut","observe","querySelector","subtree","childList","componentWillLoad","map","label","icon","disconnectedCallback","_a","disconnect","ref","complete","animejs","targets","translateX","duration","opacity","easing","animationFadeIn","handleLastButtonRef","nextItems","nextButtonRef","sliceHiddenItems","sliceIndex","visibleItemCount","slice","clickItem","renderBreadcrumbItems","index","array","isLastItem","h","class","crumb","clickable","ghost","btn","onClick","name","size","style","whiteSpace","overflow","textOverflow","render","Host","trigger","previousButtonRef","_b","_c","e","nextClick","event","breadcrumbItemCss","BreadcrumbItem"],"sources":["./src/components/breadcrumb/breadcrumb.scss?tag=ix-breadcrumb&encapsulation=scoped","./src/components/breadcrumb/breadcrumb.tsx","./src/components/breadcrumb-item/breadcrumb-item.scss?tag=ix-breadcrumb-item&encapsulation=scoped","./src/components/breadcrumb-item/breadcrumb-item.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 'mixins/hover';\n@import 'mixins/text-truncation';\n\n@mixin crumb-hover($variant) {\n @include hover {\n background-color: var(--theme-breadcrumb-#{$variant}--background--hover);\n\n .crumb-text,\n .glyph {\n color: var(--theme-breadcrumb-#{$variant}--color--hover);\n }\n\n .crumb-text + .glyph-chevron-right-small {\n color: var(--theme-breadcrumb-#{$variant}-arrow--color--hover);\n }\n }\n\n @include active {\n background-color: var(--theme-breadcrumb-#{$variant}--background--active);\n\n .crumb-text,\n .glyph {\n color: var(--theme-breadcrumb-#{$variant}--color--active);\n }\n\n .crumb-text + .glyph-chevron-right-small {\n color: var(--theme-breadcrumb-#{$variant}-arrow--color--active);\n }\n }\n}\n\n@mixin breadcrumb($variant) {\n .crumb.#{$variant} {\n background-color: var(--theme-breadcrumb-#{$variant}--background);\n border: var(--theme-btn--#{$variant}-thickness) solid transparent;\n transition: $default-time;\n\n .crumb-text,\n .glyph {\n color: var(--theme-breadcrumb-#{$variant}--color);\n }\n\n .crumb-text + .glyph-chevron-right-small {\n color: var(--theme-breadcrumb-#{$variant}-arrow--color);\n }\n\n &.last .crumb-text {\n color: var(--theme-breadcrumb-#{$variant}-last--color);\n }\n\n &.clickable:not(.remove-hover) {\n @include hover {\n background-color: var(\n --theme-breadcrumb-#{$variant}--background--hover\n );\n\n .crumb-text,\n .glyph {\n color: var(--theme-breadcrumb-#{$variant}--color--hover);\n }\n\n .crumb-text + .glyph-chevron-right-small {\n color: var(--theme-breadcrumb-#{$variant}-arrow--color--hover);\n }\n }\n\n @include active {\n background-color: var(\n --theme-breadcrumb-#{$variant}--background--active\n );\n\n .crumb-text,\n .glyph {\n color: var(--theme-breadcrumb-#{$variant}--color--active);\n }\n\n .crumb-text + .glyph-chevron-right-small {\n color: var(--theme-breadcrumb-#{$variant}-arrow--color--active);\n }\n }\n }\n }\n}\n\n:host {\n display: flex;\n height: $large-control-height;\n justify-content: flex-start;\n align-items: center;\n background-color: transparent;\n overflow: hidden;\n\n .crumb {\n position: relative;\n display: flex;\n justify-content: flex-start;\n align-items: center;\n white-space: nowrap;\n border-radius: var(--theme-breadcrumb--border-radius);\n height: $default-control-height;\n max-height: $default-control-height;\n min-width: 0;\n margin-inline-end: $tiny-space;\n padding: $small-space 0 $small-space $tiny-space;\n outline: none;\n cursor: pointer;\n\n @include crumb-hover('btn');\n\n .crumb-text {\n @include ellipsis;\n display: flex;\n align-items: center;\n min-width: 0;\n font-weight: $font-weight-bold;\n\n ix-icon {\n margin-inline-end: $tiny-space;\n }\n }\n\n .crumb-text + .glyph-chevron-right-small {\n margin-inline-start: $tiny-space;\n margin-inline-end: 0; // Overwrite global selector: .btn .glyph\n }\n\n &.last {\n background-color: transparent !important;\n cursor: default;\n padding-inline-end: $tiny-space;\n }\n\n &.clickable:not(.remove-hover) {\n @include focus-visible {\n border-color: var(--theme-focus--border-color);\n }\n }\n\n &:not(:last-of-type) {\n flex-shrink: 0;\n max-width: 14rem;\n }\n }\n\n .crumb-dropdown {\n overflow: visible;\n\n .glyph::after {\n display: none;\n }\n }\n\n .remove-anchor::after {\n display: none;\n }\n\n .more-text {\n display: flex;\n\n .more-text-ellipsis {\n width: 1rem;\n display: inline-block;\n font-weight: $font-weight-bold;\n }\n\n .glyph {\n line-height: unset;\n }\n }\n\n .crumb-items {\n display: contents;\n }\n\n @include breadcrumb('btn');\n @include breadcrumb('ghost');\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 Prop,\n State,\n} from '@stencil/core';\nimport animejs from 'animejs';\nimport { createMutationObserver } from '../utils/mutation-observer';\n\n@Component({\n tag: 'ix-breadcrumb',\n styleUrl: 'breadcrumb.scss',\n scoped: true,\n})\nexport class Breadcrumb {\n /**\n * Excess items will get hidden inside of dropdown\n */\n @Prop() visibleItemCount = 9;\n\n /**\n * Items will be accessible through a dropdown\n */\n @Prop() nextItems: string[] = [];\n\n /**\n * Ghost breadcrumbs will not show solid backgrounds on individual crumbs unless there is a mouse event (e.g. hover)\n */\n @Prop() ghost = false;\n\n /**\n * Crumb item clicked event\n */\n @Event() itemClick: EventEmitter<string>;\n\n /**\n * Next item clicked event\n */\n @Event() nextClick: EventEmitter<{ event: UIEvent; item: string }>;\n\n @State() previousButtonRef: HTMLElement;\n\n @State() nextButtonRef: HTMLElement;\n\n @Element() hostElement: HTMLIxBreadcrumbElement;\n\n get breadcrumbItems() {\n return Array.from(this.hostElement.querySelectorAll('ix-breadcrumb-item'));\n }\n\n get crumbItems() {\n return Array.from(this.hostElement.querySelectorAll('.crumb-items .crumb'));\n }\n\n @State() items: { label: string; icon?: string }[] = [];\n\n private mutationObserver: MutationObserver;\n\n private onItemClick(item: string) {\n this.itemClick.emit(item);\n }\n\n componentDidLoad() {\n this.mutationObserver = createMutationObserver(() => {\n const updatedItems = this.getItems();\n const update = () => {\n this.items = updatedItems;\n };\n\n if (updatedItems.length >= this.items.length) {\n update();\n } else if (updatedItems.length < this.items.length) {\n const last = this.crumbItems[this.crumbItems.length - 1] as HTMLElement;\n this.animationFadeOut(last, () => update());\n }\n });\n\n this.mutationObserver.observe(\n this.hostElement.querySelector('.crumb-items'),\n {\n subtree: true,\n childList: true,\n }\n );\n }\n\n componentWillLoad() {\n this.items = this.getItems();\n }\n\n private getItems() {\n return this.breadcrumbItems.map((item) => {\n return { label: item.label, icon: item.icon };\n });\n }\n\n disconnectedCallback() {\n this.mutationObserver?.disconnect();\n }\n\n private animationFadeOut(ref: HTMLElement, complete: () => void) {\n animejs({\n targets: ref,\n translateX: '-100%',\n duration: 150,\n opacity: [1, 0],\n easing: 'linear',\n complete: () => complete(),\n });\n }\n\n private animationFadeIn(ref: HTMLElement) {\n animejs({\n targets: ref,\n duration: 150,\n opacity: [0, 1],\n translateX: ['-100%', '0%'],\n easing: 'linear',\n });\n }\n\n private handleLastButtonRef(ref: HTMLDivElement, last: boolean) {\n if (last) {\n this.animationFadeIn(ref);\n }\n if (last && this.nextItems?.length) {\n this.nextButtonRef = ref;\n }\n }\n\n private sliceHiddenItems() {\n let sliceIndex = 0;\n\n if (this.items.length > this.visibleItemCount) {\n sliceIndex = this.items.length - this.visibleItemCount;\n }\n\n return this.items.slice(sliceIndex);\n }\n\n private clickItem(item: string, last: boolean) {\n if (!last) {\n this.onItemClick(item);\n }\n }\n\n private renderBreadcrumbItems() {\n return this.sliceHiddenItems().map((item, index, array) => {\n const last = index === array.length - 1;\n\n const isLastItem = last && !this.nextItems?.length;\n return (\n <div\n ref={(ref) => this.handleLastButtonRef(ref, last)}\n data-breadcrumb={index}\n class={{\n crumb: true,\n clickable: true,\n ghost: this.ghost,\n btn: !this.ghost,\n last: isLastItem,\n 'remove-hover': isLastItem,\n }}\n onClick={() => this.clickItem(item.label, last)}\n data-testid=\"item\"\n >\n <span class=\"crumb-text remove-anchor\">\n {item.icon ? <ix-icon name={item.icon} size=\"16\"></ix-icon> : ''}\n <span\n style={{\n whiteSpace: 'nowrap',\n overflow: 'hidden',\n textOverflow: 'ellipsis',\n }}\n >\n {item.label}\n </span>\n </span>\n {!isLastItem ? (\n <span class=\"glyph glyph-18 glyph-chevron-right-small text-default-text\"></span>\n ) : null}\n </div>\n );\n });\n }\n\n render() {\n return (\n <Host>\n <ix-dropdown\n trigger={\n this.items?.length > this.visibleItemCount\n ? this.previousButtonRef\n : null\n }\n >\n {this.items\n .slice(0, this.items.length - this.visibleItemCount)\n .map((item) => (\n <ix-dropdown-item\n label={item.label}\n onClick={() => this.onItemClick(item.label)}\n ></ix-dropdown-item>\n ))}\n </ix-dropdown>\n {this.items?.length > this.visibleItemCount ? (\n <div\n class=\"crumb crumb-dropdown\"\n ref={(ref) => (this.previousButtonRef = ref)}\n >\n <span class=\"remove-anchor more-text\">\n <span class=\"more-text-ellipsis\">...</span>\n <span class=\"glyph glyph-16 glyph-chevron-right\"></span>\n </span>\n </div>\n ) : null}\n <div class=\"crumb-items\">\n {this.renderBreadcrumbItems()}\n <slot></slot>\n </div>\n <ix-dropdown trigger={this.nextButtonRef}>\n {this.nextItems?.map((item) => (\n <ix-dropdown-item\n label={item}\n onClick={(e) => {\n this.nextClick.emit({\n event: e,\n item,\n });\n }}\n ></ix-dropdown-item>\n ))}\n </ix-dropdown>\n </Host>\n );\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\n:host {\n display: block;\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 { Component, h, Host, Prop } from '@stencil/core';\n\n@Component({\n tag: 'ix-breadcrumb-item',\n styleUrl: 'breadcrumb-item.scss',\n scoped: true,\n})\nexport class BreadcrumbItem {\n /**\n * Breadcrumb label\n */\n @Prop() label: string;\n\n /**\n * Icon to be displayed next ot the label\n */\n @Prop() icon: string;\n\n render() {\n return (\n <Host>\n <slot></slot>\n </Host>\n );\n }\n}\n"],"mappings":"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"}
@@ -1,2 +1,2 @@
1
- import{r as o,c as e,h as r,H as t,g as d}from"./p-8fcd6f85.js";import{f as i,i as n,s,o as a,a as p,c as l}from"./p-f34a16c6.js";const m='.dropup,.dropend,.dropdown,.dropstart,.dropup-center,.dropdown-center{position:relative}.dropdown-toggle{white-space:nowrap}.dropdown-toggle::after{display:inline-block;margin-left:0.255em;vertical-align:0.255em;content:"";border-top:0.3em solid;border-right:0.3em solid transparent;border-bottom:0;border-left:0.3em solid transparent}.dropdown-toggle:empty::after{margin-left:0}.dropdown-menu{--bs-dropdown-zindex:1000;--bs-dropdown-min-width:10rem;--bs-dropdown-padding-x:0;--bs-dropdown-padding-y:0.5rem;--bs-dropdown-spacer:0.125rem;--bs-dropdown-font-size:1rem;--bs-dropdown-color:#212529;--bs-dropdown-bg:#fff;--bs-dropdown-border-color:var(--bs-border-color-translucent);--bs-dropdown-border-radius:0.375rem;--bs-dropdown-border-width:1px;--bs-dropdown-inner-border-radius:calc(0.375rem - 1px);--bs-dropdown-divider-bg:var(--bs-border-color-translucent);--bs-dropdown-divider-margin-y:0.5rem;--bs-dropdown-box-shadow:0 0.5rem 1rem rgba(0, 0, 0, 0.15);--bs-dropdown-link-color:#212529;--bs-dropdown-link-hover-color:#1e2125;--bs-dropdown-link-hover-bg:#e9ecef;--bs-dropdown-link-active-color:#fff;--bs-dropdown-link-active-bg:#0d6efd;--bs-dropdown-link-disabled-color:#adb5bd;--bs-dropdown-item-padding-x:1rem;--bs-dropdown-item-padding-y:0.25rem;--bs-dropdown-header-color:#6c757d;--bs-dropdown-header-padding-x:1rem;--bs-dropdown-header-padding-y:0.5rem;position:absolute;z-index:var(--bs-dropdown-zindex);display:none;min-width:var(--bs-dropdown-min-width);padding:var(--bs-dropdown-padding-y) var(--bs-dropdown-padding-x);margin:0;font-size:var(--bs-dropdown-font-size);color:var(--bs-dropdown-color);text-align:left;list-style:none;background-color:var(--bs-dropdown-bg);background-clip:padding-box;border:var(--bs-dropdown-border-width) solid var(--bs-dropdown-border-color);border-radius:var(--bs-dropdown-border-radius)}.dropdown-menu[data-bs-popper]{top:100%;left:0;margin-top:var(--bs-dropdown-spacer)}.dropdown-menu-start{--bs-position:start}.dropdown-menu-start[data-bs-popper]{right:auto;left:0}.dropdown-menu-end{--bs-position:end}.dropdown-menu-end[data-bs-popper]{right:0;left:auto}@media (min-width: 576px){.dropdown-menu-sm-start{--bs-position:start}.dropdown-menu-sm-start[data-bs-popper]{right:auto;left:0}.dropdown-menu-sm-end{--bs-position:end}.dropdown-menu-sm-end[data-bs-popper]{right:0;left:auto}}@media (min-width: 768px){.dropdown-menu-md-start{--bs-position:start}.dropdown-menu-md-start[data-bs-popper]{right:auto;left:0}.dropdown-menu-md-end{--bs-position:end}.dropdown-menu-md-end[data-bs-popper]{right:0;left:auto}}@media (min-width: 992px){.dropdown-menu-lg-start{--bs-position:start}.dropdown-menu-lg-start[data-bs-popper]{right:auto;left:0}.dropdown-menu-lg-end{--bs-position:end}.dropdown-menu-lg-end[data-bs-popper]{right:0;left:auto}}@media (min-width: 1200px){.dropdown-menu-xl-start{--bs-position:start}.dropdown-menu-xl-start[data-bs-popper]{right:auto;left:0}.dropdown-menu-xl-end{--bs-position:end}.dropdown-menu-xl-end[data-bs-popper]{right:0;left:auto}}@media (min-width: 1400px){.dropdown-menu-xxl-start{--bs-position:start}.dropdown-menu-xxl-start[data-bs-popper]{right:auto;left:0}.dropdown-menu-xxl-end{--bs-position:end}.dropdown-menu-xxl-end[data-bs-popper]{right:0;left:auto}}.dropup .dropdown-menu[data-bs-popper]{top:auto;bottom:100%;margin-top:0;margin-bottom:var(--bs-dropdown-spacer)}.dropup .dropdown-toggle::after{display:inline-block;margin-left:0.255em;vertical-align:0.255em;content:"";border-top:0;border-right:0.3em solid transparent;border-bottom:0.3em solid;border-left:0.3em solid transparent}.dropup .dropdown-toggle:empty::after{margin-left:0}.dropend .dropdown-menu[data-bs-popper]{top:0;right:auto;left:100%;margin-top:0;margin-left:var(--bs-dropdown-spacer)}.dropend .dropdown-toggle::after{display:inline-block;margin-left:0.255em;vertical-align:0.255em;content:"";border-top:0.3em solid transparent;border-right:0;border-bottom:0.3em solid transparent;border-left:0.3em solid}.dropend .dropdown-toggle:empty::after{margin-left:0}.dropend .dropdown-toggle::after{vertical-align:0}.dropstart .dropdown-menu[data-bs-popper]{top:0;right:100%;left:auto;margin-top:0;margin-right:var(--bs-dropdown-spacer)}.dropstart .dropdown-toggle::after{display:inline-block;margin-left:0.255em;vertical-align:0.255em;content:""}.dropstart .dropdown-toggle::after{display:none}.dropstart .dropdown-toggle::before{display:inline-block;margin-right:0.255em;vertical-align:0.255em;content:"";border-top:0.3em solid transparent;border-right:0.3em solid;border-bottom:0.3em solid transparent}.dropstart .dropdown-toggle:empty::after{margin-left:0}.dropstart .dropdown-toggle::before{vertical-align:0}.dropdown-divider{height:0;margin:var(--bs-dropdown-divider-margin-y) 0;overflow:hidden;border-top:1px solid var(--bs-dropdown-divider-bg);opacity:1}.dropdown-item{display:block;width:100%;padding:var(--bs-dropdown-item-padding-y) var(--bs-dropdown-item-padding-x);clear:both;font-weight:400;color:var(--bs-dropdown-link-color);text-align:inherit;text-decoration:none;white-space:nowrap;background-color:transparent;border:0}.dropdown-item:hover,.dropdown-item:focus{color:var(--bs-dropdown-link-hover-color);background-color:var(--bs-dropdown-link-hover-bg)}.dropdown-item.active,.dropdown-item:active{color:var(--bs-dropdown-link-active-color);text-decoration:none;background-color:var(--bs-dropdown-link-active-bg)}.dropdown-item.disabled,.dropdown-item:disabled{color:var(--bs-dropdown-link-disabled-color);pointer-events:none;background-color:transparent}.dropdown-menu.show{display:block}.dropdown-header{display:block;padding:var(--bs-dropdown-header-padding-y) var(--bs-dropdown-header-padding-x);margin-bottom:0;font-size:0.875rem;color:var(--bs-dropdown-header-color);white-space:nowrap}.dropdown-item-text{display:block;padding:var(--bs-dropdown-item-padding-y) var(--bs-dropdown-item-padding-x);color:var(--bs-dropdown-link-color)}.dropdown-menu-dark{--bs-dropdown-color:#dee2e6;--bs-dropdown-bg:#343a40;--bs-dropdown-border-color:var(--bs-border-color-translucent);--bs-dropdown-link-color:#dee2e6;--bs-dropdown-link-hover-color:#fff;--bs-dropdown-divider-bg:var(--bs-border-color-translucent);--bs-dropdown-link-hover-bg:rgba(255, 255, 255, 0.15);--bs-dropdown-link-active-color:#fff;--bs-dropdown-link-active-bg:#0d6efd;--bs-dropdown-link-disabled-color:#adb5bd;--bs-dropdown-header-color:#adb5bd}.dropdown-group{margin:0.687rem;display:block;position:relative;width:21.562rem;border-radius:0.25rem;background-color:#f8f9fa;border:solid 0.062rem rgba(0, 0, 0, 0.25)}.dropdown-group .dropdown-group-title{display:block;position:relative;font-size:0.875rem;text-align:left;margin:0.937rem 0 1.25rem 0.937rem}.dropdown-group .dropdown-group-content{position:relative;display:flex;flex-direction:column;overflow-y:auto;overflow-x:hidden;height:11.562rem;margin:0.937rem 0 0.937rem 0.937rem}.dropdown-group .dropdown-group-content>*{margin-bottom:1rem}.dropdown-group-submit{display:flex;justify-content:space-between;margin:0 0.687rem 0 0.687rem}.dropdown-menu{position:absolute;background-color:var(--theme-menu--background);-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.143em;color:var(--theme-color-std-text);border:var(--theme-menu--border-thickness) solid var(--theme-menu--border--color);border-radius:var(--theme-menu--border-radius);max-width:100vw;padding:0.25rem 0;transition:background-color 150ms;box-shadow:var(--theme-menu--box-shadow)}.dropdown-menu.xl>.dropdown-item{height:2.5rem;line-height:2.187rem}.dropdown-header{display:flex;align-items:center;height:2.5rem;color:var(--theme-menu-header--color);padding:0 1rem}.dropdown-buttons{display:flex;padding:0.25rem 0.5rem}.dropdown-buttons ix-icon-button+ix-icon-button{-webkit-margin-start:0.5rem;margin-inline-start:0.5rem}.dropdown-item{display:flex;height:2.5rem;position:relative;align-items:center;cursor:pointer;padding:0 2rem;border:1px solid transparent;color:var(--theme-menu-item--color)}.dropdown-item:focus-visible{background-color:var(--theme-menu-item--background);color:var(--theme-menu-item--color)}.dropdown-item:focus-visible{outline:none;background-color:var(--theme-menu-item--background);border-color:#119fff;color:var(--theme-menu-item--color--focus)}.dropdown-item:not(.disabled):not(:disabled){cursor:pointer}.dropdown-item:not(.disabled):not(:disabled):hover{color:var(--theme-menu-item--color--hover);background-color:var(--theme-menu-item--background--hover)}.dropdown-item:not(.disabled):not(:disabled){cursor:pointer}.dropdown-item:not(.disabled):not(:disabled):active{color:var(--theme-menu-item--color--active);background-color:var(--theme-menu-item--background--active)}.dropdown-item.disabled,.dropdown-item:disabled{color:var(--theme-menu-item--color--disabled);background-color:var(--theme-menu-item--background--disabled)}.dropdown-item>a,.dropdown-item a:hover,.dropdown-item a:active{color:var(--theme-color-std-text)}.dropdown-item>.glyph{color:var(--theme-menu-item-icon--color);-webkit-margin-end:0.5rem;margin-inline-end:0.5rem}.dropdown-item>.glyph.disabled{color:var(--color-weak-text)}.dropdown-item>.glyph.glyph-single-check{color:var(--theme-menu-item-icon-check--color)}.dropdown-item>input[type=checkbox]+label{margin-bottom:0px}.dropdown-item>input[type=checkbox]+label::before{margin-right:1rem}.dropdown-divider{border-top:1px solid var(--theme-menu-separator--background);margin:0.25rem 0}button.dropdown-toggle{position:relative;padding-right:1.5rem}button.dropdown-toggle::after{position:absolute;top:45%;right:0.5rem}:host{min-width:0px}:host(.overflow){max-height:50vh;overflow-y:auto}';const c=class{constructor(r){o(this,r);this.showChanged=e(this,"showChanged",7);this.autoUpdateCleanup=null;this.show=false;this.trigger=undefined;this.anchor=undefined;this.closeBehavior="both";this.placement="bottom-start";this.positioningStrategy="fixed";this.adjustDropdownWidthToReferenceWith=false;this.adjustDropdownWidthToReferenceWidth=false;this.header=undefined;this.offset=undefined;this.triggerEvent="click";this.overwriteDropdownStyle=undefined;this.toggleBind=this.toggle.bind(this);this.openBind=this.open.bind(this)}get dropdownItems(){return Array.from(this.hostElement.querySelectorAll("ix-dropdown-item"))}addEventListenersFor(o){switch(o){case"click":if(this.closeBehavior==="outside"){this.triggerElement.addEventListener("click",this.openBind)}else{this.triggerElement.addEventListener("click",this.toggleBind)}break;case"hover":this.triggerElement.addEventListener("mouseenter",this.openBind);break;case"focus":this.triggerElement.addEventListener("focusin",this.openBind);break}}removeEventListenersFor(o,e){switch(o){case"click":if(this.closeBehavior==="outside"){e.removeEventListener("click",this.openBind)}else{e.removeEventListener("click",this.toggleBind)}break;case"hover":e.removeEventListener("mouseenter",this.openBind);break;case"focus":e.removeEventListener("focusin",this.openBind);break}}async registerListener(o){this.triggerElement=await this.resolveElement(o);if(this.triggerElement){if(Array.isArray(this.triggerEvent)){this.triggerEvent.forEach((o=>{this.addEventListenersFor(o)}))}else{this.addEventListenersFor(this.triggerEvent)}}}async unregisterListener(o){const e=await this.resolveElement(o);if(Array.isArray(this.triggerEvent)){this.triggerEvent.forEach((o=>{this.removeEventListenersFor(o,e)}))}else{this.removeEventListenersFor(this.triggerEvent,e)}}resolveElement(o){if(typeof o!=="string"){return Promise.resolve(o)}const e=`#${o}`;return new Promise((o=>{if(document.querySelector(e)){return o(document.querySelector(e))}const r=new MutationObserver((()=>{if(document.querySelector(e)){o(document.querySelector(e));r.disconnect()}}));r.observe(document.body,{childList:true,subtree:true})}))}async changedShow(o){if(o){this.anchorElement=await(this.anchor?this.resolveElement(this.anchor):this.resolveElement(this.trigger));if(this.anchorElement){this.applyDropdownPosition()}}}changedTrigger(o,e){if(o){this.registerListener(o)}if(e){this.unregisterListener(e)}}clickOutside(o){var e,r;const t=o.target;if(this.show===false||this.closeBehavior===false||((e=this.anchorElement)===null||e===void 0?void 0:e.contains(t))||((r=this.triggerElement)===null||r===void 0?void 0:r.contains(t))){return}switch(this.closeBehavior){case"outside":if(!this.dropdownRef.contains(t)){this.close()}break;case"inside":if(this.dropdownRef.contains(t)&&this.hostElement!==t){this.close()}break;case"both":if(this.hostElement!==t)this.close();break;default:this.close()}}isNestedDropdown(o){return o.closest("ix-dropdown")}isAnchorSubmenu(){var o;const e=(o=this.anchorElement)===null||o===void 0?void 0:o.closest("ix-dropdown-item");if(!e){return false}return true}toggle(o){o===null||o===void 0?void 0:o.preventDefault();if(this.isNestedDropdown(o.target)){o===null||o===void 0?void 0:o.stopPropagation()}this.show=!this.show;this.showChanged.emit(this.show)}open(o){o===null||o===void 0?void 0:o.preventDefault();if(this.isNestedDropdown(o.target)){o===null||o===void 0?void 0:o.stopPropagation()}this.show=true;this.showChanged.emit(true)}close(o){if(o===null||o===void 0?void 0:o.defaultPrevented){return}this.show=false;this.showChanged.emit(false)}async applyDropdownPosition(){if(!this.anchorElement){return}if(!this.dropdownRef){return}const o=this.isAnchorSubmenu();let e={strategy:this.positioningStrategy,middleware:[]};if(o){e.placement="right-start"}if(this.placement.includes("auto")||o){e.middleware.push(i())}else{e.placement=this.placement}e.middleware=[...e.middleware,n(),s()];if(this.offset){e.middleware.push(a(this.offset))}if(this.autoUpdateCleanup){this.autoUpdateCleanup();this.autoUpdateCleanup=null}this.autoUpdateCleanup=p(this.anchorElement,this.dropdownRef,(async()=>{const o=await l(this.anchorElement,this.dropdownRef,e);Object.assign(this.dropdownRef.style,{top:"0",left:"0",transform:`translate(${Math.round(o.x)}px,${Math.round(o.y)}px)`});if(this.overwriteDropdownStyle){const o=await this.overwriteDropdownStyle({dropdownRef:this.dropdownRef,triggerRef:this.triggerElement});Object.assign(this.dropdownRef.style,o)}}),{ancestorResize:true,ancestorScroll:true,elementResize:true})}async componentDidLoad(){if(this.trigger){this.registerListener(this.trigger)}}async componentDidRender(){await this.applyDropdownPosition()}disconnectedCallback(){if(this.autoUpdateCleanup){this.autoUpdateCleanup()}}async updatePosition(){this.applyDropdownPosition()}render(){return r(t,{ref:o=>this.dropdownRef=o,class:{"dropdown-menu":true,show:this.show,overflow:true},style:{margin:"0",minWidth:"0px",position:this.positioningStrategy}},r("div",{style:{display:"contents"}},this.header?r("div",{class:"dropdown-header"},this.header):"",r("slot",null)))}get hostElement(){return d(this)}static get watchers(){return{show:["changedShow"],trigger:["changedTrigger"]}}};c.style=m;const h=".sc-ix-dropdown-item-h{display:block;min-width:10rem}.icon-only.sc-ix-dropdown-item-h{min-width:0}.icon-only.sc-ix-dropdown-item-h .dropdown-item.sc-ix-dropdown-item>.glyph.sc-ix-dropdown-item{-webkit-margin-end:0;margin-inline-end:0}.icon-only.sc-ix-dropdown-item-h .dropdown-item.sc-ix-dropdown-item{padding:0.25rem 0.5rem}.icon-only.sc-ix-dropdown-item-h .dropdown-item.sc-ix-dropdown-item:not(.disabled):not(:disabled):focus-visible{border-color:#199fff}.sc-ix-dropdown-item-h .sc-ix-dropdown-item:focus{background-color:transparent;color:var(--theme-menu-item--color)}.sc-ix-dropdown-item-h .checkmark.sc-ix-dropdown-item{position:absolute;left:0.5rem}.checked.sc-ix-dropdown-item-h{background-color:var(--theme-select-list-item--background--selected)}.sc-ix-dropdown-item-h .label.sc-ix-dropdown-item{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.disabled.sc-ix-dropdown-item-h{pointer-events:none}.sc-ix-dropdown-item-s>ix-icon{-webkit-margin-start:auto;margin-inline-start:auto}";const b=class{constructor(r){o(this,r);this.itemClick=e(this,"itemClick",7);this.label=undefined;this.icon=undefined;this.hover=false;this.disabled=false;this.checked=false}async emitItemClick(){this.itemClick.emit(this.hostElement)}render(){return r(t,{class:{checked:this.checked,"icon-text":this.label!==undefined&&this.icon!==undefined,"icon-only":this.label===undefined&&this.icon!==undefined,disabled:this.disabled}},r("button",{type:"button",class:{"dropdown-item":true,hover:this.hover,disabled:this.disabled},onClick:()=>this.emitItemClick()},this.checked?r("ix-icon",{class:"checkmark",name:"single-check",size:"16"}):null,this.icon?r("span",{class:{glyph:true,[`glyph-${this.icon}`]:true,disabled:this.disabled}}):null,this.label?r("span",{class:"label"},this.label):null,r("slot",null)))}get hostElement(){return d(this)}};b.style=h;export{c as ix_dropdown,b as ix_dropdown_item};
2
- //# sourceMappingURL=p-28f50519.entry.js.map
1
+ import{r as o,c as e,h as r,H as t,g as d}from"./p-8fcd6f85.js";import{f as i,i as n,s,o as a,a as p,c as l}from"./p-f34a16c6.js";const m='.dropup,.dropend,.dropdown,.dropstart,.dropup-center,.dropdown-center{position:relative}.dropdown-toggle{white-space:nowrap}.dropdown-toggle::after{display:inline-block;margin-left:0.255em;vertical-align:0.255em;content:"";border-top:0.3em solid;border-right:0.3em solid transparent;border-bottom:0;border-left:0.3em solid transparent}.dropdown-toggle:empty::after{margin-left:0}.dropdown-menu{--bs-dropdown-zindex:1000;--bs-dropdown-min-width:10rem;--bs-dropdown-padding-x:0;--bs-dropdown-padding-y:0.5rem;--bs-dropdown-spacer:0.125rem;--bs-dropdown-font-size:1rem;--bs-dropdown-color:#212529;--bs-dropdown-bg:#fff;--bs-dropdown-border-color:var(--bs-border-color-translucent);--bs-dropdown-border-radius:0.375rem;--bs-dropdown-border-width:1px;--bs-dropdown-inner-border-radius:calc(0.375rem - 1px);--bs-dropdown-divider-bg:var(--bs-border-color-translucent);--bs-dropdown-divider-margin-y:0.5rem;--bs-dropdown-box-shadow:0 0.5rem 1rem rgba(0, 0, 0, 0.15);--bs-dropdown-link-color:#212529;--bs-dropdown-link-hover-color:#1e2125;--bs-dropdown-link-hover-bg:#e9ecef;--bs-dropdown-link-active-color:#fff;--bs-dropdown-link-active-bg:#0d6efd;--bs-dropdown-link-disabled-color:#adb5bd;--bs-dropdown-item-padding-x:1rem;--bs-dropdown-item-padding-y:0.25rem;--bs-dropdown-header-color:#6c757d;--bs-dropdown-header-padding-x:1rem;--bs-dropdown-header-padding-y:0.5rem;position:absolute;z-index:var(--bs-dropdown-zindex);display:none;min-width:var(--bs-dropdown-min-width);padding:var(--bs-dropdown-padding-y) var(--bs-dropdown-padding-x);margin:0;font-size:var(--bs-dropdown-font-size);color:var(--bs-dropdown-color);text-align:left;list-style:none;background-color:var(--bs-dropdown-bg);background-clip:padding-box;border:var(--bs-dropdown-border-width) solid var(--bs-dropdown-border-color);border-radius:var(--bs-dropdown-border-radius)}.dropdown-menu[data-bs-popper]{top:100%;left:0;margin-top:var(--bs-dropdown-spacer)}.dropdown-menu-start{--bs-position:start}.dropdown-menu-start[data-bs-popper]{right:auto;left:0}.dropdown-menu-end{--bs-position:end}.dropdown-menu-end[data-bs-popper]{right:0;left:auto}@media (min-width: 576px){.dropdown-menu-sm-start{--bs-position:start}.dropdown-menu-sm-start[data-bs-popper]{right:auto;left:0}.dropdown-menu-sm-end{--bs-position:end}.dropdown-menu-sm-end[data-bs-popper]{right:0;left:auto}}@media (min-width: 768px){.dropdown-menu-md-start{--bs-position:start}.dropdown-menu-md-start[data-bs-popper]{right:auto;left:0}.dropdown-menu-md-end{--bs-position:end}.dropdown-menu-md-end[data-bs-popper]{right:0;left:auto}}@media (min-width: 992px){.dropdown-menu-lg-start{--bs-position:start}.dropdown-menu-lg-start[data-bs-popper]{right:auto;left:0}.dropdown-menu-lg-end{--bs-position:end}.dropdown-menu-lg-end[data-bs-popper]{right:0;left:auto}}@media (min-width: 1200px){.dropdown-menu-xl-start{--bs-position:start}.dropdown-menu-xl-start[data-bs-popper]{right:auto;left:0}.dropdown-menu-xl-end{--bs-position:end}.dropdown-menu-xl-end[data-bs-popper]{right:0;left:auto}}@media (min-width: 1400px){.dropdown-menu-xxl-start{--bs-position:start}.dropdown-menu-xxl-start[data-bs-popper]{right:auto;left:0}.dropdown-menu-xxl-end{--bs-position:end}.dropdown-menu-xxl-end[data-bs-popper]{right:0;left:auto}}.dropup .dropdown-menu[data-bs-popper]{top:auto;bottom:100%;margin-top:0;margin-bottom:var(--bs-dropdown-spacer)}.dropup .dropdown-toggle::after{display:inline-block;margin-left:0.255em;vertical-align:0.255em;content:"";border-top:0;border-right:0.3em solid transparent;border-bottom:0.3em solid;border-left:0.3em solid transparent}.dropup .dropdown-toggle:empty::after{margin-left:0}.dropend .dropdown-menu[data-bs-popper]{top:0;right:auto;left:100%;margin-top:0;margin-left:var(--bs-dropdown-spacer)}.dropend .dropdown-toggle::after{display:inline-block;margin-left:0.255em;vertical-align:0.255em;content:"";border-top:0.3em solid transparent;border-right:0;border-bottom:0.3em solid transparent;border-left:0.3em solid}.dropend .dropdown-toggle:empty::after{margin-left:0}.dropend .dropdown-toggle::after{vertical-align:0}.dropstart .dropdown-menu[data-bs-popper]{top:0;right:100%;left:auto;margin-top:0;margin-right:var(--bs-dropdown-spacer)}.dropstart .dropdown-toggle::after{display:inline-block;margin-left:0.255em;vertical-align:0.255em;content:""}.dropstart .dropdown-toggle::after{display:none}.dropstart .dropdown-toggle::before{display:inline-block;margin-right:0.255em;vertical-align:0.255em;content:"";border-top:0.3em solid transparent;border-right:0.3em solid;border-bottom:0.3em solid transparent}.dropstart .dropdown-toggle:empty::after{margin-left:0}.dropstart .dropdown-toggle::before{vertical-align:0}.dropdown-divider{height:0;margin:var(--bs-dropdown-divider-margin-y) 0;overflow:hidden;border-top:1px solid var(--bs-dropdown-divider-bg);opacity:1}.dropdown-item{display:block;width:100%;padding:var(--bs-dropdown-item-padding-y) var(--bs-dropdown-item-padding-x);clear:both;font-weight:400;color:var(--bs-dropdown-link-color);text-align:inherit;text-decoration:none;white-space:nowrap;background-color:transparent;border:0}.dropdown-item:hover,.dropdown-item:focus{color:var(--bs-dropdown-link-hover-color);background-color:var(--bs-dropdown-link-hover-bg)}.dropdown-item.active,.dropdown-item:active{color:var(--bs-dropdown-link-active-color);text-decoration:none;background-color:var(--bs-dropdown-link-active-bg)}.dropdown-item.disabled,.dropdown-item:disabled{color:var(--bs-dropdown-link-disabled-color);pointer-events:none;background-color:transparent}.dropdown-menu.show{display:block}.dropdown-header{display:block;padding:var(--bs-dropdown-header-padding-y) var(--bs-dropdown-header-padding-x);margin-bottom:0;font-size:0.875rem;color:var(--bs-dropdown-header-color);white-space:nowrap}.dropdown-item-text{display:block;padding:var(--bs-dropdown-item-padding-y) var(--bs-dropdown-item-padding-x);color:var(--bs-dropdown-link-color)}.dropdown-menu-dark{--bs-dropdown-color:#dee2e6;--bs-dropdown-bg:#343a40;--bs-dropdown-border-color:var(--bs-border-color-translucent);--bs-dropdown-link-color:#dee2e6;--bs-dropdown-link-hover-color:#fff;--bs-dropdown-divider-bg:var(--bs-border-color-translucent);--bs-dropdown-link-hover-bg:rgba(255, 255, 255, 0.15);--bs-dropdown-link-active-color:#fff;--bs-dropdown-link-active-bg:#0d6efd;--bs-dropdown-link-disabled-color:#adb5bd;--bs-dropdown-header-color:#adb5bd}.dropdown-group{margin:0.687rem;display:block;position:relative;width:21.562rem;border-radius:0.25rem;background-color:#f8f9fa;border:solid 0.062rem rgba(0, 0, 0, 0.25)}.dropdown-group .dropdown-group-title{display:block;position:relative;font-size:0.875rem;text-align:left;margin:0.937rem 0 1.25rem 0.937rem}.dropdown-group .dropdown-group-content{position:relative;display:flex;flex-direction:column;overflow-y:auto;overflow-x:hidden;height:11.562rem;margin:0.937rem 0 0.937rem 0.937rem}.dropdown-group .dropdown-group-content>*{margin-bottom:1rem}.dropdown-group-submit{display:flex;justify-content:space-between;margin:0 0.687rem 0 0.687rem}.dropdown-menu{position:absolute;background-color:var(--theme-menu--background);-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.143em;color:var(--theme-color-std-text);border:var(--theme-menu--border-thickness) solid var(--theme-menu--border--color);border-radius:var(--theme-menu--border-radius);max-width:100vw;padding:0.25rem 0;transition:background-color 150ms;box-shadow:var(--theme-menu--box-shadow)}.dropdown-menu.xl>.dropdown-item{height:2.5rem;line-height:2.187rem}.dropdown-header{display:flex;align-items:center;height:2.5rem;color:var(--theme-menu-header--color);padding:0 1rem}.dropdown-buttons{display:flex;padding:0.25rem 0.5rem}.dropdown-buttons ix-icon-button+ix-icon-button{-webkit-margin-start:0.5rem;margin-inline-start:0.5rem}.dropdown-item{display:flex;height:2.5rem;position:relative;align-items:center;cursor:pointer;padding:0 2rem;border:1px solid transparent;color:var(--theme-menu-item--color)}.dropdown-item:focus-visible{background-color:var(--theme-menu-item--background);color:var(--theme-menu-item--color)}.dropdown-item:focus-visible{outline:none;background-color:var(--theme-menu-item--background);border-color:#119fff;color:var(--theme-menu-item--color--focus)}.dropdown-item:not(.disabled):not(:disabled){cursor:pointer}.dropdown-item:not(.disabled):not(:disabled):hover{color:var(--theme-menu-item--color--hover);background-color:var(--theme-menu-item--background--hover)}.dropdown-item:not(.disabled):not(:disabled){cursor:pointer}.dropdown-item:not(.disabled):not(:disabled):active{color:var(--theme-menu-item--color--active);background-color:var(--theme-menu-item--background--active)}.dropdown-item.disabled,.dropdown-item:disabled{color:var(--theme-menu-item--color--disabled);background-color:var(--theme-menu-item--background--disabled)}.dropdown-item>a,.dropdown-item a:hover,.dropdown-item a:active{color:var(--theme-color-std-text)}.dropdown-item>.glyph{color:var(--theme-menu-item-icon--color);-webkit-margin-end:0.5rem;margin-inline-end:0.5rem}.dropdown-item>.glyph.disabled{color:var(--color-weak-text)}.dropdown-item>.glyph.glyph-single-check{color:var(--theme-menu-item-icon-check--color)}.dropdown-item>input[type=checkbox]+label{margin-bottom:0px}.dropdown-item>input[type=checkbox]+label::before{margin-right:1rem}.dropdown-divider{border-top:1px solid var(--theme-menu-separator--background);margin:0.25rem 0}button.dropdown-toggle{position:relative;padding-right:1.5rem}button.dropdown-toggle::after{position:absolute;top:45%;right:0.5rem}:host{min-width:0px}:host(.overflow){max-height:50vh;overflow-y:auto}';const c=class{constructor(r){o(this,r);this.showChanged=e(this,"showChanged",7);this.autoUpdateCleanup=null;this.show=false;this.trigger=undefined;this.anchor=undefined;this.closeBehavior="both";this.placement="bottom-start";this.positioningStrategy="fixed";this.adjustDropdownWidthToReferenceWith=false;this.adjustDropdownWidthToReferenceWidth=false;this.header=undefined;this.offset=undefined;this.triggerEvent="click";this.overwriteDropdownStyle=undefined;this.toggleBind=this.toggle.bind(this);this.openBind=this.open.bind(this)}get dropdownItems(){return Array.from(this.hostElement.querySelectorAll("ix-dropdown-item"))}addEventListenersFor(o){switch(o){case"click":if(this.closeBehavior==="outside"){this.triggerElement.addEventListener("click",this.openBind)}else{this.triggerElement.addEventListener("click",this.toggleBind)}break;case"hover":this.triggerElement.addEventListener("mouseenter",this.openBind);break;case"focus":this.triggerElement.addEventListener("focusin",this.openBind);break}}removeEventListenersFor(o,e){switch(o){case"click":if(this.closeBehavior==="outside"){e.removeEventListener("click",this.openBind)}else{e.removeEventListener("click",this.toggleBind)}break;case"hover":e.removeEventListener("mouseenter",this.openBind);break;case"focus":e.removeEventListener("focusin",this.openBind);break}}async registerListener(o){this.triggerElement=await this.resolveElement(o);if(this.triggerElement){if(Array.isArray(this.triggerEvent)){this.triggerEvent.forEach((o=>{this.addEventListenersFor(o)}))}else{this.addEventListenersFor(this.triggerEvent)}}}async unregisterListener(o){const e=await this.resolveElement(o);if(Array.isArray(this.triggerEvent)){this.triggerEvent.forEach((o=>{this.removeEventListenersFor(o,e)}))}else{this.removeEventListenersFor(this.triggerEvent,e)}}resolveElement(o){if(typeof o!=="string"){return Promise.resolve(o)}const e=`#${o}`;return new Promise((o=>{if(document.querySelector(e)){return o(document.querySelector(e))}const r=new MutationObserver((()=>{if(document.querySelector(e)){o(document.querySelector(e));r.disconnect()}}));r.observe(document.body,{childList:true,subtree:true})}))}async changedShow(o){if(o){this.anchorElement=await(this.anchor?this.resolveElement(this.anchor):this.resolveElement(this.trigger));if(this.anchorElement){this.applyDropdownPosition()}}}changedTrigger(o,e){if(o){this.registerListener(o)}if(e){this.unregisterListener(e)}}clickOutside(o){var e,r;const t=o.target;if(this.show===false||this.closeBehavior===false||((e=this.anchorElement)===null||e===void 0?void 0:e.contains(t))||((r=this.triggerElement)===null||r===void 0?void 0:r.contains(t))){return}switch(this.closeBehavior){case"outside":if(!this.dropdownRef.contains(t)){this.close()}break;case"inside":if(this.dropdownRef.contains(t)&&this.hostElement!==t){this.close()}break;case"both":if(this.hostElement!==t)this.close();break;default:this.close()}}isNestedDropdown(o){return o.closest("ix-dropdown")}isAnchorSubmenu(){var o;const e=(o=this.anchorElement)===null||o===void 0?void 0:o.closest("ix-dropdown-item");if(!e){return false}return true}toggle(o){o===null||o===void 0?void 0:o.preventDefault();if(this.isNestedDropdown(o.target)){o===null||o===void 0?void 0:o.stopPropagation()}this.show=!this.show;this.showChanged.emit(this.show)}open(o){o===null||o===void 0?void 0:o.preventDefault();if(this.isNestedDropdown(o.target)){o===null||o===void 0?void 0:o.stopPropagation()}this.show=true;this.showChanged.emit(true)}close(o){if(o===null||o===void 0?void 0:o.defaultPrevented){return}this.show=false;this.showChanged.emit(false)}async applyDropdownPosition(){if(!this.anchorElement){return}if(!this.dropdownRef){return}const o=this.isAnchorSubmenu();let e={strategy:this.positioningStrategy,middleware:[]};if(o){e.placement="right-start"}if(this.placement.includes("auto")||o){e.middleware.push(i({fallbackStrategy:"initialPlacement"}));e.placement="bottom-start"}else{e.placement=this.placement}e.middleware=[...e.middleware,n(),s()];if(this.offset){e.middleware.push(a(this.offset))}if(this.autoUpdateCleanup){this.autoUpdateCleanup();this.autoUpdateCleanup=null}this.autoUpdateCleanup=p(this.anchorElement,this.dropdownRef,(async()=>{const o=await l(this.anchorElement,this.dropdownRef,e);Object.assign(this.dropdownRef.style,{top:"0",left:"0",transform:`translate(${Math.round(o.x)}px,${Math.round(o.y)}px)`});if(this.overwriteDropdownStyle){const o=await this.overwriteDropdownStyle({dropdownRef:this.dropdownRef,triggerRef:this.triggerElement});Object.assign(this.dropdownRef.style,o)}}),{ancestorResize:true,ancestorScroll:true,elementResize:true})}async componentDidLoad(){if(this.trigger){this.registerListener(this.trigger)}}async componentDidRender(){await this.applyDropdownPosition()}disconnectedCallback(){if(this.autoUpdateCleanup){this.autoUpdateCleanup()}}async updatePosition(){this.applyDropdownPosition()}render(){return r(t,{ref:o=>this.dropdownRef=o,class:{"dropdown-menu":true,show:this.show,overflow:true},style:{margin:"0",minWidth:"0px",position:this.positioningStrategy}},r("div",{style:{display:"contents"}},this.header?r("div",{class:"dropdown-header"},this.header):"",r("slot",null)))}get hostElement(){return d(this)}static get watchers(){return{show:["changedShow"],trigger:["changedTrigger"]}}};c.style=m;const h=".sc-ix-dropdown-item-h{display:block}.icon-only.sc-ix-dropdown-item-h{min-width:0}.icon-only.sc-ix-dropdown-item-h .dropdown-item.sc-ix-dropdown-item>.glyph.sc-ix-dropdown-item{-webkit-margin-end:0;margin-inline-end:0}.icon-only.sc-ix-dropdown-item-h .dropdown-item.sc-ix-dropdown-item{padding:0.25rem 0.5rem}.icon-only.sc-ix-dropdown-item-h .dropdown-item.sc-ix-dropdown-item:not(.disabled):not(:disabled):focus-visible{border-color:#199fff}.sc-ix-dropdown-item-h .sc-ix-dropdown-item:focus{background-color:transparent;color:var(--theme-menu-item--color)}.sc-ix-dropdown-item-h .checkmark.sc-ix-dropdown-item{position:absolute;left:0.5rem}.checked.sc-ix-dropdown-item-h{background-color:var(--theme-select-list-item--background--selected)}.sc-ix-dropdown-item-h .label.sc-ix-dropdown-item{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.disabled.sc-ix-dropdown-item-h{pointer-events:none}.sc-ix-dropdown-item-s>ix-icon{-webkit-margin-start:auto;margin-inline-start:auto}";const b=class{constructor(r){o(this,r);this.itemClick=e(this,"itemClick",7);this.label=undefined;this.icon=undefined;this.hover=false;this.disabled=false;this.checked=false}async emitItemClick(){this.itemClick.emit(this.hostElement)}render(){return r(t,{class:{checked:this.checked,"icon-text":this.label!==undefined&&this.icon!==undefined,"icon-only":this.label===undefined&&this.icon!==undefined,disabled:this.disabled}},r("button",{type:"button",class:{"dropdown-item":true,hover:this.hover,disabled:this.disabled},onClick:()=>this.emitItemClick(),tabindex:0},this.checked?r("ix-icon",{class:"checkmark",name:"single-check",size:"16"}):null,this.icon?r("span",{class:{glyph:true,[`glyph-${this.icon}`]:true,disabled:this.disabled}}):null,this.label?r("span",{class:"label"},this.label):null,r("slot",null)))}get hostElement(){return d(this)}};b.style=h;export{c as ix_dropdown,b as ix_dropdown_item};
2
+ //# sourceMappingURL=p-eb799bdd.entry.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"names":["dropdownCss","Dropdown","constructor","hostRef","this","autoUpdateCleanup","toggleBind","toggle","bind","openBind","open","dropdownItems","Array","from","hostElement","querySelectorAll","addEventListenersFor","triggerEvent","closeBehavior","triggerElement","addEventListener","removeEventListenersFor","removeEventListener","async","element","resolveElement","isArray","forEach","trigger","Promise","resolve","selector","document","querySelector","observer","MutationObserver","disconnect","observe","body","childList","subtree","newShow","anchorElement","anchor","applyDropdownPosition","changedTrigger","newTriggerValue","oldTriggerValue","registerListener","unregisterListener","clickOutside","event","target","show","_a","contains","_b","dropdownRef","close","isNestedDropdown","closest","isAnchorSubmenu","preventDefault","stopPropagation","showChanged","emit","defaultPrevented","isSubmenu","positionConfig","strategy","positioningStrategy","middleware","placement","includes","push","flip","fallbackStrategy","inline","shift","offset","autoUpdate","computeResponse","computePosition","Object","assign","style","top","left","transform","Math","round","x","y","overwriteDropdownStyle","overwriteStyle","triggerRef","ancestorResize","ancestorScroll","elementResize","disconnectedCallback","render","h","Host","ref","class","overflow","margin","minWidth","position","display","header","dropdownItemCss","DropdownItem","itemClick","checked","label","undefined","icon","disabled","type","hover","onClick","emitItemClick","tabindex","name","size","glyph"],"sources":["./src/components/dropdown/dropdown.scss?tag=ix-dropdown&encapsulation=shadow","./src/components/dropdown/dropdown.tsx","./src/components/dropdown-item/dropdown-item.scss?tag=ix-dropdown-item&encapsulation=scoped","./src/components/dropdown-item/dropdown-item.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 '~bootstrap/scss/functions';\n@import 'common-variables';\n@import '~bootstrap/scss/variables';\n@import '~bootstrap/scss/mixins';\n@import '~bootstrap/scss/dropdown';\n\n@import 'mixins/fonts';\n@import 'mixins/text-truncation';\n@import 'components/dropdown';\n\n:host {\n min-width: 0px;\n}\n\n:host(.overflow) {\n max-height: 50vh;\n overflow-y: auto;\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 autoUpdate,\n computePosition,\n ComputePositionConfig,\n flip,\n inline,\n offset,\n shift,\n} from '@floating-ui/dom';\nimport {\n Component,\n Element,\n Event,\n EventEmitter,\n h,\n Host,\n Listen,\n Method,\n Prop,\n Watch,\n} from '@stencil/core';\nimport { BasePlacement, Placement, PlacementWithAlignment } from './placement';\n\n/**\n * @internal\n */\nexport type DropdownTriggerEvent = 'click' | 'hover' | 'focus';\n\n@Component({\n tag: 'ix-dropdown',\n styleUrl: 'dropdown.scss',\n shadow: true,\n})\nexport class Dropdown {\n @Element() hostElement!: HTMLIxDropdownElement;\n\n /**\n * Show dropdown\n */\n @Prop({ mutable: true, reflect: true }) show = false;\n\n /**\n * Define an element that triggers the dropdown.\n * A trigger can either be a string that will be interpreted as id attribute or a DOM element.\n */\n @Prop() trigger: string | HTMLElement;\n\n /**\n * Define an anchor element\n */\n @Prop() anchor: string | HTMLElement;\n\n /**\n * Close behavior\n */\n @Prop() closeBehavior: 'inside' | 'outside' | 'both' | boolean = 'both';\n\n /**\n * Placement of the dropdown\n */\n @Prop() placement: Placement = 'bottom-start';\n\n /**\n * Position strategy\n */\n @Prop() positioningStrategy: 'absolute' | 'fixed' = 'fixed';\n\n /**\n * Adjust dropdown width to the parent width\n * @deprecated Will be removed in 2.0.0. Property has a typo use `adjustDropdownWidthToReferenceWidth` instead.\n */\n @Prop() adjustDropdownWidthToReferenceWith = false;\n\n /**\n * Adjust dropdown width to the parent width\n *\n * @deprecated Will be removed. Not used anymore\n */\n @Prop() adjustDropdownWidthToReferenceWidth = false;\n\n /**\n * An optional header shown at the top of the dropdown\n */\n @Prop() header?: string;\n\n /**\n * Move dropdown along main axis of alignment\n *\n * @internal\n */\n @Prop() offset: {\n mainAxis?: number;\n crossAxis?: number;\n alignmentAxis?: number;\n };\n\n /**\n * Define one or more events to open dropdown\n * @internal\n */\n @Prop() triggerEvent: DropdownTriggerEvent | DropdownTriggerEvent[] = 'click';\n\n /**\n * @internal\n */\n @Prop() overwriteDropdownStyle: (delegate: {\n dropdownRef: HTMLElement;\n triggerRef?: HTMLElement;\n }) => Promise<Partial<CSSStyleDeclaration>>;\n\n /**\n * Fire event after visibility of dropdown has changed\n */\n @Event() showChanged: EventEmitter<boolean>;\n\n private autoUpdateCleanup: () => void = null;\n\n private triggerElement?: Element;\n private anchorElement?: Element;\n\n private dropdownRef: HTMLElement;\n\n private toggleBind: any;\n private openBind: any;\n\n constructor() {\n this.toggleBind = this.toggle.bind(this);\n this.openBind = this.open.bind(this);\n }\n\n get dropdownItems() {\n return Array.from(this.hostElement.querySelectorAll('ix-dropdown-item'));\n }\n\n private addEventListenersFor(triggerEvent: DropdownTriggerEvent) {\n switch (triggerEvent) {\n case 'click':\n if (this.closeBehavior === 'outside') {\n this.triggerElement.addEventListener('click', this.openBind);\n } else {\n this.triggerElement.addEventListener('click', this.toggleBind);\n }\n break;\n\n case 'hover':\n this.triggerElement.addEventListener('mouseenter', this.openBind);\n break;\n\n case 'focus':\n this.triggerElement.addEventListener('focusin', this.openBind);\n break;\n }\n }\n\n private removeEventListenersFor(\n triggerEvent: DropdownTriggerEvent,\n triggerElement: Element\n ) {\n switch (triggerEvent) {\n case 'click':\n if (this.closeBehavior === 'outside') {\n triggerElement.removeEventListener('click', this.openBind);\n } else {\n triggerElement.removeEventListener('click', this.toggleBind);\n }\n break;\n\n case 'hover':\n triggerElement.removeEventListener('mouseenter', this.openBind);\n break;\n\n case 'focus':\n triggerElement.removeEventListener('focusin', this.openBind);\n break;\n }\n }\n\n private async registerListener(element: string | HTMLElement) {\n this.triggerElement = await this.resolveElement(element);\n if (this.triggerElement) {\n if (Array.isArray(this.triggerEvent)) {\n this.triggerEvent.forEach((triggerEvent) => {\n this.addEventListenersFor(triggerEvent);\n });\n } else {\n this.addEventListenersFor(this.triggerEvent);\n }\n }\n }\n\n private async unregisterListener(element: string | HTMLElement) {\n const trigger = await this.resolveElement(element);\n if (Array.isArray(this.triggerEvent)) {\n this.triggerEvent.forEach((triggerEvent) => {\n this.removeEventListenersFor(triggerEvent, trigger);\n });\n } else {\n this.removeEventListenersFor(this.triggerEvent, trigger);\n }\n }\n\n private resolveElement(element: string | HTMLElement): Promise<Element> {\n if (typeof element !== 'string') {\n return Promise.resolve(element);\n }\n\n const selector = `#${element}`;\n return new Promise((resolve) => {\n if (document.querySelector(selector)) {\n return resolve(document.querySelector(selector));\n }\n\n const observer = new MutationObserver(() => {\n if (document.querySelector(selector)) {\n resolve(document.querySelector(selector));\n observer.disconnect();\n }\n });\n\n observer.observe(document.body, {\n childList: true,\n subtree: true,\n });\n });\n }\n\n @Watch('show')\n async changedShow(newShow: boolean) {\n if (newShow) {\n this.anchorElement = await (this.anchor\n ? this.resolveElement(this.anchor)\n : this.resolveElement(this.trigger));\n\n if (this.anchorElement) {\n this.applyDropdownPosition();\n }\n }\n }\n\n @Watch('trigger')\n changedTrigger(\n newTriggerValue: string | HTMLElement,\n oldTriggerValue: string | HTMLElement\n ) {\n if (newTriggerValue) {\n this.registerListener(newTriggerValue);\n }\n\n if (oldTriggerValue) {\n this.unregisterListener(oldTriggerValue);\n }\n }\n\n @Listen('click', {\n target: 'window',\n })\n clickOutside(event: Event) {\n const target = event.target as HTMLElement;\n\n if (\n this.show === false ||\n this.closeBehavior === false ||\n this.anchorElement?.contains(target) ||\n this.triggerElement?.contains(target)\n ) {\n return;\n }\n\n switch (this.closeBehavior) {\n case 'outside':\n if (!this.dropdownRef.contains(target)) {\n this.close();\n }\n break;\n case 'inside':\n if (this.dropdownRef.contains(target) && this.hostElement !== target) {\n this.close();\n }\n break;\n case 'both':\n if (this.hostElement !== target) this.close();\n break;\n default:\n this.close();\n }\n }\n\n private isNestedDropdown(element: Element) {\n return element.closest('ix-dropdown');\n }\n\n private isAnchorSubmenu() {\n const anchor = this.anchorElement?.closest('ix-dropdown-item');\n if (!anchor) {\n return false;\n }\n\n return true;\n }\n\n private toggle(event?: Event) {\n event?.preventDefault();\n\n if (this.isNestedDropdown(event.target as HTMLElement)) {\n event?.stopPropagation();\n }\n\n this.show = !this.show;\n this.showChanged.emit(this.show);\n }\n\n private open(event?: Event) {\n event?.preventDefault();\n\n if (this.isNestedDropdown(event.target as HTMLElement)) {\n event?.stopPropagation();\n }\n\n this.show = true;\n this.showChanged.emit(true);\n }\n\n private close(event?: Event) {\n if (event?.defaultPrevented) {\n return;\n }\n\n this.show = false;\n this.showChanged.emit(false);\n }\n\n private async applyDropdownPosition() {\n if (!this.anchorElement) {\n return;\n }\n if (!this.dropdownRef) {\n return;\n }\n const isSubmenu = this.isAnchorSubmenu();\n\n let positionConfig: Partial<ComputePositionConfig> = {\n strategy: this.positioningStrategy,\n middleware: [],\n };\n\n if (isSubmenu) {\n positionConfig.placement = 'right-start';\n }\n\n if (this.placement.includes('auto') || isSubmenu) {\n positionConfig.middleware.push(\n flip({ fallbackStrategy: 'initialPlacement' })\n );\n positionConfig.placement = 'bottom-start';\n } else {\n positionConfig.placement = this.placement as\n | BasePlacement\n | PlacementWithAlignment;\n }\n\n positionConfig.middleware = [\n ...positionConfig.middleware,\n inline(),\n shift(),\n ];\n\n if (this.offset) {\n positionConfig.middleware.push(offset(this.offset));\n }\n\n if (this.autoUpdateCleanup) {\n this.autoUpdateCleanup();\n this.autoUpdateCleanup = null;\n }\n this.autoUpdateCleanup = autoUpdate(\n this.anchorElement,\n this.dropdownRef,\n async () => {\n const computeResponse = await computePosition(\n this.anchorElement,\n this.dropdownRef,\n positionConfig\n );\n Object.assign(this.dropdownRef.style, {\n top: '0',\n left: '0',\n transform: `translate(${Math.round(computeResponse.x)}px,${Math.round(\n computeResponse.y\n )}px)`,\n });\n if (this.overwriteDropdownStyle) {\n const overwriteStyle = await this.overwriteDropdownStyle({\n dropdownRef: this.dropdownRef,\n triggerRef: this.triggerElement as HTMLElement,\n });\n\n Object.assign(this.dropdownRef.style, overwriteStyle);\n }\n },\n {\n ancestorResize: true,\n ancestorScroll: true,\n elementResize: true,\n }\n );\n }\n\n async componentDidLoad() {\n if (this.trigger) {\n this.registerListener(this.trigger);\n }\n }\n\n async componentDidRender() {\n await this.applyDropdownPosition();\n }\n\n disconnectedCallback() {\n if (this.autoUpdateCleanup) {\n this.autoUpdateCleanup();\n }\n }\n\n /**\n * Update position of dropdown\n */\n @Method()\n async updatePosition() {\n this.applyDropdownPosition();\n }\n\n render() {\n return (\n <Host\n ref={(ref) => (this.dropdownRef = ref)}\n class={{\n 'dropdown-menu': true,\n show: this.show,\n overflow: true,\n }}\n style={{\n margin: '0',\n minWidth: '0px',\n position: this.positioningStrategy,\n }}\n >\n <div style={{ display: 'contents' }}>\n {this.header ? <div class=\"dropdown-header\">{this.header}</div> : ''}\n\n <slot></slot>\n </div>\n </Host>\n );\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\n@import 'common-variables';\n@import 'mixins/hover';\n@import 'mixins/text-truncation';\n\n:host {\n display: block;\n\n &.icon-only {\n min-width: 0;\n\n .dropdown-item > .glyph {\n margin-inline-end: 0;\n }\n\n .dropdown-item {\n padding: $tiny-space $small-space;\n\n @include focus-visible {\n border-color: #199fff;\n }\n }\n }\n\n :focus {\n background-color: transparent;\n color: var(--theme-menu-item--color);\n }\n\n .checkmark {\n position: absolute;\n left: $small-space;\n }\n\n &.checked {\n background-color: var(--theme-select-list-item--background--selected);\n }\n\n .label {\n @include ellipsis;\n }\n\n &.disabled {\n pointer-events: none;\n }\n}\n\n::slotted(ix-icon) {\n margin-inline-start: auto;\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 Method,\n Prop,\n} from '@stencil/core';\n\n@Component({\n tag: 'ix-dropdown-item',\n styleUrl: 'dropdown-item.scss',\n scoped: true,\n})\nexport class DropdownItem {\n @Element() hostElement!: HTMLIxDropdownItemElement;\n\n /**\n * Label of dropdown item\n */\n @Prop() label: string;\n\n /**\n * Icon of dropdown item\n */\n @Prop() icon: string;\n\n /**\n * Display hover state\n */\n @Prop() hover = false;\n\n /**\n * Disable item and remove event listeners\n */\n @Prop() disabled = false;\n\n /**\n * Whether the item is checked or not. If true a checkmark will mark the item as checked.\n */\n @Prop() checked = false;\n\n /**\n * Click on item\n */\n @Event() itemClick: EventEmitter<HTMLIxDropdownItemElement>;\n\n /**\n * Internal usage only\n */\n @Method()\n async emitItemClick() {\n this.itemClick.emit(this.hostElement);\n }\n\n render() {\n return (\n <Host\n class={{\n checked: this.checked,\n 'icon-text': this.label !== undefined && this.icon !== undefined,\n 'icon-only': this.label === undefined && this.icon !== undefined,\n disabled: this.disabled,\n }}\n >\n <button\n type=\"button\"\n class={{\n 'dropdown-item': true,\n hover: this.hover,\n disabled: this.disabled,\n }}\n onClick={() => this.emitItemClick()}\n tabindex={0}\n >\n {this.checked ? (\n <ix-icon class=\"checkmark\" name=\"single-check\" size=\"16\"></ix-icon>\n ) : null}\n\n {this.icon ? (\n <span\n class={{\n glyph: true,\n [`glyph-${this.icon}`]: true,\n disabled: this.disabled,\n }}\n ></span>\n ) : null}\n\n {this.label ? <span class=\"label\">{this.label}</span> : null}\n <slot></slot>\n </button>\n </Host>\n );\n }\n}\n"],"mappings":"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"}