@infineon/infineon-design-system-stencil 36.1.1--canary.1935.785d7ba79d3e7b0ab89099253aca958994faa626.0 → 37.0.0--canary.1926.fb96c7ae3f791f0a522da4d207e38965cf9cb62b.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (717) hide show
  1. package/dist/cjs/ifx-accordion_2.cjs.entry.js +1 -8
  2. package/dist/cjs/ifx-accordion_2.cjs.entry.js.map +1 -1
  3. package/dist/cjs/ifx-alert_2.cjs.entry.js +1 -7
  4. package/dist/cjs/ifx-alert_2.cjs.entry.js.map +1 -1
  5. package/dist/cjs/ifx-badge.cjs.entry.js +1 -9
  6. package/dist/cjs/ifx-badge.cjs.entry.js.map +1 -1
  7. package/dist/cjs/ifx-basic-table.cjs.entry.js +1 -6
  8. package/dist/cjs/ifx-basic-table.cjs.entry.js.map +1 -1
  9. package/dist/cjs/ifx-breadcrumb.cjs.entry.js +1 -8
  10. package/dist/cjs/ifx-breadcrumb.cjs.entry.js.map +1 -1
  11. package/dist/cjs/ifx-button.cjs.entry.js +1 -6
  12. package/dist/cjs/ifx-button.cjs.entry.js.map +1 -1
  13. package/dist/cjs/ifx-card.cjs.entry.js +3 -8
  14. package/dist/cjs/ifx-card.cjs.entry.js.map +1 -1
  15. package/dist/cjs/ifx-checkbox-group.cjs.entry.js +1 -6
  16. package/dist/cjs/ifx-checkbox-group.cjs.entry.js.map +1 -1
  17. package/dist/cjs/ifx-checkbox.cjs.entry.js +3 -8
  18. package/dist/cjs/ifx-checkbox.cjs.entry.js.map +1 -1
  19. package/dist/cjs/ifx-chip_3.cjs.entry.js +9 -17
  20. package/dist/cjs/ifx-chip_3.cjs.entry.js.map +1 -1
  21. package/dist/cjs/ifx-content-switcher.cjs.entry.js +1 -6
  22. package/dist/cjs/ifx-content-switcher.cjs.entry.js.map +1 -1
  23. package/dist/cjs/ifx-date-picker.cjs.entry.js +2 -9
  24. package/dist/cjs/ifx-date-picker.cjs.entry.js.map +1 -1
  25. package/dist/cjs/ifx-dropdown.cjs.entry.js +1 -6
  26. package/dist/cjs/ifx-dropdown.cjs.entry.js.map +1 -1
  27. package/dist/cjs/ifx-faq.cjs.entry.js +1 -1
  28. package/dist/cjs/ifx-file-upload.cjs.entry.js +2 -9
  29. package/dist/cjs/ifx-file-upload.cjs.entry.js.map +1 -1
  30. package/dist/cjs/ifx-filter-accordion.cjs.entry.js +2 -2
  31. package/dist/cjs/ifx-filter-bar.cjs.entry.js +1 -1
  32. package/dist/cjs/ifx-filter-search.cjs.entry.js +1 -1
  33. package/dist/cjs/ifx-filter-type-group.cjs.entry.js +1 -1
  34. package/dist/cjs/ifx-footer.cjs.entry.js +4 -9
  35. package/dist/cjs/ifx-footer.cjs.entry.js.map +1 -1
  36. package/dist/cjs/ifx-icon-button.cjs.entry.js +1 -6
  37. package/dist/cjs/ifx-icon-button.cjs.entry.js.map +1 -1
  38. package/dist/cjs/ifx-icon.cjs.entry.js +1 -31
  39. package/dist/cjs/ifx-icon.cjs.entry.js.map +1 -1
  40. package/dist/cjs/ifx-indicator.cjs.entry.js +2 -7
  41. package/dist/cjs/ifx-indicator.cjs.entry.js.map +1 -1
  42. package/dist/cjs/ifx-link.cjs.entry.js +1 -9
  43. package/dist/cjs/ifx-link.cjs.entry.js.map +1 -1
  44. package/dist/cjs/ifx-list-entry.cjs.entry.js +1 -1
  45. package/dist/cjs/ifx-modal.cjs.entry.js +2 -9
  46. package/dist/cjs/ifx-modal.cjs.entry.js.map +1 -1
  47. package/dist/cjs/ifx-multiselect_2.cjs.entry.js +929 -0
  48. package/dist/cjs/ifx-multiselect_2.cjs.entry.js.map +1 -0
  49. package/dist/cjs/ifx-navbar.cjs.entry.js +3 -5
  50. package/dist/cjs/ifx-navbar.cjs.entry.js.map +1 -1
  51. package/dist/cjs/ifx-notification.cjs.entry.js +2 -10
  52. package/dist/cjs/ifx-notification.cjs.entry.js.map +1 -1
  53. package/dist/cjs/ifx-progress-bar.cjs.entry.js +1 -7
  54. package/dist/cjs/ifx-progress-bar.cjs.entry.js.map +1 -1
  55. package/dist/cjs/ifx-radio-button-group.cjs.entry.js +1 -6
  56. package/dist/cjs/ifx-radio-button-group.cjs.entry.js.map +1 -1
  57. package/dist/cjs/ifx-radio-button.cjs.entry.js +2 -7
  58. package/dist/cjs/ifx-radio-button.cjs.entry.js.map +1 -1
  59. package/dist/cjs/ifx-search-bar.cjs.entry.js +1 -6
  60. package/dist/cjs/ifx-search-bar.cjs.entry.js.map +1 -1
  61. package/dist/cjs/ifx-search-field.cjs.entry.js +1 -9
  62. package/dist/cjs/ifx-search-field.cjs.entry.js.map +1 -1
  63. package/dist/cjs/ifx-segmented-control.cjs.entry.js +2 -9
  64. package/dist/cjs/ifx-segmented-control.cjs.entry.js.map +1 -1
  65. package/dist/cjs/ifx-select.cjs.entry.js +2 -7
  66. package/dist/cjs/ifx-select.cjs.entry.js.map +1 -1
  67. package/dist/cjs/ifx-set-filter.cjs.entry.js +19 -2
  68. package/dist/cjs/ifx-set-filter.cjs.entry.js.map +1 -1
  69. package/dist/cjs/ifx-sidebar.cjs.entry.js +5 -7
  70. package/dist/cjs/ifx-sidebar.cjs.entry.js.map +1 -1
  71. package/dist/cjs/ifx-slider.cjs.entry.js +2 -7
  72. package/dist/cjs/ifx-slider.cjs.entry.js.map +1 -1
  73. package/dist/cjs/ifx-spinner_2.cjs.entry.js +6 -17
  74. package/dist/cjs/ifx-spinner_2.cjs.entry.js.map +1 -1
  75. package/dist/cjs/ifx-status.cjs.entry.js +1 -9
  76. package/dist/cjs/ifx-status.cjs.entry.js.map +1 -1
  77. package/dist/cjs/ifx-step.cjs.entry.js +4 -4
  78. package/dist/cjs/ifx-stepper.cjs.entry.js +2 -7
  79. package/dist/cjs/ifx-stepper.cjs.entry.js.map +1 -1
  80. package/dist/cjs/ifx-switch.cjs.entry.js +1 -6
  81. package/dist/cjs/ifx-switch.cjs.entry.js.map +1 -1
  82. package/dist/cjs/ifx-tab.cjs.entry.js +1 -1
  83. package/dist/cjs/ifx-table.cjs.entry.js +2 -7
  84. package/dist/cjs/ifx-table.cjs.entry.js.map +1 -1
  85. package/dist/cjs/ifx-tabs.cjs.entry.js +2 -7
  86. package/dist/cjs/ifx-tabs.cjs.entry.js.map +1 -1
  87. package/dist/cjs/ifx-tag.cjs.entry.js +1 -9
  88. package/dist/cjs/ifx-tag.cjs.entry.js.map +1 -1
  89. package/dist/cjs/ifx-templates-ui.cjs.entry.js +1 -1
  90. package/dist/cjs/ifx-textarea.cjs.entry.js +1 -6
  91. package/dist/cjs/ifx-textarea.cjs.entry.js.map +1 -1
  92. package/dist/cjs/ifx-tooltip.cjs.entry.js +4 -9
  93. package/dist/cjs/ifx-tooltip.cjs.entry.js.map +1 -1
  94. package/dist/cjs/ifx-tree-view-item.cjs.entry.js +2 -2
  95. package/dist/cjs/ifx-tree-view.cjs.entry.js +1 -9
  96. package/dist/cjs/ifx-tree-view.cjs.entry.js.map +1 -1
  97. package/dist/cjs/index-7f4df11a.js +14 -14
  98. package/dist/cjs/infineon-design-system-stencil.cjs.js +1 -1
  99. package/dist/cjs/loader.cjs.js +1 -1
  100. package/dist/collection/collection-manifest.json +1 -0
  101. package/dist/collection/components/accordion/accordion.js +2 -8
  102. package/dist/collection/components/accordion/accordion.js.map +1 -1
  103. package/dist/collection/components/alert/alert.js +0 -6
  104. package/dist/collection/components/alert/alert.js.map +1 -1
  105. package/dist/collection/components/badge/badge.js +1 -9
  106. package/dist/collection/components/badge/badge.js.map +1 -1
  107. package/dist/collection/components/breadcrumb/breadcrumb.js +1 -8
  108. package/dist/collection/components/breadcrumb/breadcrumb.js.map +1 -1
  109. package/dist/collection/components/button/button.js +1 -6
  110. package/dist/collection/components/button/button.js.map +1 -1
  111. package/dist/collection/components/card/card.js +3 -8
  112. package/dist/collection/components/card/card.js.map +1 -1
  113. package/dist/collection/components/checkbox/checkbox.js +3 -8
  114. package/dist/collection/components/checkbox/checkbox.js.map +1 -1
  115. package/dist/collection/components/checkbox-group/checkbox-group.js +1 -6
  116. package/dist/collection/components/checkbox-group/checkbox-group.js.map +1 -1
  117. package/dist/collection/components/chip/chip.js +8 -13
  118. package/dist/collection/components/chip/chip.js.map +1 -1
  119. package/dist/collection/components/content-switcher/content-switcher.js +1 -6
  120. package/dist/collection/components/content-switcher/content-switcher.js.map +1 -1
  121. package/dist/collection/components/date-picker/date-picker.js +2 -9
  122. package/dist/collection/components/date-picker/date-picker.js.map +1 -1
  123. package/dist/collection/components/dropdown/dropdown.js +1 -6
  124. package/dist/collection/components/dropdown/dropdown.js.map +1 -1
  125. package/dist/collection/components/file-upload/file-upload.js +2 -9
  126. package/dist/collection/components/file-upload/file-upload.js.map +1 -1
  127. package/dist/collection/components/footer/footer.js +4 -9
  128. package/dist/collection/components/footer/footer.js.map +1 -1
  129. package/dist/collection/components/icon/infineonIconStencil.js +1 -31
  130. package/dist/collection/components/icon/infineonIconStencil.js.map +1 -1
  131. package/dist/collection/components/icon-button/icon-button.js +1 -6
  132. package/dist/collection/components/icon-button/icon-button.js.map +1 -1
  133. package/dist/collection/components/indicator/indicator.js +2 -7
  134. package/dist/collection/components/indicator/indicator.js.map +1 -1
  135. package/dist/collection/components/link/link.js +1 -9
  136. package/dist/collection/components/link/link.js.map +1 -1
  137. package/dist/collection/components/modal/modal.js +2 -9
  138. package/dist/collection/components/modal/modal.js.map +1 -1
  139. package/dist/collection/components/navigation/navbar/navbar.js +3 -5
  140. package/dist/collection/components/navigation/navbar/navbar.js.map +1 -1
  141. package/dist/collection/components/navigation/sidebar/sidebar.js +5 -7
  142. package/dist/collection/components/navigation/sidebar/sidebar.js.map +1 -1
  143. package/dist/collection/components/notification/notification.js +2 -10
  144. package/dist/collection/components/notification/notification.js.map +1 -1
  145. package/dist/collection/components/pagination/pagination.js +1 -6
  146. package/dist/collection/components/pagination/pagination.js.map +1 -1
  147. package/dist/collection/components/progress-bar/progress-bar.js +1 -7
  148. package/dist/collection/components/progress-bar/progress-bar.js.map +1 -1
  149. package/dist/collection/components/radio-button/radio-button.js +2 -7
  150. package/dist/collection/components/radio-button/radio-button.js.map +1 -1
  151. package/dist/collection/components/radio-button-group/radio-button-group.js +1 -6
  152. package/dist/collection/components/radio-button-group/radio-button-group.js.map +1 -1
  153. package/dist/collection/components/search-bar/search-bar.js +1 -6
  154. package/dist/collection/components/search-bar/search-bar.js.map +1 -1
  155. package/dist/collection/components/search-field/search-field.js +1 -9
  156. package/dist/collection/components/search-field/search-field.js.map +1 -1
  157. package/dist/collection/components/segmented-control/segmented-control.js +2 -9
  158. package/dist/collection/components/segmented-control/segmented-control.js.map +1 -1
  159. package/dist/collection/components/select/multi-select/interfaces.js.map +1 -1
  160. package/dist/collection/components/select/multi-select/multiselect-option.css +112 -0
  161. package/dist/collection/components/select/multi-select/multiselect-option.js +505 -0
  162. package/dist/collection/components/select/multi-select/multiselect-option.js.map +1 -0
  163. package/dist/collection/components/select/multi-select/multiselect.css +60 -65
  164. package/dist/collection/components/select/multi-select/multiselect.js +675 -432
  165. package/dist/collection/components/select/multi-select/multiselect.js.map +1 -1
  166. package/dist/collection/components/select/multi-select/multiselect.stories.js +439 -135
  167. package/dist/collection/components/select/multi-select/multiselect.stories.js.map +1 -1
  168. package/dist/collection/components/select/single-select/select.js +2 -7
  169. package/dist/collection/components/select/single-select/select.js.map +1 -1
  170. package/dist/collection/components/slider/slider.js +2 -7
  171. package/dist/collection/components/slider/slider.js.map +1 -1
  172. package/dist/collection/components/spinner/spinner.js +2 -10
  173. package/dist/collection/components/spinner/spinner.js.map +1 -1
  174. package/dist/collection/components/status/status.js +1 -9
  175. package/dist/collection/components/status/status.js.map +1 -1
  176. package/dist/collection/components/stepper/step/step.js +4 -4
  177. package/dist/collection/components/stepper/stepper.js +2 -7
  178. package/dist/collection/components/stepper/stepper.js.map +1 -1
  179. package/dist/collection/components/switch/switch.js +1 -6
  180. package/dist/collection/components/switch/switch.js.map +1 -1
  181. package/dist/collection/components/table-advanced-version/filter-bar/filter-bar.js +1 -1
  182. package/dist/collection/components/table-advanced-version/filter-type-group/filter-accordion/filter-accordion.js +2 -2
  183. package/dist/collection/components/table-advanced-version/filter-type-group/filter-search/filter-search.js +1 -1
  184. package/dist/collection/components/table-advanced-version/filter-type-group/filter-type-group.js +1 -1
  185. package/dist/collection/components/table-advanced-version/list/list-entry/list-entry.js +1 -1
  186. package/dist/collection/components/table-advanced-version/set-filter/setFilter.js +19 -2
  187. package/dist/collection/components/table-advanced-version/set-filter/setFilter.js.map +1 -1
  188. package/dist/collection/components/table-advanced-version/table.js +2 -7
  189. package/dist/collection/components/table-advanced-version/table.js.map +1 -1
  190. package/dist/collection/components/table-advanced-version/table.stories.js +2 -3
  191. package/dist/collection/components/table-advanced-version/table.stories.js.map +1 -1
  192. package/dist/collection/components/table-basic-version/table.js +1 -6
  193. package/dist/collection/components/table-basic-version/table.js.map +1 -1
  194. package/dist/collection/components/tabs/tab.js +1 -1
  195. package/dist/collection/components/tabs/tabs.js +3 -7
  196. package/dist/collection/components/tabs/tabs.js.map +1 -1
  197. package/dist/collection/components/tag/tag.js +1 -9
  198. package/dist/collection/components/tag/tag.js.map +1 -1
  199. package/dist/collection/components/templates/template/template.js +1 -1
  200. package/dist/collection/components/templates/templates-ui/templates-ui.js +1 -1
  201. package/dist/collection/components/text-field/text-field.js +4 -9
  202. package/dist/collection/components/text-field/text-field.js.map +1 -1
  203. package/dist/collection/components/textarea/textarea.js +1 -6
  204. package/dist/collection/components/textarea/textarea.js.map +1 -1
  205. package/dist/collection/components/tooltip/tooltip.js +4 -9
  206. package/dist/collection/components/tooltip/tooltip.js.map +1 -1
  207. package/dist/collection/components/tree-view/tree-view-item.js +2 -2
  208. package/dist/collection/components/tree-view/tree-view.js +1 -9
  209. package/dist/collection/components/tree-view/tree-view.js.map +1 -1
  210. package/dist/collection/stories/setup-and-installation/faq/faq.js +1 -1
  211. package/dist/components/ifx-accordion-item.js +1 -1
  212. package/dist/components/ifx-accordion.js +1 -1
  213. package/dist/components/ifx-alert.js +1 -1
  214. package/dist/components/ifx-badge.js +1 -9
  215. package/dist/components/ifx-badge.js.map +1 -1
  216. package/dist/components/ifx-basic-table.js +1 -6
  217. package/dist/components/ifx-basic-table.js.map +1 -1
  218. package/dist/components/ifx-breadcrumb-item-label.js +1 -1
  219. package/dist/components/ifx-breadcrumb.js +1 -8
  220. package/dist/components/ifx-breadcrumb.js.map +1 -1
  221. package/dist/components/ifx-button.js +1 -1
  222. package/dist/components/ifx-card.js +3 -8
  223. package/dist/components/ifx-card.js.map +1 -1
  224. package/dist/components/ifx-checkbox-group.js +2 -7
  225. package/dist/components/ifx-checkbox-group.js.map +1 -1
  226. package/dist/components/ifx-checkbox.js +1 -1
  227. package/dist/components/ifx-chip-item.js +1 -1
  228. package/dist/components/ifx-chip.js +1 -1
  229. package/dist/components/ifx-content-switcher.js +1 -6
  230. package/dist/components/ifx-content-switcher.js.map +1 -1
  231. package/dist/components/ifx-date-picker.js +3 -10
  232. package/dist/components/ifx-date-picker.js.map +1 -1
  233. package/dist/components/ifx-download.js +1 -1
  234. package/dist/components/ifx-dropdown-item.js +1 -1
  235. package/dist/components/ifx-dropdown-separator.js +29 -1
  236. package/dist/components/ifx-dropdown-separator.js.map +1 -1
  237. package/dist/components/ifx-dropdown-trigger-button.js +2 -2
  238. package/dist/components/ifx-dropdown.js +1 -6
  239. package/dist/components/ifx-dropdown.js.map +1 -1
  240. package/dist/components/ifx-faq.js +4 -4
  241. package/dist/components/ifx-file-upload.js +6 -13
  242. package/dist/components/ifx-file-upload.js.map +1 -1
  243. package/dist/components/ifx-filter-accordion.js +4 -4
  244. package/dist/components/ifx-filter-bar.js +3 -3
  245. package/dist/components/ifx-filter-search.js +3 -3
  246. package/dist/components/ifx-filter-type-group.js +1 -1
  247. package/dist/components/ifx-footer.js +4 -9
  248. package/dist/components/ifx-footer.js.map +1 -1
  249. package/dist/components/ifx-icon-button.js +1 -1
  250. package/dist/components/ifx-icon.js +1 -1
  251. package/dist/components/ifx-icons-preview.js +4 -4
  252. package/dist/components/ifx-indicator.js +1 -1
  253. package/dist/components/ifx-link.js +1 -1
  254. package/dist/components/ifx-list-entry.js +4 -4
  255. package/dist/components/ifx-list.js +2 -2
  256. package/dist/components/ifx-modal.js +4 -11
  257. package/dist/components/ifx-modal.js.map +1 -1
  258. package/dist/components/ifx-multiselect-option.d.ts +11 -0
  259. package/dist/components/ifx-multiselect-option.js +8 -0
  260. package/dist/components/ifx-multiselect-option.js.map +1 -0
  261. package/dist/components/ifx-multiselect.js +1 -1
  262. package/dist/components/ifx-navbar-item.js +2 -2
  263. package/dist/components/ifx-navbar.js +4 -6
  264. package/dist/components/ifx-navbar.js.map +1 -1
  265. package/dist/components/ifx-notification.js +1 -1
  266. package/dist/components/ifx-overview-table.js +3 -3
  267. package/dist/components/ifx-pagination.js +1 -1
  268. package/dist/components/ifx-progress-bar.js +1 -1
  269. package/dist/components/ifx-radio-button-group.js +2 -7
  270. package/dist/components/ifx-radio-button-group.js.map +1 -1
  271. package/dist/components/ifx-radio-button.js +1 -1
  272. package/dist/components/ifx-search-bar.js +3 -8
  273. package/dist/components/ifx-search-bar.js.map +1 -1
  274. package/dist/components/ifx-search-field.js +1 -1
  275. package/dist/components/ifx-segment.js +1 -1
  276. package/dist/components/ifx-segmented-control.js +3 -10
  277. package/dist/components/ifx-segmented-control.js.map +1 -1
  278. package/dist/components/ifx-select.js +1 -1
  279. package/dist/components/ifx-set-filter.js +35 -12
  280. package/dist/components/ifx-set-filter.js.map +1 -1
  281. package/dist/components/ifx-sidebar-item.js +2 -2
  282. package/dist/components/ifx-sidebar.js +5 -7
  283. package/dist/components/ifx-sidebar.js.map +1 -1
  284. package/dist/components/ifx-slider.js +3 -8
  285. package/dist/components/ifx-slider.js.map +1 -1
  286. package/dist/components/ifx-spinner.js +1 -1
  287. package/dist/components/ifx-status.js +1 -9
  288. package/dist/components/ifx-status.js.map +1 -1
  289. package/dist/components/ifx-step.js +5 -5
  290. package/dist/components/ifx-stepper.js +2 -7
  291. package/dist/components/ifx-stepper.js.map +1 -1
  292. package/dist/components/ifx-switch.js +1 -6
  293. package/dist/components/ifx-switch.js.map +1 -1
  294. package/dist/components/ifx-tab.js +1 -1
  295. package/dist/components/ifx-table.js +11 -16
  296. package/dist/components/ifx-table.js.map +1 -1
  297. package/dist/components/ifx-tabs.js +3 -8
  298. package/dist/components/ifx-tabs.js.map +1 -1
  299. package/dist/components/ifx-tag.js +2 -10
  300. package/dist/components/ifx-tag.js.map +1 -1
  301. package/dist/components/ifx-template.js +1 -1
  302. package/dist/components/ifx-templates-ui.js +9 -9
  303. package/dist/components/ifx-text-field.js +1 -1
  304. package/dist/components/ifx-textarea.js +1 -6
  305. package/dist/components/ifx-textarea.js.map +1 -1
  306. package/dist/components/ifx-tooltip.js +5 -10
  307. package/dist/components/ifx-tooltip.js.map +1 -1
  308. package/dist/components/ifx-tree-view-item.js +4 -4
  309. package/dist/components/ifx-tree-view.js +1 -9
  310. package/dist/components/ifx-tree-view.js.map +1 -1
  311. package/dist/components/{p-9b236210.js → p-030c9f43.js} +7 -7
  312. package/dist/components/{p-9b236210.js.map → p-030c9f43.js.map} +1 -1
  313. package/dist/components/{p-b1ca5daf.js → p-0c449780.js} +3 -8
  314. package/dist/components/p-0c449780.js.map +1 -0
  315. package/dist/components/{p-816b2612.js → p-17df0350.js} +2 -7
  316. package/dist/components/p-17df0350.js.map +1 -0
  317. package/dist/components/{p-331ca3f3.js → p-186dacc8.js} +5 -10
  318. package/dist/components/p-186dacc8.js.map +1 -0
  319. package/dist/components/p-320bce19.js +432 -0
  320. package/dist/components/p-320bce19.js.map +1 -0
  321. package/dist/components/{p-e126ea6f.js → p-351949f1.js} +3 -11
  322. package/dist/components/p-351949f1.js.map +1 -0
  323. package/dist/components/{p-54b39a91.js → p-357107c5.js} +3 -8
  324. package/dist/components/p-357107c5.js.map +1 -0
  325. package/dist/components/{p-c6e5f94d.js → p-38396fe7.js} +3 -11
  326. package/dist/components/p-38396fe7.js.map +1 -0
  327. package/dist/components/{p-b4630d0d.js → p-526e05ad.js} +6 -11
  328. package/dist/components/p-526e05ad.js.map +1 -0
  329. package/dist/components/{p-9ea9e274.js → p-53d4339c.js} +2 -10
  330. package/dist/components/p-53d4339c.js.map +1 -0
  331. package/dist/components/{p-6d95b3c1.js → p-5e9d3450.js} +2 -8
  332. package/dist/components/p-5e9d3450.js.map +1 -0
  333. package/dist/components/{p-ab4beff7.js → p-6d12f845.js} +5 -13
  334. package/dist/components/p-6d12f845.js.map +1 -0
  335. package/dist/components/{p-94da6823.js → p-9142f93b.js} +3 -8
  336. package/dist/components/p-9142f93b.js.map +1 -0
  337. package/dist/components/{p-927d5fd1.js → p-a8d0ef73.js} +11 -16
  338. package/dist/components/p-a8d0ef73.js.map +1 -0
  339. package/dist/components/p-a9d3e6d2.js +599 -0
  340. package/dist/components/p-a9d3e6d2.js.map +1 -0
  341. package/dist/components/{p-f9815000.js → p-b0039ef1.js} +2 -8
  342. package/dist/components/p-b0039ef1.js.map +1 -0
  343. package/dist/components/{p-0e4632d4.js → p-bb4de57d.js} +2 -32
  344. package/dist/components/p-bb4de57d.js.map +1 -0
  345. package/dist/components/{p-be3268af.js → p-c3c4dfdd.js} +5 -10
  346. package/dist/components/p-c3c4dfdd.js.map +1 -0
  347. package/dist/components/{p-940ee336.js → p-cd913238.js} +3 -3
  348. package/dist/components/{p-940ee336.js.map → p-cd913238.js.map} +1 -1
  349. package/dist/components/{p-39859c18.js → p-cec3c56f.js} +4 -9
  350. package/dist/components/p-cec3c56f.js.map +1 -0
  351. package/dist/components/{p-0590639e.js → p-d1790232.js} +2 -2
  352. package/dist/components/{p-0590639e.js.map → p-d1790232.js.map} +1 -1
  353. package/dist/components/{p-cca71d97.js → p-ed739e86.js} +2 -9
  354. package/dist/components/p-ed739e86.js.map +1 -0
  355. package/dist/esm/ifx-accordion_2.entry.js +1 -8
  356. package/dist/esm/ifx-accordion_2.entry.js.map +1 -1
  357. package/dist/esm/ifx-alert_2.entry.js +1 -7
  358. package/dist/esm/ifx-alert_2.entry.js.map +1 -1
  359. package/dist/esm/ifx-badge.entry.js +2 -10
  360. package/dist/esm/ifx-badge.entry.js.map +1 -1
  361. package/dist/esm/ifx-basic-table.entry.js +1 -6
  362. package/dist/esm/ifx-basic-table.entry.js.map +1 -1
  363. package/dist/esm/ifx-breadcrumb.entry.js +1 -8
  364. package/dist/esm/ifx-breadcrumb.entry.js.map +1 -1
  365. package/dist/esm/ifx-button.entry.js +1 -6
  366. package/dist/esm/ifx-button.entry.js.map +1 -1
  367. package/dist/esm/ifx-card.entry.js +3 -8
  368. package/dist/esm/ifx-card.entry.js.map +1 -1
  369. package/dist/esm/ifx-checkbox-group.entry.js +1 -6
  370. package/dist/esm/ifx-checkbox-group.entry.js.map +1 -1
  371. package/dist/esm/ifx-checkbox.entry.js +3 -8
  372. package/dist/esm/ifx-checkbox.entry.js.map +1 -1
  373. package/dist/esm/ifx-chip_3.entry.js +9 -17
  374. package/dist/esm/ifx-chip_3.entry.js.map +1 -1
  375. package/dist/esm/ifx-content-switcher.entry.js +1 -6
  376. package/dist/esm/ifx-content-switcher.entry.js.map +1 -1
  377. package/dist/esm/ifx-date-picker.entry.js +2 -9
  378. package/dist/esm/ifx-date-picker.entry.js.map +1 -1
  379. package/dist/esm/ifx-dropdown.entry.js +1 -6
  380. package/dist/esm/ifx-dropdown.entry.js.map +1 -1
  381. package/dist/esm/ifx-faq.entry.js +1 -1
  382. package/dist/esm/ifx-file-upload.entry.js +2 -9
  383. package/dist/esm/ifx-file-upload.entry.js.map +1 -1
  384. package/dist/esm/ifx-filter-accordion.entry.js +2 -2
  385. package/dist/esm/ifx-filter-bar.entry.js +1 -1
  386. package/dist/esm/ifx-filter-search.entry.js +1 -1
  387. package/dist/esm/ifx-filter-type-group.entry.js +1 -1
  388. package/dist/esm/ifx-footer.entry.js +4 -9
  389. package/dist/esm/ifx-footer.entry.js.map +1 -1
  390. package/dist/esm/ifx-icon-button.entry.js +1 -6
  391. package/dist/esm/ifx-icon-button.entry.js.map +1 -1
  392. package/dist/esm/ifx-icon.entry.js +2 -32
  393. package/dist/esm/ifx-icon.entry.js.map +1 -1
  394. package/dist/esm/ifx-indicator.entry.js +2 -7
  395. package/dist/esm/ifx-indicator.entry.js.map +1 -1
  396. package/dist/esm/ifx-link.entry.js +2 -10
  397. package/dist/esm/ifx-link.entry.js.map +1 -1
  398. package/dist/esm/ifx-list-entry.entry.js +1 -1
  399. package/dist/esm/ifx-modal.entry.js +2 -9
  400. package/dist/esm/ifx-modal.entry.js.map +1 -1
  401. package/dist/esm/ifx-multiselect_2.entry.js +924 -0
  402. package/dist/esm/ifx-multiselect_2.entry.js.map +1 -0
  403. package/dist/esm/ifx-navbar.entry.js +3 -5
  404. package/dist/esm/ifx-navbar.entry.js.map +1 -1
  405. package/dist/esm/ifx-notification.entry.js +3 -11
  406. package/dist/esm/ifx-notification.entry.js.map +1 -1
  407. package/dist/esm/ifx-progress-bar.entry.js +2 -8
  408. package/dist/esm/ifx-progress-bar.entry.js.map +1 -1
  409. package/dist/esm/ifx-radio-button-group.entry.js +1 -6
  410. package/dist/esm/ifx-radio-button-group.entry.js.map +1 -1
  411. package/dist/esm/ifx-radio-button.entry.js +2 -7
  412. package/dist/esm/ifx-radio-button.entry.js.map +1 -1
  413. package/dist/esm/ifx-search-bar.entry.js +1 -6
  414. package/dist/esm/ifx-search-bar.entry.js.map +1 -1
  415. package/dist/esm/ifx-search-field.entry.js +2 -10
  416. package/dist/esm/ifx-search-field.entry.js.map +1 -1
  417. package/dist/esm/ifx-segmented-control.entry.js +2 -9
  418. package/dist/esm/ifx-segmented-control.entry.js.map +1 -1
  419. package/dist/esm/ifx-select.entry.js +2 -7
  420. package/dist/esm/ifx-select.entry.js.map +1 -1
  421. package/dist/esm/ifx-set-filter.entry.js +19 -2
  422. package/dist/esm/ifx-set-filter.entry.js.map +1 -1
  423. package/dist/esm/ifx-sidebar.entry.js +5 -7
  424. package/dist/esm/ifx-sidebar.entry.js.map +1 -1
  425. package/dist/esm/ifx-slider.entry.js +2 -7
  426. package/dist/esm/ifx-slider.entry.js.map +1 -1
  427. package/dist/esm/ifx-spinner_2.entry.js +7 -18
  428. package/dist/esm/ifx-spinner_2.entry.js.map +1 -1
  429. package/dist/esm/ifx-status.entry.js +2 -10
  430. package/dist/esm/ifx-status.entry.js.map +1 -1
  431. package/dist/esm/ifx-step.entry.js +4 -4
  432. package/dist/esm/ifx-stepper.entry.js +2 -7
  433. package/dist/esm/ifx-stepper.entry.js.map +1 -1
  434. package/dist/esm/ifx-switch.entry.js +1 -6
  435. package/dist/esm/ifx-switch.entry.js.map +1 -1
  436. package/dist/esm/ifx-tab.entry.js +1 -1
  437. package/dist/esm/ifx-table.entry.js +2 -7
  438. package/dist/esm/ifx-table.entry.js.map +1 -1
  439. package/dist/esm/ifx-tabs.entry.js +2 -7
  440. package/dist/esm/ifx-tabs.entry.js.map +1 -1
  441. package/dist/esm/ifx-tag.entry.js +2 -10
  442. package/dist/esm/ifx-tag.entry.js.map +1 -1
  443. package/dist/esm/ifx-templates-ui.entry.js +1 -1
  444. package/dist/esm/ifx-textarea.entry.js +1 -6
  445. package/dist/esm/ifx-textarea.entry.js.map +1 -1
  446. package/dist/esm/ifx-tooltip.entry.js +4 -9
  447. package/dist/esm/ifx-tooltip.entry.js.map +1 -1
  448. package/dist/esm/ifx-tree-view-item.entry.js +2 -2
  449. package/dist/esm/ifx-tree-view.entry.js +2 -10
  450. package/dist/esm/ifx-tree-view.entry.js.map +1 -1
  451. package/dist/esm/index-6c9eba32.js +14 -14
  452. package/dist/esm/infineon-design-system-stencil.js +1 -1
  453. package/dist/esm/loader.js +1 -1
  454. package/dist/infineon-design-system-stencil/infineon-design-system-stencil.esm.js +1 -1
  455. package/dist/infineon-design-system-stencil/infineon-design-system-stencil.esm.js.map +1 -1
  456. package/dist/infineon-design-system-stencil/p-02496917.entry.js +2 -0
  457. package/dist/infineon-design-system-stencil/p-02496917.entry.js.map +1 -0
  458. package/dist/infineon-design-system-stencil/{p-f2bea855.entry.js → p-04d8ea38.entry.js} +2 -2
  459. package/dist/infineon-design-system-stencil/p-061bfdb1.entry.js +2 -0
  460. package/dist/infineon-design-system-stencil/p-061bfdb1.entry.js.map +1 -0
  461. package/dist/infineon-design-system-stencil/{p-87fbd617.entry.js → p-0c1c831c.entry.js} +2 -2
  462. package/dist/infineon-design-system-stencil/{p-76914839.entry.js → p-0d3e5a0d.entry.js} +2 -2
  463. package/dist/infineon-design-system-stencil/p-0d3e5a0d.entry.js.map +1 -0
  464. package/dist/infineon-design-system-stencil/p-13c107bf.entry.js +2 -0
  465. package/dist/infineon-design-system-stencil/p-13c107bf.entry.js.map +1 -0
  466. package/dist/infineon-design-system-stencil/p-17f3f2f5.entry.js +2 -0
  467. package/dist/infineon-design-system-stencil/p-17f3f2f5.entry.js.map +1 -0
  468. package/dist/infineon-design-system-stencil/{p-2b38c405.entry.js → p-18a81f5f.entry.js} +2 -2
  469. package/dist/infineon-design-system-stencil/p-2006c7a0.entry.js +2 -0
  470. package/dist/infineon-design-system-stencil/p-2006c7a0.entry.js.map +1 -0
  471. package/dist/infineon-design-system-stencil/p-25204a1e.entry.js +2 -0
  472. package/dist/infineon-design-system-stencil/p-25204a1e.entry.js.map +1 -0
  473. package/dist/infineon-design-system-stencil/p-292cff35.entry.js +2 -0
  474. package/dist/infineon-design-system-stencil/p-292cff35.entry.js.map +1 -0
  475. package/dist/infineon-design-system-stencil/p-2d89c5e0.entry.js +2 -0
  476. package/dist/infineon-design-system-stencil/p-2d89c5e0.entry.js.map +1 -0
  477. package/dist/infineon-design-system-stencil/p-2e7d87ed.entry.js +2 -0
  478. package/dist/infineon-design-system-stencil/p-2e7d87ed.entry.js.map +1 -0
  479. package/dist/infineon-design-system-stencil/p-33a4fd0a.entry.js +2 -0
  480. package/dist/infineon-design-system-stencil/p-33a4fd0a.entry.js.map +1 -0
  481. package/dist/infineon-design-system-stencil/{p-a9cfb70d.entry.js → p-36dcebde.entry.js} +2 -2
  482. package/dist/infineon-design-system-stencil/p-37d6c639.entry.js +2 -0
  483. package/dist/infineon-design-system-stencil/p-37d6c639.entry.js.map +1 -0
  484. package/dist/infineon-design-system-stencil/{p-0f096cf1.entry.js → p-3d037fa4.entry.js} +2 -2
  485. package/dist/infineon-design-system-stencil/p-3d23deba.entry.js +2 -0
  486. package/dist/infineon-design-system-stencil/p-3d23deba.entry.js.map +1 -0
  487. package/dist/infineon-design-system-stencil/p-3ff96710.entry.js +2 -0
  488. package/dist/infineon-design-system-stencil/p-3ff96710.entry.js.map +1 -0
  489. package/dist/infineon-design-system-stencil/p-4764665d.entry.js +2 -0
  490. package/dist/infineon-design-system-stencil/p-4764665d.entry.js.map +1 -0
  491. package/dist/infineon-design-system-stencil/p-47a3e831.entry.js +2 -0
  492. package/dist/infineon-design-system-stencil/p-47a3e831.entry.js.map +1 -0
  493. package/dist/infineon-design-system-stencil/p-487d2155.entry.js +2 -0
  494. package/dist/infineon-design-system-stencil/p-487d2155.entry.js.map +1 -0
  495. package/dist/infineon-design-system-stencil/p-4d9a4329.entry.js +2 -0
  496. package/dist/infineon-design-system-stencil/p-4d9a4329.entry.js.map +1 -0
  497. package/dist/infineon-design-system-stencil/p-5285ca40.entry.js +2 -0
  498. package/dist/infineon-design-system-stencil/p-5285ca40.entry.js.map +1 -0
  499. package/dist/infineon-design-system-stencil/p-5b5c144f.entry.js +2 -0
  500. package/dist/infineon-design-system-stencil/p-5b5c144f.entry.js.map +1 -0
  501. package/dist/infineon-design-system-stencil/p-5e376887.entry.js +2 -0
  502. package/dist/infineon-design-system-stencil/p-5e376887.entry.js.map +1 -0
  503. package/dist/infineon-design-system-stencil/p-5f38cace.entry.js +2 -0
  504. package/dist/infineon-design-system-stencil/p-5f38cace.entry.js.map +1 -0
  505. package/dist/infineon-design-system-stencil/p-6250b9f6.entry.js +2 -0
  506. package/dist/infineon-design-system-stencil/p-6250b9f6.entry.js.map +1 -0
  507. package/dist/infineon-design-system-stencil/p-65fe2246.entry.js +2 -0
  508. package/dist/infineon-design-system-stencil/p-65fe2246.entry.js.map +1 -0
  509. package/dist/infineon-design-system-stencil/p-676fb63a.entry.js +2 -0
  510. package/dist/infineon-design-system-stencil/p-676fb63a.entry.js.map +1 -0
  511. package/dist/infineon-design-system-stencil/p-6790d912.entry.js +2 -0
  512. package/dist/infineon-design-system-stencil/p-6790d912.entry.js.map +1 -0
  513. package/dist/infineon-design-system-stencil/p-6bdca580.entry.js +2 -0
  514. package/dist/infineon-design-system-stencil/p-6bdca580.entry.js.map +1 -0
  515. package/dist/infineon-design-system-stencil/{p-babf3f2d.entry.js → p-6c2698a3.entry.js} +2 -2
  516. package/dist/infineon-design-system-stencil/p-6c999b11.entry.js +2 -0
  517. package/dist/infineon-design-system-stencil/p-6c999b11.entry.js.map +1 -0
  518. package/dist/infineon-design-system-stencil/p-741ee6fd.entry.js +2 -0
  519. package/dist/infineon-design-system-stencil/p-741ee6fd.entry.js.map +1 -0
  520. package/dist/infineon-design-system-stencil/p-76e0c34f.entry.js +2 -0
  521. package/dist/infineon-design-system-stencil/p-76e0c34f.entry.js.map +1 -0
  522. package/dist/infineon-design-system-stencil/{p-6d99d01d.entry.js → p-7adee2dd.entry.js} +2 -2
  523. package/dist/infineon-design-system-stencil/p-9149a20a.entry.js +2 -0
  524. package/dist/infineon-design-system-stencil/p-9149a20a.entry.js.map +1 -0
  525. package/dist/infineon-design-system-stencil/p-9fc0f50d.entry.js +2 -0
  526. package/dist/infineon-design-system-stencil/p-9fc0f50d.entry.js.map +1 -0
  527. package/dist/infineon-design-system-stencil/p-a2a44fbe.entry.js +2 -0
  528. package/dist/infineon-design-system-stencil/p-a80e321b.entry.js +2 -0
  529. package/dist/infineon-design-system-stencil/p-a80e321b.entry.js.map +1 -0
  530. package/dist/infineon-design-system-stencil/p-aadd1a9d.entry.js +2 -0
  531. package/dist/infineon-design-system-stencil/p-aadd1a9d.entry.js.map +1 -0
  532. package/dist/infineon-design-system-stencil/p-ad1ec9d6.entry.js +2 -0
  533. package/dist/infineon-design-system-stencil/p-ad1ec9d6.entry.js.map +1 -0
  534. package/dist/infineon-design-system-stencil/p-ad7b58c3.entry.js +2 -0
  535. package/dist/infineon-design-system-stencil/p-ad7b58c3.entry.js.map +1 -0
  536. package/dist/infineon-design-system-stencil/{p-9c28f35f.entry.js → p-b6dd2ac0.entry.js} +3 -3
  537. package/dist/infineon-design-system-stencil/p-b6dd2ac0.entry.js.map +1 -0
  538. package/dist/infineon-design-system-stencil/p-b73a5f18.entry.js +2 -0
  539. package/dist/infineon-design-system-stencil/p-b73a5f18.entry.js.map +1 -0
  540. package/dist/infineon-design-system-stencil/{p-7b7ac7fa.entry.js → p-c7e86c7c.entry.js} +2 -2
  541. package/dist/infineon-design-system-stencil/p-c84ef603.entry.js +2 -0
  542. package/dist/infineon-design-system-stencil/p-c84ef603.entry.js.map +1 -0
  543. package/dist/infineon-design-system-stencil/p-d890b0de.entry.js +2 -0
  544. package/dist/infineon-design-system-stencil/p-d890b0de.entry.js.map +1 -0
  545. package/dist/infineon-design-system-stencil/p-dd28f3a1.entry.js +2 -0
  546. package/dist/infineon-design-system-stencil/p-dd28f3a1.entry.js.map +1 -0
  547. package/dist/infineon-design-system-stencil/p-e571c002.entry.js +2 -0
  548. package/dist/infineon-design-system-stencil/p-ef6d0dc6.entry.js +2 -0
  549. package/dist/infineon-design-system-stencil/p-ef6d0dc6.entry.js.map +1 -0
  550. package/dist/infineon-design-system-stencil/p-f338fb85.entry.js +2 -0
  551. package/dist/infineon-design-system-stencil/p-f338fb85.entry.js.map +1 -0
  552. package/dist/types/components/accordion/accordion.d.ts +0 -1
  553. package/dist/types/components/alert/alert.d.ts +0 -1
  554. package/dist/types/components/badge/badge.d.ts +0 -2
  555. package/dist/types/components/breadcrumb/breadcrumb.d.ts +0 -1
  556. package/dist/types/components/date-picker/date-picker.d.ts +0 -1
  557. package/dist/types/components/file-upload/file-upload.d.ts +0 -1
  558. package/dist/types/components/icon/infineonIconStencil.d.ts +0 -3
  559. package/dist/types/components/link/link.d.ts +0 -2
  560. package/dist/types/components/modal/modal.d.ts +0 -1
  561. package/dist/types/components/notification/notification.d.ts +0 -2
  562. package/dist/types/components/progress-bar/progress-bar.d.ts +0 -1
  563. package/dist/types/components/search-field/search-field.d.ts +0 -2
  564. package/dist/types/components/segmented-control/segmented-control.d.ts +0 -1
  565. package/dist/types/components/select/multi-select/interfaces.d.ts +1 -1
  566. package/dist/types/components/select/multi-select/multiselect-option.d.ts +36 -0
  567. package/dist/types/components/select/multi-select/multiselect.d.ts +39 -61
  568. package/dist/types/components/select/multi-select/multiselect.stories.d.ts +219 -30
  569. package/dist/types/components/spinner/spinner.d.ts +0 -2
  570. package/dist/types/components/status/status.d.ts +0 -2
  571. package/dist/types/components/tag/tag.d.ts +0 -2
  572. package/dist/types/components/tree-view/tree-view.d.ts +0 -2
  573. package/dist/types/components.d.ts +54 -8
  574. package/package.json +1 -1
  575. package/dist/cjs/dom-utils-2c4573c2.js +0 -20
  576. package/dist/cjs/dom-utils-2c4573c2.js.map +0 -1
  577. package/dist/cjs/ifx-multiselect.cjs.entry.js +0 -550
  578. package/dist/cjs/ifx-multiselect.cjs.entry.js.map +0 -1
  579. package/dist/cjs/tracking-f00364dc.js +0 -41
  580. package/dist/cjs/tracking-f00364dc.js.map +0 -1
  581. package/dist/collection/global/utils/dom-utils.js +0 -15
  582. package/dist/collection/global/utils/dom-utils.js.map +0 -1
  583. package/dist/collection/global/utils/tracking.js +0 -37
  584. package/dist/collection/global/utils/tracking.js.map +0 -1
  585. package/dist/components/p-0e4632d4.js.map +0 -1
  586. package/dist/components/p-1ecafb97.js +0 -18
  587. package/dist/components/p-1ecafb97.js.map +0 -1
  588. package/dist/components/p-331ca3f3.js.map +0 -1
  589. package/dist/components/p-39859c18.js.map +0 -1
  590. package/dist/components/p-54b39a91.js.map +0 -1
  591. package/dist/components/p-68016aea.js +0 -33
  592. package/dist/components/p-68016aea.js.map +0 -1
  593. package/dist/components/p-6d95b3c1.js.map +0 -1
  594. package/dist/components/p-6ecb6a6f.js +0 -39
  595. package/dist/components/p-6ecb6a6f.js.map +0 -1
  596. package/dist/components/p-816b2612.js.map +0 -1
  597. package/dist/components/p-927d5fd1.js.map +0 -1
  598. package/dist/components/p-94da6823.js.map +0 -1
  599. package/dist/components/p-9ea9e274.js.map +0 -1
  600. package/dist/components/p-ab4beff7.js.map +0 -1
  601. package/dist/components/p-b1ca5daf.js.map +0 -1
  602. package/dist/components/p-b4630d0d.js.map +0 -1
  603. package/dist/components/p-be3268af.js.map +0 -1
  604. package/dist/components/p-c6e5f94d.js.map +0 -1
  605. package/dist/components/p-cca71d97.js.map +0 -1
  606. package/dist/components/p-df486632.js +0 -603
  607. package/dist/components/p-df486632.js.map +0 -1
  608. package/dist/components/p-e126ea6f.js.map +0 -1
  609. package/dist/components/p-f9815000.js.map +0 -1
  610. package/dist/esm/dom-utils-1988cdf1.js +0 -18
  611. package/dist/esm/dom-utils-1988cdf1.js.map +0 -1
  612. package/dist/esm/ifx-multiselect.entry.js +0 -546
  613. package/dist/esm/ifx-multiselect.entry.js.map +0 -1
  614. package/dist/esm/tracking-a7efdbcd.js +0 -39
  615. package/dist/esm/tracking-a7efdbcd.js.map +0 -1
  616. package/dist/infineon-design-system-stencil/p-0c60ce87.entry.js +0 -2
  617. package/dist/infineon-design-system-stencil/p-0c60ce87.entry.js.map +0 -1
  618. package/dist/infineon-design-system-stencil/p-14525860.entry.js +0 -2
  619. package/dist/infineon-design-system-stencil/p-14525860.entry.js.map +0 -1
  620. package/dist/infineon-design-system-stencil/p-14842bbb.entry.js +0 -2
  621. package/dist/infineon-design-system-stencil/p-14842bbb.entry.js.map +0 -1
  622. package/dist/infineon-design-system-stencil/p-19fcf1db.entry.js +0 -2
  623. package/dist/infineon-design-system-stencil/p-19fcf1db.entry.js.map +0 -1
  624. package/dist/infineon-design-system-stencil/p-1ecafb97.js +0 -2
  625. package/dist/infineon-design-system-stencil/p-1ecafb97.js.map +0 -1
  626. package/dist/infineon-design-system-stencil/p-1fd80576.entry.js +0 -2
  627. package/dist/infineon-design-system-stencil/p-1fd80576.entry.js.map +0 -1
  628. package/dist/infineon-design-system-stencil/p-227fa186.entry.js +0 -2
  629. package/dist/infineon-design-system-stencil/p-227fa186.entry.js.map +0 -1
  630. package/dist/infineon-design-system-stencil/p-26c73456.entry.js +0 -2
  631. package/dist/infineon-design-system-stencil/p-26c73456.entry.js.map +0 -1
  632. package/dist/infineon-design-system-stencil/p-296f215f.entry.js +0 -2
  633. package/dist/infineon-design-system-stencil/p-296f215f.entry.js.map +0 -1
  634. package/dist/infineon-design-system-stencil/p-32b0dfda.entry.js +0 -2
  635. package/dist/infineon-design-system-stencil/p-32b0dfda.entry.js.map +0 -1
  636. package/dist/infineon-design-system-stencil/p-34738a10.entry.js +0 -2
  637. package/dist/infineon-design-system-stencil/p-45ac2698.entry.js +0 -2
  638. package/dist/infineon-design-system-stencil/p-45ac2698.entry.js.map +0 -1
  639. package/dist/infineon-design-system-stencil/p-4eda4ef3.entry.js +0 -2
  640. package/dist/infineon-design-system-stencil/p-4eda4ef3.entry.js.map +0 -1
  641. package/dist/infineon-design-system-stencil/p-52420868.entry.js +0 -2
  642. package/dist/infineon-design-system-stencil/p-52420868.entry.js.map +0 -1
  643. package/dist/infineon-design-system-stencil/p-5493e6f5.entry.js +0 -2
  644. package/dist/infineon-design-system-stencil/p-5493e6f5.entry.js.map +0 -1
  645. package/dist/infineon-design-system-stencil/p-5a12d20a.entry.js +0 -2
  646. package/dist/infineon-design-system-stencil/p-5a12d20a.entry.js.map +0 -1
  647. package/dist/infineon-design-system-stencil/p-65255c40.entry.js +0 -2
  648. package/dist/infineon-design-system-stencil/p-65255c40.entry.js.map +0 -1
  649. package/dist/infineon-design-system-stencil/p-65e57b85.entry.js +0 -2
  650. package/dist/infineon-design-system-stencil/p-68423787.entry.js +0 -2
  651. package/dist/infineon-design-system-stencil/p-68423787.entry.js.map +0 -1
  652. package/dist/infineon-design-system-stencil/p-6d72ad32.entry.js +0 -2
  653. package/dist/infineon-design-system-stencil/p-6d72ad32.entry.js.map +0 -1
  654. package/dist/infineon-design-system-stencil/p-6ecb6a6f.js +0 -2
  655. package/dist/infineon-design-system-stencil/p-6ecb6a6f.js.map +0 -1
  656. package/dist/infineon-design-system-stencil/p-73d39ed6.entry.js +0 -2
  657. package/dist/infineon-design-system-stencil/p-73d39ed6.entry.js.map +0 -1
  658. package/dist/infineon-design-system-stencil/p-76914839.entry.js.map +0 -1
  659. package/dist/infineon-design-system-stencil/p-796675ed.entry.js +0 -2
  660. package/dist/infineon-design-system-stencil/p-796675ed.entry.js.map +0 -1
  661. package/dist/infineon-design-system-stencil/p-79b7d7a2.entry.js +0 -2
  662. package/dist/infineon-design-system-stencil/p-79b7d7a2.entry.js.map +0 -1
  663. package/dist/infineon-design-system-stencil/p-82c59e6b.entry.js +0 -2
  664. package/dist/infineon-design-system-stencil/p-82c59e6b.entry.js.map +0 -1
  665. package/dist/infineon-design-system-stencil/p-82dd7e7d.entry.js +0 -2
  666. package/dist/infineon-design-system-stencil/p-82dd7e7d.entry.js.map +0 -1
  667. package/dist/infineon-design-system-stencil/p-877e1d37.entry.js +0 -2
  668. package/dist/infineon-design-system-stencil/p-877e1d37.entry.js.map +0 -1
  669. package/dist/infineon-design-system-stencil/p-8a7bfe65.entry.js +0 -2
  670. package/dist/infineon-design-system-stencil/p-8a7bfe65.entry.js.map +0 -1
  671. package/dist/infineon-design-system-stencil/p-98532a0e.entry.js +0 -2
  672. package/dist/infineon-design-system-stencil/p-98532a0e.entry.js.map +0 -1
  673. package/dist/infineon-design-system-stencil/p-9c28f35f.entry.js.map +0 -1
  674. package/dist/infineon-design-system-stencil/p-a0006775.entry.js +0 -2
  675. package/dist/infineon-design-system-stencil/p-a0006775.entry.js.map +0 -1
  676. package/dist/infineon-design-system-stencil/p-ac7db8d1.entry.js +0 -2
  677. package/dist/infineon-design-system-stencil/p-ac7db8d1.entry.js.map +0 -1
  678. package/dist/infineon-design-system-stencil/p-ae8110b7.entry.js +0 -2
  679. package/dist/infineon-design-system-stencil/p-ae8110b7.entry.js.map +0 -1
  680. package/dist/infineon-design-system-stencil/p-aeaa6d0b.entry.js +0 -2
  681. package/dist/infineon-design-system-stencil/p-aeaa6d0b.entry.js.map +0 -1
  682. package/dist/infineon-design-system-stencil/p-b17a0e8c.entry.js +0 -2
  683. package/dist/infineon-design-system-stencil/p-b17a0e8c.entry.js.map +0 -1
  684. package/dist/infineon-design-system-stencil/p-bb7b2a3c.entry.js +0 -2
  685. package/dist/infineon-design-system-stencil/p-bb7b2a3c.entry.js.map +0 -1
  686. package/dist/infineon-design-system-stencil/p-c164c83b.entry.js +0 -2
  687. package/dist/infineon-design-system-stencil/p-c164c83b.entry.js.map +0 -1
  688. package/dist/infineon-design-system-stencil/p-c220733b.entry.js +0 -2
  689. package/dist/infineon-design-system-stencil/p-c220733b.entry.js.map +0 -1
  690. package/dist/infineon-design-system-stencil/p-c88876dc.entry.js +0 -2
  691. package/dist/infineon-design-system-stencil/p-c88876dc.entry.js.map +0 -1
  692. package/dist/infineon-design-system-stencil/p-e0978af0.entry.js +0 -2
  693. package/dist/infineon-design-system-stencil/p-e0978af0.entry.js.map +0 -1
  694. package/dist/infineon-design-system-stencil/p-e5018880.entry.js +0 -2
  695. package/dist/infineon-design-system-stencil/p-e5018880.entry.js.map +0 -1
  696. package/dist/infineon-design-system-stencil/p-ed869b07.entry.js +0 -2
  697. package/dist/infineon-design-system-stencil/p-ed869b07.entry.js.map +0 -1
  698. package/dist/infineon-design-system-stencil/p-eeb59f76.entry.js +0 -2
  699. package/dist/infineon-design-system-stencil/p-eeb59f76.entry.js.map +0 -1
  700. package/dist/infineon-design-system-stencil/p-f3f8d603.entry.js +0 -2
  701. package/dist/infineon-design-system-stencil/p-f3f8d603.entry.js.map +0 -1
  702. package/dist/infineon-design-system-stencil/p-fb6a813b.entry.js +0 -2
  703. package/dist/infineon-design-system-stencil/p-fb6a813b.entry.js.map +0 -1
  704. package/dist/infineon-design-system-stencil/p-fe22fc31.entry.js +0 -2
  705. package/dist/infineon-design-system-stencil/p-fe22fc31.entry.js.map +0 -1
  706. package/dist/types/global/utils/dom-utils.d.ts +0 -1
  707. package/dist/types/global/utils/tracking.d.ts +0 -9
  708. /package/dist/infineon-design-system-stencil/{p-f2bea855.entry.js.map → p-04d8ea38.entry.js.map} +0 -0
  709. /package/dist/infineon-design-system-stencil/{p-87fbd617.entry.js.map → p-0c1c831c.entry.js.map} +0 -0
  710. /package/dist/infineon-design-system-stencil/{p-2b38c405.entry.js.map → p-18a81f5f.entry.js.map} +0 -0
  711. /package/dist/infineon-design-system-stencil/{p-a9cfb70d.entry.js.map → p-36dcebde.entry.js.map} +0 -0
  712. /package/dist/infineon-design-system-stencil/{p-0f096cf1.entry.js.map → p-3d037fa4.entry.js.map} +0 -0
  713. /package/dist/infineon-design-system-stencil/{p-babf3f2d.entry.js.map → p-6c2698a3.entry.js.map} +0 -0
  714. /package/dist/infineon-design-system-stencil/{p-6d99d01d.entry.js.map → p-7adee2dd.entry.js.map} +0 -0
  715. /package/dist/infineon-design-system-stencil/{p-65e57b85.entry.js.map → p-a2a44fbe.entry.js.map} +0 -0
  716. /package/dist/infineon-design-system-stencil/{p-7b7ac7fa.entry.js.map → p-c7e86c7c.entry.js.map} +0 -0
  717. /package/dist/infineon-design-system-stencil/{p-34738a10.entry.js.map → p-e571c002.entry.js.map} +0 -0
@@ -0,0 +1,2 @@
1
+ import{r as t,c as e,h as i,g as s,a as o}from"./p-b7a462e5.js";const n=':root{--ifx-font-family:"Source Sans 3", "Arial, sans-serif"}.ifx-multiselect-container{position:relative;box-sizing:border-box;font-family:var(--ifx-font-family)}.ifx-multiselect-container:hover{cursor:pointer}.ifx-multiselect-container .ifx-label-wrapper{font-size:1rem;line-height:1.5rem;white-space:pre-wrap;word-wrap:break-word;overflow-wrap:anywhere;max-width:100%}.ifx-multiselect-container .ifx-error-message-wrapper{color:#CD002F;font-size:0.75rem;line-height:1rem;white-space:pre-wrap;word-wrap:break-word;overflow-wrap:anywhere;max-width:100%}.ifx-multiselect-container .ifx-multiselect-wrapper{background-color:#FFFFFF;box-sizing:border-box;display:flex;align-items:center;border:1px solid #8D8786;border-radius:1px;width:100%;font-weight:400;font-style:normal;height:40px;line-height:24px;padding:8px 16px;font-size:1rem;line-height:1.5rem}.ifx-multiselect-container .ifx-multiselect-wrapper:focus-visible{outline:none}.ifx-multiselect-container .ifx-multiselect-wrapper:focus-visible:not(.active):not(:active){outline:none}.ifx-multiselect-container .ifx-multiselect-wrapper:focus-visible:not(.active):not(:active)::before{content:"";position:absolute;width:calc(100% + 4px);height:calc(100% + 4px);top:50%;left:50%;transform:translate(-50%, -50%);border:2px solid #0A8276;border-radius:2px}.ifx-multiselect-container .ifx-multiselect-wrapper.disabled{background:#EEEDED;color:#575352;border-color:#575352;cursor:default;-webkit-user-select:none;-ms-user-select:none;user-select:none}.ifx-multiselect-container .ifx-multiselect-wrapper.error{border-color:#CD002F}.ifx-multiselect-container .ifx-multiselect-wrapper:hover:not(.focus,:focus){border-color:#575352}.ifx-multiselect-container .ifx-multiselect-wrapper.active{border-color:#0A8276 !important}.ifx-multiselect-container .ifx-multiselect-wrapper.active .icon-wrapper-up{display:flex;align-items:center;justify-content:center;padding-left:8px}.ifx-multiselect-container .ifx-multiselect-wrapper.active .icon-wrapper-down{display:none}.ifx-multiselect-container .ifx-multiselect-wrapper .icon-wrapper-up{display:none}.ifx-multiselect-container .ifx-multiselect-wrapper .icon-wrapper-down{display:flex;align-items:center;justify-content:center;padding-left:8px}.ifx-multiselect-container .ifx-multiselect-wrapper.is-flipped .ifx-multiselect-dropdown-menu{top:auto;bottom:100%}.ifx-multiselect-container .ifx-multiselect-input{flex-grow:1;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.ifx-multiselect-container .ifx-multiselect-input.placeholder{opacity:0.5}.ifx-multiselect-container .ifx-multiselect-icon-container{margin-left:auto;display:flex;align-items:center;gap:8px}.ifx-multiselect-container .ifx-multiselect-icon-container .ifx-multiselect-icon-container{display:flex}.ifx-multiselect-container .ifx-multiselect-icon-container .icon-wrapper{display:flex;align-items:center;transition:transform 0.2s ease-in-out}.ifx-multiselect-container .ifx-multiselect-icon-container .icon-wrapper--open{transform:rotate(180deg)}.ifx-multiselect-container .ifx-clear-button{display:flex;align-items:center}.ifx-multiselect-container .ifx-clear-button.hide{display:none}.ifx-multiselect-container .ifx-multiselect-dropdown-menu{box-sizing:border-box;position:absolute;top:100%;left:0;width:100%;margin-top:4px;border:1px solid #EEEDED;background-color:#fff;box-shadow:0px 6px 9px 0px rgba(29, 29, 29, 0.1);max-height:300px;z-index:1000;display:flex;flex-direction:column}.ifx-multiselect-dropdown-functions{padding:12px 16px;border-bottom:1px solid #EEEDED;flex-shrink:0}.ifx-multiselect-dropdown-search{margin-bottom:12px}.ifx-multiselect-dropdown-controls{display:flex;flex-wrap:wrap;justify-content:space-between;gap:8px}.ifx-multiselect-dropdown-controls .select-all-wrapper{display:flex}.ifx-multiselect-dropdown-controls .expand-collapse-controls{display:flex;gap:12px}.ifx-multiselect-dropdown-controls .control-item{font-size:0.875rem;line-height:1.25rem}.ifx-multiselect-dropdown-controls .control-item:hover{color:#0A8276}.ifx-multiselect-dropdown-controls .control-item:active{color:#08665C}.ifx-multiselect-dropdown-controls .control-item:focus{outline:none}.ifx-multiselect-dropdown-controls .control-item:focus-visible{outline:2px solid #0A8276;outline-offset:2px;border-radius:1px}.ifx-multiselect-options{flex:1;overflow-y:auto;padding-top:12px;padding-bottom:12px}.ifx-multiselect-options.show-no-results .ifx-multiselect-no-results{display:block}.ifx-multiselect-no-results{padding-left:16px;padding-right:16px;display:none}';const l=n;function r(t,e){let i;return function s(...o){const n=()=>{clearTimeout(i);t(...o)};clearTimeout(i);i=setTimeout(n,e)}}const c=class{constructor(i){t(this,i);this.ifxSelect=e(this,"ifxSelect",7);this.ifxOpen=e(this,"ifxOpen",7);if(i.$hostElement$["s-ei"]){this.internals=i.$hostElement$["s-ei"]}else{this.internals=i.$hostElement$.attachInternals();i.$hostElement$["s-ei"]=this.internals}this.disabled=false;this.error=false;this.errorMessage="Error";this.label="";this.placeholder="";this.showSearch=true;this.showSelectAll=true;this.showClearButton=true;this.showExpandCollapse=true;this.noResultsMessage="No results found.";this.showNoResultsMessage=true;this.searchPlaceholder="Search";this.selectAllLabel="Select all";this.expandLabel="Expand";this.collapseLabel="Collapse";this.ariaMultiSelectLabel="Multi-select dropdown";this.ariaMultiSelectLabelledBy="";this.ariaMultiSelectDescribedBy="";this.ariaSearchLabel="Search options";this.ariaClearLabel="Clear all selections";this.ariaToggleLabel="Toggle dropdown";this.ariaSelectAllLabel="Select all options";this.ariaExpandAllLabel="Expand all categories";this.ariaCollapseAllLabel="Collapse all categories";this.internalError=false;this.persistentSelectedOptions=[];this.dropdownOpen=false;this.searchTerm="";this.handleSearch=r((t=>{const e=t.value.toLowerCase();const i=e!=="";this.searchTerm=e;const s=this.el.shadowRoot.querySelector(".ifx-multiselect-wrapper");if(s){if(i){s.classList.remove("active")}else{const t=this.el.shadowRoot.querySelector("ifx-search-field");const e=t&&t.matches(":focus-within");if(!e){s.classList.add("active")}}}const o=this.el.shadowRoot.querySelector(".ifx-multiselect-options");if(o){if(i){o.classList.add("has-search-filter")}else{o.classList.remove("has-search-filter")}}requestAnimationFrame((()=>{const t=this.el.querySelectorAll("ifx-multiselect-option");t.forEach((t=>{const s=new CustomEvent("ifx-search-filter",{detail:{searchTerm:e,isActive:i}});t.dispatchEvent(s)}));if(i){setTimeout((()=>{const t=this.el.querySelectorAll("ifx-multiselect-option");let e=0;t.forEach((t=>{const i=window.getComputedStyle(t);const s=t.getBoundingClientRect();if(i.display!=="none"&&i.visibility!=="hidden"&&i.opacity!=="0"&&s.height>0){e++}}));const i=this.el.shadowRoot.querySelector(".ifx-multiselect-options");if(i){if(e===0){i.classList.add("show-no-results")}else{i.classList.remove("show-no-results")}}}),200)}else{const t=this.el.shadowRoot.querySelector(".ifx-multiselect-options");if(t){t.classList.remove("show-no-results")}}}))}),150);this.pendingSelectionUpdate=false;this.handleDocumentClick=t=>{const e=t.composedPath();if(!e.includes(this.dropdownElement)){this.dropdownOpen=false;document.removeEventListener("click",this.handleDocumentClick);this.resetSearch();this.ifxOpen.emit(this.dropdownOpen)}}}parseChildOptions(){const t=[];const e=Array.from(this.el.children);e.forEach(((e,i)=>{if(e.tagName==="IFX-MULTISELECT-OPTION"){const s=this.parseOptionElement(e,i);if(s){t.push(s)}}}));return t}parseOptionElement(t,e){const i=t.getAttribute("value")||`option-${e}`;const s=t.hasAttribute("selected");const o=t.hasAttribute("disabled");const n=t.hasAttribute("indeterminate");const l={value:i,selected:s,disabled:o,indeterminate:n};const r=Array.from(t.children).filter((t=>t.tagName==="IFX-MULTISELECT-OPTION")).map(((t,e)=>this.parseOptionElement(t,e))).filter((t=>t!==null));if(r.length>0){l.children=r}return l}loadInitialOptions(){this.internalError=this.error;this.internalErrorMessage=this.errorMessage;const t=this.parseChildOptions();const e=this.collectSelectedOptions(t);const i=e.filter((t=>!this.persistentSelectedOptions.some((e=>e.value==t.value))));this.persistentSelectedOptions=[...this.persistentSelectedOptions,...i]}collectSelectedOptions(t){let e=[];for(const i of t){if(i.selected){if(i.children&&i.children.length>0){e=e.concat(this.collectLeafOptions(i.children))}else{if(!e.some((t=>t.value===i.value))){e.push(i)}}}else{if(i.children&&i.children.length>0){e=e.concat(this.collectSelectedOptions(i.children))}}}return e}collectLeafOptions(t){let e=[];for(const i of t){if(i.children&&i.children.length>0){e=e.concat(this.collectLeafOptions(i.children))}else{e.push(i)}}return e}handleSearchFocus(t){const e=this.el.shadowRoot.querySelector(".ifx-multiselect-wrapper");if(e){if(t||this.searchTerm!==""){e.classList.remove("active")}else{e.classList.add("active")}}}positionDropdown(){var t;const e=(t=this.el.shadowRoot.querySelector(".ifx-multiselect-wrapper"))===null||t===void 0?void 0:t.getBoundingClientRect();const i=window.innerHeight-e.bottom;const s=e.top;if(s>i&&e.height>i||e.bottom>window.innerHeight){this.dropdownFlipped=true}else{this.dropdownFlipped=false}}updateSlotBasedSelections(t=false){const e=this.el.querySelectorAll("ifx-multiselect-option");const i=[];e.forEach((t=>{const e=t["__stencil_instance"];if(e&&e.selected&&!e.hasChildren){i.push({value:e.value,selected:true,disabled:e.disabled})}}));this.persistentSelectedOptions=i;if(t){this.ifxSelect.emit(this.persistentSelectedOptions)}}updateInitialParentStates(){const t=this.el.querySelectorAll("ifx-multiselect-option");const e=Array.from(t).map((t=>({element:t,instance:t["__stencil_instance"],depth:parseInt(t.getAttribute("data-level")||"0")}))).filter((t=>t.instance)).sort(((t,e)=>e.depth-t.depth));e.forEach((({instance:t})=>{if(t.hasChildren){this.updateParentState(t)}}))}updateParentState(t){const e=Array.from(t.el.children).filter((t=>t.tagName==="IFX-MULTISELECT-OPTION")).map((t=>t["__stencil_instance"])).filter((t=>t!==null));const i=e.filter((t=>t.selected)).length;const s=e.filter((t=>t.indeterminate)).length;const o=e.length;if(i===o&&s===0){t.selected=true;t.indeterminate=false}else if(i===0&&s===0){t.selected=false;t.indeterminate=false}else{t.selected=false;t.indeterminate=true}}componentDidLoad(){setTimeout((()=>{this.positionDropdown()}),500);this.el.addEventListener("ifx-option-changed",(()=>{if(!this.pendingSelectionUpdate){this.pendingSelectionUpdate=true;requestAnimationFrame((()=>{this.updateSlotBasedSelections(true);setTimeout((()=>{this.pendingSelectionUpdate=false}),0)}))}}));setTimeout((()=>{this.updateSlotBasedSelections(false);this.updateInitialParentStates()}),100)}componentWillLoad(){this.loadInitialOptions()}updateInternalError(){this.internalError=this.error}updateInternalErrorMessage(){this.internalErrorMessage=this.errorMessage}onSelectionChange(t,e){const i=new FormData;t.forEach((t=>i.append(this.name,t.value)));this.internals.setFormValue(i)}collapseAll(){const t=this.el.querySelectorAll("ifx-multiselect-option");t.forEach((t=>{const e=t["__stencil_instance"];if(e&&e.hasChildren){e.isExpanded=false}}))}expandAll(){const t=this.el.querySelectorAll("ifx-multiselect-option");t.forEach((t=>{const e=t["__stencil_instance"];if(e&&e.hasChildren){e.isExpanded=true}}))}selectAll(){this.resetSearch();const t=this.el.querySelectorAll("ifx-multiselect-option");t.forEach((t=>{const e=t["__stencil_instance"];if(e){if(e.hasChildren){e.isExpanded=true}else{e.selected=true}}}));setTimeout((()=>{this.updateInitialParentStates();this.updateSlotBasedSelections(false);this.ifxSelect.emit(this.persistentSelectedOptions)}),0)}async clearSelection(){const t=this.el.querySelectorAll("ifx-multiselect-option");t.forEach((t=>{const e=t["__stencil_instance"];if(e){e.selected=false;e.indeterminate=false;if(e.hasChildren){e.isExpanded=false}}}));this.persistentSelectedOptions=[];setTimeout((()=>{this.updateSlotBasedSelections(false);this.ifxSelect.emit(this.persistentSelectedOptions)}),0)}toggleDropdown(){this.dropdownOpen=!this.dropdownOpen;setTimeout((()=>{if(this.dropdownOpen){document.addEventListener("click",this.handleDocumentClick)}else{this.resetSearch()}this.ifxOpen.emit(this.dropdownOpen)}),0)}resetSearch(){this.searchTerm="";const t=this.el.shadowRoot.querySelector("ifx-search-field");if(t){t.value=""}const e=this.el.shadowRoot.querySelector(".ifx-multiselect-options");if(e){e.classList.remove("has-search-filter")}const i=this.el.querySelectorAll("ifx-multiselect-option");i.forEach((t=>{const e=new CustomEvent("ifx-search-filter",{detail:{searchTerm:"",isActive:false}});t.dispatchEvent(e)}))}handleWrapperClick(t){this.positionDropdown();if(t.currentTarget===t.target){this.toggleDropdown()}}handleKeyDown(t){if(this.disabled)return;if(!this.dropdownOpen){switch(t.code){case"Enter":case"Space":case"ArrowDown":t.preventDefault();this.toggleDropdown();break}return}switch(t.code){case"Escape":t.preventDefault();this.toggleDropdown();break;case"Enter":case"Space":const e=t.target;if(!e.closest(".ifx-multiselect-dropdown-functions")){t.preventDefault();this.toggleDropdown()}break;case"ArrowDown":case"ArrowUp":t.preventDefault();this.focusFirstOption();break}}focusFirstOption(){var t;const e=this.el.querySelector("ifx-multiselect-option:not(.search-hidden)");if(e){const i=(t=e.shadowRoot)===null||t===void 0?void 0:t.querySelector(".option-label");i===null||i===void 0?void 0:i.focus()}}renderSelectAll(){const t=this.el.querySelectorAll("ifx-multiselect-option");const e=Array.from(t).filter((t=>!t.hasChildren));const s=Array.from(t).filter((t=>!t.hasChildren&&t.selected));const o=e.length>0&&s.length===e.length;const n=t=>{if(t){t.preventDefault();t.stopPropagation()}if(o){this.clearSelection()}else{this.selectAll()}};return i("div",{class:"select-all-wrapper"},i("ifx-checkbox",{id:"selectAll",checked:o,size:"s","aria-label":this.ariaSelectAllLabel,onClick:n,onKeyDown:t=>{if(t.key==="Enter"||t.key===" "){t.preventDefault();t.stopPropagation();n(t)}}},this.selectAllLabel))}renderNoResultsMessage(){return i("div",{class:"ifx-multiselect-no-results"},i("div",{class:"no-results-content"},i("span",{class:"no-results-text"},this.noResultsMessage)))}render(){const t=this.persistentSelectedOptions.map((t=>{var e;const i=this.el.querySelector(`ifx-multiselect-option[value="${t.value}"]`);return((e=i===null||i===void 0?void 0:i.textContent)===null||e===void 0?void 0:e.trim())||t.value})).join(", ");const e=this.persistentSelectedOptions.length>0;let s=false;const o=this.el.querySelectorAll("ifx-multiselect-option");if(o.length>0){s=Array.from(o).every((t=>t.children.length===0))}return i("div",{class:`ifx-multiselect-container`,ref:t=>this.dropdownElement=t},this.label?i("div",{class:"ifx-label-wrapper"},i("span",null,this.label)):null,i("div",{class:`ifx-multiselect-wrapper\n ${this.dropdownOpen?"active":""}\n ${this.dropdownFlipped?"is-flipped":""}\n ${this.internalError?"error":""}\n ${this.disabled?"disabled":""}`,role:"combobox","aria-label":this.ariaMultiSelectLabel,"aria-labelledby":this.ariaMultiSelectLabelledBy||undefined,"aria-describedby":this.ariaMultiSelectDescribedBy||undefined,"aria-expanded":this.dropdownOpen,"aria-haspopup":"listbox","aria-disabled":this.disabled,tabindex:"0",onClick:this.disabled?undefined:t=>this.handleWrapperClick(t),onKeyDown:this.disabled?undefined:t=>this.handleKeyDown(t)},i("div",{class:`ifx-multiselect-input\n ${e?"":"placeholder"}\n `,onClick:this.disabled?undefined:()=>this.toggleDropdown()},e?t:this.placeholder),this.dropdownOpen&&i("div",{class:"ifx-multiselect-dropdown-menu"},(this.showSearch||this.showSelectAll||this.showExpandCollapse&&!s)&&i("div",{class:"ifx-multiselect-dropdown-functions",onClick:t=>t.stopPropagation()},this.showSearch&&i("div",{class:"ifx-multiselect-dropdown-search"},i("ifx-search-field",{class:"search-input",placeholder:this.searchPlaceholder,size:"s","show-delete-icon":"true","aria-label":this.ariaSearchLabel,onKeyDown:t=>{t.stopPropagation()},onIfxInput:t=>this.handleSearch(t.target),onFocus:()=>this.handleSearchFocus(true),onBlur:()=>this.handleSearchFocus(false)})),i("div",{class:"ifx-multiselect-dropdown-controls"},this.showSelectAll&&this.renderSelectAll(),this.showExpandCollapse&&!s&&i("div",{class:"expand-collapse-controls"},i("span",{class:"control-item",role:"button",tabIndex:0,"aria-label":this.ariaExpandAllLabel,onClick:t=>{t.stopPropagation();this.expandAll()},onKeyDown:t=>{if(t.key==="Enter"||t.key===" "){t.preventDefault();t.stopPropagation();this.expandAll()}}},this.expandLabel),i("span",{class:"control-item",role:"button",tabIndex:0,"aria-label":this.ariaCollapseAllLabel,onClick:t=>{t.stopPropagation();this.collapseAll()},onKeyDown:t=>{if(t.key==="Enter"||t.key===" "){t.preventDefault();t.stopPropagation();this.collapseAll()}}},this.collapseLabel)))),i("div",{class:"ifx-multiselect-options",role:"listbox","aria-multiselectable":"true"},i("slot",null),this.searchTerm&&this.showNoResultsMessage&&this.renderNoResultsMessage())),i("div",{class:"ifx-multiselect-icon-container"},this.persistentSelectedOptions.length>0&&i("div",{class:`ifx-clear-button ${!this.showClearButton?"hide":""}`,onClick:this.disabled?undefined:()=>this.clearSelection()},i("ifx-icon",{icon:"cRemove16"})),i("div",{class:"icon-wrapper-up",onClick:this.disabled?undefined:()=>this.toggleDropdown()},i("ifx-icon",{key:"icon-up",icon:"chevron-up-16"})),i("div",{class:"icon-wrapper-down",onClick:this.disabled?undefined:()=>this.toggleDropdown()},i("ifx-icon",{key:"icon-down",icon:"chevron-down-16"})))),this.internalError?i("div",{class:"ifx-error-message-wrapper"},i("span",null,this.internalErrorMessage)):null)}static get formAssociated(){return true}get el(){return s(this)}static get watchers(){return{error:["updateInternalError"],errorMessage:["updateInternalErrorMessage"],persistentSelectedOptions:["onSelectionChange"]}}};c.style=l;const a=":host{display:block;width:100%}.option{display:flex;flex-direction:column;position:relative;cursor:pointer;list-style:none}.option.option--expanded{position:relative}.option.option--has-children{position:relative}.option.option--has-children .option-item>.chevron-wrapper{display:flex}.option--disabled{cursor:not-allowed;pointer-events:none;color:#BFBBBB}.option.search-hidden{display:none !important}.option.search-match .option-item .option-label .search-highlight{font-weight:bold}.option-item{display:flex;flex-direction:row;align-items:center;white-space:nowrap;min-height:20px;padding:4px 16px;background-color:#FFFFFF;transition:background-color 0.2s ease-in-out}.option-item:hover{background-color:#F7F7F7}.option--disabled .option-item:hover{background-color:transparent}.option-children{display:block}.chevron-wrapper{display:none;align-items:center;justify-content:center;margin-right:8px;width:20px;height:20px;flex-shrink:0}.chevron-wrapper:focus{outline:none}.chevron-wrapper:focus-visible{outline:2px solid #0A8276;outline-offset:2px;border-radius:1px}.option--has-children .chevron-wrapper{display:flex}.chevron-wrapper .chevron{transition:transform 0.2s ease-in-out;color:#3C3A39}.chevron-wrapper .chevron.chevron--expanded{transform:rotate(90deg)}.chevron-wrapper .chevron.chevron--collapsed{transform:rotate(0deg)}.checkbox-wrapper{display:flex;align-items:center;margin-right:8px;flex-shrink:0}.option-label{flex-grow:1;display:flex;align-items:center;cursor:pointer;padding:2px 0;font-size:0.875rem}.option-label:focus{outline:none}.option-label:focus-visible{outline:2px solid #0A8276;outline-offset:2px;border-radius:1px}.option--disabled .option-label{cursor:not-allowed;color:#BFBBBB}";const h=a;const f=class{constructor(e){t(this,e);this.selected=false;this.disabled=false;this.indeterminate=false;this.isExpanded=false;this.hasChildren=false;this.depth=0;this.searchTerm="";this.isSearchActive=false;this.isSearchDisabled=false;this.handleSearchFilter=t=>{const{searchTerm:e,isActive:i}=t.detail;this.searchTerm=e.toLowerCase();this.isSearchActive=i;requestAnimationFrame((()=>{this.updateSearchClasses()}))};this.handleCheckboxClick=t=>{if(this.disabled||this.isSearchActive&&this.isSearchDisabled)return;t.stopPropagation();let e;if(this.indeterminate){e=true}else{e=!this.selected}this.selected=e;this.indeterminate=false;if(this.hasChildren){this.isExpanded=e;requestAnimationFrame((()=>{this.selectAllChildren(e);this.expandAllChildren(e)}))}this.updateParentStates();this.notifyMultiselect()};this.handleHeaderClick=t=>{t.stopPropagation();if(!this.disabled&&!(this.isSearchActive&&this.isSearchDisabled)){this.handleClick(t)}}}componentWillLoad(){this.hasChildren=this.el.children.length>0;this.depth=this.calculateDepth();this.el.setAttribute("data-level",this.depth.toString());if(this.hasChildren){const t=this.hasAnySelectedChildren();if(t){this.isExpanded=true}}}componentDidLoad(){this.el["__stencil_instance"]=this;this.notifyMultiselect();this.el.addEventListener("ifx-search-filter",this.handleSearchFilter)}disconnectedCallback(){this.el.removeEventListener("ifx-search-filter",this.handleSearchFilter)}updateSearchClasses(){var t;const e=(t=this.el.shadowRoot)===null||t===void 0?void 0:t.querySelector(".option");if(!e)return;if(!this.isSearchActive){e.classList.remove("search-hidden","search-parent","search-match");this.removeHighlighting();this.isSearchDisabled=false;return}const i=this.getTextContent().toLowerCase();const s=i.includes(this.searchTerm);const o=this.hasMatchingParent();requestAnimationFrame((()=>{const t=this.hasMatchingChildren();e.classList.remove("search-hidden","search-parent","search-match");this.isSearchDisabled=false;if(s&&!this.hasChildren){e.classList.add("search-match");this.highlightSearchTerm()}else if(s&&this.hasChildren){e.classList.add("search-match");this.highlightSearchTerm();this.isExpanded=true}else if(!s&&this.hasChildren&&t){e.classList.add("search-parent");this.removeHighlighting();this.isExpanded=true;this.isSearchDisabled=true}else if(o){e.classList.add("search-match");this.removeHighlighting()}else{e.classList.add("search-hidden");this.removeHighlighting()}}))}highlightSearchTerm(){var t;if(!this.searchTerm)return;const e=(t=this.el.shadowRoot)===null||t===void 0?void 0:t.querySelector(".option-label");if(!e)return;const i=e.querySelector("slot");if(!i)return;this.removeHighlighting();const s=this.getTextContent();const o=this.searchTerm.toLowerCase();const n=s.toLowerCase();if(!n.includes(o))return;const l=n.indexOf(o);if(l===-1)return;const r=s.substring(0,l);const c=s.substring(l,l+o.length);const a=s.substring(l+o.length);const h=document.createElement("span");h.className="highlighted-text";if(r){h.appendChild(document.createTextNode(r))}const f=document.createElement("strong");f.className="search-highlight";f.textContent=c;h.appendChild(f);if(a){h.appendChild(document.createTextNode(a))}e.setAttribute("data-original-content","true");i.style.display="none";e.appendChild(h)}removeHighlighting(){var t;const e=(t=this.el.shadowRoot)===null||t===void 0?void 0:t.querySelector(".option-label");if(!e)return;const i=e.querySelector("slot");const s=e.querySelector(".highlighted-text");if(s){e.removeChild(s)}if(i){i.style.display=""}e.removeAttribute("data-original-content")}getTextContent(){let t="";Array.from(this.el.childNodes).forEach((e=>{var i;if(e.nodeType===Node.TEXT_NODE){t+=((i=e.textContent)===null||i===void 0?void 0:i.trim())||""}}));return t||this.value||""}hasMatchingChildren(){if(!this.hasChildren)return false;const t=Array.from(this.el.children).filter((t=>t.tagName==="IFX-MULTISELECT-OPTION"));return t.some((t=>{const e=t["__stencil_instance"];if(!e)return false;const i=e.getTextContent().toLowerCase();const s=i.includes(this.searchTerm);const o=e.hasMatchingChildren();return s||o}))}hasMatchingParent(){let t=this.el.parentElement;while(t&&t.tagName==="IFX-MULTISELECT-OPTION"){const e=t["__stencil_instance"];if(e){const t=e.getTextContent().toLowerCase();if(t.includes(this.searchTerm)){return true}}t=t.parentElement}return false}calculateDepth(){let t=0;let e=this.el.parentElement;while(e&&e.tagName!=="IFX-MULTISELECT"){if(e.tagName==="IFX-MULTISELECT-OPTION"){t++}e=e.parentElement}return t}handleClick(t){if(this.disabled||this.isSearchActive&&this.isSearchDisabled)return;t.stopPropagation();if(t.type==="click"&&t.target.closest(".chevron-wrapper")){this.toggleExpansion();return}let e;if(this.indeterminate){e=true}else{e=!this.selected}this.selected=e;this.indeterminate=false;if(this.hasChildren){this.isExpanded=e;requestAnimationFrame((()=>{this.selectAllChildren(e);this.expandAllChildren(e)}))}this.updateParentStates();this.notifyMultiselect()}handleKeyDown(t){if(this.disabled||this.isSearchActive&&this.isSearchDisabled)return;const e=t.target;if(e.closest(".chevron-wrapper")||e.closest(".checkbox-wrapper")){return}if(t.key!=="ArrowUp"&&t.key!=="ArrowDown"){t.stopPropagation()}if(t.key==="ArrowRight"&&this.hasChildren){this.isExpanded=true}if(t.key==="ArrowLeft"&&this.hasChildren){this.isExpanded=false}}notifyMultiselect(){const t=new CustomEvent("ifx-option-changed",{bubbles:true,detail:{value:this.value,selected:this.selected,indeterminate:this.indeterminate}});this.el.dispatchEvent(t)}selectAllChildren(t){const e=Array.from(this.el.children).filter((t=>t.tagName==="IFX-MULTISELECT-OPTION"));e.forEach((e=>{var i;const s=e["__stencil_instance"];if(s){s.selected=t;s.indeterminate=false;if(s.hasChildren){s.isExpanded=t;s.selectAllChildren(t)}(i=s.notifyMultiselect)===null||i===void 0?void 0:i.call(s)}}))}expandAllChildren(t){const e=Array.from(this.el.children).filter((t=>t.tagName==="IFX-MULTISELECT-OPTION"));e.forEach((e=>{const i=e["__stencil_instance"];if(i&&i.hasChildren){i.isExpanded=t;i.expandAllChildren(t)}}))}updateParentStates(){var t;let e=this.el.parentElement;while(e&&e.tagName==="IFX-MULTISELECT-OPTION"){const i=e["__stencil_instance"];if(!i){e=e.parentElement;continue}const s=Array.from(e.children).filter((t=>t.tagName==="IFX-MULTISELECT-OPTION")).map((t=>t["__stencil_instance"])).filter((t=>t!==null));const o=s.filter((t=>t.selected)).length;const n=s.filter((t=>t.indeterminate)).length;const l=s.length;if(o===l&&n===0){i.selected=true;i.indeterminate=false}else if(o===0&&n===0){i.selected=false;i.indeterminate=false}else{i.selected=false;i.indeterminate=true}(t=i.notifyMultiselect)===null||t===void 0?void 0:t.call(i);e=e.parentElement}}toggleExpansion(){this.isExpanded=!this.isExpanded}hasAnySelectedChildren(){const t=Array.from(this.el.children).filter((t=>t.tagName==="IFX-MULTISELECT-OPTION"));return t.some((t=>{const e=t.hasAttribute("selected");const i=this.checkForSelectedDescendants(t);return e||i}))}checkForSelectedDescendants(t){const e=Array.from(t.children).filter((t=>t.tagName==="IFX-MULTISELECT-OPTION"));return e.some((t=>{const e=t.hasAttribute("selected");const i=this.checkForSelectedDescendants(t);return e||i}))}render(){let t=false;const e=this.el.closest("ifx-multiselect");if(e){const i=Array.from(e.querySelectorAll("ifx-multiselect-option"));t=i.every((t=>t.children.length===0))}const s=this.depth*28+16;const n=this.hasChildren?0:28;let l=s+n;const r=t?undefined:{paddingLeft:`${l}px`};return i(o,{key:"f836f58884e2e57c4c5fb4953f10d5ff4a34c8da"},i("div",{key:"9eca6e87bb3c21512a051596b1e92931b707e88f",class:{option:true,"option--has-children":this.hasChildren,"option--expanded":this.isExpanded,"option--disabled":this.disabled,"option--selected":this.selected},role:"option","aria-expanded":this.hasChildren?this.isExpanded?"true":"false":undefined,"aria-selected":this.selected?"true":"false","aria-disabled":this.disabled?"true":"false","data-level":this.depth,"data-value":this.value},i("div",{key:"41d24ef38470f5f7f8aa36daa33b339b7d8079f3",class:"option-item",style:r},i("div",{key:"27d33336e7d15ccce1703429b70494fe86808214",class:"chevron-wrapper",tabIndex:this.hasChildren?0:-1,role:this.hasChildren?"button":undefined,"aria-label":this.hasChildren?this.isExpanded?"Collapse":"Expand":undefined,onClick:t=>{t.stopPropagation();this.toggleExpansion()},onKeyDown:t=>{if(t.key==="Enter"||t.key===" "){t.preventDefault();t.stopPropagation();this.toggleExpansion()}}},this.hasChildren&&i("ifx-icon",{key:"68e975b49b4aa9edf564b80644c5a55809185629",class:`chevron ${this.isExpanded?"chevron--expanded":"chevron--collapsed"}`,icon:"chevron-right-16"})),i("div",{key:"f651aefe4cc30db6056331ffaafd8e6ea17039fc",class:"checkbox-wrapper",onClick:t=>t.stopPropagation()},i("ifx-checkbox",{key:"e8cb2c7a75921a81e0321ff22718d9373cb6f437",size:"s",checked:this.isSearchActive&&this.isSearchDisabled?false:this.indeterminate?false:this.selected,indeterminate:this.isSearchActive&&this.isSearchDisabled?false:this.indeterminate,onClick:this.handleCheckboxClick,disabled:this.disabled||this.isSearchActive&&this.isSearchDisabled,onKeyDown:t=>{if(t.key==="Enter"||t.key===" "){t.preventDefault();t.stopPropagation();this.handleCheckboxClick(t)}}})),i("div",{key:"4f626380753927d4bedca0f78643e6647eff6356",class:"option-label",onClick:this.handleHeaderClick,tabIndex:-1},i("slot",{key:"8207d9f952bff231fda0bf0be43e1c567aa6a6da"}))),this.isExpanded&&i("div",{key:"930d611f27451ff393d1403386bb6cd6b4a54980",class:"option-children"},i("slot",{key:"269eb6381257f82b74b888188646559e6881a9d9",name:"children"}))))}get el(){return s(this)}};f.style=h;export{c as ifx_multiselect,f as ifx_multiselect_option};
2
+ //# sourceMappingURL=p-25204a1e.entry.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"names":["multiselectCss","IfxMultiselectStyle0","debounce","func","wait","timeout","executedFunction","args","later","clearTimeout","setTimeout","Multiselect","constructor","hostRef","this","disabled","error","errorMessage","label","placeholder","showSearch","showSelectAll","showClearButton","showExpandCollapse","noResultsMessage","showNoResultsMessage","searchPlaceholder","selectAllLabel","expandLabel","collapseLabel","ariaMultiSelectLabel","ariaMultiSelectLabelledBy","ariaMultiSelectDescribedBy","ariaSearchLabel","ariaClearLabel","ariaToggleLabel","ariaSelectAllLabel","ariaExpandAllLabel","ariaCollapseAllLabel","internalError","persistentSelectedOptions","dropdownOpen","searchTerm","handleSearch","targetElement","value","toLowerCase","isSearchActive","wrapper","el","shadowRoot","querySelector","classList","remove","searchField","searchFieldHasFocus","matches","add","optionsContainer","requestAnimationFrame","allOptions","querySelectorAll","forEach","option","searchEvent","CustomEvent","detail","isActive","dispatchEvent","visibleCount","style","window","getComputedStyle","rect","getBoundingClientRect","display","visibility","opacity","height","pendingSelectionUpdate","handleDocumentClick","event","path","composedPath","includes","dropdownElement","document","removeEventListener","resetSearch","ifxOpen","emit","parseChildOptions","options","childElements","Array","from","children","child","index","tagName","parseOptionElement","push","element","getAttribute","selected","hasAttribute","indeterminate","nestedOptions","filter","map","childIndex","opt","length","loadInitialOptions","internalErrorMessage","initiallySelected","collectSelectedOptions","initiallySelectedNotInState","init","some","selectedOptions","concat","collectLeafOptions","existingOption","leafOptions","handleSearchFocus","hasFocus","positionDropdown","wrapperRect","_a","spaceBelow","innerHeight","bottom","spaceAbove","top","dropdownFlipped","updateSlotBasedSelections","emitEvent","allOptionElements","selectedLeafOptions","optionEl","instance","hasChildren","ifxSelect","updateInitialParentStates","optionsByDepth","depth","parseInt","item","sort","a","b","updateParentState","parentInstance","directChildren","selectedCount","indeterminateCount","totalCount","componentDidLoad","addEventListener","componentWillLoad","updateInternalError","updateInternalErrorMessage","onSelectionChange","newValue","_","formData","FormData","append","name","internals","setFormValue","collapseAll","isExpanded","expandAll","selectAll","clearSelection","toggleDropdown","handleWrapperClick","currentTarget","target","handleKeyDown","code","preventDefault","closest","focusFirstOption","firstOption","labelElement","focus","renderSelectAll","allSelected","toggleSelectAll","stopPropagation","h","class","id","checked","size","onClick","onKeyDown","e","key","renderNoResultsMessage","render","selectedOptionsLabels","optionElement","textContent","trim","join","hasSelections","isFlatMultiselect","every","ref","role","undefined","tabindex","onIfxInput","onFocus","onBlur","tabIndex","icon","multiselectOptionCss","IfxMultiselectOptionStyle0","MultiselectOption","isSearchDisabled","handleSearchFilter","updateSearchClasses","handleCheckboxClick","newSelectedState","selectAllChildren","expandAllChildren","updateParentStates","notifyMultiselect","handleHeaderClick","handleClick","calculateDepth","setAttribute","toString","hasSelectedChildren","hasAnySelectedChildren","disconnectedCallback","optionDiv","removeHighlighting","getTextContent","matchesSearch","hasMatchingParent","hasMatchingChildren","highlightSearchTerm","slotElement","originalText","searchTermLower","originalTextLower","searchIndex","indexOf","beforeMatch","substring","matchText","afterMatch","highlightedContent","createElement","className","appendChild","createTextNode","boldElement","highlightedElement","removeChild","removeAttribute","text","childNodes","node","nodeType","Node","TEXT_NODE","childOptions","childInstance","childText","childMatches","grandChildrenMatch","parent","parentElement","parentText","type","toggleExpansion","updateEvent","bubbles","call","expanded","siblings","sibling","hasSelected","hasSelectedDescendants","checkForSelectedDescendants","nestedChild","isSelected","hasSelectedNested","parentMultiselect","basePadding","additionalPadding","totalPadding","optionItemStyle","paddingLeft","Host"],"sources":["src/components/select/multi-select/multiselect.scss?tag=ifx-multiselect&encapsulation=shadow","src/components/select/multi-select/multiselect.tsx","src/components/select/multi-select/multiselect-option.scss?tag=ifx-multiselect-option&encapsulation=shadow","src/components/select/multi-select/multiselect-option.tsx"],"sourcesContent":["// @import '~choices.js/public/assets/styles/choices.css';\n@use \"~@infineon/design-system-tokens/dist/tokens\";\n@use \"../../../global/font.scss\";\n\n.ifx-multiselect-container {\n position: relative;\n box-sizing: border-box;\n font-family: var(--ifx-font-family); // tokens.$ifxFontFamilyBody;\n\n\n\n &:hover {\n cursor: pointer;\n }\n\n .ifx-label-wrapper {\n font-size: tokens.$ifxFontSizeM;\n line-height: tokens.$ifxLineHeightM;\n white-space: pre-wrap;\n word-wrap: break-word;\n overflow-wrap: anywhere;\n max-width: 100%;\n }\n\n .ifx-error-message-wrapper {\n color: #CD002F;\n font-size: tokens.$ifxFontSizeXs;\n line-height: tokens.$ifxLineHeightXs;\n white-space: pre-wrap;\n word-wrap: break-word;\n overflow-wrap: anywhere;\n max-width: 100%;\n }\n\n .ifx-multiselect-wrapper {\n background-color: tokens.$ifxColorBaseWhite;\n box-sizing: border-box;\n display: flex;\n align-items: center;\n border: 1px solid tokens.$ifxColorEngineering400;\n border-radius: tokens.$ifxBorderRadius12;\n width: 100%;\n font-weight: 400;\n font-style: normal;\n height: 40px;\n line-height: 24px;\n padding: 8px 16px;\n font-size: tokens.$ifxFontSizeM;\n line-height: tokens.$ifxLineHeightM;\n\n &:focus-visible {\n outline: none;\n }\n\n &:focus-visible:not(.active):not(:active) {\n outline: none;\n\n &::before {\n content: '';\n position: absolute;\n width: calc(100% + 4px);\n height: calc(100% + 4px);\n top: 50%;\n left: 50%;\n transform: translate(-50%, -50%);\n border: 2px solid tokens.$ifxColorOcean500;\n border-radius: 2px;\n\n }\n }\n\n &.disabled {\n background: tokens.$ifxColorEngineering200;\n color: #575352;\n border-color: #575352;\n cursor: default;\n -webkit-user-select: none;\n -ms-user-select: none;\n user-select: none;\n }\n\n &.error {\n border-color: #CD002F;\n }\n\n &:hover:not(.focus, :focus) {\n border-color: tokens.$ifxColorEngineering500;\n }\n\n &.active {\n border-color: tokens.$ifxColorOcean500 !important; // Active border color\n\n & .icon-wrapper-up {\n display: flex;\n align-items: center;\n justify-content: center;\n padding-left: tokens.$ifxSpace100;\n }\n\n & .icon-wrapper-down {\n display: none\n }\n }\n\n\n & .icon-wrapper-up {\n display: none;\n }\n\n & .icon-wrapper-down {\n display: flex;\n align-items: center;\n justify-content: center;\n padding-left: tokens.$ifxSpace100;\n }\n\n &.is-flipped {\n .ifx-multiselect-dropdown-menu {\n top: auto;\n bottom: 100%;\n }\n }\n }\n\n .ifx-multiselect-input {\n flex-grow: 1;\n white-space: nowrap;\n overflow: hidden;\n text-overflow: ellipsis;\n\n &.placeholder {\n opacity: 0.5;\n }\n\n }\n\n\n .ifx-multiselect-icon-container {\n margin-left: auto;\n display: flex;\n align-items: center;\n gap: tokens.$ifxSpace100;\n\n .ifx-multiselect-icon-container {\n display: flex;\n }\n\n .icon-wrapper {\n display: flex;\n align-items: center;\n transition: transform 0.2s ease-in-out;\n }\n\n .icon-wrapper--open {\n transform: rotate(180deg);\n }\n }\n\n .ifx-clear-button {\n display: flex;\n align-items: center;\n\n &.hide {\n display: none;\n }\n }\n\n .ifx-multiselect-dropdown-menu {\n box-sizing: border-box;\n position: absolute;\n top: 100%;\n left: 0;\n width: 100%;\n margin-top: tokens.$ifxSpace50;\n border: 1px solid tokens.$ifxColorEngineering200;\n background-color: #fff;\n box-shadow: 0px 6px 9px 0px rgba(29, 29, 29, 0.10);\n max-height: 300px;\n z-index: 1000;\n display: flex;\n flex-direction: column;\n }\n}\n\n.ifx-multiselect-dropdown-functions {\n padding: tokens.$ifxSpace150 tokens.$ifxSpace200;\n border-bottom: 1px solid tokens.$ifxColorEngineering200;\n flex-shrink: 0;\n}\n\n.ifx-multiselect-dropdown-search {\n margin-bottom: tokens.$ifxSpace150;\n}\n\n.ifx-multiselect-dropdown-controls {\n display: flex;\n flex-wrap: wrap;\n justify-content: space-between;\n gap: tokens.$ifxSpace100;\n\n .select-all-wrapper {\n display: flex;\n }\n\n .expand-collapse-controls {\n display: flex;\n gap: tokens.$ifxSpace150;\n }\n\n .control-item {\n font-size: tokens.$ifxFontSizeS;\n line-height: tokens.$ifxLineHeightS;\n\n &:hover {\n color: tokens.$ifxColorOcean500;\n }\n\n &:active {\n color: tokens.$ifxColorOcean600;\n }\n\n &:focus {\n outline: none;\n }\n\n &:focus-visible {\n outline: 2px solid tokens.$ifxColorOcean500;\n outline-offset: 2px;\n border-radius: tokens.$ifxBorderRadius12;\n }\n }\n}\n\n.ifx-multiselect-options {\n flex: 1;\n overflow-y: auto;\n padding-top: tokens.$ifxSpace150;\n padding-bottom: tokens.$ifxSpace150;\n\n &.show-no-results {\n .ifx-multiselect-no-results {\n display: block;\n }\n }\n}\n\n.ifx-multiselect-no-results {\n padding-left: tokens.$ifxSpace200;\n padding-right: tokens.$ifxSpace200;\n display: none;\n}\n\n","import { Component, Prop, State, Event, EventEmitter, Element, AttachInternals, h, Watch, Method } from '@stencil/core';\nimport { Option } from './interfaces';\n\nfunction debounce(func, wait) {\n let timeout;\n return function executedFunction(...args) {\n const later = () => {\n clearTimeout(timeout);\n func(...args);\n };\n clearTimeout(timeout);\n timeout = setTimeout(later, wait);\n };\n}\n\n@Component({\n tag: 'ifx-multiselect',\n styleUrl: 'multiselect.scss',\n shadow: true,\n formAssociated: true\n})\n\nexport class Multiselect {\n @Prop() name: string;\n @Prop() disabled: boolean = false;\n @Prop() error: boolean = false;\n @Prop() errorMessage: string = \"Error\";\n @Prop() label: string = \"\";\n @Prop() placeholder: string = \"\";\n @Prop() showSearch: boolean = true;\n @Prop() showSelectAll: boolean = true;\n @Prop() showClearButton: boolean = true;\n @Prop() showExpandCollapse: boolean = true;\n @Prop() noResultsMessage: string = \"No results found.\";\n @Prop() showNoResultsMessage: boolean = true;\n @Prop() searchPlaceholder: string = \"Search\";\n @Prop() selectAllLabel: string = \"Select all\";\n @Prop() expandLabel: string = \"Expand\";\n @Prop() collapseLabel: string = \"Collapse\";\n @Prop() ariaMultiSelectLabel: string = \"Multi-select dropdown\";\n @Prop() ariaMultiSelectLabelledBy: string = \"\";\n @Prop() ariaMultiSelectDescribedBy: string = \"\";\n @Prop() ariaSearchLabel: string = \"Search options\";\n @Prop() ariaClearLabel: string = \"Clear all selections\";\n @Prop() ariaToggleLabel: string = \"Toggle dropdown\";\n @Prop() ariaSelectAllLabel: string = \"Select all options\";\n @Prop() ariaExpandAllLabel: string = \"Expand all categories\";\n @Prop() ariaCollapseAllLabel: string = \"Collapse all categories\";\n\n @State() internalError: boolean = false;\n @State() internalErrorMessage: string;\n @State() persistentSelectedOptions: Option[] = [];\n @State() dropdownOpen = false;\n @State() dropdownFlipped: boolean;\n @State() searchTerm: string = '';\n\n @Event() ifxSelect: EventEmitter;\n @Event() ifxOpen: EventEmitter;\n\n @Element() el: HTMLElement;\n dropdownElement!: HTMLElement;\n\n @AttachInternals() internals: ElementInternals;\n private parseChildOptions(): Option[] {\n const options: Option[] = [];\n const childElements = Array.from(this.el.children);\n\n childElements.forEach((child, index) => {\n if (child.tagName === 'IFX-MULTISELECT-OPTION') {\n const option = this.parseOptionElement(child as HTMLElement, index);\n if (option) {\n options.push(option);\n }\n }\n });\n\n return options;\n }\n\n private parseOptionElement(element: HTMLElement, index: number): Option | null {\n const value = element.getAttribute('value') || `option-${index}`;\n const selected = element.hasAttribute('selected');\n const disabled = element.hasAttribute('disabled');\n const indeterminate = element.hasAttribute('indeterminate');\n\n const option: Option = {\n value,\n selected,\n disabled,\n indeterminate\n };\n\n const nestedOptions = Array.from(element.children)\n .filter(child => child.tagName === 'IFX-MULTISELECT-OPTION')\n .map((child, childIndex) => this.parseOptionElement(child as HTMLElement, childIndex))\n .filter(opt => opt !== null) as Option[];\n\n if (nestedOptions.length > 0) {\n option.children = nestedOptions;\n }\n\n return option;\n }\n\n loadInitialOptions() {\n this.internalError = this.error;\n this.internalErrorMessage = this.errorMessage;\n\n const allOptions = this.parseChildOptions();\n const initiallySelected = this.collectSelectedOptions(allOptions);\n const initiallySelectedNotInState = initiallySelected.filter(init =>\n !this.persistentSelectedOptions.some(opt => opt.value == init.value)\n );\n this.persistentSelectedOptions = [...this.persistentSelectedOptions, ...initiallySelectedNotInState];\n }\n\n private collectSelectedOptions(options: Option[]): Option[] {\n let selectedOptions: Option[] = [];\n\n for (const option of options) {\n if (option.selected) {\n if (option.children && option.children.length > 0) {\n selectedOptions = selectedOptions.concat(this.collectLeafOptions(option.children));\n } else {\n if (!selectedOptions.some(existingOption => existingOption.value === option.value)) {\n selectedOptions.push(option);\n }\n }\n } else {\n if (option.children && option.children.length > 0) {\n selectedOptions = selectedOptions.concat(this.collectSelectedOptions(option.children));\n }\n }\n }\n\n return selectedOptions;\n }\n\n private collectLeafOptions(children: Option[]): Option[] {\n let leafOptions = [];\n\n for (const child of children) {\n if (child.children && child.children.length > 0) {\n leafOptions = leafOptions.concat(this.collectLeafOptions(child.children));\n } else {\n leafOptions.push(child);\n }\n }\n return leafOptions;\n }\n\n handleSearch = debounce((targetElement: HTMLInputElement) => {\n const searchTerm = targetElement.value.toLowerCase();\n const isSearchActive = searchTerm !== '';\n\n this.searchTerm = searchTerm;\n\n const wrapper = this.el.shadowRoot.querySelector('.ifx-multiselect-wrapper');\n if (wrapper) {\n if (isSearchActive) {\n wrapper.classList.remove('active');\n } else {\n const searchField = this.el.shadowRoot.querySelector('ifx-search-field');\n const searchFieldHasFocus = searchField && searchField.matches(':focus-within');\n if (!searchFieldHasFocus) {\n wrapper.classList.add('active');\n }\n }\n }\n\n const optionsContainer = this.el.shadowRoot.querySelector('.ifx-multiselect-options');\n if (optionsContainer) {\n if (isSearchActive) {\n optionsContainer.classList.add('has-search-filter');\n } else {\n optionsContainer.classList.remove('has-search-filter');\n }\n }\n\n requestAnimationFrame(() => {\n const allOptions = this.el.querySelectorAll('ifx-multiselect-option');\n allOptions.forEach(option => {\n const searchEvent = new CustomEvent('ifx-search-filter', {\n detail: { searchTerm, isActive: isSearchActive }\n });\n option.dispatchEvent(searchEvent);\n });\n\n if (isSearchActive) {\n setTimeout(() => {\n const allOptions = this.el.querySelectorAll('ifx-multiselect-option');\n let visibleCount = 0;\n\n allOptions.forEach(option => {\n const style = window.getComputedStyle(option);\n const rect = option.getBoundingClientRect();\n\n if (style.display !== 'none' &&\n style.visibility !== 'hidden' &&\n style.opacity !== '0' &&\n rect.height > 0) {\n visibleCount++;\n }\n });\n\n const optionsContainer = this.el.shadowRoot.querySelector('.ifx-multiselect-options');\n if (optionsContainer) {\n if (visibleCount === 0) {\n optionsContainer.classList.add('show-no-results');\n } else {\n optionsContainer.classList.remove('show-no-results');\n }\n }\n }, 200);\n } else {\n const optionsContainer = this.el.shadowRoot.querySelector('.ifx-multiselect-options');\n if (optionsContainer) {\n optionsContainer.classList.remove('show-no-results');\n }\n }\n });\n }, 150);\n\n private handleSearchFocus(hasFocus: boolean) {\n const wrapper = this.el.shadowRoot.querySelector('.ifx-multiselect-wrapper');\n if (wrapper) {\n if (hasFocus || this.searchTerm !== '') {\n wrapper.classList.remove('active');\n } else {\n wrapper.classList.add('active');\n }\n }\n }\n\n positionDropdown() {\n const wrapperRect = this.el.shadowRoot.querySelector('.ifx-multiselect-wrapper')?.getBoundingClientRect();\n const spaceBelow = window.innerHeight - wrapperRect.bottom;\n const spaceAbove = wrapperRect.top;\n\n if ((spaceAbove > spaceBelow && wrapperRect.height > spaceBelow) || (wrapperRect.bottom > window.innerHeight)) {\n this.dropdownFlipped = true;\n } else {\n this.dropdownFlipped = false;\n }\n }\n\n private pendingSelectionUpdate = false;\n public updateSlotBasedSelections(emitEvent: boolean = false) {\n const allOptionElements = this.el.querySelectorAll('ifx-multiselect-option');\n const selectedLeafOptions: Option[] = [];\n\n allOptionElements.forEach((optionEl: any) => {\n const instance = optionEl['__stencil_instance'];\n if (instance && instance.selected && !instance.hasChildren) {\n selectedLeafOptions.push({\n value: instance.value,\n selected: true,\n disabled: instance.disabled\n });\n }\n });\n\n this.persistentSelectedOptions = selectedLeafOptions;\n\n if (emitEvent) {\n this.ifxSelect.emit(this.persistentSelectedOptions);\n }\n }\n\n private updateInitialParentStates() {\n const allOptionElements = this.el.querySelectorAll('ifx-multiselect-option');\n const optionsByDepth = Array.from(allOptionElements)\n .map(el => ({\n element: el,\n instance: (el as any)['__stencil_instance'],\n depth: parseInt(el.getAttribute('data-level') || '0')\n }))\n .filter(item => item.instance)\n .sort((a, b) => b.depth - a.depth);\n\n optionsByDepth.forEach(({ instance }) => {\n if (instance.hasChildren) {\n this.updateParentState(instance);\n }\n });\n }\n\n private updateParentState(parentInstance: any) {\n const directChildren = Array.from(parentInstance.el.children as HTMLCollection)\n .filter((child: Element) => child.tagName === 'IFX-MULTISELECT-OPTION')\n .map(child => (child as any)['__stencil_instance'])\n .filter(instance => instance !== null);\n\n const selectedCount = directChildren.filter(child => child.selected).length;\n const indeterminateCount = directChildren.filter(child => child.indeterminate).length;\n const totalCount = directChildren.length;\n\n if (selectedCount === totalCount && indeterminateCount === 0) {\n parentInstance.selected = true;\n parentInstance.indeterminate = false;\n } else if (selectedCount === 0 && indeterminateCount === 0) {\n parentInstance.selected = false;\n parentInstance.indeterminate = false;\n } else {\n parentInstance.selected = false;\n parentInstance.indeterminate = true;\n }\n }\n\n componentDidLoad() {\n setTimeout(() => {\n this.positionDropdown();\n }, 500);\n\n this.el.addEventListener('ifx-option-changed', () => {\n if (!this.pendingSelectionUpdate) {\n this.pendingSelectionUpdate = true;\n requestAnimationFrame(() => {\n this.updateSlotBasedSelections(true);\n setTimeout(() => {\n this.pendingSelectionUpdate = false;\n }, 0);\n });\n }\n });\n\n setTimeout(() => {\n this.updateSlotBasedSelections(false);\n this.updateInitialParentStates();\n }, 100);\n }\n\n componentWillLoad() {\n this.loadInitialOptions();\n }\n\n @Watch('error')\n updateInternalError() {\n this.internalError = this.error;\n }\n\n @Watch('errorMessage')\n updateInternalErrorMessage() {\n this.internalErrorMessage = this.errorMessage;\n }\n\n @Watch('persistentSelectedOptions')\n onSelectionChange(newValue: Option[], _: Option[]) {\n const formData = new FormData();\n newValue.forEach(option => formData.append(this.name, option.value));\n this.internals.setFormValue(formData);\n }\n collapseAll() {\n const allOptionElements = this.el.querySelectorAll('ifx-multiselect-option');\n allOptionElements.forEach((optionEl: any) => {\n const instance = optionEl['__stencil_instance'];\n if (instance && instance.hasChildren) {\n instance.isExpanded = false;\n }\n });\n }\n\n expandAll() {\n const allOptionElements = this.el.querySelectorAll('ifx-multiselect-option');\n allOptionElements.forEach((optionEl: any) => {\n const instance = optionEl['__stencil_instance'];\n if (instance && instance.hasChildren) {\n instance.isExpanded = true;\n }\n });\n }\n\n selectAll() {\n this.resetSearch();\n\n const allOptionElements = this.el.querySelectorAll('ifx-multiselect-option');\n\n allOptionElements.forEach((optionEl: any) => {\n const instance = optionEl['__stencil_instance'];\n if (instance) {\n if (instance.hasChildren) {\n instance.isExpanded = true;\n } else {\n instance.selected = true;\n }\n }\n });\n\n setTimeout(() => {\n this.updateInitialParentStates();\n this.updateSlotBasedSelections(false);\n this.ifxSelect.emit(this.persistentSelectedOptions);\n }, 0);\n }\n\n @Method()\n async clearSelection() {\n const allOptionElements = this.el.querySelectorAll('ifx-multiselect-option');\n allOptionElements.forEach((optionEl: any) => {\n const instance = optionEl['__stencil_instance'];\n if (instance) {\n instance.selected = false;\n instance.indeterminate = false;\n if (instance.hasChildren) {\n instance.isExpanded = false;\n }\n }\n });\n\n this.persistentSelectedOptions = [];\n\n setTimeout(() => {\n this.updateSlotBasedSelections(false);\n this.ifxSelect.emit(this.persistentSelectedOptions);\n }, 0);\n }\n\n handleDocumentClick = (event: Event) => {\n const path = event.composedPath();\n if (!path.includes(this.dropdownElement)) {\n this.dropdownOpen = false;\n document.removeEventListener('click', this.handleDocumentClick);\n this.resetSearch();\n this.ifxOpen.emit(this.dropdownOpen);\n }\n }\n\n toggleDropdown() {\n this.dropdownOpen = !this.dropdownOpen;\n setTimeout(() => {\n if (this.dropdownOpen) {\n document.addEventListener('click', this.handleDocumentClick);\n } else {\n this.resetSearch();\n }\n this.ifxOpen.emit(this.dropdownOpen);\n }, 0);\n }\n\n private resetSearch() {\n this.searchTerm = '';\n\n const searchField = this.el.shadowRoot.querySelector('ifx-search-field') as any;\n if (searchField) {\n searchField.value = '';\n }\n\n const optionsContainer = this.el.shadowRoot.querySelector('.ifx-multiselect-options');\n if (optionsContainer) {\n optionsContainer.classList.remove('has-search-filter');\n }\n\n const allOptions = this.el.querySelectorAll('ifx-multiselect-option');\n allOptions.forEach(option => {\n const searchEvent = new CustomEvent('ifx-search-filter', {\n detail: { searchTerm: '', isActive: false }\n });\n option.dispatchEvent(searchEvent);\n });\n }\n\n handleWrapperClick(event: MouseEvent) {\n this.positionDropdown();\n\n if (event.currentTarget === event.target) {\n this.toggleDropdown();\n }\n }\n\n handleKeyDown(event: KeyboardEvent) {\n if (this.disabled) return;\n\n // If dropdown is closed, only allow opening\n if (!this.dropdownOpen) {\n switch (event.code) {\n case 'Enter':\n case 'Space':\n case 'ArrowDown':\n event.preventDefault();\n this.toggleDropdown();\n break;\n }\n return;\n }\n\n // Dropdown is open - handle navigation and controls\n switch (event.code) {\n case 'Escape':\n event.preventDefault();\n this.toggleDropdown();\n break;\n case 'Enter':\n case 'Space':\n // Don't close dropdown when pressing space/enter in controls area\n const target = event.target as HTMLElement;\n if (!target.closest('.ifx-multiselect-dropdown-functions')) {\n event.preventDefault();\n this.toggleDropdown();\n }\n break;\n case 'ArrowDown':\n case 'ArrowUp':\n // Focus first/last option for navigation\n event.preventDefault();\n this.focusFirstOption();\n break;\n }\n }\n\n private focusFirstOption() {\n const firstOption = this.el.querySelector('ifx-multiselect-option:not(.search-hidden)');\n if (firstOption) {\n const labelElement = firstOption.shadowRoot?.querySelector('.option-label') as HTMLElement;\n labelElement?.focus();\n }\n }\n\n private renderSelectAll() {\n const allOptionElements = this.el.querySelectorAll('ifx-multiselect-option');\n const leafOptions = Array.from(allOptionElements).filter((el: any) => !el.hasChildren);\n const selectedLeafOptions = Array.from(allOptionElements).filter((el: any) => !el.hasChildren && el.selected);\n\n const allSelected = leafOptions.length > 0 && selectedLeafOptions.length === leafOptions.length;\n\n const toggleSelectAll = (event?: Event) => {\n if (event) {\n event.preventDefault();\n event.stopPropagation();\n }\n\n if (allSelected) {\n this.clearSelection();\n } else {\n this.selectAll();\n }\n };\n\n return (\n <div class=\"select-all-wrapper\">\n <ifx-checkbox\n id='selectAll'\n checked={allSelected}\n size=\"s\"\n aria-label={this.ariaSelectAllLabel}\n onClick={toggleSelectAll}\n onKeyDown={(e) => {\n if (e.key === 'Enter' || e.key === ' ') {\n e.preventDefault();\n e.stopPropagation();\n toggleSelectAll(e);\n }\n }}\n >\n {this.selectAllLabel}\n </ifx-checkbox>\n </div>\n );\n }\n\n private renderNoResultsMessage() {\n return (\n <div class=\"ifx-multiselect-no-results\">\n <div class=\"no-results-content\">\n <span class=\"no-results-text\">{this.noResultsMessage}</span>\n </div>\n </div>\n );\n }\n\n render() {\n const selectedOptionsLabels = this.persistentSelectedOptions\n .map((option) => {\n const optionElement = this.el.querySelector(`ifx-multiselect-option[value=\"${option.value}\"]`);\n return optionElement?.textContent?.trim() || option.value;\n })\n .join(', ');\n\n const hasSelections = this.persistentSelectedOptions.length > 0;\n\n let isFlatMultiselect = false;\n const allOptionElements = this.el.querySelectorAll('ifx-multiselect-option');\n if (allOptionElements.length > 0) {\n isFlatMultiselect = Array.from(allOptionElements).every(option => option.children.length === 0);\n }\n\n return (\n <div class={`ifx-multiselect-container`} ref={el => this.dropdownElement = el as HTMLElement}>\n {\n this.label ?\n <div class=\"ifx-label-wrapper\">\n <span>{this.label}</span>\n </div> : null\n }\n <div class={`ifx-multiselect-wrapper\n ${this.dropdownOpen ? 'active' : ''}\n ${this.dropdownFlipped ? 'is-flipped' : ''}\n ${this.internalError ? 'error' : \"\"}\n ${this.disabled ? 'disabled' : \"\"}`}\n role=\"combobox\"\n aria-label={this.ariaMultiSelectLabel}\n aria-labelledby={this.ariaMultiSelectLabelledBy || undefined}\n aria-describedby={this.ariaMultiSelectDescribedBy || undefined}\n aria-expanded={this.dropdownOpen}\n aria-haspopup=\"listbox\"\n aria-disabled={this.disabled}\n tabindex=\"0\"\n onClick={this.disabled ? undefined : (event) => this.handleWrapperClick(event)}\n onKeyDown={this.disabled ? undefined : (event) => this.handleKeyDown(event)} >\n <div class={`ifx-multiselect-input\n ${hasSelections ? '' : 'placeholder'}\n `}\n onClick={this.disabled ? undefined : () => this.toggleDropdown()}\n >\n {hasSelections ? selectedOptionsLabels : this.placeholder}\n </div>\n {this.dropdownOpen && (\n <div class=\"ifx-multiselect-dropdown-menu\">\n\n {(this.showSearch || this.showSelectAll || (this.showExpandCollapse && !isFlatMultiselect)) && (\n <div class=\"ifx-multiselect-dropdown-functions\" onClick={(e) => e.stopPropagation()}>\n {this.showSearch && (\n <div class=\"ifx-multiselect-dropdown-search\">\n <ifx-search-field\n class=\"search-input\"\n placeholder={this.searchPlaceholder}\n size=\"s\"\n show-delete-icon=\"true\"\n aria-label={this.ariaSearchLabel}\n onKeyDown={(e) => { e.stopPropagation() }}\n onIfxInput={(event) => this.handleSearch(event.target)}\n onFocus={() => this.handleSearchFocus(true)}\n onBlur={() => this.handleSearchFocus(false)}\n ></ifx-search-field>\n </div>\n )}\n\n <div class=\"ifx-multiselect-dropdown-controls\">\n {this.showSelectAll && this.renderSelectAll()}\n {this.showExpandCollapse && !isFlatMultiselect && (\n <div class=\"expand-collapse-controls\">\n <span\n class=\"control-item\"\n role=\"button\"\n tabIndex={0}\n aria-label={this.ariaExpandAllLabel}\n onClick={(e) => { e.stopPropagation(); this.expandAll(); }}\n onKeyDown={(e) => {\n if (e.key === 'Enter' || e.key === ' ') {\n e.preventDefault();\n e.stopPropagation();\n this.expandAll();\n }\n }}\n >\n {this.expandLabel}\n </span>\n <span\n class=\"control-item\"\n role=\"button\"\n tabIndex={0}\n aria-label={this.ariaCollapseAllLabel}\n onClick={(e) => { e.stopPropagation(); this.collapseAll(); }}\n onKeyDown={(e) => {\n if (e.key === 'Enter' || e.key === ' ') {\n e.preventDefault();\n e.stopPropagation();\n this.collapseAll();\n }\n }}\n >\n {this.collapseLabel}\n </span>\n </div>\n )}\n </div>\n </div>\n )}\n\n <div class=\"ifx-multiselect-options\" role=\"listbox\" aria-multiselectable=\"true\">\n <slot />\n {this.searchTerm && this.showNoResultsMessage && this.renderNoResultsMessage()}\n </div>\n </div>\n )}\n <div class='ifx-multiselect-icon-container'>\n\n {/* Clear Button - will show only if there's a selection */}\n {this.persistentSelectedOptions.length > 0 && (\n <div class={`ifx-clear-button ${!this.showClearButton ? 'hide' : ''}`} onClick={this.disabled ? undefined : () => this.clearSelection()}>\n <ifx-icon icon=\"cRemove16\"></ifx-icon>\n </div>\n )}\n <div class=\"icon-wrapper-up\" onClick={this.disabled ? undefined : () => this.toggleDropdown()}>\n <ifx-icon\n key='icon-up'\n icon='chevron-up-16'></ifx-icon>\n </div>\n <div class=\"icon-wrapper-down\" onClick={this.disabled ? undefined : () => this.toggleDropdown()}>\n <ifx-icon\n key='icon-down'\n icon='chevron-down-16'></ifx-icon>\n </div>\n </div>\n\n </div>\n {\n this.internalError ?\n <div class=\"ifx-error-message-wrapper\">\n <span>{this.internalErrorMessage}</span>\n </div> : null\n }\n </div>\n );\n }\n}\n","@use \"~@infineon/design-system-tokens/dist/tokens\";\n\n:host {\n display: block;\n width: 100%;\n}\n\n.option {\n display: flex;\n flex-direction: column;\n position: relative;\n cursor: pointer;\n list-style: none;\n\n &.option--expanded {\n position: relative;\n }\n\n &.option--has-children {\n position: relative;\n\n .option-item > .chevron-wrapper {\n display: flex;\n }\n }\n\n &--disabled {\n cursor: not-allowed;\n pointer-events: none;\n color: tokens.$ifxColorEngineering300;\n }\n\n &--selected {\n // Additional styles for selected state if needed\n // .option-item {\n // background: red;\n // }\n }\n\n &.search-hidden {\n display: none !important;\n }\n\n &.search-match {\n .option-item {\n .option-label {\n .search-highlight {\n font-weight: bold;\n // color: tokens.$ifxColorOcean400;\n }\n }\n }\n }\n}\n\n.option-item {\n display: flex;\n flex-direction: row;\n align-items: center;\n white-space: nowrap;\n min-height: tokens.$ifxSize250;\n padding: tokens.$ifxSize50 tokens.$ifxSpace200;\n background-color: tokens.$ifxColorBaseWhite;\n transition: background-color 0.2s ease-in-out;\n\n &:hover {\n background-color: tokens.$ifxColorEngineering100;\n }\n\n .option--disabled & {\n &:hover {\n background-color: transparent;\n }\n }\n}\n\n.option-children {\n display: block;\n}\n\n.chevron-wrapper {\n display: none;\n align-items: center;\n justify-content: center;\n margin-right: tokens.$ifxSpace100;\n width: tokens.$ifxSize250;\n height: tokens.$ifxSize250;\n flex-shrink: 0;\n\n &:focus {\n outline: none;\n }\n\n &:focus-visible {\n outline: 2px solid tokens.$ifxColorOcean500;\n outline-offset: 2px;\n border-radius: tokens.$ifxBorderRadius12;\n }\n\n .option--has-children & {\n display: flex;\n }\n\n .chevron {\n transition: transform 0.2s ease-in-out;\n color: tokens.$ifxColorEngineering600;\n\n &.chevron--expanded {\n transform: rotate(90deg);\n }\n\n &.chevron--collapsed {\n transform: rotate(0deg);\n }\n }\n}\n\n.checkbox-wrapper {\n display: flex;\n align-items: center;\n margin-right: tokens.$ifxSpace100;\n flex-shrink: 0;\n}\n\n.option-label {\n flex-grow: 1;\n display: flex;\n align-items: center;\n cursor: pointer;\n padding: tokens.$ifxSpace25 0;\n font-size: tokens.$ifxFontSizeS;\n\n &:focus {\n outline: none;\n }\n\n &:focus-visible {\n outline: 2px solid tokens.$ifxColorOcean500;\n outline-offset: 2px;\n border-radius: tokens.$ifxBorderRadius12;\n }\n\n .option--disabled & {\n cursor: not-allowed;\n color: tokens.$ifxColorEngineering300;\n }\n}\n","import { Component, Prop, Element, h, Host, State, Listen } from '@stencil/core';\n\n@Component({\n tag: 'ifx-multiselect-option',\n styleUrl: 'multiselect-option.scss',\n shadow: true,\n})\nexport class MultiselectOption {\n @Element() el: HTMLElement;\n\n @Prop() value: string;\n @Prop({ reflect: true, mutable: true }) selected: boolean = false;\n @Prop({ reflect: true, mutable: true }) disabled: boolean = false;\n @Prop({ reflect: true, mutable: true }) indeterminate: boolean = false;\n\n @State() private isExpanded: boolean = false;\n @State() private hasChildren: boolean = false;\n @State() private depth: number = 0;\n @State() private searchTerm: string = '';\n @State() private isSearchActive: boolean = false;\n @State() private isSearchDisabled: boolean = false;\n\n componentWillLoad() {\n this.hasChildren = this.el.children.length > 0;\n this.depth = this.calculateDepth();\n\n this.el.setAttribute('data-level', this.depth.toString());\n\n if (this.hasChildren) {\n const hasSelectedChildren = this.hasAnySelectedChildren();\n if (hasSelectedChildren) {\n this.isExpanded = true;\n }\n }\n }\n\n componentDidLoad() {\n (this.el as any)['__stencil_instance'] = this;\n this.notifyMultiselect();\n this.el.addEventListener('ifx-search-filter', this.handleSearchFilter);\n }\n\n disconnectedCallback() {\n this.el.removeEventListener('ifx-search-filter', this.handleSearchFilter);\n }\n\n private handleSearchFilter = (event: CustomEvent) => {\n const { searchTerm, isActive } = event.detail;\n this.searchTerm = searchTerm.toLowerCase();\n this.isSearchActive = isActive;\n\n requestAnimationFrame(() => {\n this.updateSearchClasses();\n });\n }\n\n private updateSearchClasses() {\n const optionDiv = this.el.shadowRoot?.querySelector('.option');\n if (!optionDiv) return;\n\n if (!this.isSearchActive) {\n optionDiv.classList.remove('search-hidden', 'search-parent', 'search-match');\n this.removeHighlighting();\n this.isSearchDisabled = false;\n return;\n }\n\n const textContent = this.getTextContent().toLowerCase();\n const matchesSearch = textContent.includes(this.searchTerm);\n const hasMatchingParent = this.hasMatchingParent();\n\n requestAnimationFrame(() => {\n const hasMatchingChildren = this.hasMatchingChildren();\n\n optionDiv.classList.remove('search-hidden', 'search-parent', 'search-match');\n this.isSearchDisabled = false;\n\n if (matchesSearch && !this.hasChildren) {\n optionDiv.classList.add('search-match');\n this.highlightSearchTerm();\n } else if (matchesSearch && this.hasChildren) {\n optionDiv.classList.add('search-match');\n this.highlightSearchTerm();\n this.isExpanded = true;\n } else if (!matchesSearch && this.hasChildren && hasMatchingChildren) {\n optionDiv.classList.add('search-parent');\n this.removeHighlighting();\n this.isExpanded = true;\n this.isSearchDisabled = true;\n } else if (hasMatchingParent) {\n optionDiv.classList.add('search-match');\n this.removeHighlighting();\n } else {\n optionDiv.classList.add('search-hidden');\n this.removeHighlighting();\n }\n });\n }\n\n private highlightSearchTerm() {\n if (!this.searchTerm) return;\n\n const labelElement = this.el.shadowRoot?.querySelector('.option-label');\n if (!labelElement) return;\n\n const slotElement = labelElement.querySelector('slot');\n if (!slotElement) return;\n\n this.removeHighlighting();\n\n const originalText = this.getTextContent();\n const searchTermLower = this.searchTerm.toLowerCase();\n const originalTextLower = originalText.toLowerCase();\n\n if (!originalTextLower.includes(searchTermLower)) return;\n\n const searchIndex = originalTextLower.indexOf(searchTermLower);\n\n if (searchIndex === -1) return;\n\n const beforeMatch = originalText.substring(0, searchIndex);\n const matchText = originalText.substring(searchIndex, searchIndex + searchTermLower.length);\n const afterMatch = originalText.substring(searchIndex + searchTermLower.length);\n\n const highlightedContent = document.createElement('span');\n highlightedContent.className = 'highlighted-text';\n\n if (beforeMatch) {\n highlightedContent.appendChild(document.createTextNode(beforeMatch));\n }\n\n const boldElement = document.createElement('strong');\n boldElement.className = 'search-highlight';\n boldElement.textContent = matchText;\n highlightedContent.appendChild(boldElement);\n\n if (afterMatch) {\n highlightedContent.appendChild(document.createTextNode(afterMatch));\n }\n\n labelElement.setAttribute('data-original-content', 'true');\n slotElement.style.display = 'none';\n labelElement.appendChild(highlightedContent);\n }\n\n private removeHighlighting() {\n const labelElement = this.el.shadowRoot?.querySelector('.option-label');\n if (!labelElement) return;\n\n const slotElement = labelElement.querySelector('slot');\n const highlightedElement = labelElement.querySelector('.highlighted-text');\n\n if (highlightedElement) {\n labelElement.removeChild(highlightedElement);\n }\n\n if (slotElement) {\n slotElement.style.display = '';\n }\n\n labelElement.removeAttribute('data-original-content');\n }\n\n private getTextContent(): string {\n let text = '';\n Array.from(this.el.childNodes).forEach(node => {\n if (node.nodeType === Node.TEXT_NODE) {\n text += node.textContent?.trim() || '';\n }\n });\n return text || this.value || '';\n }\n\n private hasMatchingChildren(): boolean {\n if (!this.hasChildren) return false;\n\n const childOptions = Array.from(this.el.children)\n .filter(child => child.tagName === 'IFX-MULTISELECT-OPTION') as HTMLElement[];\n\n return childOptions.some(child => {\n const childInstance = (child as any)['__stencil_instance'];\n if (!childInstance) return false;\n\n const childText = childInstance.getTextContent().toLowerCase();\n const childMatches = childText.includes(this.searchTerm);\n const grandChildrenMatch = childInstance.hasMatchingChildren();\n\n return childMatches || grandChildrenMatch;\n });\n }\n\n private hasMatchingParent(): boolean {\n let parent = this.el.parentElement;\n while (parent && parent.tagName === 'IFX-MULTISELECT-OPTION') {\n const parentInstance = (parent as any)['__stencil_instance'];\n if (parentInstance) {\n const parentText = parentInstance.getTextContent().toLowerCase();\n if (parentText.includes(this.searchTerm)) {\n return true;\n }\n }\n parent = parent.parentElement;\n }\n return false;\n }\n\n private calculateDepth(): number {\n let depth = 0;\n let parent = this.el.parentElement;\n while (parent && parent.tagName !== 'IFX-MULTISELECT') {\n if (parent.tagName === 'IFX-MULTISELECT-OPTION') {\n depth++;\n }\n parent = parent.parentElement;\n }\n return depth;\n }\n\n @Listen('click')\n handleClick(event: Event) {\n if (this.disabled || (this.isSearchActive && this.isSearchDisabled)) return;\n\n event.stopPropagation();\n\n if (event.type === 'click' && (event.target as HTMLElement).closest('.chevron-wrapper')) {\n this.toggleExpansion();\n return;\n }\n\n let newSelectedState: boolean;\n\n if (this.indeterminate) {\n newSelectedState = true;\n } else {\n newSelectedState = !this.selected;\n }\n\n this.selected = newSelectedState;\n this.indeterminate = false;\n\n if (this.hasChildren) {\n this.isExpanded = newSelectedState;\n\n requestAnimationFrame(() => {\n this.selectAllChildren(newSelectedState);\n this.expandAllChildren(newSelectedState);\n });\n }\n\n this.updateParentStates();\n this.notifyMultiselect();\n }\n\n @Listen('keydown')\n handleKeyDown(event: KeyboardEvent) {\n if (this.disabled || (this.isSearchActive && this.isSearchDisabled)) return;\n\n const target = event.target as HTMLElement;\n\n if (target.closest('.chevron-wrapper') || target.closest('.checkbox-wrapper')) {\n return;\n }\n\n if (event.key !== 'ArrowUp' && event.key !== 'ArrowDown') {\n event.stopPropagation();\n }\n\n if (event.key === 'ArrowRight' && this.hasChildren) {\n this.isExpanded = true;\n }\n\n if (event.key === 'ArrowLeft' && this.hasChildren) {\n this.isExpanded = false;\n }\n }\n\n private notifyMultiselect() {\n const updateEvent = new CustomEvent('ifx-option-changed', {\n bubbles: true,\n detail: {\n value: this.value,\n selected: this.selected,\n indeterminate: this.indeterminate\n }\n });\n this.el.dispatchEvent(updateEvent);\n }\n\n private selectAllChildren(selected: boolean) {\n const directChildren = Array.from(this.el.children)\n .filter(child => child.tagName === 'IFX-MULTISELECT-OPTION') as any[];\n\n directChildren.forEach((child: any) => {\n const childInstance = child['__stencil_instance'];\n if (childInstance) {\n childInstance.selected = selected;\n childInstance.indeterminate = false;\n\n if (childInstance.hasChildren) {\n childInstance.isExpanded = selected;\n childInstance.selectAllChildren(selected);\n }\n childInstance.notifyMultiselect?.();\n }\n });\n }\n\n private expandAllChildren(expanded: boolean) {\n const directChildren = Array.from(this.el.children)\n .filter(child => child.tagName === 'IFX-MULTISELECT-OPTION') as any[];\n\n directChildren.forEach((child: any) => {\n const childInstance = child['__stencil_instance'];\n if (childInstance && childInstance.hasChildren) {\n childInstance.isExpanded = expanded;\n childInstance.expandAllChildren(expanded);\n }\n });\n }\n\n private updateParentStates() {\n let parent = this.el.parentElement;\n while (parent && parent.tagName === 'IFX-MULTISELECT-OPTION') {\n const parentInstance = (parent as any)['__stencil_instance'];\n if (!parentInstance) {\n parent = parent.parentElement;\n continue;\n }\n\n const siblings = Array.from(parent.children)\n .filter(child => child.tagName === 'IFX-MULTISELECT-OPTION')\n .map(child => (child as any)['__stencil_instance'])\n .filter(instance => instance !== null);\n\n const selectedCount = siblings.filter(sibling => sibling.selected).length;\n const indeterminateCount = siblings.filter(sibling => sibling.indeterminate).length;\n const totalCount = siblings.length;\n\n if (selectedCount === totalCount && indeterminateCount === 0) {\n parentInstance.selected = true;\n parentInstance.indeterminate = false;\n } else if (selectedCount === 0 && indeterminateCount === 0) {\n parentInstance.selected = false;\n parentInstance.indeterminate = false;\n } else {\n parentInstance.selected = false;\n parentInstance.indeterminate = true;\n }\n\n parentInstance.notifyMultiselect?.();\n parent = parent.parentElement;\n }\n }\n\n private toggleExpansion() {\n this.isExpanded = !this.isExpanded;\n }\n\n private handleCheckboxClick = (event: Event) => {\n if (this.disabled || (this.isSearchActive && this.isSearchDisabled)) return;\n\n event.stopPropagation();\n\n let newSelectedState: boolean;\n\n if (this.indeterminate) {\n newSelectedState = true;\n } else {\n newSelectedState = !this.selected;\n }\n\n this.selected = newSelectedState;\n this.indeterminate = false;\n\n if (this.hasChildren) {\n this.isExpanded = newSelectedState;\n\n requestAnimationFrame(() => {\n this.selectAllChildren(newSelectedState);\n this.expandAllChildren(newSelectedState);\n });\n }\n\n this.updateParentStates();\n this.notifyMultiselect();\n }\n\n private handleHeaderClick = (event: Event) => {\n event.stopPropagation();\n if (!this.disabled && !(this.isSearchActive && this.isSearchDisabled)) {\n this.handleClick(event);\n }\n }\n\n private hasAnySelectedChildren(): boolean {\n const childOptions = Array.from(this.el.children)\n .filter(child => child.tagName === 'IFX-MULTISELECT-OPTION') as HTMLElement[];\n\n return childOptions.some(child => {\n const hasSelected = child.hasAttribute('selected');\n const hasSelectedDescendants = this.checkForSelectedDescendants(child);\n\n return hasSelected || hasSelectedDescendants;\n });\n }\n\n private checkForSelectedDescendants(element: HTMLElement): boolean {\n const nestedOptions = Array.from(element.children)\n .filter(child => child.tagName === 'IFX-MULTISELECT-OPTION') as HTMLElement[];\n\n return nestedOptions.some(nestedChild => {\n const isSelected = nestedChild.hasAttribute('selected');\n const hasSelectedNested = this.checkForSelectedDescendants(nestedChild);\n\n return isSelected || hasSelectedNested;\n });\n }\n\n render() {\n let isFlatMultiselect = false;\n const parentMultiselect = this.el.closest('ifx-multiselect');\n if (parentMultiselect) {\n const allOptions = Array.from(parentMultiselect.querySelectorAll('ifx-multiselect-option'));\n isFlatMultiselect = allOptions.every(option => option.children.length === 0);\n }\n\n const basePadding = this.depth * 28 + 16;\n const additionalPadding = this.hasChildren ? 0 : 28;\n let totalPadding = basePadding + additionalPadding;\n\n const optionItemStyle = isFlatMultiselect ? undefined : { paddingLeft: `${totalPadding}px` };\n\n return (\n <Host>\n <div\n class={{\n 'option': true,\n 'option--has-children': this.hasChildren,\n 'option--expanded': this.isExpanded,\n 'option--disabled': this.disabled,\n 'option--selected': this.selected,\n }}\n role=\"option\"\n aria-expanded={this.hasChildren ? (this.isExpanded ? 'true' : 'false') : undefined}\n aria-selected={this.selected ? 'true' : 'false'}\n aria-disabled={this.disabled ? 'true' : 'false'}\n data-level={this.depth}\n data-value={this.value}\n >\n <div\n class=\"option-item\"\n style={optionItemStyle}\n >\n <div\n class=\"chevron-wrapper\"\n tabIndex={this.hasChildren ? 0 : -1}\n role={this.hasChildren ? \"button\" : undefined}\n aria-label={this.hasChildren ? (this.isExpanded ? \"Collapse\" : \"Expand\") : undefined}\n onClick={(e) => { e.stopPropagation(); this.toggleExpansion(); }}\n onKeyDown={(e) => {\n if (e.key === 'Enter' || e.key === ' ') {\n e.preventDefault();\n e.stopPropagation();\n this.toggleExpansion();\n }\n }}\n >\n {this.hasChildren && (\n <ifx-icon\n class={`chevron ${this.isExpanded ? 'chevron--expanded' : 'chevron--collapsed'}`}\n icon=\"chevron-right-16\"\n />\n )}\n </div>\n\n <div class=\"checkbox-wrapper\" onClick={(e) => e.stopPropagation()}>\n <ifx-checkbox\n size='s'\n checked={(this.isSearchActive && this.isSearchDisabled) ? false : (this.indeterminate ? false : this.selected)}\n indeterminate={(this.isSearchActive && this.isSearchDisabled) ? false : this.indeterminate}\n onClick={this.handleCheckboxClick}\n disabled={this.disabled || (this.isSearchActive && this.isSearchDisabled)}\n onKeyDown={(e) => {\n if (e.key === 'Enter' || e.key === ' ') {\n e.preventDefault();\n e.stopPropagation();\n this.handleCheckboxClick(e);\n }\n }}\n />\n </div>\n\n <div\n class=\"option-label\"\n onClick={this.handleHeaderClick}\n tabIndex={-1}\n >\n <slot/>\n </div>\n </div>\n\n {this.isExpanded && <div class=\"option-children\"><slot name=\"children\"/></div>}\n </div>\n </Host>\n );\n }\n}\n"],"mappings":"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","ignoreList":[]}
@@ -0,0 +1,2 @@
1
+ import{r as e,h as a,g as r}from"./p-b7a462e5.js";const t=':root{--ifx-font-family:"Source Sans 3", "Arial, sans-serif"}:host{display:flex}.breadcrumb{list-style:none;padding:0px;margin:0px;display:flex;flex-direction:row;font-family:var(--ifx-font-family);font-size:0.875rem;align-items:flex-start}';const o=t;const n=class{constructor(a){e(this,a)}componentDidLoad(){const e=this.el.shadowRoot.firstChild;this.validateBreadcrumbItemStructure(e)}validateBreadcrumbItemStructure(e){if(!e){console.error("element not found");return}const a=e.querySelector("slot");if(a){const e=a.assignedNodes();for(let a=0;a<e.length;a++){const r=e[a];if(r.nodeName==="IFX-BREADCRUMB-ITEM"){const e=r;const a=e.querySelector("ifx-breadcrumb-item-label");const t=e.querySelector("ifx-dropdown-menu");if(a.hasAttribute("href")&&t){throw new Error("ifx-breadcrumb-item cannot have both a href and a dropdown menu.")}}}}}render(){return a("nav",{key:"3d01af951d4a6a396545eb9cf26454cbe2b31ed0","aria-label":"Page navigation breadcrumb"},a("ol",{key:"95ae08a0de7099ecd7c3aa963c1bf9952918ecda",class:"breadcrumb"},a("slot",{key:"e9fed255fa08b28c8974498d329df69b1e92edf5"})))}get el(){return r(this)}};n.style=o;export{n as ifx_breadcrumb};
2
+ //# sourceMappingURL=p-292cff35.entry.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"names":["breadcrumbCss","IfxBreadcrumbStyle0","Breadcrumb","componentDidLoad","element","this","el","shadowRoot","firstChild","validateBreadcrumbItemStructure","console","error","slot","querySelector","assignedNodes","i","length","node","nodeName","breadcrumbItem","breadcrumbItemLabel","breadcrumbDropdown","hasAttribute","Error","render","h","key","class"],"sources":["src/components/breadcrumb/breadcrumb.scss?tag=ifx-breadcrumb&encapsulation=shadow","src/components/breadcrumb/breadcrumb.tsx"],"sourcesContent":["@use \"~@infineon/design-system-tokens/dist/tokens\";\n@use \"../../global/font.scss\";\n\n:host {\n display: flex;\n}\n\n.breadcrumb {\n list-style: none;\n padding: 0px;\n margin: 0px;\n display: flex;\n flex-direction: row;\n font-family: var(--ifx-font-family); // tokens.$ifxFontFamilyBody;\n\n font-size: tokens.$ifxFontSizeS;\n align-items: flex-start;\n //gap: tokens.$ifxSpace200; //this is where the gap comes from\n\n}\n\n// .separator {\n// color: tokens.$ifxColorEngineering300;\n// margin: 0 16px;\n// }","import { Component, h, Element } from '@stencil/core';\n\n@Component({\n tag: 'ifx-breadcrumb',\n styleUrl: 'breadcrumb.scss',\n shadow: true\n})\nexport class Breadcrumb {\n @Element() el;\n\n componentDidLoad() {\n const element = this.el.shadowRoot.firstChild;\n this.validateBreadcrumbItemStructure(element);\n }\n\n private validateBreadcrumbItemStructure(element: HTMLElement) {\n if (!element) {\n console.error('element not found');\n return;\n }\n \n const slot = element.querySelector('slot');\n if(slot) { \n const assignedNodes = slot.assignedNodes();\n \n for (let i = 0; i < assignedNodes.length; i++) {\n const node = assignedNodes[i];\n if (node.nodeName === 'IFX-BREADCRUMB-ITEM') {\n const breadcrumbItem = node as HTMLIfxBreadcrumbItemElement;\n const breadcrumbItemLabel = breadcrumbItem.querySelector('ifx-breadcrumb-item-label');\n const breadcrumbDropdown = breadcrumbItem.querySelector('ifx-dropdown-menu');\n if (breadcrumbItemLabel.hasAttribute('href') && breadcrumbDropdown) {\n throw new Error('ifx-breadcrumb-item cannot have both a href and a dropdown menu.');\n }\n }\n }\n }\n }\n\n render() {\n return (\n <nav aria-label=\"Page navigation breadcrumb\">\n <ol class=\"breadcrumb\">\n <slot />\n </ol>\n </nav>\n );\n }\n}\n"],"mappings":"kDAAA,MAAMA,EAAgB,mPACtB,MAAAC,EAAeD,E,MCMFE,EAAU,M,yBAGrB,gBAAAC,GACE,MAAMC,EAAUC,KAAKC,GAAGC,WAAWC,WACnCH,KAAKI,gCAAgCL,E,CAG/B,+BAAAK,CAAgCL,GACtC,IAAKA,EAAS,CACZM,QAAQC,MAAM,qBACd,M,CAGF,MAAMC,EAAOR,EAAQS,cAAc,QACnC,GAAGD,EAAM,CACP,MAAME,EAAgBF,EAAKE,gBAE3B,IAAK,IAAIC,EAAI,EAAGA,EAAID,EAAcE,OAAQD,IAAK,CAC7C,MAAME,EAAOH,EAAcC,GAC3B,GAAIE,EAAKC,WAAa,sBAAuB,CAC3C,MAAMC,EAAiBF,EACvB,MAAMG,EAAsBD,EAAeN,cAAc,6BACzD,MAAMQ,EAAqBF,EAAeN,cAAc,qBACxD,GAAIO,EAAoBE,aAAa,SAAWD,EAAoB,CAClE,MAAM,IAAIE,MAAM,mE,KAO1B,MAAAC,GACE,OACEC,EAAA,OAAAC,IAAA,wDAAgB,8BACdD,EAAA,MAAAC,IAAA,2CAAIC,MAAM,cACRF,EAAA,QAAAC,IAAA,8C","ignoreList":[]}
@@ -0,0 +1,2 @@
1
+ import{r as e,c as t,h as o,a as n,g as i}from"./p-b7a462e5.js";function a(e,t,o,n=20,i=0){const s=[];if(i>=n){return s}const r=e=>{const s=e.assignedNodes().filter((e=>e.nodeType===1));if(s.length>0){const e=s[0].parentElement;return a(e,t,o,n,i+1)}return[]};const d=Array.from(e.children||[]);for(const e of d){if(t(e)){continue}if(o(e)){s.push(e)}if(e.shadowRoot!=null){s.push(...a(e.shadowRoot,t,o,n,i+1))}else if(e.tagName==="SLOT"){s.push(...r(e))}else{s.push(...a(e,t,o,n,i+1))}}return s}function s(e){return e.hasAttribute("hidden")||e.hasAttribute("aria-hidden")&&e.getAttribute("aria-hidden")!=="false"||e.style.display===`none`||e.style.opacity===`0`||e.style.visibility===`hidden`||e.style.visibility===`collapse`}function r(e){return e.hasAttribute("disabled")||e.hasAttribute("aria-disabled")&&e.getAttribute("aria-disabled")!=="false"}function d(e){if(e.getAttribute("tabindex")==="-1"||s(e)||r(e)){return false}return e.hasAttribute("tabindex")||(e instanceof HTMLAnchorElement||e instanceof HTMLAreaElement)&&e.hasAttribute("href")||e instanceof HTMLButtonElement||e instanceof HTMLInputElement||e instanceof HTMLTextAreaElement||e instanceof HTMLSelectElement||e instanceof HTMLIFrameElement}function c(e,t,o){const n=e.animate(t,Object.assign(Object.assign({},o),{fill:"both"}));n.addEventListener("finish",(()=>{n.commitStyles();n.cancel()}));return n}const l={easing:"cubic-bezier(0.390, 0.575, 0.565, 1.000)"};const f={fadeIn:[Object.assign(Object.assign({offset:0},l),{opacity:0}),Object.assign(Object.assign({offset:1},l),{opacity:1})],fadeOut:[Object.assign(Object.assign({offset:0},l),{opacity:1}),Object.assign(Object.assign({offset:1},l),{opacity:0})]};const h=':root{--ifx-font-family:"Source Sans 3", "Arial, sans-serif"}:host{display:block}.modal-container{display:none;justify-content:center;align-items:center;position:fixed;top:0;left:0;width:100%;height:100%;z-index:1060;overflow-y:auto;font-family:var(--ifx-font-family)}.modal-container.open{display:flex}.modal-overlay{position:absolute;top:0;left:0;width:100%;height:100%;background-color:#1D1D1D;opacity:0.5;z-index:0}.modal-content-container{position:absolute;display:flex;justify-content:center;width:90%;min-height:218px;background-color:#fff;border-radius:0;box-shadow:0 2px 10px rgba(0, 0, 0, 0.1);box-sizing:border-box;align-items:stretch}.modal-content-container.no-overflow{overflow:hidden}.modal-content-container.no-overflow .modal-body{overflow-y:auto}@media screen and (min-width: 768px){.modal-content-container{width:540px;min-height:132px}.modal-content-container.m,.modal-content-container.l,.modal-content-container.s{width:90%}}@media screen and (min-width: 1024px){.modal-content-container.s{width:47vw}.modal-content-container.m{width:63vw}.modal-content-container.l{width:80%}}.modal-content{display:flex;flex-direction:column;width:100%;max-height:90vh}.modal-icon-container{display:flex;align-items:center;justify-content:center;width:32px;background-color:#0A8276;align-self:stretch}.modal-icon-container.danger{background-color:#CD002F}.modal-icon-container ifx-icon{color:#FFFFFF}.modal-header{display:flex;justify-content:space-between;align-items:center;padding:24px;min-height:76px;max-height:105px;box-sizing:border-box;border-radius:1px 1px 0px 0px;border-bottom:1px solid #EEEDED}.modal-caption{max-height:56px;display:-webkit-box;overflow:hidden;white-space:pre-wrap;word-wrap:break-word;-webkit-line-clamp:2;-webkit-box-orient:vertical}.modal-header h2{margin:0;font-weight:600;font-size:1.25rem;line-height:28px}.modal-header button{background:none;border:none;font-size:1.5em;padding:0;cursor:pointer}.modal-close-button{align-self:flex-start;margin-right:-8px}.modal-body{padding:16px 24px;min-height:56px;box-sizing:border-box;flex:1}.modal-footer.buttons-present ::slotted(*){display:flex;justify-content:flex-end;gap:16px;padding:16px 24px 32px 16px}.modal-border{display:flex;align-items:center;justify-content:center;width:100%;font-size:1.5em;flex-grow:1}.modal-border.primary{background-color:#0A8276}.modal-border.secondary{background-color:#575352}.modal-border.danger{background-color:#CD002F}.modal-border.success{background-color:#4CA460}.modal-border.warning{background-color:#E16B25}.modal-border.orange{background-color:#E16B25}.modal-border.ocean{background-color:#0A8276}.modal-border.grey{background-color:#575352}.modal-border.grey-200{background-color:#EEEDED}.modal-border.red{background-color:#CD002F}.modal-border.green{background-color:#4CA460}.modal-border.berry{background-color:#9C216E}';const b=h;const u=class{constructor(o){e(this,o);this.ifxOpen=t(this,"ifxOpen",7);this.ifxClose=t(this,"ifxClose",7);this.opened=false;this.showModal=this.opened||false;this.caption="Modal Title";this.closeOnOverlayClick=true;this.variant="default";this.size="s";this.alertIcon="";this.okButtonLabel="OK";this.cancelButtonLabel="Cancel";this.slotButtonsPresent=false;this.showCloseButton=true;this.focusableElements=[];this.handleTopFocus=()=>{this.attemptFocus(this.getLastFocusableElement())};this.handleBottomFocus=()=>{this.attemptFocus(this.getFirstFocusableElement())};this.handleKeypress=e=>{if(!this.showModal){return}if(e.key==="Escape"){this.doBeforeClose("ESCAPE_KEY")}}}componentDidLoad(){this.focusableElements=a(this.hostElement.shadowRoot,(e=>s(e)||e.matches("[data-focus-trap-edge]")),d)}componentWillRender(){if(this.showModal){this.handleComponentOverflow()}}handleComponentOverflow(){const e=this.hostElement.shadowRoot.querySelector(".modal-content-container");if(this.showModal&&this.isModalContentContainerHeightReachedViewport()){e.classList.add("no-overflow")}else if(e===null||e===void 0?void 0:e.classList.contains("no-overflow")){e===null||e===void 0?void 0:e.classList.remove("no-overflow")}}getFirstFocusableElement(){return this.focusableElements[0]}getLastFocusableElement(){return this.focusableElements[this.focusableElements.length-1]}attemptFocus(e){if(e==null){setTimeout((()=>{this.closeButton.focus()}));return}setTimeout((()=>{e.focus()}),0)}open(){this.showModal=true;try{const e=c(this.modalContainer,f.fadeIn,{duration:200});e.addEventListener("finish",(()=>{setTimeout((()=>{var e,t;(e=this.getLastFocusableElement())===null||e===void 0?void 0:e.focus();(t=this.getLastFocusableElement())===null||t===void 0?void 0:t.blur()}),0);this.ifxOpen.emit()}));this.hostElement.addEventListener("keydown",this.handleKeypress)}catch(e){this.ifxOpen.emit()}}close(){try{const e=c(this.modalContainer,f.fadeOut,{duration:200});e.addEventListener("finish",(()=>{this.showModal=false;this.ifxClose.emit()}));this.hostElement.removeEventListener("keydown",this.handleKeypress)}catch(e){this.showModal=false;this.ifxClose.emit()}}doBeforeClose(e){const t=[];t.push(e);const o=t.some((e=>e.defaultPrevented));if(!o){this.opened=false}}openedChanged(e){if(e===true){this.open()}else{this.close()}}handleOverlayClick(){if(this.closeOnOverlayClick){this.doBeforeClose("BACKDROP")}}handleContentUpdate(e){const t=e.target;const o=t.assignedNodes();if(o.length>0){o.forEach((e=>{if(e.observer){e.observer.disconnect();delete e.observer}const t=new MutationObserver(((e,t)=>{for(let t of e){if(t.type==="childList"){if(this.showModal){this.handleComponentOverflow()}}}}));t.observe(e,{attributes:true,childList:true,subtree:true});e.observer=t}))}}handleButtonsSlotChange(e){var t;if(((t=e.currentTarget.assignedElements()[0])===null||t===void 0?void 0:t.childElementCount)>0){this.slotButtonsPresent=true}else{this.slotButtonsPresent=false}}isModalContentContainerHeightReachedViewport(){return new Promise((e=>{setTimeout((()=>{const t=this.hostElement.shadowRoot.querySelector(".modal-content");const o=t.offsetHeight;const n=window.innerHeight;e(o>=n*.9)}),100)}))}render(){const e=this.variant!=="default";return o(n,{key:"fb6bc415247be8eec46bebe51f26c7bc71a5b010"},o("div",{key:"cfabe9bf352ca821f99714603a86b2cc25874af1",ref:e=>this.modalContainer=e,class:`modal-container ${this.showModal?"open":""}`},o("div",{key:"6d22eecd23e6a6017e30afa0cb0372c6518ff9ec",class:"modal-overlay",onClick:()=>this.handleOverlayClick()}),o("div",{key:"8ee13636de9b591bf7b15aa033ef158fcd70ab57","data-focus-trap-edge":true,onFocus:this.handleTopFocus,tabindex:"0"}),o("div",{key:"62a1b4e9c98f6e51936bc9af14464038b0c16639",class:`modal-content-container ${this.size}`,role:"dialog","aria-modal":"true","aria-label":this.caption},e?o("div",{class:`modal-icon-container ${this.variant==="alert-brand"?"":"danger"}`},this.alertIcon?o("ifx-icon",{icon:this.alertIcon}):null):null,o("div",{key:"699217ea2e1d414ad68939334cd078aa711fe472",class:"modal-content"},o("div",{key:"ab02f75a7b5c2befb1509731b289c4e76f7e3f3e",class:"modal-header"},o("h2",{key:"9b1adec6e486f5f03bd369709669c22bbddf3922",class:"modal-caption"},this.caption),this.showCloseButton&&o("ifx-icon-button",{key:"8edae1ae2e3ddf2517d52682fcc1ae3247b5e1e5",class:"modal-close-button",ref:e=>this.closeButton=e,icon:"cross-16",variant:"tertiary",onClick:()=>this.doBeforeClose("CLOSE_BUTTON")})),o("div",{key:"62f9c425009b5498b5301a7fc6c5490d7401086c",class:"modal-body"},o("slot",{key:"fb1494da685e6b0986ef660a9e94dfb8b43a7a48",name:"content",onSlotchange:e=>this.handleContentUpdate(e)})),o("div",{key:"3b427fe2debc1e2bea474982dfff079afdd6dfcc",class:`modal-footer ${this.slotButtonsPresent?"buttons-present":""}`},o("slot",{key:"b0874a1766cfde0f0ccb5f1ebbec6e753dfeb2f0",name:"buttons",onSlotchange:e=>this.handleButtonsSlotChange(e)})))),o("div",{key:"8b376a945b278faf81f9f3d1117cd01e3d11c8b5","data-focus-trap-edge":true,onFocus:this.handleBottomFocus,tabindex:"0"})))}get hostElement(){return i(this)}static get watchers(){return{opened:["openedChanged"]}}};u.style=b;export{u as ifx_modal};
2
+ //# sourceMappingURL=p-2d89c5e0.entry.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"names":["queryShadowRoot","root","skipNode","isMatch","maxDepth","depth","matches","traverseSlot","$slot","assignedNodes","filter","node","nodeType","length","$slotParent","parentElement","children","Array","from","$child","push","shadowRoot","tagName","isHidden","$elem","hasAttribute","getAttribute","style","display","opacity","visibility","isDisabled","isFocusable","HTMLAnchorElement","HTMLAreaElement","HTMLButtonElement","HTMLInputElement","HTMLTextAreaElement","HTMLSelectElement","HTMLIFrameElement","animationTo","element","keyframes","options","animated","animate","Object","assign","fill","addEventListener","commitStyles","cancel","keyframeDefaults","easing","KEYFRAMES","fadeIn","offset","fadeOut","modalCss","IfxModalStyle0","IfxModal","constructor","hostRef","this","opened","showModal","caption","closeOnOverlayClick","variant","size","alertIcon","okButtonLabel","cancelButtonLabel","slotButtonsPresent","showCloseButton","focusableElements","handleTopFocus","attemptFocus","getLastFocusableElement","handleBottomFocus","getFirstFocusableElement","handleKeypress","event","key","doBeforeClose","componentDidLoad","hostElement","el","componentWillRender","handleComponentOverflow","modalContentContainer","querySelector","isModalContentContainerHeightReachedViewport","classList","add","contains","remove","setTimeout","closeButton","focus","open","anim","modalContainer","duration","_a","_b","blur","ifxOpen","emit","err","close","ifxClose","removeEventListener","trigger","triggers","prevented","some","defaultPrevented","openedChanged","newValue","handleOverlayClick","handleContentUpdate","e","slotElement","target","nodes","forEach","observer","disconnect","MutationObserver","mutationsList","_","mutation","type","observe","attributes","childList","subtree","handleButtonsSlotChange","currentTarget","assignedElements","childElementCount","Promise","resolve","modalContent","modalContentHeight","offsetHeight","viewportHeight","window","innerHeight","render","isAlertVariant","h","Host","ref","class","onClick","onFocus","tabindex","role","icon","name","onSlotchange"],"sources":["src/global/utils/focus-trap.ts","src/global/utils/animation.ts","src/components/modal/modal.scss?tag=ifx-modal&encapsulation=shadow","src/components/modal/modal.tsx"],"sourcesContent":["/**\n * Copy/pasted from https://github.com/andreasbm/focus-trap\n */\n\n/**\n * Traverses the slots of the open shadowroots and returns all children matching the query.\n * We need to traverse each child-depth one at a time because if an element should be skipped\n * (for example because it is hidden) we need to skip all of it's children. If we use querySelectorAll(\"*\")\n * the information of whether the children is within a hidden parent is lost.\n * @param {ShadowRoot | HTMLElement} root\n * @param skipNode\n * @param isMatch\n * @param {number} maxDepth\n * @param {number} depth\n * @returns {HTMLElement[]}\n */\nexport function queryShadowRoot(\n root: ShadowRoot | HTMLElement,\n skipNode: ($elem: HTMLElement) => boolean,\n isMatch: ($elem: HTMLElement) => boolean,\n maxDepth: number = 20,\n depth: number = 0\n): HTMLElement[] {\n const matches: HTMLElement[] = [];\n\n // If the depth is above the max depth, abort the searching here.\n if (depth >= maxDepth) {\n return matches;\n }\n\n // Traverses a slot element\n const traverseSlot = ($slot: HTMLSlotElement) => {\n // Only check nodes that are of the type Node.ELEMENT_NODE\n // Read more here https://developer.mozilla.org/en-US/docs/Web/API/Node/nodeType\n const assignedNodes = $slot\n .assignedNodes()\n .filter((node) => node.nodeType === 1);\n if (assignedNodes.length > 0) {\n const $slotParent = assignedNodes[0].parentElement!;\n return queryShadowRoot(\n $slotParent,\n skipNode,\n isMatch,\n maxDepth,\n depth + 1\n );\n }\n\n return [];\n };\n\n // Go through each child and continue the traversing if necessary\n // Even though the typing says that children can't be undefined, Edge 15 sometimes gives an undefined value.\n // Therefore we fallback to an empty array if it is undefined.\n const children = Array.from(root.children || []) as HTMLElement[];\n for (const $child of children) {\n // Check if the element and its descendants should be skipped\n if (skipNode($child)) {\n // console.log('-- SKIP', $child);\n continue;\n }\n\n // console.log('$child', $child);\n\n // If the element matches we always add it\n if (isMatch($child)) {\n matches.push($child);\n }\n\n if ($child.shadowRoot != null) {\n // If the element has a shadow root we need to traverse it\n matches.push(\n ...queryShadowRoot(\n $child.shadowRoot,\n skipNode,\n isMatch,\n maxDepth,\n depth + 1\n )\n );\n } else if ($child.tagName === 'SLOT') {\n // If the child is a slot we need to traverse each assigned node\n matches.push(...traverseSlot($child as HTMLSlotElement));\n } else {\n // Traverse the children of the element\n matches.push(\n ...queryShadowRoot($child, skipNode, isMatch, maxDepth, depth + 1)\n );\n }\n }\n\n return matches;\n}\n\n/**\n * Returns whether the element is hidden.\n * @param $elem\n */\nexport function isHidden($elem: HTMLElement): boolean {\n return (\n $elem.hasAttribute('hidden') ||\n ($elem.hasAttribute('aria-hidden') &&\n $elem.getAttribute('aria-hidden') !== 'false') ||\n // A quick and dirty way to check whether the element is hidden.\n // For a more fine-grained check we could use \"window.getComputedStyle\" but we don't because of bad performance.\n // If the element has visibility set to \"hidden\" or \"collapse\", display set to \"none\" or opacity set to \"0\" through CSS\n // we won't be able to catch it here. We accept it due to the huge performance benefits.\n $elem.style.display === `none` ||\n $elem.style.opacity === `0` ||\n $elem.style.visibility === `hidden` ||\n $elem.style.visibility === `collapse`\n );\n\n // If offsetParent is null we can assume that the element is hidden\n // https://stackoverflow.com/questions/306305/what-would-make-offsetparent-null\n // || $elem.offsetParent == null;\n}\n\n/**\n * Returns whether the element is disabled.\n * @param $elem\n */\nexport function isDisabled($elem: HTMLElement): boolean {\n return (\n $elem.hasAttribute('disabled') ||\n ($elem.hasAttribute('aria-disabled') &&\n $elem.getAttribute('aria-disabled') !== 'false')\n );\n}\n\n/**\n * Determines whether an element is focusable.\n * Read more here: https://stackoverflow.com/questions/1599660/which-html-elements-can-receive-focus/1600194#1600194\n * Or here: https://stackoverflow.com/questions/18261595/how-to-check-if-a-dom-element-is-focusable\n * @param $elem\n */\nexport function isFocusable($elem: HTMLElement): boolean {\n // Discard elements that are removed from the tab order.\n if (\n $elem.getAttribute('tabindex') === '-1' ||\n isHidden($elem) ||\n isDisabled($elem)\n ) {\n return false;\n }\n\n return (\n // At this point we know that the element can have focus (eg. won't be -1) if the tabindex attribute exists\n $elem.hasAttribute('tabindex') ||\n // Anchor tags or area tags with a href set\n (($elem instanceof HTMLAnchorElement || $elem instanceof HTMLAreaElement) &&\n $elem.hasAttribute('href')) ||\n // Form elements which are not disabled\n $elem instanceof HTMLButtonElement ||\n $elem instanceof HTMLInputElement ||\n $elem instanceof HTMLTextAreaElement ||\n $elem instanceof HTMLSelectElement ||\n // IFrames\n $elem instanceof HTMLIFrameElement\n );\n}","export function animationTo(\n element: HTMLElement,\n keyframes: Keyframe | Keyframe[],\n options?: KeyframeAnimationOptions\n) {\n const animated = element.animate(keyframes, { ...options, fill: 'both' });\n animated.addEventListener('finish', () => {\n // @ts-ignore\n animated.commitStyles();\n animated.cancel();\n });\n\n return animated;\n}\n\nconst keyframeDefaults = {\n easing: 'cubic-bezier(0.390, 0.575, 0.565, 1.000)',\n};\n\nexport const KEYFRAMES = {\n fadeIn: [\n {\n offset: 0,\n ...keyframeDefaults,\n opacity: 0,\n },\n {\n offset: 1,\n ...keyframeDefaults,\n opacity: 1,\n },\n ],\n fadeOut: [\n {\n offset: 0,\n ...keyframeDefaults,\n opacity: 1,\n },\n {\n offset: 1,\n ...keyframeDefaults,\n opacity: 0,\n },\n ],\n};","@use \"~@infineon/design-system-tokens/dist/tokens\";\n@use \"../../global/font.scss\";\n\n:host {\n display: block;\n}\n\n.modal-container {\n display: none;\n justify-content: center;\n align-items: center;\n position: fixed;\n top: 0;\n left: 0;\n width: 100%;\n height: 100%;\n z-index: 1060;\n overflow-y: auto;\n font-family: var(--ifx-font-family); // tokens.$ifxFontFamilyBody;\n\n\n\n}\n\n.modal-container.open {\n display: flex;\n}\n\n.modal-overlay {\n position: absolute;\n top: 0;\n left: 0;\n width: 100%;\n height: 100%;\n background-color: tokens.$ifxColorBaseBlack;\n opacity: 0.5;\n z-index: 0;\n}\n\n.modal-content-container {\n position: absolute;\n display: flex;\n justify-content: center;\n width: 90%;\n min-height: 218px;\n background-color: #fff;\n border-radius: tokens.$ifxBorderRadiusNone;\n box-shadow: 0 2px 10px rgba(0, 0, 0, 0.1);\n \n //overflow: hidden;\n\n box-sizing: border-box;\n align-items: stretch;\n}\n\n.modal-content-container {\n &.no-overflow { \n overflow: hidden;\n & .modal-body { \n overflow-y: auto;\n }\n }\n}\n\n/* Add desktop size here */\n@media screen and (min-width: 768px) {\n .modal-content-container {\n width: 540px;\n min-height: 132px;\n\n &.m,\n &.l,\n &.s {\n width: 90%;\n }\n }\n}\n\n@media screen and (min-width: 1024px) {\n .modal-content-container {\n\n &.s {\n width: 47vw;\n }\n\n &.m {\n width: 63vw;\n }\n\n &.l {\n width: 80%;\n }\n }\n}\n\n.modal-content {\n display: flex;\n flex-direction: column;\n width: 100%;\n max-height: 90vh;\n}\n\n.modal-icon-container {\n display: flex;\n align-items: center;\n justify-content: center;\n width: 32px;\n background-color: tokens.$ifxColorOcean500;\n align-self: stretch;\n\n &.danger {\n background-color: tokens.$ifxColorRed500;\n }\n\n & ifx-icon {\n color: tokens.$ifxColorBaseWhite;\n }\n}\n\n.modal-header {\n display: flex;\n justify-content: space-between;\n align-items: center;\n padding: 24px;\n min-height: 76px;\n max-height: 105px;\n box-sizing: border-box;\n border-radius: 1px 1px 0px 0px;\n border-bottom: 1px solid tokens.$ifxColorEngineering200;\n}\n\n.modal-caption {\n max-height: 56px;\n display: -webkit-box;\n overflow: hidden;\n white-space: pre-wrap;\n word-wrap: break-word;\n -webkit-line-clamp: 2;\n -webkit-box-orient: vertical; \n}\n\n.modal-header h2 {\n margin: 0;\n font-weight: tokens.$ifxFontWeightSemibold;\n font-size: tokens.$ifxFontSizeXl;\n line-height: 28px;\n}\n\n.modal-header button {\n background: none;\n border: none;\n font-size: 1.5em;\n padding: 0;\n cursor: pointer;\n}\n\n.modal-close-button {\n align-self: flex-start;\n margin-right: -8px;\n}\n\n.modal-body {\n padding: 16px 24px;\n min-height: 56px;\n box-sizing: border-box;\n flex: 1;\n \n //overflow-y: auto;\n}\n\n.modal-footer.buttons-present ::slotted(*){\n display: flex;\n justify-content: flex-end;\n gap: 16px;\n padding: 16px 24px 32px 16px\n}\n\n.modal-border {\n display: flex;\n align-items: center;\n justify-content: center;\n width: 100%;\n font-size: 1.5em;\n flex-grow: 1;\n\n &.primary {\n background-color: tokens.$ifxColorOcean500;\n }\n\n &.secondary {\n background-color: tokens.$ifxColorEngineering500;\n }\n\n &.danger {\n background-color: tokens.$ifxColorRed500;\n }\n\n &.success {\n background-color: tokens.$ifxColorGreen500;\n }\n\n &.warning {\n background-color: tokens.$ifxColorOrange500;\n }\n\n &.orange {\n background-color: tokens.$ifxColorOrange500;\n }\n\n &.ocean {\n background-color: tokens.$ifxColorOcean500;\n }\n\n &.grey {\n background-color: tokens.$ifxColorEngineering500;\n }\n\n &.grey-200 {\n background-color: tokens.$ifxColorEngineering200;\n }\n\n &.red {\n background-color: tokens.$ifxColorRed500;\n }\n\n &.green {\n background-color: tokens.$ifxColorGreen500;\n }\n\n &.berry {\n background-color: tokens.$ifxColorBerry500;\n }\n}","import { Component, Prop, Element, State, Event, Host, EventEmitter, h, Watch } from '@stencil/core';\nimport { queryShadowRoot, isHidden, isFocusable } from '../../global/utils/focus-trap';\nimport { animationTo, KEYFRAMES } from '../../global/utils/animation';\n \n\ntype CloseEventTrigger = 'CLOSE_BUTTON' | 'ESCAPE_KEY' | 'BACKDROP';\n\nexport interface BeforeCloseEventDetail {\n trigger: CloseEventTrigger;\n}\n@Component({\n tag: 'ifx-modal',\n styleUrl: 'modal.scss',\n shadow: true\n})\nexport class IfxModal {\n @Prop({ reflect: true, mutable: true }) opened?: boolean = false;\n @State() showModal: boolean = this.opened || false;\n\n @Prop() caption: string = 'Modal Title';\n @Prop() closeOnOverlayClick: boolean = true;\n\n @Event() ifxOpen: EventEmitter;\n @Event() ifxClose: EventEmitter;\n\n @Prop() variant: 'default' | 'alert-brand' | 'alert-danger' = 'default';\n \n @Prop() size: 's' | 'm' | 'l' = 's';\n\n @Prop() alertIcon: string = '';\n @Prop() okButtonLabel: string = 'OK';\n @Prop() cancelButtonLabel: string = 'Cancel';\n @Element() hostElement: HTMLElement;\n\n @State() slotButtonsPresent: boolean = false;\n\n @Prop() showCloseButton: boolean = true;\n\n private modalContainer: HTMLElement;\n private focusableElements: HTMLElement[] = [];\n private closeButton: HTMLButtonElement | HTMLIfxIconButtonElement;\n\n componentDidLoad() {\n // Query all focusable elements and store them in `focusableElements`.\n // Needed for the \"focus trap\" functionality.\n this.focusableElements = queryShadowRoot(\n this.hostElement.shadowRoot,\n (el) => isHidden(el) || el.matches('[data-focus-trap-edge]'),\n isFocusable\n );\n }\n\n componentWillRender() { \n if(this.showModal) { \n this.handleComponentOverflow();\n }\n }\n\n handleComponentOverflow() { \n const modalContentContainer = this.hostElement.shadowRoot.querySelector('.modal-content-container');\n if (this.showModal && this.isModalContentContainerHeightReachedViewport()) {\n modalContentContainer.classList.add('no-overflow')\n } else if(modalContentContainer?.classList.contains('no-overflow')) { \n modalContentContainer?.classList.remove('no-overflow')\n }\n }\n\n getFirstFocusableElement(): HTMLElement | null {\n return this.focusableElements[0];\n }\n\n getLastFocusableElement(): HTMLElement | null {\n return this.focusableElements[this.focusableElements.length - 1];\n }\n\n handleTopFocus = () => {\n this.attemptFocus(this.getLastFocusableElement());\n };\n\n handleBottomFocus = () => {\n this.attemptFocus(this.getFirstFocusableElement());\n };\n\n attemptFocus(element: HTMLElement | null) {\n if (element == null) {\n setTimeout(() => { //wait until DOM is fully loaded\n this.closeButton.focus();\n },);\n return;\n }\n\n setTimeout(() => { //wait until DOM is fully loaded\n element.focus();\n }, 0);\n }\n\n open() {\n this.showModal = true;\n try {\n const anim = animationTo(this.modalContainer, KEYFRAMES.fadeIn, {\n duration: 200,\n });\n anim.addEventListener('finish', () => {\n // Setting focus on last item and removing immediately\n // so, on tab press first element is focused\n setTimeout(() => {\n this.getLastFocusableElement()?.focus();\n this.getLastFocusableElement()?.blur();\n }, 0);\n\n this.ifxOpen.emit();\n });\n\n this.hostElement.addEventListener('keydown', this.handleKeypress);\n } catch (err) {\n this.ifxOpen.emit();\n }\n }\n\n close() {\n try {\n const anim = animationTo(this.modalContainer, KEYFRAMES.fadeOut, {\n duration: 200,\n });\n anim.addEventListener('finish', () => {\n this.showModal = false;\n this.ifxClose.emit();\n });\n this.hostElement.removeEventListener('keydown', this.handleKeypress);\n } catch (err) {\n this.showModal = false;\n this.ifxClose.emit();\n }\n }\n\n handleKeypress = (event: KeyboardEvent) => {\n if (!this.showModal) {\n return;\n }\n if (event.key === 'Escape') {\n this.doBeforeClose('ESCAPE_KEY');\n }\n };\n\n doBeforeClose(trigger: CloseEventTrigger) {\n const triggers = [];\n triggers.push(trigger);\n const prevented = triggers.some((event) => event.defaultPrevented);\n if (!prevented) {\n this.opened = false;\n }\n }\n\n @Watch('opened')\n openedChanged(newValue) {\n if (newValue === true) {\n this.open();\n } else {\n this.close()\n }\n }\n\n handleOverlayClick() {\n if (this.closeOnOverlayClick) {\n this.doBeforeClose('BACKDROP')\n }\n }\n\n handleContentUpdate(e) {\n const slotElement = e.target;\n const nodes = slotElement.assignedNodes();\n if(nodes.length > 0) {\n nodes.forEach(node => {\n if (node.observer) {\n node.observer.disconnect();\n delete node.observer;\n }\n const observer = new MutationObserver((mutationsList, _) => {\n for(let mutation of mutationsList) {\n if (mutation.type === 'childList') {\n if(this.showModal) { \n this.handleComponentOverflow();\n }\n }\n }\n });\n observer.observe(node, { attributes: true, childList: true, subtree: true });\n node.observer = observer;\n });\n } \n }\n\n handleButtonsSlotChange(e) {\n if(e.currentTarget.assignedElements()[0]?.childElementCount > 0) {\n this.slotButtonsPresent = true;\n }else{\n this.slotButtonsPresent = false;\n }\n }\n\n isModalContentContainerHeightReachedViewport() {\n //Adding timeout for proper height detection on Edge browser\n return new Promise(resolve => {\n setTimeout(() => {\n const modalContent = this.hostElement.shadowRoot.querySelector('.modal-content') as HTMLElement;\n const modalContentHeight = modalContent.offsetHeight;\n const viewportHeight = window.innerHeight;\n resolve(modalContentHeight >= viewportHeight * 0.9);\n }, 100);\n });\n}\n\n\n render() {\n const isAlertVariant = this.variant !== 'default';\n return (\n <Host>\n <div\n ref={(el) => (this.modalContainer = el)}\n class={`modal-container ${this.showModal ? 'open' : ''}`}\n >\n <div\n class=\"modal-overlay\"\n onClick={() => this.handleOverlayClick()}\n ></div>\n <div\n data-focus-trap-edge\n onFocus={this.handleTopFocus}\n tabindex=\"0\"\n ></div>\n <div\n class={`modal-content-container ${this.size}`}\n role=\"dialog\"\n aria-modal=\"true\"\n aria-label={this.caption}>\n {isAlertVariant ? (\n <div class={`modal-icon-container ${this.variant === 'alert-brand' ? '' : 'danger'}`}>\n {this.alertIcon ? <ifx-icon icon={this.alertIcon} /> : null}\n </div>\n ) : null}\n <div class=\"modal-content\">\n <div class=\"modal-header\">\n <h2 class=\"modal-caption\">{this.caption}</h2>\n { \n this.showCloseButton && \n <ifx-icon-button class = 'modal-close-button' ref={(el) => (this.closeButton = el)} icon=\"cross-16\" variant=\"tertiary\" onClick={() => this.doBeforeClose('CLOSE_BUTTON') }>\n </ifx-icon-button>\n }\n </div>\n <div class=\"modal-body\">\n <slot name=\"content\" onSlotchange={(e) => this.handleContentUpdate(e)} />\n </div>\n <div class={`modal-footer ${this.slotButtonsPresent ? 'buttons-present' : ''}`}>\n <slot name=\"buttons\" onSlotchange={(e)=>this.handleButtonsSlotChange(e)}>\n </slot>\n </div>\n </div>\n </div>\n <div\n data-focus-trap-edge\n onFocus={this.handleBottomFocus}\n tabindex=\"0\"\n ></div>\n </div>\n </Host>\n\n );\n }\n}"],"mappings":"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","ignoreList":[]}
@@ -0,0 +1,2 @@
1
+ import{r as t,h as e,c as i,g as r}from"./p-b7a462e5.js";import{c as n}from"./p-5cdc6210.js";const o=":host{display:inline-block}.spinner{position:relative;width:40px;height:40px}.spinner.s{width:24px;height:24px}.border{box-sizing:border-box;position:absolute;width:100%;height:100%;border:4px solid transparent;border-top-color:#0A8276;border-left-color:#0A8276;border-right-color:#0A8276;border-top-left-radius:1px;border-top-right-radius:1px;border-radius:50%;animation:spin 2s linear infinite}.border.inverted{border-top-color:#FFFFFF;border-left-color:#FFFFFF;border-right-color:#FFFFFF}.semiconductor{width:100%;height:100%;animation:spin 2s linear infinite}.semiconductor svg{fill:#0A8276}.semiconductor.inverted svg{fill:#FFFFFF}.semiconductor.s svg{width:24px;height:24px}@keyframes spin{0%{transform:rotate(0deg)}100%{transform:rotate(360deg)}}";const s=o;const a=class{constructor(e){t(this,e);this.inverted=false}render(){return e("div",{key:"dbd9f1efc8af31527d84f06a76f5b369a1af68d3","aria-label":"spinner indicating a loading process",class:this.getClassNames()},e("div",{key:"3413dcef4de8dc7c424843a2f189b622cc960d1f",class:`${this.variant!=="brand"?"border":""} ${this.inverted?"inverted":""}`}),this.variant==="brand"&&e("div",{key:"406820f5f72eca93eea768a7ff4aecbed6e19e57",class:`semiconductor ${this.inverted?"inverted":""} ${this.getSizeClass()}`},e("svg",{key:"8981e71bbbc1c7a38f7830aeb4adac766884e090",width:"40",height:"40",viewBox:"0 0 40 40",fill:"none",xmlns:"http://www.w3.org/2000/svg"},e("g",{key:"9972a1ccbbfa766394e27e0770899b77e6077212",id:"spinner/conductor"},e("path",{key:"bb7a6618998fcebde6401cfcaae64a6b1c77cdd9",id:"Vector",d:"M38.75 18.75C39.4375 18.75 40 19.3125 40 20C40 20.6875 39.4409 21.25 38.75 21.25H35V26.25H38.75C39.4375 26.25 40 26.8125 40 27.5C40 28.1875 39.4409 28.75 38.75 28.75H35V30C35 32.7617 32.7617 35 30 35H28.75V38.75C28.75 39.4409 28.1875 40 27.5 40C26.8125 40 26.25 39.4409 26.25 38.75V35H21.25V38.75C21.25 39.4409 20.6875 40 20 40C19.3125 40 18.75 39.4409 18.75 38.75V35H13.75V38.75C13.75 39.4409 13.1875 40 12.5 40C11.8125 40 11.25 39.4409 11.25 38.75V35H10C7.23828 35 5 32.7617 5 30V28.75H1.25C0.559062 28.75 0 28.1875 0 27.5C0 26.8125 0.559062 26.25 1.25 26.25H5V21.25H1.25C0.559062 21.25 0 20.6875 0 20C0 19.3125 0.559062 18.75 1.25 18.75H5V13.75H1.25C0.559062 13.75 0 13.1875 0 12.5C0 11.8125 0.559062 11.25 1.25 11.25H5V10C5 7.23828 7.23828 5 10 5H11.25V1.25C11.25 0.5625 11.8125 0 12.5 0C13.1875 0 13.75 0.559063 13.75 1.25V5H18.75V1.25C18.75 0.559063 19.3091 0 20 0C20.6909 0 21.25 0.559063 21.25 1.25V5H26.25V1.25C26.25 0.559063 26.8091 0 27.5 0C28.1909 0 28.75 0.559063 28.75 1.25V5H30C32.7617 5 35 7.23828 35 10V11.25H38.75C39.4409 11.25 40 11.8091 40 12.5C40 13.1909 39.4409 13.75 38.75 13.75H35V18.75H38.75ZM32.5 10C32.5 8.62188 31.3781 7.5 30 7.5H10C8.62187 7.5 7.5 8.62188 7.5 10V30C7.5 31.3781 8.62187 32.5 10 32.5H30C31.3781 32.5 32.5 31.3781 32.5 30V10Z"})))))}getSizeClass(){return`${this.size}`==="s"?"s":""}getClassNames(){return n("spinner",this.size&&`spinner ${this.getSizeClass()}`)}};a.style=s;const p=':root{--ifx-font-family:"Source Sans 3", "Arial, sans-serif"}:host{display:flex}.textInput__container{display:flex;flex-direction:column;align-items:flex-start;padding:0px;width:100%;flex:none;order:0;align-self:stretch;flex-grow:0;font-family:var(--ifx-font-family)}.textInput__container.disabled .textInput__top-wrapper label{color:#575352}.textInput__container.disabled .textInput__bottom-wrapper input{border:1px solid #575352;background-color:#EEEDED}.textInput__container.disabled .textInput__bottom-wrapper input::placeholder{font-size:0.875rem;color:#575352}.textInput__container .textInput__top-wrapper{display:flex;flex-direction:row;align-items:flex-start;padding:0px;gap:4px;flex:none;order:0;align-self:stretch;flex-grow:0}.textInput__container .textInput__top-wrapper label{font-style:normal;font-weight:400;font-size:1rem;line-height:1.5rem;display:flex;align-items:center;color:#1D1D1D;flex:none;order:0;flex-grow:0}.textInput__container .textInput__top-wrapper label .optional-required{margin-left:4px}.textInput__container .textInput__top-wrapper label .optional{margin-left:4px}.textInput__container .textInput__top-wrapper label .required{margin-left:4px}.textInput__container .textInput__top-wrapper label .required.error{color:#CD002F}.textInput__container .input-container{position:relative;display:flex;align-items:center;width:100%}.textInput__container .textInput__bottom-wrapper{flex-grow:1;position:relative;display:flex;flex-direction:column;align-items:flex-start;padding:0px;gap:4px;flex:none;order:1;align-self:stretch;flex-grow:0}.textInput__container .textInput__bottom-wrapper input{width:100%;box-sizing:border-box;display:flex;flex-direction:row;align-items:center;padding:8px 16px;gap:8px;height:40px;background-color:#FFFFFF;color:#1D1D1D;font-family:var(--ifx-font-family);font-size:1rem;line-height:1.5rem;border:1px solid #8D8786;border-radius:1px;flex:none;order:0;align-self:stretch;flex-grow:0;text-overflow:ellipsis}.textInput__container .textInput__bottom-wrapper input.input-s{height:36px;font-size:0.875rem;line-height:1.25rem}.textInput__container .textInput__bottom-wrapper input.input-s::placeholder{font-size:0.875rem;line-height:1.25rem}.textInput__container .textInput__bottom-wrapper input.icon{padding-left:40px}.textInput__container .textInput__bottom-wrapper input.error{border:1px solid #CD002F}.textInput__container .textInput__bottom-wrapper input.error:focus{outline:none}.textInput__container .textInput__bottom-wrapper input.success{border:1px solid #4CA460}.textInput__container .textInput__bottom-wrapper input.success:focus{outline:none}.textInput__container .textInput__bottom-wrapper input:focus:not(.error,.success){outline:none;border:1px solid #0A8276}.textInput__container .textInput__bottom-wrapper input:hover:not(:disabled,:focus,.error,.success){border:1px solid #575352}.textInput__container .textInput__bottom-wrapper input::placeholder{font-style:normal;font-weight:400;font-size:1rem;line-height:1.5rem;color:#8D8786;flex:none;order:1;flex-grow:1}.textInput__container .textInput__bottom-wrapper .input-icon{position:absolute;top:50%;transform:translateY(-50%);left:16px;transition:0.3s;color:#8D8786}.textInput__container .textInput__bottom-wrapper .textInput__bottom-wrapper-caption{font-style:normal;font-weight:400;font-size:0.75rem;line-height:1rem;letter-spacing:0.2px;color:#1D1D1D;flex:none;order:1;align-self:stretch;flex-grow:0}.textInput__container .textInput__bottom-wrapper .textInput__bottom-wrapper-caption.error{color:#CD002F}.textInput__container .textInput__bottom-wrapper .textInput__bottom-wrapper-caption.disabled{color:#575352}.textInput__container .delete-icon{position:absolute;right:16px}.textInput__container .delete-icon :hover{cursor:pointer}';const l=p;const c=class{constructor(e){t(this,e);this.ifxInput=i(this,"ifxInput",7);if(e.$hostElement$["s-ei"]){this.internals=e.$hostElement$["s-ei"]}else{this.internals=e.$hostElement$.attachInternals();e.$hostElement$["s-ei"]=this.internals}this.placeholder="Placeholder";this.value="";this.error=false;this.label="";this.icon="";this.caption="";this.size="m";this.required=false;this.optional=false;this.success=false;this.disabled=false;this.showDeleteIcon=false;this.autocomplete="on";this.type="text";this.internalId="text-field"}valueWatcher(t){if(t!==this.inputElement.value){this.inputElement.value=t}}async reset(){this.value="";this.inputElement.value=""}handleDeleteContent(){this.reset();this.ifxInput.emit(this.value)}handleInput(){const t=this.inputElement.value;this.value=t;this.internals.setFormValue(t);this.ifxInput.emit(this.value)}handleTypeProp(){this.internalType=this.type==="text"||this.type==="password"?this.type:"text"}formResetCallback(){this.internals.setValidity({});this.internals.setFormValue("")}componentWillLoad(){this.handleTypeProp()}render(){return e("div",{key:"7e6d9942880560a221d43b3b0a0d5af928ec5a08","aria-label":"a text field for user input","aria-value":this.value,"aria-disabled":this.disabled,class:`textInput__container ${this.disabled?"disabled":""}`},e("div",{key:"51d490a767e8dd89b86ec21f502e02f0d5cbdc09",class:"textInput__top-wrapper"},e("label",{key:"7ea9c6e9cae679fd1ba3a5f5a05ec18a44ead60f",htmlFor:this.internalId},e("slot",{key:"9e3771cd10ad31856f3f4a4bb1873b4ffb255658"}),this.optional&&this.required?e("span",{class:"optional-required"},"(optional) *"):this.optional?e("span",{class:"optional"},"(optional)"):this.required?e("span",{class:`required ${this.error?"error":""}`},"*"):null)),e("div",{key:"cbce67112a8fd5941bd656f9073142609393318b",class:"textInput__bottom-wrapper"},e("div",{key:"922d433c60dc90b097fdaa1bb6616c986b0e5f5a",class:"input-container"},this.icon&&e("ifx-icon",{key:"46cfc15b14449c14dccb67d3feaff46492f1e917",class:"input-icon",icon:this.icon}),e("input",{key:"f66cc1e95cdb64937f8231dfbdcae41ecb98fd7e",ref:t=>this.inputElement=t,disabled:this.disabled,autocomplete:this.autocomplete,type:this.internalType,id:this.internalId,value:this.value,onInput:()=>this.handleInput(),placeholder:this.placeholder,maxlength:this.maxlength,class:`${this.icon?"icon":""}\n ${this.error?"error":""} \n ${this.size==="s"?"input-s":""}\n ${this.success?"success":""}`}),this.showDeleteIcon&&this.value&&e("ifx-icon",{key:"b6fbd2ec39451aa061a53150cd2519c3648241ad",class:"delete-icon",icon:"cRemove16",onClick:()=>this.handleDeleteContent()})),this.caption&&!this.error&&e("div",{key:"f78fbb3244d64e9ec1aa5643a06f706db13eb0e3",class:`textInput__bottom-wrapper-caption ${this.disabled} ? disabled : ""`},this.caption),this.error&&e("div",{key:"6290ff909a864d53e4a44859b34307773250ff64",class:"textInput__bottom-wrapper-caption error"},this.caption)))}static get formAssociated(){return true}get el(){return r(this)}static get watchers(){return{value:["valueWatcher"]}}};c.style=l;export{a as ifx_spinner,c as ifx_text_field};
2
+ //# sourceMappingURL=p-2e7d87ed.entry.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"names":["spinnerCss","IfxSpinnerStyle0","Spinner","constructor","hostRef","this","inverted","render","h","key","class","getClassNames","variant","getSizeClass","width","height","viewBox","fill","xmlns","id","d","size","classNames","textFieldCss","IfxTextFieldStyle0","TextField","placeholder","value","error","label","icon","caption","required","optional","success","disabled","showDeleteIcon","autocomplete","type","internalId","valueWatcher","newValue","inputElement","reset","handleDeleteContent","ifxInput","emit","handleInput","query","internals","setFormValue","handleTypeProp","internalType","formResetCallback","setValidity","componentWillLoad","htmlFor","ref","el","onInput","maxlength","onClick"],"sources":["src/components/spinner/spinner.scss?tag=ifx-spinner&encapsulation=shadow","src/components/spinner/spinner.tsx","src/components/text-field/text-field.scss?tag=ifx-text-field&encapsulation=shadow","src/components/text-field/text-field.tsx"],"sourcesContent":["@use \"~@infineon/design-system-tokens/dist/tokens\";\n\n:host {\n display: inline-block;\n\n}\n\n.spinner {\n position: relative;\n width: tokens.$ifxSize500;\n height: tokens.$ifxSize500;\n\n}\n\n.spinner.s {\n width: tokens.$ifxSize300;\n height: tokens.$ifxSize300;\n}\n\n.border {\n box-sizing: border-box;\n position: absolute;\n width: 100%;\n height: 100%;\n border: 4px solid transparent;\n border-top-color: tokens.$ifxColorOcean500;\n border-left-color: tokens.$ifxColorOcean500;\n border-right-color: tokens.$ifxColorOcean500;\n border-top-left-radius: 1px;\n border-top-right-radius: 1px;\n border-radius: 50%;\n animation: spin 2s linear infinite;\n\n &.inverted {\n border-top-color: tokens.$ifxColorBaseWhite;\n border-left-color: tokens.$ifxColorBaseWhite;\n border-right-color: tokens.$ifxColorBaseWhite;\n }\n}\n\n.semiconductor {\n width: 100%;\n height: 100%;\n animation: spin 2s linear infinite;\n\n & svg {\n fill: tokens.$ifxColorOcean500;\n }\n\n &.inverted {\n & svg {\n fill: tokens.$ifxColorBaseWhite;\n }\n }\n\n &.s {\n & svg {\n width: tokens.$ifxSize300;\n height: tokens.$ifxSize300;\n }\n }\n}\n\n\n@keyframes spin {\n 0% {\n transform: rotate(0deg);\n }\n\n 100% {\n transform: rotate(360deg);\n }\n}","import { Component, h, Prop } from '@stencil/core';\nimport classNames from 'classnames';\n \n\n@Component({\n tag: 'ifx-spinner',\n styleUrl: 'spinner.scss',\n shadow: true,\n})\nexport class Spinner {\n @Prop() size: string;\n @Prop() variant: string;\n @Prop() inverted: boolean = false;\n\n\n render() {\n return (\n <div aria-label=\"spinner indicating a loading process\" class={this.getClassNames()}>\n <div class={`${this.variant !== 'brand' ? 'border' : \"\"} ${this.inverted ? 'inverted' : \"\"}`}></div>\n {this.variant === 'brand'\n && <div class={`semiconductor ${this.inverted ? 'inverted' : \"\"} ${this.getSizeClass()}`}>\n <svg width='40' height='40' viewBox=\"0 0 40 40\" fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\">\n <g id=\"spinner/conductor\">\n <path id=\"Vector\" d=\"M38.75 18.75C39.4375 18.75 40 19.3125 40 20C40 20.6875 39.4409 21.25 38.75 21.25H35V26.25H38.75C39.4375 26.25 40 26.8125 40 27.5C40 28.1875 39.4409 28.75 38.75 28.75H35V30C35 32.7617 32.7617 35 30 35H28.75V38.75C28.75 39.4409 28.1875 40 27.5 40C26.8125 40 26.25 39.4409 26.25 38.75V35H21.25V38.75C21.25 39.4409 20.6875 40 20 40C19.3125 40 18.75 39.4409 18.75 38.75V35H13.75V38.75C13.75 39.4409 13.1875 40 12.5 40C11.8125 40 11.25 39.4409 11.25 38.75V35H10C7.23828 35 5 32.7617 5 30V28.75H1.25C0.559062 28.75 0 28.1875 0 27.5C0 26.8125 0.559062 26.25 1.25 26.25H5V21.25H1.25C0.559062 21.25 0 20.6875 0 20C0 19.3125 0.559062 18.75 1.25 18.75H5V13.75H1.25C0.559062 13.75 0 13.1875 0 12.5C0 11.8125 0.559062 11.25 1.25 11.25H5V10C5 7.23828 7.23828 5 10 5H11.25V1.25C11.25 0.5625 11.8125 0 12.5 0C13.1875 0 13.75 0.559063 13.75 1.25V5H18.75V1.25C18.75 0.559063 19.3091 0 20 0C20.6909 0 21.25 0.559063 21.25 1.25V5H26.25V1.25C26.25 0.559063 26.8091 0 27.5 0C28.1909 0 28.75 0.559063 28.75 1.25V5H30C32.7617 5 35 7.23828 35 10V11.25H38.75C39.4409 11.25 40 11.8091 40 12.5C40 13.1909 39.4409 13.75 38.75 13.75H35V18.75H38.75ZM32.5 10C32.5 8.62188 31.3781 7.5 30 7.5H10C8.62187 7.5 7.5 8.62188 7.5 10V30C7.5 31.3781 8.62187 32.5 10 32.5H30C31.3781 32.5 32.5 31.3781 32.5 30V10Z\" />\n </g>\n </svg>\n </div>}\n </div>\n );\n }\n\n getSizeClass() {\n return `${this.size}` === \"s\"\n ? \"s\"\n : \"\";\n }\n\n getClassNames() {\n return classNames(\n 'spinner',\n this.size && `spinner ${this.getSizeClass()}`\n );\n }\n}\n","@use \"~@infineon/design-system-tokens/dist/tokens\";\n@use \"../../global/font.scss\";\n\n:host {\n display: flex;\n}\n\n.textInput__container {\n display: flex;\n flex-direction: column;\n align-items: flex-start;\n padding: 0px;\n width: 100%;\n flex: none;\n order: 0;\n align-self: stretch;\n flex-grow: 0;\n font-family: var(--ifx-font-family); // tokens.$ifxFontFamilyBody;\n\n\n\n\n &.disabled {\n & .textInput__top-wrapper {\n & label {\n color: tokens.$ifxColorEngineering500;\n }\n }\n\n & .textInput__bottom-wrapper {\n input {\n border: 1px solid tokens.$ifxColorEngineering500;\n background-color: tokens.$ifxColorEngineering200;\n\n &::placeholder {\n font-size: tokens.$ifxFontSizeS;\n color: tokens.$ifxColorEngineering500;\n }\n }\n }\n }\n\n & .textInput__top-wrapper {\n display: flex;\n flex-direction: row;\n align-items: flex-start;\n padding: 0px;\n gap: 4px;\n flex: none;\n order: 0;\n align-self: stretch;\n flex-grow: 0;\n\n & label {\n font-style: normal;\n font-weight: 400;\n font-size: tokens.$ifxFontSizeM;\n line-height: tokens.$ifxLineHeightM;\n display: flex;\n align-items: center;\n color: tokens.$ifxColorBaseBlack;\n flex: none;\n order: 0;\n flex-grow: 0;\n\n & .optional-required {\n margin-left: 4px;\n }\n\n & .optional {\n margin-left: 4px;\n }\n\n & .required {\n margin-left: 4px;\n \n &.error {\n color: #CD002F;\n }\n }\n }\n }\n\n .input-container {\n position: relative;\n display: flex;\n align-items: center;\n width: 100%;\n }\n\n\n & .textInput__bottom-wrapper {\n flex-grow: 1;\n position: relative;\n display: flex;\n flex-direction: column;\n align-items: flex-start;\n padding: 0px;\n gap: 4px;\n flex: none;\n order: 1;\n align-self: stretch;\n flex-grow: 0;\n\n & input {\n width: 100%;\n box-sizing: border-box;\n display: flex;\n flex-direction: row;\n align-items: center;\n padding: tokens.$ifxSpace100 tokens.$ifxSpace200;\n gap: tokens.$ifxSpace100;\n height: tokens.$ifxSize500;\n background-color: tokens.$ifxColorBaseWhite;\n color: tokens.$ifxColorBaseBlack;\n font-family: var(--ifx-font-family); // tokens.$ifxFontFamilyBody;\n\n\n font-size: tokens.$ifxFontSizeM;\n line-height: tokens.$ifxLineHeightM;\n border: 1px solid tokens.$ifxColorEngineering400;\n border-radius: tokens.$ifxBorderRadius12;\n flex: none;\n order: 0;\n align-self: stretch;\n flex-grow: 0;\n text-overflow: ellipsis;\n\n &.input-s {\n height: tokens.$ifxSize450;\n font-size: tokens.$ifxFontSizeS;\n line-height: tokens.$ifxLineHeightS;\n\n &::placeholder {\n font-size: tokens.$ifxFontSizeS;\n line-height: tokens.$ifxLineHeightS;\n }\n\n }\n\n &.icon {\n padding-left: tokens.$ifxSpace500;\n }\n\n &.error {\n border: 1px solid #CD002F;\n\n &:focus {\n outline: none;\n }\n }\n\n &.success {\n border: 1px solid #4CA460;\n\n &:focus {\n outline: none;\n }\n }\n\n\n &:focus:not(.error, .success) {\n outline: none;\n border: 1px solid tokens.$ifxColorOcean500;\n }\n\n &:hover:not(:disabled, :focus, .error, .success) {\n border: 1px solid tokens.$ifxColorEngineering500;\n }\n\n &::placeholder {\n font-style: normal;\n font-weight: 400;\n font-size: tokens.$ifxFontSizeM;\n line-height: tokens.$ifxLineHeightM;\n color: #8D8786;\n flex: none;\n order: 1;\n flex-grow: 1;\n }\n }\n\n & .input-icon {\n // Position the icon within the icon container\n // Adjust the positioning as needed\n position: absolute;\n top: 50%;\n transform: translateY(-50%);\n left: tokens.$ifxSpace200;\n /* Adjust this value to control the icon's left offset */\n transition: .3s;\n color: tokens.$ifxColorEngineering400;\n }\n\n & .textInput__bottom-wrapper-caption {\n font-style: normal;\n font-weight: 400;\n font-size: tokens.$ifxFontSizeXs;\n line-height: tokens.$ifxLineHeightXs;\n letter-spacing: 0.2px;\n color: tokens.$ifxColorBaseBlack;\n flex: none;\n order: 1;\n align-self: stretch;\n flex-grow: 0;\n\n &.error {\n color: #CD002F;\n\n }\n\n &.disabled {\n color: tokens.$ifxColorEngineering500;\n }\n }\n\n \n }\n .delete-icon {\n position: absolute;\n right: tokens.$ifxSpace200;\n\n :hover {\n cursor: pointer;\n }\n }\n}","import { Component, h, Event, Element, Prop, EventEmitter, Watch, Method, AttachInternals, State } from '@stencil/core';\n \n\n@Component({\n tag: 'ifx-text-field',\n styleUrl: 'text-field.scss',\n shadow: true,\n formAssociated: true\n})\n\nexport class TextField {\n private inputElement: HTMLInputElement;\n @Element() el;\n @Prop() placeholder: string = \"Placeholder\"\n @Prop({ mutable: true }) value: string = '';\n @Prop() error: boolean = false;\n @Prop() label: string = \"\";\n @Prop() icon: string = \"\";\n @Prop() caption: string = \"\";\n @Prop() size: string = 'm';\n @Prop() required: boolean = false;\n @Prop() optional: boolean = false;\n @Prop() success: boolean = false;\n @Prop() disabled: boolean = false;\n @Prop() maxlength?: number;\n @Prop() showDeleteIcon: boolean = false;\n @Prop() autocomplete: string = 'on'\n @Prop() type: 'text' | 'password' = 'text';\n @Prop() internalId: string = \"text-field\"\n @State() internalType: string;\n @Event() ifxInput: EventEmitter<String>;\n // @Prop({ reflect: true })\n // resetOnSubmit: boolean = false;\n\n @AttachInternals() internals: ElementInternals;\n\n\n @Watch('value')\n valueWatcher(newValue: string) {\n if (newValue !== this.inputElement.value) {\n this.inputElement.value = newValue;\n }\n }\n\n @Method()\n async reset() {\n this.value = '';\n this.inputElement.value = '';\n }\n\n handleDeleteContent() {\n this.reset();\n this.ifxInput.emit(this.value);\n }\n\n handleInput() {\n const query = this.inputElement.value;\n this.value = query; // update the value property when input changes\n this.internals.setFormValue(query) // update form value\n this.ifxInput.emit(this.value);\n }\n\n handleTypeProp() { \n this.internalType = this.type === 'text' || this.type === 'password' ? this.type : 'text'\n }\n\n formResetCallback() {\n this.internals.setValidity({});\n this.internals.setFormValue(\"\");\n }\n\n componentWillLoad() { \n this.handleTypeProp()\n }\n\n render() {\n return (\n <div aria-label=\"a text field for user input\" aria-value={this.value} aria-disabled={this.disabled} class={`textInput__container ${this.disabled ? 'disabled' : \"\"}`}>\n <div class=\"textInput__top-wrapper\">\n <label htmlFor={this.internalId}>\n <slot></slot>\n {this.optional && this.required ? (\n <span class=\"optional-required\">(optional) *</span>\n ) : this.optional ? (\n <span class=\"optional\">(optional)</span>\n ) : this.required ? (\n <span class={`required ${this.error ? 'error' : \"\"}`}>*</span>\n ) : null}\n </label>\n </div>\n\n <div class=\"textInput__bottom-wrapper\">\n <div class=\"input-container\">\n {this.icon && (\n <ifx-icon class='input-icon' icon={this.icon} />\n )}\n <input\n ref={(el) => (this.inputElement = el)}\n disabled={this.disabled}\n autocomplete={this.autocomplete}\n type={this.internalType}\n id={this.internalId}\n value={this.value}\n onInput={() => this.handleInput()}\n placeholder={this.placeholder}\n maxlength={this.maxlength}\n class={\n `${this.icon ? 'icon' : \"\"}\n ${this.error ? 'error' : \"\"} \n ${this.size === \"s\" ? \"input-s\" : \"\"}\n ${this.success ? \"success\" : \"\"}`} />\n\n { (this.showDeleteIcon && this.value) && (\n <ifx-icon class=\"delete-icon\" icon=\"cRemove16\" onClick={() => this.handleDeleteContent()}></ifx-icon> \n )}\n </div>\n {this.caption && !this.error &&\n <div class={`textInput__bottom-wrapper-caption ${this.disabled} ? disabled : \"\"`}>\n {this.caption}\n </div>}\n {this.error &&\n <div class=\"textInput__bottom-wrapper-caption error\">\n {this.caption}\n </div>}\n </div>\n </div>\n );\n }\n}\n"],"mappings":"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","ignoreList":[]}
@@ -0,0 +1,2 @@
1
+ import{r as t,h as n,a as o,g as e}from"./p-b7a462e5.js";import{c as i}from"./p-5cdc6210.js";const r=":host{display:inline-flex}.btn{box-sizing:border-box;display:inline-flex;align-items:center;justify-content:center;min-height:40px;padding:8px;gap:8px;color:#FFFFFF;flex-direction:row;font-weight:600;border-radius:1px;line-height:1.5rem;outline:none;font-family:var(--ifx-font-family);text-decoration:none;user-select:none;border:1px solid rgba(0, 0, 0, 0);font-size:1rem;transition:color 0.15s ease-in-out, background-color 0.15s ease-in-out, border-color 0.15s ease-in-out, box-shadow 0.15s ease-in-out}.btn:not(.disabled){cursor:pointer}.btn-primary{color:#FFFFFF;background-color:#0A8276}.btn-primary:disabled,.btn-primary.disabled{background-color:#BFBBBB;color:#FFFFFF;pointer-events:none}.btn-secondary{color:#0A8276;background-color:#FFFFFF;border-color:#0A8276}.btn-secondary:disabled,.btn-secondary.disabled{background-color:#FFFFFF;border:1px solid #BFBBBB;color:#BFBBBB;pointer-events:none}.btn-tertiary{background-color:transparent;color:#1D1D1D}.btn-tertiary:disabled,.btn-tertiary.disabled{color:#BFBBBB;pointer-events:none}.btn.icon-button{min-width:initial;min-height:initial;width:40px;height:40px;padding:0;justify-content:center}.btn.icon-button.btn-round{border-radius:100px}.btn.icon-button.btn-square{border-radius:1px}.btn.icon-button.btn-s{width:32px;height:32px;padding:8px}.btn.icon-button.btn-l{width:48px;height:48px;padding:8px}.btn.btn-primary:not(:disabled,.disabled):focus:not(:active,.active){outline:none;box-shadow:0 0 0 2px #FFFFFF, 0 0 0 4px #0A8276}.btn.btn-primary:not(:disabled,.disabled):hover{background-color:#08665C;border-color:#08665C}.btn.btn-primary:not(:disabled,.disabled):active,.btn.btn-primary:not(:disabled,.disabled).active{background-color:#06534B;border-color:#06534B}.btn.btn-secondary:not(:disabled,.disabled):focus:not(:active,.active){outline:none;box-shadow:0 0 0 2px #FFFFFF, 0 0 0 4px #0A8276}.btn.btn-secondary:not(:disabled,.disabled):hover{background-color:#08665C;border-color:#08665C;color:#FFFFFF}.btn.btn-secondary:not(:disabled,.disabled):active,.btn.btn-secondary:not(:disabled,.disabled).active{background-color:#06534B;border-color:#06534B}.btn.btn-tertiary:not(:disabled,.disabled):focus:not(:active,.active){outline:none;color:#1D1D1D;box-shadow:0 0 0 0px #FFFFFF, 0 0 0 2px #0A8276}.btn.btn-tertiary:not(:disabled,.disabled):hover{color:#0A8276}.btn.btn-tertiary:not(:disabled,.disabled):active,.btn.btn-tertiary:not(:disabled,.disabled).active{color:#08665C}";const s=r;const a=class{constructor(n){t(this,n);this.target="_self";this.shape="round"}handleClick(t){if(this.disabled){t.stopImmediatePropagation()}}updateIcon(t){this.internalIcon=t}async setFocus(){this.focusableElement.focus()}componentWillLoad(){if(this.shape===""){this.shape="round"}this.internalIcon=this.icon}render(){return n(o,{key:"2ab6931d60697470c7e3bebc06ab238b2383fe0b","aria-disabled":this.disabled,"aria-label":this.ariaLabel},this.href?n("a",{ref:t=>this.focusableElement=t,class:this.getClassNames(),href:!this.disabled?this.href:undefined,target:this.target,rel:this.target==="_blank"?"noopener noreferrer":undefined},n("ifx-icon",{icon:this.internalIcon})):n("button",{class:this.getClassNames(),type:"button",disabled:this.disabled},n("ifx-icon",{icon:this.internalIcon})))}getVariantClass(){return`${this.variant}`==="secondary"?`secondary`:`${this.variant}`==="tertiary"?`tertiary`:`primary`}getSizeClass(){if(`${this.size}`==="xs"){return"xs"}else if(`${this.size}`==="s"){return"s"}else if(`${this.size}`==="l"){return"l"}else return""}getClassNames(){return i("btn icon-button",`btn-${this.shape}`,this.size&&`btn-${this.getSizeClass()}`,`btn-${this.getVariantClass()}`,this.disabled?"disabled":"")}get el(){return e(this)}static get watchers(){return{icon:["updateIcon"]}}};a.style=s;export{a as ifx_icon_button};
2
+ //# sourceMappingURL=p-33a4fd0a.entry.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"names":["iconButtonCss","IfxIconButtonStyle0","IconButton","constructor","hostRef","this","target","shape","handleClick","event","disabled","stopImmediatePropagation","updateIcon","newIcon","internalIcon","setFocus","focusableElement","focus","componentWillLoad","icon","render","h","Host","key","ariaLabel","href","ref","el","class","getClassNames","undefined","rel","type","getVariantClass","variant","getSizeClass","size","classNames"],"sources":["src/components/icon-button/icon-button.scss?tag=ifx-icon-button&encapsulation=shadow","src/components/icon-button/icon-button.tsx"],"sourcesContent":["@use \"~@infineon/design-system-tokens/dist/tokens\";\n\n:host {\n display: inline-flex;\n}\n\n.btn {\n box-sizing: border-box;\n display: inline-flex;\n align-items: center;\n justify-content: center;\n min-height: tokens.$ifxSize500;\n padding: 8px;\n gap: tokens.$ifxSpace100;\n color: tokens.$ifxColorBaseWhite;\n flex-direction: row;\n font-weight: tokens.$ifxFontWeightSemibold;\n border-radius: tokens.$ifxBorderRadius12;\n line-height: tokens.$ifxLineHeightM;\n outline: none;\n font-family: var(--ifx-font-family); // tokens.$ifxFontFamilyBody;\n\n\n text-decoration: none;\n user-select: none;\n border: 1px solid rgba(0, 0, 0, 0);\n font-size: tokens.$ifxFontSizeM;\n transition: color .15s ease-in-out, background-color .15s ease-in-out, border-color .15s ease-in-out, box-shadow .15s ease-in-out;\n}\n\n.btn:not(.disabled) {\n cursor: pointer;\n}\n\n.btn-primary {\n color: tokens.$ifxColorBaseWhite;\n background-color: tokens.$ifxColorOcean500;\n\n &:disabled,\n &.disabled {\n background-color: tokens.$ifxColorEngineering300;\n color: tokens.$ifxColorBaseWhite;\n pointer-events: none;\n\n }\n}\n\n\n.btn-secondary {\n color: tokens.$ifxColorOcean500;\n background-color: tokens.$ifxColorBaseWhite;\n border-color: tokens.$ifxColorOcean500;\n\n &:disabled,\n &.disabled {\n background-color: tokens.$ifxColorBaseWhite;\n border: 1px solid tokens.$ifxColorEngineering300;\n color: tokens.$ifxColorEngineering300;\n pointer-events: none;\n\n }\n}\n\n.btn-tertiary {\n background-color: transparent;\n color: tokens.$ifxColorBaseBlack;\n\n &:disabled,\n &.disabled {\n color: tokens.$ifxColorEngineering300;\n pointer-events: none;\n }\n}\n\n\n.btn {\n\n &.icon-button {\n min-width: initial;\n min-height: initial;\n width: tokens.$ifxSize500;\n height: tokens.$ifxSize500;\n padding: 0;\n justify-content: center;\n\n &.btn-round {\n border-radius: 100px;\n }\n\n &.btn-square {\n border-radius: tokens.$ifxBorderRadius12;\n }\n\n &.btn-s {\n width: tokens.$ifxSize400;\n height: tokens.$ifxSize400;\n padding: 8px;\n }\n\n\n &.btn-l {\n width: tokens.$ifxSize600;\n height: tokens.$ifxSize600;\n padding: 8px;\n }\n }\n\n &.btn-primary:not(:disabled, .disabled) {\n &:focus:not(:active, .active) {\n outline: none;\n box-shadow: 0 0 0 2px tokens.$ifxColorBaseWhite, 0 0 0 4px tokens.$ifxColorOcean500;\n }\n\n &:hover {\n background-color: tokens.$ifxColorOcean600;\n border-color: tokens.$ifxColorOcean600;\n }\n\n &:active,\n &.active {\n background-color: tokens.$ifxColorOcean700;\n border-color: tokens.$ifxColorOcean700;\n }\n }\n\n\n &.btn-secondary:not(:disabled, .disabled) {\n &:focus:not(:active, .active) {\n outline: none;\n box-shadow: 0 0 0 2px tokens.$ifxColorBaseWhite, 0 0 0 4px tokens.$ifxColorOcean500;\n }\n\n &:hover {\n background-color: tokens.$ifxColorOcean600;\n border-color: tokens.$ifxColorOcean600;\n color: tokens.$ifxColorBaseWhite;\n }\n\n &:active,\n &.active {\n background-color: tokens.$ifxColorOcean700;\n border-color: tokens.$ifxColorOcean700;\n }\n }\n\n &.btn-tertiary:not(:disabled, .disabled) {\n &:focus:not(:active, .active) {\n outline: none;\n color: tokens.$ifxColorBaseBlack;\n box-shadow: 0 0 0 0px tokens.$ifxColorBaseWhite, 0 0 0 2px tokens.$ifxColorOcean500;\n }\n\n &:hover {\n color: tokens.$ifxColorOcean500;\n }\n\n &:active,\n &.active {\n color: tokens.$ifxColorOcean600;\n }\n }\n}","import { Component, Prop, h, Host, Method, Element, Listen, Watch, State } from '@stencil/core';\nimport classNames from 'classnames';\n\n@Component({\n tag: 'ifx-icon-button',\n styleUrl: 'icon-button.scss',\n shadow: true,\n})\n\nexport class IconButton {\n @Prop() variant: 'primary' | 'secondary' | 'tertiary';\n @Prop() size: string;\n @Prop() disabled: boolean;\n @Prop() icon: string;\n @Prop() href: string;\n @Prop() target: string = '_self';\n @Prop() shape: string = 'round';\n @Prop() ariaLabel: string | null;\n @State() internalIcon: string;\n @Element() el;\n\n private focusableElement: HTMLElement;\n \n @Listen('click', { capture: true })\n handleClick(event: Event) {\n if (this.disabled) {\n event.stopImmediatePropagation();\n }\n }\n\n @Watch('icon')\n updateIcon(newIcon: string) { \n this.internalIcon = newIcon;\n }\n\n @Method()\n async setFocus() {\n this.focusableElement.focus();\n }\n\n componentWillLoad() {\n if (this.shape === '') {\n this.shape = 'round';\n }\n this.internalIcon = this.icon;\n }\n\n render() {\n return (\n <Host \n aria-disabled={this.disabled}\n aria-label={this.ariaLabel}> \n {this.href ? (\n <a\n ref={(el) => (this.focusableElement = el)}\n class={this.getClassNames()}\n href={!this.disabled ? this.href : undefined} \n target={this.target}\n rel={this.target === '_blank' ? 'noopener noreferrer' : undefined}\n >\n <ifx-icon icon={this.internalIcon}></ifx-icon>\n </a>\n ) : (\n <button\n class={this.getClassNames()}\n type=\"button\"\n disabled={this.disabled}\n >\n <ifx-icon icon={this.internalIcon}></ifx-icon>\n </button>\n )}\n </Host>\n );\n }\n\n getVariantClass() {\n return `${this.variant}` === \"secondary\"\n ? `secondary`\n : `${this.variant}` === 'tertiary'\n ? `tertiary`\n : `primary`;\n }\n\n getSizeClass() {\n if (`${this.size}` === \"xs\") {\n return \"xs\"\n }\n else if (`${this.size}` === \"s\") {\n return \"s\"\n }\n else if (`${this.size}` === \"l\") {\n return \"l\"\n }\n else return \"\";\n }\n\n getClassNames() {\n return classNames(\n 'btn icon-button',\n `btn-${this.shape}`,\n this.size && `btn-${this.getSizeClass()}`,\n `btn-${this.getVariantClass()}`,\n this.disabled ? 'disabled' : ''\n );\n }\n}"],"mappings":"6FAAA,MAAMA,EAAgB,y4EACtB,MAAAC,EAAeD,E,MCQFE,EAAU,MANvB,WAAAC,CAAAC,G,UAYUC,KAAAC,OAAiB,QACjBD,KAAAE,MAAgB,O,CAQxB,WAAAC,CAAYC,GACV,GAAIJ,KAAKK,SAAU,CACjBD,EAAME,0B,EAKV,UAAAC,CAAWC,GACTR,KAAKS,aAAeD,C,CAItB,cAAME,GACJV,KAAKW,iBAAiBC,O,CAGxB,iBAAAC,GACE,GAAIb,KAAKE,QAAU,GAAI,CACrBF,KAAKE,MAAQ,O,CAEfF,KAAKS,aAAeT,KAAKc,I,CAG3B,MAAAC,GACE,OACEC,EAACC,EAAI,CAAAC,IAAA,2DACYlB,KAAKK,SAAQ,aAChBL,KAAKmB,WAChBnB,KAAKoB,KACJJ,EAAA,KACEK,IAAMC,GAAQtB,KAAKW,iBAAmBW,EACtCC,MAAOvB,KAAKwB,gBACZJ,MAAOpB,KAAKK,SAAWL,KAAKoB,KAAOK,UACnCxB,OAAQD,KAAKC,OACbyB,IAAK1B,KAAKC,SAAW,SAAW,sBAAwBwB,WAExDT,EAAA,YAAUF,KAAMd,KAAKS,gBAGvBO,EAAA,UACEO,MAAOvB,KAAKwB,gBACZG,KAAK,SACLtB,SAAUL,KAAKK,UAEfW,EAAA,YAAUF,KAAMd,KAAKS,gB,CAO/B,eAAAmB,GACE,MAAO,GAAG5B,KAAK6B,YAAc,YACzB,YACA,GAAG7B,KAAK6B,YAAc,WACpB,WACA,S,CAGR,YAAAC,GACE,GAAI,GAAG9B,KAAK+B,SAAW,KAAM,CAC3B,MAAO,I,MAEJ,GAAI,GAAG/B,KAAK+B,SAAW,IAAK,CAC/B,MAAO,G,MAEJ,GAAI,GAAG/B,KAAK+B,SAAW,IAAK,CAC/B,MAAO,G,MAEJ,MAAO,E,CAGd,aAAAP,GACE,OAAOQ,EACL,kBACA,OAAOhC,KAAKE,QACZF,KAAK+B,MAAQ,OAAO/B,KAAK8B,iBACzB,OAAO9B,KAAK4B,oBACZ5B,KAAKK,SAAW,WAAa,G","ignoreList":[]}
@@ -1,2 +1,2 @@
1
- import{r as t,c as e,h as i,a as s,g as a}from"./p-b7a462e5.js";const l=":host{display:block;width:100%}.search-container{display:flex;width:calc(100% - 48px);padding-left:24px;padding-right:24px;flex-direction:row;align-items:flex-start;margin-bottom:16px}.components-container{display:flex;width:calc(100% - 48px);padding-left:24px;padding-right:24px;flex-direction:row;align-items:flex-end;align-content:flex-end;flex-wrap:wrap;gap:16px}.filter-slot-wrapper{flex-grow:1;flex-basis:100%;max-width:100%}@media (max-width: 1024px){.more-filters-wrapper{order:3;width:100%;display:flex;justify-content:center;padding-top:16px;}}@media (min-width: 720px) and (max-width: 1024px){.filter-slot-wrapper{flex-basis:calc((100% - 16px) / 2);max-width:calc((100% - 16px) / 2)}}@media (min-width: 1025px){.filter-slot-wrapper{flex-basis:auto;max-width:200px}::slotted([slot=filter-search]){max-width:828px}}::slotted([slot=filter-search]){flex-grow:1;flex-basis:100%;width:100%}";const r=l;const f=class{constructor(i){t(this,i);this.ifxTopbarFilterChange=e(this,"ifxTopbarFilterChange",7);this.selectedOptions=[];this.showAllFilters=false;this.maxShownFilters=4;this.showMoreFiltersButton=true;this.handleMoreFiltersClick=()=>{this.showAllFilters=true;this.updateVisibleSlots()};this.handleResetEvent=()=>{var t;const e=(t=this.el.shadowRoot)===null||t===void 0?void 0:t.querySelector('slot[name="filter-search"]');if(e instanceof HTMLSlotElement){const t=e.assignedElements({flatten:true});t.forEach((t=>{const e=t.querySelector("ifx-filter-search");const i=e.shadowRoot.querySelectorAll("ifx-search-field");if(i.length>0){i.forEach((t=>{t.value=""}))}}))}this.selectedOptions=[];this.ifxTopbarFilterChange.emit(this.selectedOptions)};this.handleSearchChange=t=>{this.handleTopbarFilterChange(t)};this.handleFilterSelect=t=>{this.handleTopbarFilterChange(t)};this.handleTopbarFilterChange=t=>{const e=[...this.selectedOptions];if(t.type==="ifxFilterSearchChange"){const{filterName:i,filterValue:s}=t.detail;const a=e.findIndex((t=>t.filterName===i));if(a!==-1){e[a].filterValues=[s]}else{e.push({filterName:i,filterValues:[s],type:"text"})}}else if(t.type==="ifxFilterSelect"){const{filterName:i,filterValues:s,type:a}=t.detail;const l=e.findIndex((t=>t.filterName===i));if(l!==-1){e[l].filterValues=s;e[l].type=a}else{e.push({filterName:i,filterValues:s,type:a})}}this.selectedOptions=e;this.ifxTopbarFilterChange.emit(this.selectedOptions)}}connectedCallback(){this.el.addEventListener("ifxFilterSelect",this.handleTopbarFilterChange);this.el.addEventListener("ifxFilterSearchChange",this.handleSearchChange);window.addEventListener("ifxResetFiltersEvent",this.handleResetEvent)}componentWillUnload(){this.el.removeEventListener("ifxFilterSelect",this.handleTopbarFilterChange);this.el.removeEventListener("ifxFilterSearchChange",this.handleSearchChange);window.removeEventListener("ifxResetFiltersEvent",this.handleResetEvent)}componentDidLoad(){this.updateVisibleSlots()}updateVisibleSlots(){this.visibleSlots=this.showAllFilters?Number.MAX_SAFE_INTEGER:this.maxShownFilters}render(){const t=Math.max(0,this.visibleSlots);const e=this.el.querySelectorAll("ifx-set-filter").length;const a=Math.min(t,e,Number.MAX_SAFE_INTEGER);const l=Array.from({length:a},((t,e)=>i("div",{class:"filter-slot-wrapper"},i("slot",{name:`filter-component-${e+1}`}))));return i(s,{key:"7b2cb9b7074cd66edfe0c31ef19e18f72252e569"},i("div",{key:"fabc0fa624802d65510c4bff239f4d83bb23f520",class:"search-container"},i("slot",{key:"2a990d12a8e17c1c7a5db629b2fa050ca55b65d1",name:"filter-search"})," "),i("div",{key:"874b0e25ca8aa4465d49ebe6db00116843127242",class:"components-container"},l.length>0?l:i("slot",{name:"filter-component"}),this.showMoreFiltersButton&&!this.showAllFilters&&i("div",{key:"fe500afb7ff3ab37d8a20ccf781499501bd3b70f",class:"more-filters-wrapper",onClick:this.handleMoreFiltersClick},i("ifx-button",{key:"7d1ddf8679f50e87488cc62dd01d6571ec203a5a",type:"button",disabled:false,variant:"tertiary",size:"m",target:"_blank",theme:"default","full-width":"false"},i("ifx-icon",{key:"dfb8ae890ccb73b8635d041a5cd5344d198c647f",icon:"filter-16"}),"More filters"))))}get el(){return a(this)}};f.style=r;export{f as ifx_filter_bar};
2
- //# sourceMappingURL=p-a9cfb70d.entry.js.map
1
+ import{r as t,c as e,h as i,a as s,g as a}from"./p-b7a462e5.js";const l=":host{display:block;width:100%}.search-container{display:flex;width:calc(100% - 48px);padding-left:24px;padding-right:24px;flex-direction:row;align-items:flex-start;margin-bottom:16px}.components-container{display:flex;width:calc(100% - 48px);padding-left:24px;padding-right:24px;flex-direction:row;align-items:flex-end;align-content:flex-end;flex-wrap:wrap;gap:16px}.filter-slot-wrapper{flex-grow:1;flex-basis:100%;max-width:100%}@media (max-width: 1024px){.more-filters-wrapper{order:3;width:100%;display:flex;justify-content:center;padding-top:16px;}}@media (min-width: 720px) and (max-width: 1024px){.filter-slot-wrapper{flex-basis:calc((100% - 16px) / 2);max-width:calc((100% - 16px) / 2)}}@media (min-width: 1025px){.filter-slot-wrapper{flex-basis:auto;max-width:200px}::slotted([slot=filter-search]){max-width:828px}}::slotted([slot=filter-search]){flex-grow:1;flex-basis:100%;width:100%}";const r=l;const c=class{constructor(i){t(this,i);this.ifxTopbarFilterChange=e(this,"ifxTopbarFilterChange",7);this.selectedOptions=[];this.showAllFilters=false;this.maxShownFilters=4;this.showMoreFiltersButton=true;this.handleMoreFiltersClick=()=>{this.showAllFilters=true;this.updateVisibleSlots()};this.handleResetEvent=()=>{var t;const e=(t=this.el.shadowRoot)===null||t===void 0?void 0:t.querySelector('slot[name="filter-search"]');if(e instanceof HTMLSlotElement){const t=e.assignedElements({flatten:true});t.forEach((t=>{const e=t.querySelector("ifx-filter-search");const i=e.shadowRoot.querySelectorAll("ifx-search-field");if(i.length>0){i.forEach((t=>{t.value=""}))}}))}this.selectedOptions=[];this.ifxTopbarFilterChange.emit(this.selectedOptions)};this.handleSearchChange=t=>{this.handleTopbarFilterChange(t)};this.handleFilterSelect=t=>{this.handleTopbarFilterChange(t)};this.handleTopbarFilterChange=t=>{const e=[...this.selectedOptions];if(t.type==="ifxFilterSearchChange"){const{filterName:i,filterValue:s}=t.detail;const a=e.findIndex((t=>t.filterName===i));if(a!==-1){e[a].filterValues=[s]}else{e.push({filterName:i,filterValues:[s],type:"text"})}}else if(t.type==="ifxFilterSelect"){const{filterName:i,filterValues:s,type:a}=t.detail;const l=e.findIndex((t=>t.filterName===i));if(l!==-1){e[l].filterValues=s;e[l].type=a}else{e.push({filterName:i,filterValues:s,type:a})}}this.selectedOptions=e;this.ifxTopbarFilterChange.emit(this.selectedOptions)}}connectedCallback(){this.el.addEventListener("ifxFilterSelect",this.handleTopbarFilterChange);this.el.addEventListener("ifxFilterSearchChange",this.handleSearchChange);window.addEventListener("ifxResetFiltersEvent",this.handleResetEvent)}componentWillUnload(){this.el.removeEventListener("ifxFilterSelect",this.handleTopbarFilterChange);this.el.removeEventListener("ifxFilterSearchChange",this.handleSearchChange);window.removeEventListener("ifxResetFiltersEvent",this.handleResetEvent)}componentDidLoad(){this.updateVisibleSlots()}updateVisibleSlots(){this.visibleSlots=this.showAllFilters?Number.MAX_SAFE_INTEGER:this.maxShownFilters}render(){const t=Math.max(0,this.visibleSlots);const e=this.el.querySelectorAll("ifx-set-filter").length;const a=Math.min(t,e,Number.MAX_SAFE_INTEGER);const l=Array.from({length:a},((t,e)=>i("div",{class:"filter-slot-wrapper"},i("slot",{name:`filter-component-${e+1}`}))));return i(s,{key:"883d2316936a342059ab9009149ac8ce2ed877b2"},i("div",{key:"24e0f7e2dde9ff7ddccf19e03e075b24807ec9d4",class:"search-container"},i("slot",{key:"10bcfd474cfd9286d3e57e19d110bea6311c4297",name:"filter-search"})," "),i("div",{key:"3aa8a6c4fb666ff47c7868333c2c494d6cb7bd90",class:"components-container"},l.length>0?l:i("slot",{name:"filter-component"}),this.showMoreFiltersButton&&!this.showAllFilters&&i("div",{key:"1b87cf569495c351b639bc88d714dd195bd943b0",class:"more-filters-wrapper",onClick:this.handleMoreFiltersClick},i("ifx-button",{key:"9f8073be95597553d1aa4eaccd19fc534ce3f9c6",type:"button",disabled:false,variant:"tertiary",size:"m",target:"_blank",theme:"default","full-width":"false"},i("ifx-icon",{key:"157558f67217a770963b16ca3f6b3a5cc8ed191c",icon:"filter-16"}),"More filters"))))}get el(){return a(this)}};c.style=r;export{c as ifx_filter_bar};
2
+ //# sourceMappingURL=p-36dcebde.entry.js.map