@infineon/infineon-design-system-stencil 31.0.0--canary.1640.26c4c0764d79109b3335389182db63edca37148d.0 → 31.0.0--canary.1697.223df0ff1431a5398fd1261ed013c9dd2a89e7a0.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 (520) hide show
  1. package/dist/cjs/ifx-accordion_2.cjs.entry.js +7 -7
  2. package/dist/cjs/ifx-accordion_2.cjs.entry.js.map +1 -1
  3. package/dist/cjs/ifx-basic-table.cjs.entry.js +1 -1
  4. package/dist/cjs/ifx-breadcrumb-item-label.cjs.entry.js +1 -1
  5. package/dist/cjs/ifx-breadcrumb-item-label.cjs.entry.js.map +1 -1
  6. package/dist/cjs/ifx-breadcrumb.cjs.entry.js +3 -3
  7. package/dist/cjs/ifx-breadcrumb.cjs.entry.js.map +1 -1
  8. package/dist/cjs/ifx-chip_3.cjs.entry.js +27 -25
  9. package/dist/cjs/ifx-chip_3.cjs.entry.js.map +1 -1
  10. package/dist/cjs/ifx-faq.cjs.entry.js +1 -1
  11. package/dist/cjs/ifx-filter-accordion.cjs.entry.js +2 -2
  12. package/dist/cjs/ifx-filter-bar.cjs.entry.js +1 -1
  13. package/dist/cjs/ifx-filter-search.cjs.entry.js +1 -1
  14. package/dist/cjs/ifx-filter-type-group.cjs.entry.js +1 -1
  15. package/dist/cjs/ifx-icons-preview.cjs.entry.js +2 -2
  16. package/dist/cjs/ifx-icons-preview.cjs.entry.js.map +1 -1
  17. package/dist/cjs/ifx-link.cjs.entry.js +1 -1
  18. package/dist/cjs/ifx-list-entry.cjs.entry.js +1 -1
  19. package/dist/cjs/ifx-modal.cjs.entry.js +8 -8
  20. package/dist/cjs/ifx-modal.cjs.entry.js.map +1 -1
  21. package/dist/cjs/ifx-multiselect_2.cjs.entry.js +8 -8
  22. package/dist/cjs/ifx-multiselect_2.cjs.entry.js.map +1 -1
  23. package/dist/cjs/ifx-navbar-item.cjs.entry.js +2 -2
  24. package/dist/cjs/ifx-navbar-profile.cjs.entry.js +3 -3
  25. package/dist/cjs/ifx-navbar.cjs.entry.js +3 -3
  26. package/dist/cjs/ifx-navbar.cjs.entry.js.map +1 -1
  27. package/dist/cjs/ifx-notification.cjs.entry.js +2 -2
  28. package/dist/cjs/ifx-number-indicator.cjs.entry.js +1 -1
  29. package/dist/cjs/ifx-overview-table.cjs.entry.js +1 -1
  30. package/dist/cjs/ifx-overview-table.cjs.entry.js.map +1 -1
  31. package/dist/cjs/ifx-progress-bar.cjs.entry.js +1 -1
  32. package/dist/cjs/ifx-radio-button.cjs.entry.js +2 -2
  33. package/dist/cjs/ifx-search-bar.cjs.entry.js +5 -5
  34. package/dist/cjs/ifx-search-bar.cjs.entry.js.map +1 -1
  35. package/dist/cjs/ifx-search-field.cjs.entry.js +1 -1
  36. package/dist/cjs/ifx-segment.cjs.entry.js +1 -1
  37. package/dist/cjs/ifx-segmented-control.cjs.entry.js +2 -2
  38. package/dist/cjs/ifx-select.cjs.entry.js +2 -2
  39. package/dist/cjs/ifx-sidebar-item.cjs.entry.js +10 -10
  40. package/dist/cjs/ifx-sidebar-item.cjs.entry.js.map +1 -1
  41. package/dist/cjs/ifx-sidebar-title.cjs.entry.js +1 -1
  42. package/dist/cjs/ifx-sidebar.cjs.entry.js +5 -5
  43. package/dist/cjs/ifx-slider.cjs.entry.js +2 -2
  44. package/dist/cjs/ifx-spinner.cjs.entry.js +2 -2
  45. package/dist/cjs/ifx-status.cjs.entry.js +1 -1
  46. package/dist/cjs/ifx-step.cjs.entry.js +4 -4
  47. package/dist/cjs/ifx-stepper.cjs.entry.js +2 -2
  48. package/dist/cjs/ifx-switch.cjs.entry.js +1 -1
  49. package/dist/cjs/ifx-tab.cjs.entry.js +1 -1
  50. package/dist/cjs/ifx-table.cjs.entry.js +20 -22
  51. package/dist/cjs/ifx-table.cjs.entry.js.map +1 -1
  52. package/dist/cjs/ifx-tabs.cjs.entry.js +6 -6
  53. package/dist/cjs/ifx-tabs.cjs.entry.js.map +1 -1
  54. package/dist/cjs/ifx-tag.cjs.entry.js +1 -1
  55. package/dist/cjs/ifx-textarea.cjs.entry.js +2 -2
  56. package/dist/cjs/ifx-tooltip.cjs.entry.js +4 -4
  57. package/dist/cjs/index-68ed35ac.js +8 -8
  58. package/dist/cjs/infineon-design-system-stencil.cjs.js +1 -1
  59. package/dist/cjs/loader.cjs.js +1 -1
  60. package/dist/collection/components/accordion/accordion.js +2 -2
  61. package/dist/collection/components/accordion/accordion.js.map +1 -1
  62. package/dist/collection/components/accordion/accordion.stories.js +7 -81
  63. package/dist/collection/components/accordion/accordion.stories.js.map +1 -1
  64. package/dist/collection/components/accordion/accordionItem.js +10 -10
  65. package/dist/collection/components/accordion/accordionItem.js.map +1 -1
  66. package/dist/collection/components/alert/alert.stories.js +12 -45
  67. package/dist/collection/components/alert/alert.stories.js.map +1 -1
  68. package/dist/collection/components/badge/badge.stories.js +7 -28
  69. package/dist/collection/components/badge/badge.stories.js.map +1 -1
  70. package/dist/collection/components/breadcrumb/breadcrumb-item-label.js +3 -3
  71. package/dist/collection/components/breadcrumb/breadcrumb-item-label.js.map +1 -1
  72. package/dist/collection/components/breadcrumb/breadcrumb.js +3 -3
  73. package/dist/collection/components/breadcrumb/breadcrumb.js.map +1 -1
  74. package/dist/collection/components/breadcrumb/breadcrumb.stories.js +13 -87
  75. package/dist/collection/components/breadcrumb/breadcrumb.stories.js.map +1 -1
  76. package/dist/collection/components/button/button.stories.js +9 -101
  77. package/dist/collection/components/button/button.stories.js.map +1 -1
  78. package/dist/collection/components/card/card.stories.js +4 -85
  79. package/dist/collection/components/card/card.stories.js.map +1 -1
  80. package/dist/collection/components/checkbox/checkbox.stories.js +14 -72
  81. package/dist/collection/components/checkbox/checkbox.stories.js.map +1 -1
  82. package/dist/collection/components/chip/chip-item/chip-item.js +4 -4
  83. package/dist/collection/components/chip/chip-item/chip-item.js.map +1 -1
  84. package/dist/collection/components/chip/chip.js +15 -15
  85. package/dist/collection/components/chip/chip.js.map +1 -1
  86. package/dist/collection/components/chip/chip.stories.js +26 -21
  87. package/dist/collection/components/chip/chip.stories.js.map +1 -1
  88. package/dist/collection/components/chip/interfaces.js.map +1 -1
  89. package/dist/collection/components/content-switcher/content-switcher.stories.js +3 -65
  90. package/dist/collection/components/content-switcher/content-switcher.stories.js.map +1 -1
  91. package/dist/collection/components/date-picker/date-picker.stories.js +7 -97
  92. package/dist/collection/components/date-picker/date-picker.stories.js.map +1 -1
  93. package/dist/collection/components/dropdown/dropdown.stories.js +64 -222
  94. package/dist/collection/components/dropdown/dropdown.stories.js.map +1 -1
  95. package/dist/collection/components/footer/footer.stories.js +1 -31
  96. package/dist/collection/components/footer/footer.stories.js.map +1 -1
  97. package/dist/collection/components/icon/infineonIconStencil.stories.js +2 -7
  98. package/dist/collection/components/icon/infineonIconStencil.stories.js.map +1 -1
  99. package/dist/collection/components/icon-button/icon-button.stories.js +5 -61
  100. package/dist/collection/components/icon-button/icon-button.stories.js.map +1 -1
  101. package/dist/collection/components/icons-preview/icons-preview.css +4 -0
  102. package/dist/collection/components/icons-preview/icons-preview.js +1 -1
  103. package/dist/collection/components/icons-preview/icons-preview.js.map +1 -1
  104. package/dist/collection/components/link/link.js +1 -1
  105. package/dist/collection/components/link/link.stories.js +4 -53
  106. package/dist/collection/components/link/link.stories.js.map +1 -1
  107. package/dist/collection/components/modal/modal.js +10 -10
  108. package/dist/collection/components/modal/modal.js.map +1 -1
  109. package/dist/collection/components/modal/modal.stories.js +19 -96
  110. package/dist/collection/components/modal/modal.stories.js.map +1 -1
  111. package/dist/collection/components/navigation/navbar/navbar-item.js +2 -2
  112. package/dist/collection/components/navigation/navbar/navbar-profile.js +3 -3
  113. package/dist/collection/components/navigation/navbar/navbar.js +4 -4
  114. package/dist/collection/components/navigation/navbar/navbar.js.map +1 -1
  115. package/dist/collection/components/navigation/navbar/navbar.stories.js +12 -176
  116. package/dist/collection/components/navigation/navbar/navbar.stories.js.map +1 -1
  117. package/dist/collection/components/navigation/sidebar/sidebar-item.js +35 -15
  118. package/dist/collection/components/navigation/sidebar/sidebar-item.js.map +1 -1
  119. package/dist/collection/components/navigation/sidebar/sidebar-title.js +1 -1
  120. package/dist/collection/components/navigation/sidebar/sidebar.js +5 -5
  121. package/dist/collection/components/navigation/sidebar/sidebar.stories.js +19 -184
  122. package/dist/collection/components/navigation/sidebar/sidebar.stories.js.map +1 -1
  123. package/dist/collection/components/notification/notification.js +2 -2
  124. package/dist/collection/components/notification/notification.stories.js +8 -55
  125. package/dist/collection/components/notification/notification.stories.js.map +1 -1
  126. package/dist/collection/components/number-indicator/number-indicator.js +1 -1
  127. package/dist/collection/components/number-indicator/number-indicator.stories.js +0 -19
  128. package/dist/collection/components/number-indicator/number-indicator.stories.js.map +1 -1
  129. package/dist/collection/components/overview-table/overview-table.js +1 -1
  130. package/dist/collection/components/overview-table/overview-table.js.map +1 -1
  131. package/dist/collection/components/pagination/pagination.js +57 -8
  132. package/dist/collection/components/pagination/pagination.js.map +1 -1
  133. package/dist/collection/components/pagination/pagination.stories.js +16 -19
  134. package/dist/collection/components/pagination/pagination.stories.js.map +1 -1
  135. package/dist/collection/components/progress-bar/progress-bar.js +1 -1
  136. package/dist/collection/components/progress-bar/progress-bar.stories.js +8 -31
  137. package/dist/collection/components/progress-bar/progress-bar.stories.js.map +1 -1
  138. package/dist/collection/components/radio-button/radio-button.js +2 -2
  139. package/dist/collection/components/radio-button/radio-button.stories.js +13 -66
  140. package/dist/collection/components/radio-button/radio-button.stories.js.map +1 -1
  141. package/dist/collection/components/search-bar/search-bar.js +6 -6
  142. package/dist/collection/components/search-bar/search-bar.js.map +1 -1
  143. package/dist/collection/components/search-bar/search-bar.stories.js +9 -58
  144. package/dist/collection/components/search-bar/search-bar.stories.js.map +1 -1
  145. package/dist/collection/components/search-field/search-field.js +1 -1
  146. package/dist/collection/components/search-field/search-field.stories.js +8 -54
  147. package/dist/collection/components/search-field/search-field.stories.js.map +1 -1
  148. package/dist/collection/components/segmented-control/segment/segment.js +1 -1
  149. package/dist/collection/components/segmented-control/segmented-control.js +2 -2
  150. package/dist/collection/components/segmented-control/segmented-control.stories.js +10 -1
  151. package/dist/collection/components/segmented-control/segmented-control.stories.js.map +1 -1
  152. package/dist/collection/components/select/multi-select/multiselect.js +5 -5
  153. package/dist/collection/components/select/multi-select/multiselect.js.map +1 -1
  154. package/dist/collection/components/select/multi-select/multiselect.stories.js +5 -131
  155. package/dist/collection/components/select/multi-select/multiselect.stories.js.map +1 -1
  156. package/dist/collection/components/select/single-select/select.js +2 -2
  157. package/dist/collection/components/select/single-select/select.stories.js +26 -83
  158. package/dist/collection/components/select/single-select/select.stories.js.map +1 -1
  159. package/dist/collection/components/slider/slider.js +2 -2
  160. package/dist/collection/components/slider/slider.stories.js +13 -97
  161. package/dist/collection/components/slider/slider.stories.js.map +1 -1
  162. package/dist/collection/components/spinner/spinner.js +2 -2
  163. package/dist/collection/components/spinner/spinner.stories.js +2 -34
  164. package/dist/collection/components/spinner/spinner.stories.js.map +1 -1
  165. package/dist/collection/components/status/status.js +1 -1
  166. package/dist/collection/components/status/status.stories.js +1 -25
  167. package/dist/collection/components/status/status.stories.js.map +1 -1
  168. package/dist/collection/components/stepper/step/step.js +4 -4
  169. package/dist/collection/components/stepper/stepper.js +2 -2
  170. package/dist/collection/components/stepper/stepper.stories.js +25 -54
  171. package/dist/collection/components/stepper/stepper.stories.js.map +1 -1
  172. package/dist/collection/components/switch/switch.js +1 -1
  173. package/dist/collection/components/switch/switch.stories.js +4 -51
  174. package/dist/collection/components/switch/switch.stories.js.map +1 -1
  175. package/dist/collection/components/table-advanced-version/filter-bar/filter-bar.js +1 -1
  176. package/dist/collection/components/table-advanced-version/filter-type-group/filter-accordion/filter-accordion.js +2 -2
  177. package/dist/collection/components/table-advanced-version/filter-type-group/filter-search/filter-search.js +1 -1
  178. package/dist/collection/components/table-advanced-version/filter-type-group/filter-type-group.js +1 -1
  179. package/dist/collection/components/table-advanced-version/list/list-entry/list-entry.js +1 -1
  180. package/dist/collection/components/table-advanced-version/table.js +21 -23
  181. package/dist/collection/components/table-advanced-version/table.js.map +1 -1
  182. package/dist/collection/components/table-advanced-version/table.stories.js +39 -124
  183. package/dist/collection/components/table-advanced-version/table.stories.js.map +1 -1
  184. package/dist/collection/components/table-basic-version/table.js +1 -1
  185. package/dist/collection/components/table-basic-version/table.stories.js +4 -31
  186. package/dist/collection/components/table-basic-version/table.stories.js.map +1 -1
  187. package/dist/collection/components/tabs/tab.js +1 -1
  188. package/dist/collection/components/tabs/tabs.js +7 -7
  189. package/dist/collection/components/tabs/tabs.js.map +1 -1
  190. package/dist/collection/components/tabs/tabs.stories.js +29 -104
  191. package/dist/collection/components/tabs/tabs.stories.js.map +1 -1
  192. package/dist/collection/components/tag/tag.js +1 -1
  193. package/dist/collection/components/tag/tag.stories.js +0 -18
  194. package/dist/collection/components/tag/tag.stories.js.map +1 -1
  195. package/dist/collection/components/text-field/text-field.js +4 -4
  196. package/dist/collection/components/text-field/text-field.stories.js +13 -116
  197. package/dist/collection/components/text-field/text-field.stories.js.map +1 -1
  198. package/dist/collection/components/textarea/textarea.js +2 -2
  199. package/dist/collection/components/textarea/textarea.stories.js +3 -1
  200. package/dist/collection/components/textarea/textarea.stories.js.map +1 -1
  201. package/dist/collection/components/tooltip/tooltip.js +4 -4
  202. package/dist/collection/components/tooltip/tooltip.stories.js +4 -48
  203. package/dist/collection/components/tooltip/tooltip.stories.js.map +1 -1
  204. package/dist/collection/stories/setup-and-installation/faq/faq.js +1 -1
  205. package/dist/components/ifx-accordion-item.js +1 -1
  206. package/dist/components/ifx-accordion.js +1 -1
  207. package/dist/components/ifx-basic-table.js +1 -1
  208. package/dist/components/ifx-breadcrumb-item-label.js +2 -2
  209. package/dist/components/ifx-breadcrumb-item-label.js.map +1 -1
  210. package/dist/components/ifx-breadcrumb.js +3 -3
  211. package/dist/components/ifx-breadcrumb.js.map +1 -1
  212. package/dist/components/ifx-chip-item.js +1 -1
  213. package/dist/components/ifx-chip.js +1 -1
  214. package/dist/components/ifx-faq.js +3 -3
  215. package/dist/components/ifx-filter-accordion.js +3 -3
  216. package/dist/components/ifx-filter-bar.js +1 -1
  217. package/dist/components/ifx-filter-search.js +2 -2
  218. package/dist/components/ifx-filter-type-group.js +1 -1
  219. package/dist/components/ifx-icons-preview.js +16 -4
  220. package/dist/components/ifx-icons-preview.js.map +1 -1
  221. package/dist/components/ifx-link.js +1 -1
  222. package/dist/components/ifx-list-entry.js +2 -2
  223. package/dist/components/ifx-list.js +1 -1
  224. package/dist/components/ifx-modal.js +8 -8
  225. package/dist/components/ifx-modal.js.map +1 -1
  226. package/dist/components/ifx-multiselect.js +1 -1
  227. package/dist/components/ifx-navbar-item.js +2 -2
  228. package/dist/components/ifx-navbar-profile.js +3 -3
  229. package/dist/components/ifx-navbar.js +4 -4
  230. package/dist/components/ifx-navbar.js.map +1 -1
  231. package/dist/components/ifx-notification.js +1 -62
  232. package/dist/components/ifx-notification.js.map +1 -1
  233. package/dist/components/ifx-number-indicator.js +1 -1
  234. package/dist/components/ifx-overview-table.js +3 -3
  235. package/dist/components/ifx-overview-table.js.map +1 -1
  236. package/dist/components/ifx-pagination.js +1 -1
  237. package/dist/components/ifx-progress-bar.js +1 -1
  238. package/dist/components/ifx-radio-button.js +1 -1
  239. package/dist/components/ifx-search-bar.js +6 -6
  240. package/dist/components/ifx-search-bar.js.map +1 -1
  241. package/dist/components/ifx-search-field.js +1 -1
  242. package/dist/components/ifx-segment.js +1 -1
  243. package/dist/components/ifx-segmented-control.js +2 -2
  244. package/dist/components/ifx-select.js +1 -1
  245. package/dist/components/ifx-set-filter.js +3 -3
  246. package/dist/components/ifx-sidebar-item.js +15 -14
  247. package/dist/components/ifx-sidebar-item.js.map +1 -1
  248. package/dist/components/ifx-sidebar-title.js +1 -1
  249. package/dist/components/ifx-sidebar.js +5 -5
  250. package/dist/components/ifx-slider.js +2 -2
  251. package/dist/components/ifx-spinner.js +2 -2
  252. package/dist/components/ifx-status.js +1 -1
  253. package/dist/components/ifx-step.js +4 -4
  254. package/dist/components/ifx-stepper.js +2 -2
  255. package/dist/components/ifx-switch.js +1 -1
  256. package/dist/components/ifx-tab.js +1 -1
  257. package/dist/components/ifx-table.js +26 -28
  258. package/dist/components/ifx-table.js.map +1 -1
  259. package/dist/components/ifx-tabs.js +6 -6
  260. package/dist/components/ifx-tabs.js.map +1 -1
  261. package/dist/components/ifx-tag.js +1 -1
  262. package/dist/components/ifx-text-field.js +1 -1
  263. package/dist/components/ifx-textarea.js +2 -2
  264. package/dist/components/ifx-tooltip.js +4 -4
  265. package/dist/components/{p-6a2ff8f4.js → p-0fce434b.js} +16 -16
  266. package/dist/components/p-0fce434b.js.map +1 -0
  267. package/dist/components/{p-14204f28.js → p-1bb86196.js} +3 -3
  268. package/dist/components/{p-14204f28.js.map → p-1bb86196.js.map} +1 -1
  269. package/dist/components/p-232d5fcd.js +66 -0
  270. package/dist/components/p-232d5fcd.js.map +1 -0
  271. package/dist/components/{p-120f0d27.js → p-654ff7d8.js} +3 -3
  272. package/dist/components/{p-120f0d27.js.map → p-654ff7d8.js.map} +1 -1
  273. package/dist/components/{p-c11e0b18.js → p-9c024a54.js} +2 -2
  274. package/dist/components/{p-c11e0b18.js.map → p-9c024a54.js.map} +1 -1
  275. package/dist/components/{p-7bb46b29.js → p-a0ee8035.js} +3 -3
  276. package/dist/components/{p-7bb46b29.js.map → p-a0ee8035.js.map} +1 -1
  277. package/dist/components/{p-7ff0e531.js → p-a7e5035e.js} +13 -10
  278. package/dist/components/p-a7e5035e.js.map +1 -0
  279. package/dist/components/{p-bb48fe64.js → p-d3904b2f.js} +5 -5
  280. package/dist/components/p-d3904b2f.js.map +1 -0
  281. package/dist/components/{p-6a284649.js → p-e57d6c00.js} +5 -5
  282. package/dist/components/p-e57d6c00.js.map +1 -0
  283. package/dist/components/{p-9961c854.js → p-e8836259.js} +2 -2
  284. package/dist/components/{p-9961c854.js.map → p-e8836259.js.map} +1 -1
  285. package/dist/components/{p-8554cfb9.js → p-ec9d64bf.js} +2 -2
  286. package/dist/components/{p-8554cfb9.js.map → p-ec9d64bf.js.map} +1 -1
  287. package/dist/components/{p-4fff2da8.js → p-f4d50678.js} +5 -5
  288. package/dist/components/{p-4fff2da8.js.map → p-f4d50678.js.map} +1 -1
  289. package/dist/components/{p-a51cb7b6.js → p-ff48962a.js} +8 -8
  290. package/dist/components/{p-a51cb7b6.js.map → p-ff48962a.js.map} +1 -1
  291. package/dist/esm/ifx-accordion_2.entry.js +7 -7
  292. package/dist/esm/ifx-accordion_2.entry.js.map +1 -1
  293. package/dist/esm/ifx-basic-table.entry.js +1 -1
  294. package/dist/esm/ifx-breadcrumb-item-label.entry.js +1 -1
  295. package/dist/esm/ifx-breadcrumb-item-label.entry.js.map +1 -1
  296. package/dist/esm/ifx-breadcrumb.entry.js +3 -3
  297. package/dist/esm/ifx-breadcrumb.entry.js.map +1 -1
  298. package/dist/esm/ifx-chip_3.entry.js +27 -25
  299. package/dist/esm/ifx-chip_3.entry.js.map +1 -1
  300. package/dist/esm/ifx-faq.entry.js +1 -1
  301. package/dist/esm/ifx-filter-accordion.entry.js +2 -2
  302. package/dist/esm/ifx-filter-bar.entry.js +1 -1
  303. package/dist/esm/ifx-filter-search.entry.js +1 -1
  304. package/dist/esm/ifx-filter-type-group.entry.js +1 -1
  305. package/dist/esm/ifx-icons-preview.entry.js +2 -2
  306. package/dist/esm/ifx-icons-preview.entry.js.map +1 -1
  307. package/dist/esm/ifx-link.entry.js +1 -1
  308. package/dist/esm/ifx-list-entry.entry.js +1 -1
  309. package/dist/esm/ifx-modal.entry.js +8 -8
  310. package/dist/esm/ifx-modal.entry.js.map +1 -1
  311. package/dist/esm/ifx-multiselect_2.entry.js +8 -8
  312. package/dist/esm/ifx-multiselect_2.entry.js.map +1 -1
  313. package/dist/esm/ifx-navbar-item.entry.js +2 -2
  314. package/dist/esm/ifx-navbar-profile.entry.js +3 -3
  315. package/dist/esm/ifx-navbar.entry.js +3 -3
  316. package/dist/esm/ifx-navbar.entry.js.map +1 -1
  317. package/dist/esm/ifx-notification.entry.js +2 -2
  318. package/dist/esm/ifx-number-indicator.entry.js +1 -1
  319. package/dist/esm/ifx-overview-table.entry.js +1 -1
  320. package/dist/esm/ifx-overview-table.entry.js.map +1 -1
  321. package/dist/esm/ifx-progress-bar.entry.js +1 -1
  322. package/dist/esm/ifx-radio-button.entry.js +2 -2
  323. package/dist/esm/ifx-search-bar.entry.js +5 -5
  324. package/dist/esm/ifx-search-bar.entry.js.map +1 -1
  325. package/dist/esm/ifx-search-field.entry.js +1 -1
  326. package/dist/esm/ifx-segment.entry.js +1 -1
  327. package/dist/esm/ifx-segmented-control.entry.js +2 -2
  328. package/dist/esm/ifx-select.entry.js +2 -2
  329. package/dist/esm/ifx-sidebar-item.entry.js +10 -10
  330. package/dist/esm/ifx-sidebar-item.entry.js.map +1 -1
  331. package/dist/esm/ifx-sidebar-title.entry.js +1 -1
  332. package/dist/esm/ifx-sidebar.entry.js +5 -5
  333. package/dist/esm/ifx-slider.entry.js +2 -2
  334. package/dist/esm/ifx-spinner.entry.js +2 -2
  335. package/dist/esm/ifx-status.entry.js +1 -1
  336. package/dist/esm/ifx-step.entry.js +4 -4
  337. package/dist/esm/ifx-stepper.entry.js +2 -2
  338. package/dist/esm/ifx-switch.entry.js +1 -1
  339. package/dist/esm/ifx-tab.entry.js +1 -1
  340. package/dist/esm/ifx-table.entry.js +20 -22
  341. package/dist/esm/ifx-table.entry.js.map +1 -1
  342. package/dist/esm/ifx-tabs.entry.js +6 -6
  343. package/dist/esm/ifx-tabs.entry.js.map +1 -1
  344. package/dist/esm/ifx-tag.entry.js +1 -1
  345. package/dist/esm/ifx-textarea.entry.js +2 -2
  346. package/dist/esm/ifx-tooltip.entry.js +4 -4
  347. package/dist/esm/index-f6e95f3d.js +8 -8
  348. package/dist/esm/infineon-design-system-stencil.js +1 -1
  349. package/dist/esm/loader.js +1 -1
  350. package/dist/infineon-design-system-stencil/infineon-design-system-stencil.esm.js +1 -1
  351. package/dist/infineon-design-system-stencil/infineon-design-system-stencil.esm.js.map +1 -1
  352. package/dist/infineon-design-system-stencil/{p-b9746c86.entry.js → p-01a1f6d0.entry.js} +2 -2
  353. package/dist/infineon-design-system-stencil/{p-8b70e2ba.entry.js → p-0b79cb38.entry.js} +2 -2
  354. package/dist/infineon-design-system-stencil/{p-e1715731.entry.js → p-1ad03102.entry.js} +2 -2
  355. package/dist/infineon-design-system-stencil/p-1f004047.entry.js +2 -0
  356. package/dist/infineon-design-system-stencil/p-1f004047.entry.js.map +1 -0
  357. package/dist/infineon-design-system-stencil/{p-784660b3.entry.js → p-1fad8ea5.entry.js} +2 -2
  358. package/dist/infineon-design-system-stencil/{p-0cc70fe1.entry.js → p-21c07ef9.entry.js} +2 -2
  359. package/dist/infineon-design-system-stencil/{p-68dd9fa2.entry.js → p-258c4e35.entry.js} +2 -2
  360. package/dist/infineon-design-system-stencil/p-258c4e35.entry.js.map +1 -0
  361. package/dist/infineon-design-system-stencil/{p-008fe85e.entry.js → p-3384179d.entry.js} +2 -2
  362. package/dist/infineon-design-system-stencil/{p-4fac0ff2.entry.js → p-347a1e85.entry.js} +2 -2
  363. package/dist/infineon-design-system-stencil/{p-7182fd2d.entry.js → p-392f1655.entry.js} +2 -2
  364. package/dist/infineon-design-system-stencil/p-39fb5fb9.entry.js +2 -0
  365. package/dist/infineon-design-system-stencil/p-39fb5fb9.entry.js.map +1 -0
  366. package/dist/infineon-design-system-stencil/{p-a2e48a4e.entry.js → p-407c4329.entry.js} +2 -2
  367. package/dist/infineon-design-system-stencil/{p-589d005a.entry.js → p-4bf95d5b.entry.js} +2 -2
  368. package/dist/infineon-design-system-stencil/{p-9a988a72.entry.js → p-4faad7d7.entry.js} +2 -2
  369. package/dist/infineon-design-system-stencil/p-500bc0ed.entry.js +2 -0
  370. package/dist/infineon-design-system-stencil/{p-3e68969c.entry.js.map → p-500bc0ed.entry.js.map} +1 -1
  371. package/dist/infineon-design-system-stencil/p-53e75622.entry.js +2 -0
  372. package/dist/infineon-design-system-stencil/{p-b39683b7.entry.js → p-5a3c5cce.entry.js} +2 -2
  373. package/dist/infineon-design-system-stencil/p-5acdecf6.entry.js +2 -0
  374. package/dist/infineon-design-system-stencil/p-5acdecf6.entry.js.map +1 -0
  375. package/dist/infineon-design-system-stencil/p-672bcd0b.entry.js +2 -0
  376. package/dist/infineon-design-system-stencil/{p-ee32b31a.entry.js.map → p-672bcd0b.entry.js.map} +1 -1
  377. package/dist/infineon-design-system-stencil/{p-a1120755.entry.js → p-6c18926e.entry.js} +2 -2
  378. package/dist/infineon-design-system-stencil/p-6c18926e.entry.js.map +1 -0
  379. package/dist/infineon-design-system-stencil/p-6c89883f.entry.js +2 -0
  380. package/dist/infineon-design-system-stencil/p-77a8fc5e.entry.js +2 -0
  381. package/dist/infineon-design-system-stencil/p-77a8fc5e.entry.js.map +1 -0
  382. package/dist/infineon-design-system-stencil/{p-ebb196ae.entry.js → p-7a0b2fd1.entry.js} +2 -2
  383. package/dist/infineon-design-system-stencil/{p-2e8a808e.entry.js → p-7cc1beed.entry.js} +2 -2
  384. package/dist/infineon-design-system-stencil/p-7cc1beed.entry.js.map +1 -0
  385. package/dist/infineon-design-system-stencil/{p-07485705.entry.js → p-85468723.entry.js} +2 -2
  386. package/dist/infineon-design-system-stencil/{p-61ddcf0a.entry.js → p-88bd6a1e.entry.js} +2 -2
  387. package/dist/infineon-design-system-stencil/p-8df0dd12.entry.js +2 -0
  388. package/dist/infineon-design-system-stencil/p-8df0dd12.entry.js.map +1 -0
  389. package/dist/infineon-design-system-stencil/{p-94071380.entry.js → p-96e3c31e.entry.js} +2 -2
  390. package/dist/infineon-design-system-stencil/p-98c50956.entry.js +2 -0
  391. package/dist/infineon-design-system-stencil/p-98c50956.entry.js.map +1 -0
  392. package/dist/infineon-design-system-stencil/{p-da97c1b6.entry.js → p-abba423a.entry.js} +2 -2
  393. package/dist/infineon-design-system-stencil/p-b37f692b.entry.js +2 -0
  394. package/dist/infineon-design-system-stencil/{p-cfa7a442.entry.js → p-b3882dc0.entry.js} +2 -2
  395. package/dist/infineon-design-system-stencil/{p-d63b8c2f.entry.js → p-c646ffcc.entry.js} +2 -2
  396. package/dist/infineon-design-system-stencil/p-c6ff49d7.entry.js +2 -0
  397. package/dist/infineon-design-system-stencil/p-c6ff49d7.entry.js.map +1 -0
  398. package/dist/infineon-design-system-stencil/{p-fa25549a.entry.js → p-c7607cbd.entry.js} +2 -2
  399. package/dist/infineon-design-system-stencil/{p-bb527c39.entry.js → p-d2630254.entry.js} +2 -2
  400. package/dist/infineon-design-system-stencil/p-d57b5e31.entry.js +2 -0
  401. package/dist/infineon-design-system-stencil/{p-d3c1397a.entry.js.map → p-d57b5e31.entry.js.map} +1 -1
  402. package/dist/infineon-design-system-stencil/p-d61ab729.entry.js +2 -0
  403. package/dist/infineon-design-system-stencil/p-d61ab729.entry.js.map +1 -0
  404. package/dist/infineon-design-system-stencil/{p-1309d097.entry.js → p-d8cc865a.entry.js} +2 -2
  405. package/dist/infineon-design-system-stencil/{p-a358461c.entry.js → p-f20951d0.entry.js} +2 -2
  406. package/dist/infineon-design-system-stencil/{p-cea7cb98.entry.js → p-f42bc9c8.entry.js} +2 -2
  407. package/dist/infineon-design-system-stencil/p-f63ce1bc.entry.js +2 -0
  408. package/dist/infineon-design-system-stencil/p-f63ce1bc.entry.js.map +1 -0
  409. package/dist/infineon-design-system-stencil/{p-8a160977.entry.js → p-f9bf9346.entry.js} +2 -2
  410. package/dist/types/components/accordion/accordion.stories.d.ts +1 -67
  411. package/dist/types/components/accordion/accordionItem.d.ts +3 -3
  412. package/dist/types/components/alert/alert.stories.d.ts +11 -38
  413. package/dist/types/components/badge/badge.stories.d.ts +3 -23
  414. package/dist/types/components/breadcrumb/breadcrumb-item-label.d.ts +1 -1
  415. package/dist/types/components/breadcrumb/breadcrumb.stories.d.ts +1 -83
  416. package/dist/types/components/button/button.stories.d.ts +16 -92
  417. package/dist/types/components/card/card.stories.d.ts +1 -95
  418. package/dist/types/components/checkbox/checkbox.stories.d.ts +10 -65
  419. package/dist/types/components/chip/chip-item/chip-item.d.ts +1 -1
  420. package/dist/types/components/chip/chip.d.ts +1 -1
  421. package/dist/types/components/chip/chip.stories.d.ts +4 -11
  422. package/dist/types/components/chip/interfaces.d.ts +1 -1
  423. package/dist/types/components/content-switcher/content-switcher.stories.d.ts +0 -66
  424. package/dist/types/components/date-picker/date-picker.stories.d.ts +2 -89
  425. package/dist/types/components/dropdown/dropdown.stories.d.ts +33 -90
  426. package/dist/types/components/footer/footer.stories.d.ts +0 -26
  427. package/dist/types/components/icon/infineonIconStencil.stories.d.ts +0 -5
  428. package/dist/types/components/icon-button/icon-button.stories.d.ts +8 -56
  429. package/dist/types/components/link/link.stories.d.ts +6 -49
  430. package/dist/types/components/modal/modal.d.ts +2 -2
  431. package/dist/types/components/modal/modal.stories.d.ts +3 -77
  432. package/dist/types/components/navigation/navbar/navbar.stories.d.ts +6 -222
  433. package/dist/types/components/navigation/sidebar/sidebar-item.d.ts +4 -3
  434. package/dist/types/components/navigation/sidebar/sidebar.stories.d.ts +7 -161
  435. package/dist/types/components/notification/notification.stories.d.ts +2 -46
  436. package/dist/types/components/number-indicator/number-indicator.stories.d.ts +0 -19
  437. package/dist/types/components/pagination/pagination.d.ts +4 -1
  438. package/dist/types/components/pagination/pagination.stories.d.ts +8 -12
  439. package/dist/types/components/progress-bar/progress-bar.stories.d.ts +4 -25
  440. package/dist/types/components/radio-button/radio-button.stories.d.ts +8 -59
  441. package/dist/types/components/search-bar/search-bar.d.ts +1 -1
  442. package/dist/types/components/search-bar/search-bar.stories.d.ts +3 -60
  443. package/dist/types/components/search-field/search-field.stories.d.ts +6 -45
  444. package/dist/types/components/segmented-control/segmented-control.stories.d.ts +3 -0
  445. package/dist/types/components/select/multi-select/multiselect.d.ts +1 -1
  446. package/dist/types/components/select/multi-select/multiselect.stories.d.ts +0 -125
  447. package/dist/types/components/select/single-select/select.stories.d.ts +24 -67
  448. package/dist/types/components/slider/slider.stories.d.ts +0 -110
  449. package/dist/types/components/spinner/spinner.stories.d.ts +0 -32
  450. package/dist/types/components/status/status.stories.d.ts +2 -24
  451. package/dist/types/components/stepper/stepper.stories.d.ts +6 -30
  452. package/dist/types/components/switch/switch.stories.d.ts +1 -47
  453. package/dist/types/components/table-advanced-version/table.stories.d.ts +11 -50
  454. package/dist/types/components/table-basic-version/table.stories.d.ts +1 -21
  455. package/dist/types/components/tabs/tabs.d.ts +1 -1
  456. package/dist/types/components/tabs/tabs.stories.d.ts +9 -88
  457. package/dist/types/components/tag/tag.stories.d.ts +0 -20
  458. package/dist/types/components/text-field/text-field.stories.d.ts +10 -106
  459. package/dist/types/components/tooltip/tooltip.stories.d.ts +6 -41
  460. package/dist/types/components.d.ts +30 -22
  461. package/package.json +2 -3
  462. package/dist/components/p-6a284649.js.map +0 -1
  463. package/dist/components/p-6a2ff8f4.js.map +0 -1
  464. package/dist/components/p-7ff0e531.js.map +0 -1
  465. package/dist/components/p-bb48fe64.js.map +0 -1
  466. package/dist/infineon-design-system-stencil/p-0a03645f.entry.js +0 -2
  467. package/dist/infineon-design-system-stencil/p-0a03645f.entry.js.map +0 -1
  468. package/dist/infineon-design-system-stencil/p-10456581.entry.js +0 -2
  469. package/dist/infineon-design-system-stencil/p-2e8a808e.entry.js.map +0 -1
  470. package/dist/infineon-design-system-stencil/p-37012b21.entry.js +0 -2
  471. package/dist/infineon-design-system-stencil/p-37012b21.entry.js.map +0 -1
  472. package/dist/infineon-design-system-stencil/p-37e44a68.entry.js +0 -2
  473. package/dist/infineon-design-system-stencil/p-37e44a68.entry.js.map +0 -1
  474. package/dist/infineon-design-system-stencil/p-3a33daaf.entry.js +0 -2
  475. package/dist/infineon-design-system-stencil/p-3a33daaf.entry.js.map +0 -1
  476. package/dist/infineon-design-system-stencil/p-3e68969c.entry.js +0 -2
  477. package/dist/infineon-design-system-stencil/p-68dd9fa2.entry.js.map +0 -1
  478. package/dist/infineon-design-system-stencil/p-71c8cb23.entry.js +0 -2
  479. package/dist/infineon-design-system-stencil/p-8787e63b.entry.js +0 -2
  480. package/dist/infineon-design-system-stencil/p-8787e63b.entry.js.map +0 -1
  481. package/dist/infineon-design-system-stencil/p-97fae74e.entry.js +0 -2
  482. package/dist/infineon-design-system-stencil/p-97fae74e.entry.js.map +0 -1
  483. package/dist/infineon-design-system-stencil/p-a1120755.entry.js.map +0 -1
  484. package/dist/infineon-design-system-stencil/p-cdac9833.entry.js +0 -2
  485. package/dist/infineon-design-system-stencil/p-d3c1397a.entry.js +0 -2
  486. package/dist/infineon-design-system-stencil/p-dbc69097.entry.js +0 -2
  487. package/dist/infineon-design-system-stencil/p-dbc69097.entry.js.map +0 -1
  488. package/dist/infineon-design-system-stencil/p-e8b6810f.entry.js +0 -2
  489. package/dist/infineon-design-system-stencil/p-e8b6810f.entry.js.map +0 -1
  490. package/dist/infineon-design-system-stencil/p-ee32b31a.entry.js +0 -2
  491. package/dist/infineon-design-system-stencil/p-fe702bb0.entry.js +0 -2
  492. package/dist/infineon-design-system-stencil/p-fe702bb0.entry.js.map +0 -1
  493. /package/dist/infineon-design-system-stencil/{p-b9746c86.entry.js.map → p-01a1f6d0.entry.js.map} +0 -0
  494. /package/dist/infineon-design-system-stencil/{p-8b70e2ba.entry.js.map → p-0b79cb38.entry.js.map} +0 -0
  495. /package/dist/infineon-design-system-stencil/{p-e1715731.entry.js.map → p-1ad03102.entry.js.map} +0 -0
  496. /package/dist/infineon-design-system-stencil/{p-784660b3.entry.js.map → p-1fad8ea5.entry.js.map} +0 -0
  497. /package/dist/infineon-design-system-stencil/{p-0cc70fe1.entry.js.map → p-21c07ef9.entry.js.map} +0 -0
  498. /package/dist/infineon-design-system-stencil/{p-008fe85e.entry.js.map → p-3384179d.entry.js.map} +0 -0
  499. /package/dist/infineon-design-system-stencil/{p-4fac0ff2.entry.js.map → p-347a1e85.entry.js.map} +0 -0
  500. /package/dist/infineon-design-system-stencil/{p-7182fd2d.entry.js.map → p-392f1655.entry.js.map} +0 -0
  501. /package/dist/infineon-design-system-stencil/{p-a2e48a4e.entry.js.map → p-407c4329.entry.js.map} +0 -0
  502. /package/dist/infineon-design-system-stencil/{p-589d005a.entry.js.map → p-4bf95d5b.entry.js.map} +0 -0
  503. /package/dist/infineon-design-system-stencil/{p-9a988a72.entry.js.map → p-4faad7d7.entry.js.map} +0 -0
  504. /package/dist/infineon-design-system-stencil/{p-cdac9833.entry.js.map → p-53e75622.entry.js.map} +0 -0
  505. /package/dist/infineon-design-system-stencil/{p-b39683b7.entry.js.map → p-5a3c5cce.entry.js.map} +0 -0
  506. /package/dist/infineon-design-system-stencil/{p-10456581.entry.js.map → p-6c89883f.entry.js.map} +0 -0
  507. /package/dist/infineon-design-system-stencil/{p-ebb196ae.entry.js.map → p-7a0b2fd1.entry.js.map} +0 -0
  508. /package/dist/infineon-design-system-stencil/{p-07485705.entry.js.map → p-85468723.entry.js.map} +0 -0
  509. /package/dist/infineon-design-system-stencil/{p-61ddcf0a.entry.js.map → p-88bd6a1e.entry.js.map} +0 -0
  510. /package/dist/infineon-design-system-stencil/{p-94071380.entry.js.map → p-96e3c31e.entry.js.map} +0 -0
  511. /package/dist/infineon-design-system-stencil/{p-da97c1b6.entry.js.map → p-abba423a.entry.js.map} +0 -0
  512. /package/dist/infineon-design-system-stencil/{p-71c8cb23.entry.js.map → p-b37f692b.entry.js.map} +0 -0
  513. /package/dist/infineon-design-system-stencil/{p-cfa7a442.entry.js.map → p-b3882dc0.entry.js.map} +0 -0
  514. /package/dist/infineon-design-system-stencil/{p-d63b8c2f.entry.js.map → p-c646ffcc.entry.js.map} +0 -0
  515. /package/dist/infineon-design-system-stencil/{p-fa25549a.entry.js.map → p-c7607cbd.entry.js.map} +0 -0
  516. /package/dist/infineon-design-system-stencil/{p-bb527c39.entry.js.map → p-d2630254.entry.js.map} +0 -0
  517. /package/dist/infineon-design-system-stencil/{p-1309d097.entry.js.map → p-d8cc865a.entry.js.map} +0 -0
  518. /package/dist/infineon-design-system-stencil/{p-a358461c.entry.js.map → p-f20951d0.entry.js.map} +0 -0
  519. /package/dist/infineon-design-system-stencil/{p-cea7cb98.entry.js.map → p-f42bc9c8.entry.js.map} +0 -0
  520. /package/dist/infineon-design-system-stencil/{p-8a160977.entry.js.map → p-f9bf9346.entry.js.map} +0 -0
@@ -5,82 +5,33 @@ export default {
5
5
  args: {
6
6
  disabled: false,
7
7
  isOpen: true,
8
- value: '',
9
8
  },
10
9
  argTypes: {
11
- isOpen: {
12
- description: 'Controls the display of the search bar.',
13
- control: { type: 'boolean' },
14
- table: {
15
- defaultValue: { summary: 'true' },
16
- category: 'ifx-search-bar props',
17
- type: {
18
- summary: 'boolean',
19
- },
20
- },
21
- },
22
- disabled: {
23
- description: 'Disables the search bar.',
24
- control: { type: 'boolean' },
25
- table: {
26
- defaultValue: { summary: 'false' },
27
- category: 'ifx-search-bar props',
28
- type: {
29
- summary: 'boolean',
30
- },
31
- },
32
- },
33
- value: {
34
- description: 'The value is used to handle the search bar input.',
35
- control: { type: 'text' },
36
- table: {
37
- category: 'ifx-search-bar props',
38
- type: {
39
- summary: 'string',
40
- },
41
- },
10
+ ifxInput: {
11
+ action: 'ifxInput',
12
+ description: 'Custom event emitted on input\n\n(see below for Two Way Data Binding in different JS frameworks)',
42
13
  },
43
14
  maxlength: {
44
- description: 'Maximum input length.',
45
- control: { type: 'number' },
46
- table: {
47
- category: 'ifx-search-bar props',
48
- type: {
49
- summary: 'number',
50
- },
51
- },
15
+ description: 'Maximum input length',
16
+ control: { type: 'number' }
52
17
  },
53
- ifxInput: {
18
+ ifxSearchBarIsOpen: {
54
19
  action: 'ifxInput',
55
- description: 'Custom event emitted on input.',
56
- table: {
57
- category: 'custom events',
58
- type: {
59
- summary: 'Framework integration',
60
- detail: `React: onIfxInput={handleInput}\nVue:@ifxInput="handleInput"\nAngular:(ifxInput)="handleInput()"\nVanillaJs:.addEventListener("ifxInput", (event) => {//handle input});`,
61
- }
62
- }
63
- },
64
- ifxOpen: {
65
- action: 'ifxOpen',
66
- description: 'Custom event emitted when the state of *isOpen* changes.',
20
+ description: 'Custom event',
67
21
  table: {
68
- category: 'custom events',
69
22
  type: {
70
23
  summary: 'Framework integration',
71
- detail: `React: onIfxOpen={handleOpen}\nVue:@ifxOpen="handleOpen"\nAngular:(ifxOpen)="handleOpen()"\nVanillaJs:.addEventListener("ifxOpen", (event) => {//handle open});`,
24
+ detail: 'React: onIfxInput={handleInput}\nVue:@ifxInput="handleInput"\nAngular:(ifxInput)="handleInput()"\nVanillaJs:.addEventListener("ifxInput", (event) => {//handle input});',
72
25
  },
73
26
  },
74
27
  },
75
28
  },
76
29
  };
77
- const DefaultTemplate = ({ isOpen, disabled, maxlength, value }) => {
30
+ const DefaultTemplate = ({ isOpen, disabled, maxlength }) => {
78
31
  const element = document.createElement('ifx-search-bar');
79
32
  element.setAttribute('is-open', isOpen);
80
33
  element.setAttribute('disabled', disabled);
81
- element.setAttribute('value', value);
82
34
  element.addEventListener('ifxInput', action('ifxInput'));
83
- element.addEventListener('ifxOpen', action('ifxOpen'));
84
35
  if (maxlength != undefined)
85
36
  element.setAttribute('maxlength', maxlength);
86
37
  return element;
@@ -1 +1 @@
1
- {"version":3,"file":"search-bar.stories.js","sourceRoot":"","sources":["../../../src/components/search-bar/search-bar.stories.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,EAAE,MAAM,0BAA0B,CAAC;AAElD,eAAe;IACb,KAAK,EAAE,uBAAuB;IAC9B,sBAAsB;IAEtB,IAAI,EAAE;QACJ,QAAQ,EAAE,KAAK;QACf,MAAM,EAAE,IAAI;QACZ,KAAK,EAAE,EAAE;KACV;IAED,QAAQ,EAAE;QACR,MAAM,EAAE;YACN,WAAW,EAAE,yCAAyC;YACtD,OAAO,EAAE,EAAE,IAAI,EAAE,SAAS,EAAE;YAC5B,KAAK,EAAE;gBACL,YAAY,EAAE,EAAE,OAAO,EAAE,MAAM,EAAE;gBACjC,QAAQ,EAAE,sBAAsB;gBAChC,IAAI,EAAE;oBACJ,OAAO,EAAE,SAAS;iBACnB;aACF;SACF;QACD,QAAQ,EAAE;YACR,WAAW,EAAE,0BAA0B;YACvC,OAAO,EAAE,EAAE,IAAI,EAAE,SAAS,EAAE;YAC5B,KAAK,EAAE;gBACL,YAAY,EAAE,EAAE,OAAO,EAAE,OAAO,EAAE;gBAClC,QAAQ,EAAE,sBAAsB;gBAChC,IAAI,EAAE;oBACJ,OAAO,EAAE,SAAS;iBACnB;aACF;SACF;QACD,KAAK,EAAE;YACL,WAAW,EAAE,mDAAmD;YAChE,OAAO,EAAE,EAAE,IAAI,EAAE,MAAM,EAAE;YACzB,KAAK,EACL;gBACE,QAAQ,EAAE,sBAAsB;gBAChC,IAAI,EAAE;oBACJ,OAAO,EAAE,QAAQ;iBAClB;aACF;SACF;QACD,SAAS,EAAE;YACT,WAAW,EAAE,uBAAuB;YACpC,OAAO,EAAE,EAAE,IAAI,EAAE,QAAQ,EAAE;YAC3B,KAAK,EACL;gBACE,QAAQ,EAAE,sBAAsB;gBAChC,IAAI,EAAE;oBACJ,OAAO,EAAE,QAAQ;iBAClB;aACF;SACF;QACD,QAAQ,EAAE;YACR,MAAM,EAAE,UAAU;YAClB,WAAW,EAAE,gCAAgC;YAC7C,KAAK,EAAE;gBACL,QAAQ,EAAE,eAAe;gBACzB,IAAI,EAAE;oBACJ,OAAO,EAAE,uBAAuB;oBAChC,MAAM,EAAE,yKAAyK;iBAClL;aACF;SACF;QACD,OAAO,EAAE;YACP,MAAM,EAAE,SAAS;YACjB,WAAW,EAAE,0DAA0D;YACvE,KAAK,EAAE;gBACL,QAAQ,EAAE,eAAe;gBACzB,IAAI,EAAE;oBACJ,OAAO,EAAE,uBAAuB;oBAChC,MAAM,EACJ,iKAAiK;iBACpK;aACF;SACF;KACF;CACF,CAAC;AAEF,MAAM,eAAe,GAAG,CAAC,EAAE,MAAM,EAAE,QAAQ,EAAE,SAAS,EAAE,KAAK,EAAE,EAAE,EAAE;IACjE,MAAM,OAAO,GAAG,QAAQ,CAAC,aAAa,CAAC,gBAAgB,CAAC,CAAC;IACzD,OAAO,CAAC,YAAY,CAAC,SAAS,EAAE,MAAM,CAAC,CAAC;IACxC,OAAO,CAAC,YAAY,CAAC,UAAU,EAAE,QAAQ,CAAC,CAAC;IAC3C,OAAO,CAAC,YAAY,CAAC,OAAO,EAAE,KAAK,CAAC,CAAC;IACrC,OAAO,CAAC,gBAAgB,CAAC,UAAU,EAAE,MAAM,CAAC,UAAU,CAAC,CAAC,CAAC;IACzD,OAAO,CAAC,gBAAgB,CAAC,SAAS,EAAE,MAAM,CAAC,SAAS,CAAC,CAAC,CAAC;IAEvD,IAAI,SAAS,IAAI,SAAS;QAAE,OAAO,CAAC,YAAY,CAAC,WAAW,EAAE,SAAS,CAAC,CAAC;IAEzE,OAAO,OAAO,CAAC;AACjB,CAAC,CAAC;AAEF,MAAM,CAAC,MAAM,OAAO,GAAG,eAAe,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;AAChD,OAAO,CAAC,IAAI,GAAG,EAAE,CAAC","sourcesContent":["import { action } from '@storybook/addon-actions';\n\nexport default {\n title: 'Components/Search Bar',\n // tags: ['autodocs'],\n\n args: {\n disabled: false,\n isOpen: true,\n value: '',\n },\n\n argTypes: {\n isOpen: {\n description: 'Controls the display of the search bar.',\n control: { type: 'boolean' },\n table: {\n defaultValue: { summary: 'true' },\n category: 'ifx-search-bar props',\n type: {\n summary: 'boolean',\n },\n },\n },\n disabled: {\n description: 'Disables the search bar.',\n control: { type: 'boolean' },\n table: {\n defaultValue: { summary: 'false' },\n category: 'ifx-search-bar props',\n type: {\n summary: 'boolean',\n },\n },\n },\n value: {\n description: 'The value is used to handle the search bar input.',\n control: { type: 'text' },\n table:\n {\n category: 'ifx-search-bar props',\n type: {\n summary: 'string',\n },\n },\n },\n maxlength: {\n description: 'Maximum input length.',\n control: { type: 'number' },\n table:\n {\n category: 'ifx-search-bar props',\n type: {\n summary: 'number',\n },\n },\n },\n ifxInput: {\n action: 'ifxInput',\n description: 'Custom event emitted on input.',\n table: {\n category: 'custom events',\n type: {\n summary: 'Framework integration',\n detail: `React: onIfxInput={handleInput}\\nVue:@ifxInput=\"handleInput\"\\nAngular:(ifxInput)=\"handleInput()\"\\nVanillaJs:.addEventListener(\"ifxInput\", (event) => {//handle input});`,\n }\n }\n },\n ifxOpen: {\n action: 'ifxOpen',\n description: 'Custom event emitted when the state of *isOpen* changes.',\n table: {\n category: 'custom events',\n type: {\n summary: 'Framework integration',\n detail:\n `React: onIfxOpen={handleOpen}\\nVue:@ifxOpen=\"handleOpen\"\\nAngular:(ifxOpen)=\"handleOpen()\"\\nVanillaJs:.addEventListener(\"ifxOpen\", (event) => {//handle open});`,\n },\n },\n },\n },\n};\n\nconst DefaultTemplate = ({ isOpen, disabled, maxlength, value }) => {\n const element = document.createElement('ifx-search-bar');\n element.setAttribute('is-open', isOpen);\n element.setAttribute('disabled', disabled);\n element.setAttribute('value', value);\n element.addEventListener('ifxInput', action('ifxInput'));\n element.addEventListener('ifxOpen', action('ifxOpen'));\n\n if (maxlength != undefined) element.setAttribute('maxlength', maxlength);\n\n return element;\n};\n\nexport const Default = DefaultTemplate.bind({});\nDefault.args = {};\n"]}
1
+ {"version":3,"file":"search-bar.stories.js","sourceRoot":"","sources":["../../../src/components/search-bar/search-bar.stories.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,EAAE,MAAM,0BAA0B,CAAC;AAElD,eAAe;IACb,KAAK,EAAE,uBAAuB;IAC9B,sBAAsB;IAEtB,IAAI,EAAE;QACJ,QAAQ,EAAE,KAAK;QACf,MAAM,EAAE,IAAI;KACb;IACD,QAAQ,EAAE;QACR,QAAQ,EAAE;YACR,MAAM,EAAE,UAAU;YAClB,WAAW,EAAE,kGAAkG;SAChH;QACD,SAAS,EAAE;YACT,WAAW,EAAE,sBAAsB;YACnC,OAAO,EAAE,EAAC,IAAI,EAAE,QAAQ,EAAC;SAC1B;QACD,kBAAkB,EAAE;YAClB,MAAM,EAAE,UAAU;YAClB,WAAW,EAAE,cAAc;YAC3B,KAAK,EAAE;gBACL,IAAI,EAAE;oBACJ,OAAO,EAAE,uBAAuB;oBAChC,MAAM,EACJ,yKAAyK;iBAC5K;aACF;SACF;KACF;CACF,CAAC;AAEF,MAAM,eAAe,GAAG,CAAC,EAAE,MAAM,EAAE,QAAQ,EAAE,SAAS,EAAE,EAAE,EAAE;IAC1D,MAAM,OAAO,GAAG,QAAQ,CAAC,aAAa,CAAC,gBAAgB,CAAC,CAAC;IACzD,OAAO,CAAC,YAAY,CAAC,SAAS,EAAE,MAAM,CAAC,CAAC;IACxC,OAAO,CAAC,YAAY,CAAC,UAAU,EAAE,QAAQ,CAAC,CAAC;IAC3C,OAAO,CAAC,gBAAgB,CAAC,UAAU,EAAE,MAAM,CAAC,UAAU,CAAC,CAAC,CAAC;IACzD,IAAG,SAAS,IAAI,SAAS;QAAE,OAAO,CAAC,YAAY,CAAC,WAAW,EAAE,SAAS,CAAC,CAAC;IAExE,OAAO,OAAO,CAAC;AACjB,CAAC,CAAC;AAEF,MAAM,CAAC,MAAM,OAAO,GAAG,eAAe,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;AAChD,OAAO,CAAC,IAAI,GAAG,EAAE,CAAC","sourcesContent":["import { action } from '@storybook/addon-actions';\n\nexport default {\n title: 'Components/Search Bar',\n // tags: ['autodocs'],\n\n args: {\n disabled: false,\n isOpen: true,\n },\n argTypes: {\n ifxInput: {\n action: 'ifxInput',\n description: 'Custom event emitted on input\\n\\n(see below for Two Way Data Binding in different JS frameworks)',\n },\n maxlength: {\n description: 'Maximum input length',\n control: {type: 'number'}\n },\n ifxSearchBarIsOpen: {\n action: 'ifxInput',\n description: 'Custom event',\n table: {\n type: {\n summary: 'Framework integration',\n detail:\n 'React: onIfxInput={handleInput}\\nVue:@ifxInput=\"handleInput\"\\nAngular:(ifxInput)=\"handleInput()\"\\nVanillaJs:.addEventListener(\"ifxInput\", (event) => {//handle input});',\n },\n },\n },\n },\n};\n\nconst DefaultTemplate = ({ isOpen, disabled, maxlength }) => {\n const element = document.createElement('ifx-search-bar');\n element.setAttribute('is-open', isOpen);\n element.setAttribute('disabled', disabled);\n element.addEventListener('ifxInput', action('ifxInput'));\n if(maxlength != undefined) element.setAttribute('maxlength', maxlength);\n\n return element;\n};\n\nexport const Default = DefaultTemplate.bind({});\nDefault.args = {};\n"]}
@@ -45,7 +45,7 @@ export class SearchField {
45
45
  this.showDeleteIconInternalState = false;
46
46
  }
47
47
  render() {
48
- return (h("div", { key: '0eda7329a6ec9ee7f24d5c7765f7611698a1dbae', "aria-label": "a search field for user input", "aria-disabled": this.disabled, "aria-value": this.value, class: 'search-field' }, h("div", { key: 'c1d6f47b987bfb7f0505210fbd64e95db58b688e', class: this.getWrapperClassNames(), tabindex: 1, onFocus: () => this.focusInput(), onClick: () => this.focusInput() }, h("ifx-icon", { key: '7fc1c3cd5ba67ebfe032b0a9bbab6ae7b262d7a2', icon: "search-16", class: "search-icon" }), h("input", { key: '461edc1ee971753ce0ed4fb18db7115b3b74c6b9', ref: (el) => (this.inputElement = el), type: "text", onInput: () => this.handleInput(), placeholder: this.placeholder, disabled: this.disabled, maxlength: this.maxlength, value: this.value }), this.showDeleteIcon && this.showDeleteIconInternalState ? (h("ifx-icon", { icon: "cremove16", class: "delete-icon", onClick: this.handleDelete })) : null)));
48
+ return (h("div", { key: 'dee8f8a10987683421db49a63c7e2f7a66ce1b64', "aria-label": "a search field for user input", "aria-disabled": this.disabled, "aria-value": this.value, class: 'search-field' }, h("div", { key: 'e6cc99edb05791bb80be7c2262088c668d6424b7', class: this.getWrapperClassNames(), tabindex: 1, onFocus: () => this.focusInput(), onClick: () => this.focusInput() }, h("ifx-icon", { key: '50cf96f238932cf46b1f0186bcb3b8a96a207889', icon: "search-16", class: "search-icon" }), h("input", { key: '358c300cc7c03ef61f1725b4c2380180eb7c26f2', ref: (el) => (this.inputElement = el), type: "text", onInput: () => this.handleInput(), placeholder: this.placeholder, disabled: this.disabled, maxlength: this.maxlength, value: this.value }), this.showDeleteIcon && this.showDeleteIconInternalState ? (h("ifx-icon", { icon: "cremove16", class: "delete-icon", onClick: this.handleDelete })) : null)));
49
49
  }
50
50
  getSizeClass() {
51
51
  return `${this.size}` === "s"
@@ -6,70 +6,25 @@ export default {
6
6
  showDeleteIcon: true,
7
7
  disabled: false,
8
8
  size: 'm',
9
- value: '',
10
- placeholder: 'Search...',
11
9
  },
12
10
  argTypes: {
13
- showDeleteIcon: {
14
- description: 'Determines whether a delete icon is shown in the search field.',
15
- control: 'boolean',
16
- table: {
17
- category: 'ifx-search-field props',
18
- defaultValue: {
19
- summary: true
20
- }
21
- }
22
- },
23
- disabled: {
24
- description: 'Disables the search field, preventing user interaction.',
25
- control: 'boolean',
26
- table: {
27
- category: 'ifx-search-field props',
28
- defaultValue: {
29
- summary: false
30
- }
31
- }
32
- },
33
11
  size: {
34
- description: 'Size options: s (36px) and m (40px) - default: m.',
35
- control: 'radio',
12
+ description: 'Size options: s (36px) and m (40px) - default: m',
36
13
  options: ['s', 'm'],
37
- table: {
38
- category: 'ifx-search-field props',
39
- defaultValue: {
40
- summary: 'm'
41
- }
42
- }
14
+ control: { type: 'radio' },
43
15
  },
44
16
  placeholder: {
45
- description: 'Placeholder text displayed in the search field when it is empty.',
46
- control: 'text',
47
- table: {
48
- category: 'ifx-search-field props',
49
- defaultValue: {
50
- summary: 'Search...'
51
- }
52
- }
17
+ description: 'Place holder text - default value: "Search..."',
18
+ control: { type: 'text' }
53
19
  },
54
20
  maxlength: {
55
- description: 'Specifies the maximum number of characters that can be entered into the search field.',
56
- control: 'number',
57
- table: {
58
- category: 'ifx-search-field props'
59
- }
60
- },
61
- value: {
62
- description: 'The value of the search field. It is used for the form submission.',
63
- control: 'text',
64
- table: {
65
- category: 'ifx-search-field props'
66
- }
21
+ description: 'Maximum input length',
22
+ control: { type: 'number' }
67
23
  },
68
24
  ifxInput: {
69
25
  action: 'ifxInput',
70
- description: 'A custom event triggered whenever there is input in the search field.',
26
+ description: 'Custom event',
71
27
  table: {
72
- category: 'custom events',
73
28
  type: {
74
29
  summary: 'Framework integration',
75
30
  detail: 'React: onIfxInput={handleInput}\nVue:@ifxInput="handleInput"\nAngular:(ifxInput)="handleInput()"\nVanillaJs:.addEventListener("ifxInput", (event) => {//handle input});',
@@ -78,12 +33,11 @@ export default {
78
33
  },
79
34
  },
80
35
  };
81
- const DefaultTemplate = ({ disabled, size, showDeleteIcon, placeholder, maxlength, value }) => {
36
+ const DefaultTemplate = ({ disabled, size, showDeleteIcon, placeholder, maxlength }) => {
82
37
  const element = document.createElement('ifx-search-field');
83
38
  element.setAttribute('size', size);
84
39
  element.setAttribute('disabled', disabled);
85
40
  element.setAttribute('show-delete-icon', showDeleteIcon);
86
- element.setAttribute('value', value);
87
41
  if (placeholder != undefined)
88
42
  element.setAttribute('placeholder', placeholder);
89
43
  if (maxlength != undefined)
@@ -1 +1 @@
1
- {"version":3,"file":"search-field.stories.js","sourceRoot":"","sources":["../../../src/components/search-field/search-field.stories.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,EAAE,MAAM,0BAA0B,CAAC;AAElD,eAAe;IACb,KAAK,EAAE,yBAAyB;IAChC,sBAAsB;IAEtB,IAAI,EAAE;QACJ,cAAc,EAAE,IAAI;QACpB,QAAQ,EAAE,KAAK;QACf,IAAI,EAAE,GAAG;QACT,KAAK,EAAE,EAAE;QACT,WAAW,EAAE,WAAW;KACzB;IACD,QAAQ,EAAE;QACR,cAAc,EAAE;YACd,WAAW,EAAE,gEAAgE;YAC7E,OAAO,EAAE,SAAS;YAClB,KAAK,EAAE;gBACL,QAAQ,EAAE,wBAAwB;gBAClC,YAAY,EAAE;oBACZ,OAAO,EAAE,IAAI;iBACd;aACF;SACF;QACD,QAAQ,EAAE;YACR,WAAW,EAAE,yDAAyD;YACtE,OAAO,EAAE,SAAS;YAClB,KAAK,EAAE;gBACL,QAAQ,EAAE,wBAAwB;gBAClC,YAAY,EAAE;oBACZ,OAAO,EAAE,KAAK;iBACf;aACF;SACF;QACD,IAAI,EAAE;YACJ,WAAW,EAAE,mDAAmD;YAChE,OAAO,EAAE,OAAO;YAChB,OAAO,EAAE,CAAC,GAAG,EAAE,GAAG,CAAC;YACnB,KAAK,EAAE;gBACL,QAAQ,EAAE,wBAAwB;gBAClC,YAAY,EAAE;oBACZ,OAAO,EAAE,GAAG;iBACb;aACF;SACF;QACD,WAAW,EAAE;YACX,WAAW,EAAE,kEAAkE;YAC/E,OAAO,EAAE,MAAM;YACf,KAAK,EAAE;gBACL,QAAQ,EAAE,wBAAwB;gBAClC,YAAY,EAAE;oBACZ,OAAO,EAAE,WAAW;iBACrB;aACF;SACF;QACD,SAAS,EAAE;YACT,WAAW,EAAE,uFAAuF;YACpG,OAAO,EAAE,QAAQ;YACjB,KAAK,EAAE;gBACL,QAAQ,EAAE,wBAAwB;aACnC;SACF;QACD,KAAK,EAAE;YACL,WAAW,EAAE,oEAAoE;YACjF,OAAO,EAAE,MAAM;YACf,KAAK,EAAE;gBACL,QAAQ,EAAE,wBAAwB;aACnC;SACF;QACD,QAAQ,EAAE;YACR,MAAM,EAAE,UAAU;YAClB,WAAW,EAAE,uEAAuE;YACpF,KAAK,EAAE;gBACL,QAAQ,EAAE,eAAe;gBACzB,IAAI,EAAE;oBACJ,OAAO,EAAE,uBAAuB;oBAChC,MAAM,EACJ,yKAAyK;iBAC5K;aACF;SACF;KACF;CACF,CAAC;AAEF,MAAM,eAAe,GAAG,CAAC,EAAE,QAAQ,EAAE,IAAI,EAAE,cAAc,EAAE,WAAW,EAAE,SAAS,EAAE,KAAK,EAAE,EAAE,EAAE;IAC5F,MAAM,OAAO,GAAG,QAAQ,CAAC,aAAa,CAAC,kBAAkB,CAAC,CAAC;IAC3D,OAAO,CAAC,YAAY,CAAC,MAAM,EAAE,IAAI,CAAC,CAAC;IACnC,OAAO,CAAC,YAAY,CAAC,UAAU,EAAE,QAAQ,CAAC,CAAC;IAC3C,OAAO,CAAC,YAAY,CAAC,kBAAkB,EAAE,cAAc,CAAC,CAAC;IACzD,OAAO,CAAC,YAAY,CAAC,OAAO,EAAE,KAAK,CAAC,CAAA;IACpC,IAAI,WAAW,IAAI,SAAS;QAAE,OAAO,CAAC,YAAY,CAAC,aAAa,EAAE,WAAW,CAAC,CAAC;IAC/E,IAAI,SAAS,IAAI,SAAS;QAAE,OAAO,CAAC,YAAY,CAAC,WAAW,EAAE,SAAS,CAAC,CAAC;IACzE,OAAO,CAAC,gBAAgB,CAAC,UAAU,EAAE,MAAM,CAAC,UAAU,CAAC,CAAC,CAAC;IAEzD,OAAO,OAAO,CAAC;AACjB,CAAC,CAAC;AAEF,MAAM,CAAC,MAAM,OAAO,GAAG,eAAe,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC","sourcesContent":["import { action } from '@storybook/addon-actions';\n\nexport default {\n title: 'Components/Search Field',\n // tags: ['autodocs'],\n\n args: {\n showDeleteIcon: true,\n disabled: false,\n size: 'm',\n value: '',\n placeholder: 'Search...',\n },\n argTypes: {\n showDeleteIcon: {\n description: 'Determines whether a delete icon is shown in the search field.',\n control: 'boolean',\n table: {\n category: 'ifx-search-field props',\n defaultValue: {\n summary: true\n }\n }\n },\n disabled: {\n description: 'Disables the search field, preventing user interaction.',\n control: 'boolean',\n table: {\n category: 'ifx-search-field props',\n defaultValue: {\n summary: false\n }\n }\n },\n size: {\n description: 'Size options: s (36px) and m (40px) - default: m.',\n control: 'radio',\n options: ['s', 'm'],\n table: {\n category: 'ifx-search-field props',\n defaultValue: {\n summary: 'm'\n }\n }\n },\n placeholder: {\n description: 'Placeholder text displayed in the search field when it is empty.',\n control: 'text',\n table: {\n category: 'ifx-search-field props',\n defaultValue: {\n summary: 'Search...'\n }\n }\n },\n maxlength: {\n description: 'Specifies the maximum number of characters that can be entered into the search field.',\n control: 'number',\n table: {\n category: 'ifx-search-field props'\n }\n },\n value: {\n description: 'The value of the search field. It is used for the form submission.',\n control: 'text',\n table: {\n category: 'ifx-search-field props'\n }\n },\n ifxInput: {\n action: 'ifxInput',\n description: 'A custom event triggered whenever there is input in the search field.',\n table: {\n category: 'custom events',\n type: {\n summary: 'Framework integration',\n detail:\n 'React: onIfxInput={handleInput}\\nVue:@ifxInput=\"handleInput\"\\nAngular:(ifxInput)=\"handleInput()\"\\nVanillaJs:.addEventListener(\"ifxInput\", (event) => {//handle input});',\n },\n },\n },\n },\n};\n\nconst DefaultTemplate = ({ disabled, size, showDeleteIcon, placeholder, maxlength, value }) => {\n const element = document.createElement('ifx-search-field');\n element.setAttribute('size', size);\n element.setAttribute('disabled', disabled);\n element.setAttribute('show-delete-icon', showDeleteIcon);\n element.setAttribute('value', value)\n if (placeholder != undefined) element.setAttribute('placeholder', placeholder);\n if (maxlength != undefined) element.setAttribute('maxlength', maxlength);\n element.addEventListener('ifxInput', action('ifxInput'));\n\n return element;\n};\n\nexport const Default = DefaultTemplate.bind({});\n"]}
1
+ {"version":3,"file":"search-field.stories.js","sourceRoot":"","sources":["../../../src/components/search-field/search-field.stories.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,EAAE,MAAM,0BAA0B,CAAC;AAElD,eAAe;IACb,KAAK,EAAE,yBAAyB;IAChC,sBAAsB;IAEtB,IAAI,EAAE;QACJ,cAAc,EAAE,IAAI;QACpB,QAAQ,EAAE,KAAK;QACf,IAAI,EAAE,GAAG;KACV;IACD,QAAQ,EAAE;QACR,IAAI,EAAE;YACJ,WAAW,EAAE,kDAAkD;YAC/D,OAAO,EAAE,CAAC,GAAG,EAAE,GAAG,CAAC;YACnB,OAAO,EAAE,EAAE,IAAI,EAAE,OAAO,EAAE;SAC3B;QACD,WAAW,EAAE;YACX,WAAW,EAAE,gDAAgD;YAC7D,OAAO,EAAE,EAAE,IAAI,EAAE,MAAM,EAAC;SACzB;QACD,SAAS,EAAE;YACT,WAAW,EAAE,sBAAsB;YACnC,OAAO,EAAE,EAAC,IAAI,EAAE,QAAQ,EAAC;SAC1B;QACD,QAAQ,EAAE;YACR,MAAM,EAAE,UAAU;YAClB,WAAW,EAAE,cAAc;YAC3B,KAAK,EAAE;gBACL,IAAI,EAAE;oBACJ,OAAO,EAAE,uBAAuB;oBAChC,MAAM,EACJ,yKAAyK;iBAC5K;aACF;SACF;KACF;CACF,CAAC;AAEF,MAAM,eAAe,GAAG,CAAC,EAAE,QAAQ,EAAE,IAAI,EAAE,cAAc,EAAE,WAAW,EAAE,SAAS,EAAE,EAAE,EAAE;IACrF,MAAM,OAAO,GAAG,QAAQ,CAAC,aAAa,CAAC,kBAAkB,CAAC,CAAC;IAC3D,OAAO,CAAC,YAAY,CAAC,MAAM,EAAE,IAAI,CAAC,CAAC;IACnC,OAAO,CAAC,YAAY,CAAC,UAAU,EAAE,QAAQ,CAAC,CAAC;IAC3C,OAAO,CAAC,YAAY,CAAC,kBAAkB,EAAE,cAAc,CAAC,CAAC;IACzD,IAAG,WAAW,IAAI,SAAS;QAAE,OAAO,CAAC,YAAY,CAAC,aAAa,EAAE,WAAW,CAAC,CAAC;IAC9E,IAAG,SAAS,IAAI,SAAS;QAAE,OAAO,CAAC,YAAY,CAAC,WAAW,EAAE,SAAS,CAAC,CAAC;IACxE,OAAO,CAAC,gBAAgB,CAAC,UAAU,EAAE,MAAM,CAAC,UAAU,CAAC,CAAC,CAAC;IAEzD,OAAO,OAAO,CAAC;AACjB,CAAC,CAAC;AAEF,MAAM,CAAC,MAAM,OAAO,GAAG,eAAe,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC","sourcesContent":["import { action } from '@storybook/addon-actions';\n\nexport default {\n title: 'Components/Search Field',\n // tags: ['autodocs'],\n\n args: {\n showDeleteIcon: true,\n disabled: false,\n size: 'm',\n },\n argTypes: {\n size: {\n description: 'Size options: s (36px) and m (40px) - default: m',\n options: ['s', 'm'],\n control: { type: 'radio' },\n },\n placeholder: {\n description: 'Place holder text - default value: \"Search...\"',\n control: { type: 'text'}\n },\n maxlength: {\n description: 'Maximum input length',\n control: {type: 'number'}\n },\n ifxInput: {\n action: 'ifxInput',\n description: 'Custom event',\n table: {\n type: {\n summary: 'Framework integration',\n detail:\n 'React: onIfxInput={handleInput}\\nVue:@ifxInput=\"handleInput\"\\nAngular:(ifxInput)=\"handleInput()\"\\nVanillaJs:.addEventListener(\"ifxInput\", (event) => {//handle input});',\n },\n },\n },\n },\n};\n\nconst DefaultTemplate = ({ disabled, size, showDeleteIcon, placeholder, maxlength }) => {\n const element = document.createElement('ifx-search-field');\n element.setAttribute('size', size);\n element.setAttribute('disabled', disabled);\n element.setAttribute('show-delete-icon', showDeleteIcon);\n if(placeholder != undefined) element.setAttribute('placeholder', placeholder);\n if(maxlength != undefined) element.setAttribute('maxlength', maxlength);\n element.addEventListener('ifxInput', action('ifxInput'));\n\n return element;\n};\n\nexport const Default = DefaultTemplate.bind({});\n"]}
@@ -18,7 +18,7 @@ export class Segment {
18
18
  }
19
19
  }
20
20
  render() {
21
- return (h("div", { key: '49c56df2adf407d13685ae7c99b512afa532c6de', class: `segment ${this.selected ? 'segment--selected' : ''}`, tabIndex: 0, onClick: () => { this.handleSegmentClick(); }, onKeyDown: (e) => { this.handleSegmentKeyDown(e); } }, h("ifx-icon", { key: 'c576b2bb7b09ae6ed1946759df7303df36b430dc', icon: this.icon }), " ", h("slot", { key: '61d467f2cda3552d5c90e9995ceccdca76c6825c' })));
21
+ return (h("div", { key: 'ba16c44bcff74ca96370132c7e191ad8659312e0', class: `segment ${this.selected ? 'segment--selected' : ''}`, tabIndex: 0, onClick: () => { this.handleSegmentClick(); }, onKeyDown: (e) => { this.handleSegmentKeyDown(e); } }, h("ifx-icon", { key: '1746bfc0ea5acfcee7e39832613beb3a65ec3b74', icon: this.icon }), " ", h("slot", { key: '978c5dd19baeb0bdc7029a381891bf858c4a7806' })));
22
22
  }
23
23
  static get is() { return "ifx-segment"; }
24
24
  static get encapsulation() { return "shadow"; }
@@ -62,8 +62,8 @@ export class SegmentedControl {
62
62
  this.setActiveSegment();
63
63
  }
64
64
  render() {
65
- return (h("div", { key: '2a980fa0fd18e469c2d92c57c80c62b7dfee30e9', "aria-value": this.selectedValue, "aria-label": 'segmented control', class: 'group' }, h("div", { key: 'bf202bd9f2a4967c5a5c0cd24013242ad4752a80', class: 'group__label' }, this.label.trim()), h("div", { key: '89e974d972a4ad903193459e9a65b47c89114ab8', class: 'group__controls' }, h("slot", { key: '10a57ab800389b4a7ae482c152817486a28ae96f' })), this.caption.trim() &&
66
- h("div", { key: 'f63a61eabf58e03cc0c4b5bae031965b82cb4f2c', class: 'group__caption' }, h("ifx-icon", { key: 'b758bb66d96d48e795565dbd662f1a2fc3648bfe', icon: 'cinfo16' }), " ", this.caption.trim())));
65
+ return (h("div", { key: '107dc81c1511f43afe458598f531dba52c291e32', "aria-value": this.selectedValue, "aria-label": 'segmented control', class: 'group' }, h("div", { key: '879f0a9e7969f6dee38992352af1c5abb0ff1844', class: 'group__label' }, this.label.trim()), h("div", { key: '114496531e8455b9b109d62d882b943920b8f925', class: 'group__controls' }, h("slot", { key: '2199416c1ffee2e0ca7b6f158da9cc697f1ae290' })), this.caption.trim() &&
66
+ h("div", { key: '78c776417c479c9ac008d0a5e249f11300d0f9e8', class: 'group__caption' }, h("ifx-icon", { key: '4e275a5017e078c8eda524151fec0e1a7129e807', icon: 'cinfo16' }), " ", this.caption.trim())));
67
67
  }
68
68
  componentDidRender() {
69
69
  this.setSegmentSize();
@@ -30,6 +30,9 @@ export default {
30
30
  description: 'Set the label of *<ifx-segmented-control>*.',
31
31
  table: {
32
32
  category: 'story controls',
33
+ type: {
34
+ summary: '<ifx-segment> `label` </ifx-segment>'
35
+ }
33
36
  }
34
37
  },
35
38
  caption: {
@@ -94,7 +97,13 @@ See the 2nd *<ifx-segment>* for effects`,
94
97
  }
95
98
  },
96
99
  ifxChange: {
97
- description: `Custom event emitted when the segment is changed.`,
100
+ description: `A custom event *ifxChange* is emitted whenever the *<ifx-segmented-control>* is clicked/selected.\n
101
+ event.detail:
102
+ {
103
+ previousValue: string,
104
+ selectedValue: string
105
+ }
106
+ `,
98
107
  table: {
99
108
  category: 'custom events',
100
109
  type: {
@@ -1 +1 @@
1
- {"version":3,"file":"segmented-control.stories.js","sourceRoot":"","sources":["../../../src/components/segmented-control/segmented-control.stories.ts"],"names":[],"mappings":"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","sourcesContent":["import { action } from \"@storybook/addon-actions\";\nimport { icons } from '@infineon/infineon-icons';\n\nexport default {\n title: 'Components/Segmented Control',\n tags: ['autodocs'],\n args: {\n amountOfSegments: 5,\n labelOfSegment: 'Label',\n caption: 'Caption text to describe the controls',\n label: 'Group Label',\n size: 'regular',\n icon: 'star-16',\n selected: 'false',\n value: 'Value'\n },\n argTypes: {\n amountOfSegments: {\n name: 'Amount of Segments',\n control: { type: 'number', min: 2 },\n description: 'Control the number of *<ifx-segment>* in component.',\n table: {\n category: 'story controls',\n type: {\n summary: null\n }\n }\n },\n labelOfSegment: {\n name: 'Label of Segment',\n description: 'Set the label of *<ifx-segmented-control>*.',\n table: {\n category: 'story controls',\n }\n },\n caption: {\n description: 'Set the caption text of segmented control group.',\n table: {\n category: 'ifx-segmented-control props'\n }\n },\n label: {\n name: 'label',\n description: 'Set the label of control group.',\n table: {\n category: 'ifx-segmented-control props'\n }\n },\n size: {\n description: 'Switch between the size of Segmented Control.',\n control: 'radio',\n options: ['regular', 'small'],\n table: {\n category: 'ifx-segmented-control props',\n defaultValue: {\n summary: 'regular'\n },\n type: {\n summary: 'regular | small'\n }\n }\n },\n icon: {\n description: 'Set icon of a segment.',\n options: Object.values(icons).map(i => i['name']),\n control: { type: 'select' },\n table: {\n category: 'ifx-segment props'\n }\n },\n selected: {\n description: `Selects the segment when set true.\\n\nSee the 2nd *<ifx-segment>* for effects`,\n control: 'boolean',\n table: {\n category: 'ifx-segment props',\n defaultValue: {\n summary: false,\n },\n type: {\n summary: 'boolean'\n }\n }\n },\n value: {\n description: 'Set the value of *<ifx-segment>*. Required.',\n table: {\n category: 'ifx-segment props',\n type: {\n summary: 'string'\n }\n },\n type: {\n required: true\n }\n },\n ifxChange: {\n description: `Custom event emitted when the segment is changed.`,\n table: {\n category: 'custom events',\n type: {\n summary: 'Framework integration',\n detail: `\nReact: onIfxChange={handleChange}\nVue: @ifxChange=\"handleChange\"\nAngular: (ifxChange)=\"handleChange()\"\nVanillaJs: .addEventListener(\"ifxChange\", (event) => {/*handle change*/});`,\n }\n }\n }\n }\n}\n\nconst Template = (args) => {\n const wrapper = document.createElement('div');\n wrapper.innerHTML = `\n<ifx-segmented-control\ncaption = '${args.caption}'\nlabel = '${args.label}'\nsize = '${args.size}'>\n ${(() => {\n return Array.from({ length: args.amountOfSegments }, (_, segmentId) => {\n const segment = document.createElement('ifx-segment');\n segment.innerText = args.labelOfSegment;\n segment.setAttribute('value', `${args.value}${segmentId + 1}`);\n segment.setAttribute('icon', `${args.icon}`);\n if (args.selected === true && segmentId === 1) segment.setAttribute('selected', 'true');\n return segment.outerHTML;\n }).join(`\\n `);\n })()\n }\n</ifx-segmented-control> \n`;\n const segmentedControl = wrapper.querySelector('ifx-segmented-control');\n segmentedControl.addEventListener('ifxChange', action('ifxChange'));\n\n return segmentedControl;\n};\n\nexport const Default = Template.bind({});"]}
1
+ {"version":3,"file":"segmented-control.stories.js","sourceRoot":"","sources":["../../../src/components/segmented-control/segmented-control.stories.ts"],"names":[],"mappings":"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","sourcesContent":["import { action } from \"@storybook/addon-actions\";\nimport { icons } from '@infineon/infineon-icons';\n\nexport default {\n title: 'Components/Segmented Control',\n tags: ['autodocs'],\n args: {\n amountOfSegments: 5,\n labelOfSegment: 'Label',\n caption: 'Caption text to describe the controls',\n label: 'Group Label',\n size: 'regular',\n icon: 'star-16',\n selected: 'false',\n value: 'Value'\n },\n argTypes: {\n amountOfSegments: {\n name: 'Amount of Segments',\n control: { type: 'number', min: 2 },\n description: 'Control the number of *<ifx-segment>* in component.',\n table: {\n category: 'story controls',\n type: {\n summary: null\n }\n }\n },\n labelOfSegment: {\n name: 'Label of Segment',\n description: 'Set the label of *<ifx-segmented-control>*.',\n table: {\n category: 'story controls',\n type: {\n summary: '<ifx-segment> `label` </ifx-segment>'\n }\n }\n },\n caption: {\n description: 'Set the caption text of segmented control group.',\n table: {\n category: 'ifx-segmented-control props'\n }\n },\n label: {\n name: 'label',\n description: 'Set the label of control group.',\n table: {\n category: 'ifx-segmented-control props'\n }\n },\n size: {\n description: 'Switch between the size of Segmented Control.',\n control: 'radio',\n options: ['regular', 'small'],\n table: {\n category: 'ifx-segmented-control props',\n defaultValue: {\n summary: 'regular'\n },\n type: {\n summary: 'regular | small'\n }\n }\n },\n icon: {\n description: 'Set icon of a segment.',\n options: Object.values(icons).map(i => i['name']),\n control: { type: 'select' },\n table: {\n category: 'ifx-segment props'\n }\n },\n selected: {\n description: `Selects the segment when set true.\\n\nSee the 2nd *<ifx-segment>* for effects`,\n control: 'boolean',\n table: {\n category: 'ifx-segment props',\n defaultValue: {\n summary: false,\n },\n type: {\n summary: 'boolean'\n }\n }\n },\n value: {\n description: 'Set the value of *<ifx-segment>*. Required.',\n table: {\n category: 'ifx-segment props',\n type: {\n summary: 'string'\n }\n },\n type: {\n required: true\n }\n },\n ifxChange: {\n description: `A custom event *ifxChange* is emitted whenever the *<ifx-segmented-control>* is clicked/selected.\\n\n event.detail: \n {\n previousValue: string,\n selectedValue: string\n }\n `,\n table: {\n category: 'custom events',\n type: {\n summary: 'Framework integration',\n detail: `\nReact: onIfxChange={handleChange}\nVue: @ifxChange=\"handleChange\"\nAngular: (ifxChange)=\"handleChange()\"\nVanillaJs: .addEventListener(\"ifxChange\", (event) => {/*handle change*/});`,\n }\n }\n }\n }\n}\n\nconst Template = (args) => {\n const wrapper = document.createElement('div');\n wrapper.innerHTML = `\n<ifx-segmented-control\ncaption = '${args.caption}'\nlabel = '${args.label}'\nsize = '${args.size}'>\n ${\n (() => {\n return Array.from({ length: args.amountOfSegments }, (_, segmentId) => {\n const segment = document.createElement('ifx-segment');\n segment.innerText = args.labelOfSegment;\n segment.setAttribute('value', `${args.value}${segmentId+1}`);\n segment.setAttribute('icon', `${args.icon}`);\n if (args.selected === true && segmentId === 1) segment.setAttribute('selected', 'true');\n return segment.outerHTML;\n }).join(`\\n `);\n })()\n }\n</ifx-segmented-control> \n`;\n const segmentedControl = wrapper.querySelector('ifx-segmented-control');\n segmentedControl.addEventListener('ifxChange', action('ifxChange'));\n\n return segmentedControl;\n};\n\nexport const Default = Template.bind({});"]}
@@ -58,7 +58,7 @@ export class Multiselect {
58
58
  document.removeEventListener('click', this.handleDocumentClick);
59
59
  this.filteredOptions = this.loadedOptions;
60
60
  // Dispatch the ifxMultiselectIsOpen event
61
- this.ifxOpen.emit(this.dropdownOpen);
61
+ this.ifxMultiselectIsOpen.emit(this.dropdownOpen);
62
62
  }
63
63
  };
64
64
  }
@@ -307,8 +307,8 @@ export class Multiselect {
307
307
  if (this.dropdownOpen) {
308
308
  document.addEventListener('click', this.handleDocumentClick);
309
309
  }
310
- // Dispatch the ifxOpen event
311
- this.ifxOpen.emit(this.dropdownOpen);
310
+ // Dispatch the ifxMultiselectIsOpen event
311
+ this.ifxMultiselectIsOpen.emit(this.dropdownOpen);
312
312
  }, 0);
313
313
  this.zIndex = Multiselect.globalZIndex++;
314
314
  }
@@ -797,8 +797,8 @@ export class Multiselect {
797
797
  "references": {}
798
798
  }
799
799
  }, {
800
- "method": "ifxOpen",
801
- "name": "ifxOpen",
800
+ "method": "ifxMultiselectIsOpen",
801
+ "name": "ifxMultiselectIsOpen",
802
802
  "bubbles": true,
803
803
  "cancelable": true,
804
804
  "composed": true,
@@ -1 +1 @@
1
- {"version":3,"file":"multiselect.js","sourceRoot":"","sources":["../../../../src/components/select/multi-select/multiselect.tsx"],"names":[],"mappings":"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","sourcesContent":["import { Component, Prop, State, Event, EventEmitter, Element, h, Watch, AttachInternals } from '@stencil/core';\nimport { Option } from './interfaces';\n\n// Debounce function\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\n\n\nexport class Multiselect {\n\n @Prop() name: string;\n @Prop() options: any[] | string;\n @Prop() batchSize: number = 50;\n @Prop() size: string = 'medium (40px)';\n @Prop() disabled: boolean = false;\n @Prop() error: boolean = false;\n @State() internalError: boolean = false;\n @Prop() errorMessage: string = \"Error\";\n @State() internalErrorMessage: string;\n @Prop() label: string = \"\";\n @State() persistentSelectedOptions: Option[] = [];\n @Prop() placeholder: string = \"\";\n @State() dropdownOpen = false;\n @State() dropdownFlipped: boolean;\n @Prop() maxItemCount: number;\n @State() zIndex: number = 1; // default z-index value\n static globalZIndex = 1; // This will be shared among all instances of the component.\n private currentIndex: number = 0; //needed for option selection using keyboard\n @State() isLoading: boolean = false;\n @State() loadedOptions: Option[] = [];\n @State() filteredOptions: Option[] = [];\n @Prop() showSearch: boolean = true;\n @Prop() showSelectAll: boolean = true;\n @State() optionCount: number = 0; // number of all options (leaves of the tree)\n @State() optionsProcessed: boolean = false; // flag whether options have already been counted, intial selections saved\n\n\n @Event() ifxSelect: EventEmitter;\n @Event() ifxOpen: EventEmitter;\n\n @Element() el: HTMLElement;\n dropdownElement!: HTMLElement;\n\n @AttachInternals() internals: ElementInternals;\n\n\n @Watch('options')\n updateOptions() { \n this.loadedOptions = [];\n this.filteredOptions = [];\n this.optionCount = 0;\n this.optionsProcessed = false;\n this.persistentSelectedOptions = [];\n\n this.loadInitialOptions();\n }\n\n\n async loadInitialOptions() {\n this.isLoading = true;\n this.internalError = this.error;\n this.internalErrorMessage = this.errorMessage;\n // Load the first batch of options (e.g., first 20)\n this.loadedOptions = await this.fetchOptions(0, this.batchSize);\n this.isLoading = false;\n }\n\n async fetchMoreOptions() {\n this.isLoading = true;\n const moreOptions = await this.fetchOptions(this.loadedOptions.length, this.batchSize);\n this.loadedOptions = [...this.loadedOptions, ...moreOptions];\n this.isLoading = false;\n }\n\n\n handleScroll(event: UIEvent) {\n const element = event.target as HTMLElement;\n const halfwayPoint = Math.floor((element.scrollHeight - element.clientHeight) / 2); //loading more options when the user has scrolled halfway through the current list\n\n if (element.scrollTop >= halfwayPoint) {\n this.fetchMoreOptions();\n }\n }\n\n\n\n\n async fetchOptions(startIndex: number, count: number): Promise<Option[]> {\n let allOptions: Option[] = [];\n\n // Parse options if it's a string, or use directly if it's an array\n if (typeof this.options === 'string') {\n try {\n allOptions = JSON.parse(this.options);\n \n } catch (err) {\n console.error('Failed to parse options:', err);\n }\n } else if (Array.isArray(this.options)) {\n allOptions = this.options;\n } else {\n console.error('Unexpected value for options:', this.options);\n }\n\n if (!this.optionsProcessed) {\n this.optionCount = this.countOptions(allOptions);\n const initiallySelected = this.collectSelectedOptions(allOptions);\n const initallySelectedNotInState = initiallySelected.filter(init => !this.persistentSelectedOptions.some(opt => opt.value == init.value));\n this.persistentSelectedOptions = [...this.persistentSelectedOptions, ...initallySelectedNotInState];\n this.optionsProcessed = true;\n }\n // Slice the options array based on startIndex and count\n const slicedOptions = allOptions.slice(startIndex, startIndex + count);\n return slicedOptions;\n }\n\n /**\n * Collects and returns all options that are selected.\n * When the parent is selected, then the value of the children will be overriden with selected as well.\n * It will only collect the leaves of the tree.\n * \n * @param options A list of options.\n * @returns A list with all selected options\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 // if parent is selected, then select all child options\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 /**\n * Collects all leaf children options.\n * \n * @param option A list with all leaf-children.\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 /**\n * Count the number of options. Only counts the leaves of the options tree.\n */\n countOptions(options: Option[]): number {\n let count = 0;\n for (const option of options) {\n if (option.children && option.children.length >= 0) {\n count += this.countOptions(option.children);\n } else {\n count++;\n }\n }\n return count;\n }\n\n\n handleSearch = debounce((targetElement: HTMLInputElement) => {\n const searchTerm = targetElement.value.toLowerCase();\n if (searchTerm === '') {\n this.filteredOptions = this.loadedOptions;\n } else {\n this.filteredOptions = this.loadedOptions.filter(option => {\n const matchesSearchTerm = option.label.toLowerCase().includes(searchTerm);\n if (option.children) {\n const childrenMatch = option.children.some(child => {\n return child.label.toLowerCase().includes(searchTerm);\n });\n return matchesSearchTerm || childrenMatch;\n }\n return matchesSearchTerm;\n });\n }\n }, 300);\n\n componentDidLoad() {\n setTimeout(() => {\n this.positionDropdown();\n }, 500);\n\n // setInterval(this.handleScroll, 5000); // Runs every 5 seconds (5000 milliseconds)\n }\n\n componentWillLoad() {\n this.loadInitialOptions();\n this.filteredOptions = [...this.loadedOptions];\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('loadedOptions')\n loadedOptionsChanged() {\n this.filteredOptions = [...this.loadedOptions];\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\n handleOptionClick(option: Option) {\n this.internalError = false;\n\n if (!option.selected && this.isSelectionLimitReached(option)) {\n option.checkboxRef.toggleCheckedState(false)\n this.internalError = true;\n this.internalErrorMessage = \"Please consider the maximum number of items to choose from\";\n return;\n }\n \n this.updateSelection(option);\n this.ifxSelect.emit(this.persistentSelectedOptions);\n }\n\n\n isSelectionLimitReached(option: Option): boolean {\n let newOptionsLength = option.children ? option.children.length : 1;\n return this.maxItemCount && this.persistentSelectedOptions.length + newOptionsLength > this.maxItemCount &&\n !this.persistentSelectedOptions.some(selectedOption => selectedOption.value === option.value)\n }\n\n updateSelection(option: Option) {\n const wasSelected = this.persistentSelectedOptions.some(selectedOption => selectedOption.value === option.value);\n\n if (option.children && option.children.length > 0) {\n this.handleParentOptionClick(option);\n } else {\n this.handleChildOptionClick(option, wasSelected);\n }\n }\n\n async selectAll() {\n const allOptions = await this.fetchOptions(0, this.optionCount);\n this.selectAllRecursive(allOptions);\n \n this.ifxSelect.emit(this.persistentSelectedOptions);\n }\n\n private selectAllRecursive(options: Option[]) {\n for (const opt of options) {\n if (opt.children && opt.children.length > 0) {\n this.selectAllRecursive(opt.children);\n } else {\n if (!this.persistentSelectedOptions.some((some) => some.value === opt.value )) {\n opt.selected = true;\n this.persistentSelectedOptions = [...this.persistentSelectedOptions, opt];\n this.optionCount = this.countOptions( this.persistentSelectedOptions)\n }\n }\n }\n\n }\n\n handleParentOptionClick(option: Option) {\n const allChildrenSelected = option.children.every(child =>\n this.persistentSelectedOptions.some(selectedOption => selectedOption.value === child.value)\n );\n\n if (allChildrenSelected) {\n this.persistentSelectedOptions = [...this.persistentSelectedOptions.filter(\n selectedOption => !option.children.some(child => child.value === selectedOption.value)\n )];\n\n option.selected = false;\n option.children.forEach(child => {\n child.selected = false;\n })\n\n } else {\n const newChildren = [...option.children.filter(childOption =>\n !this.persistentSelectedOptions.some(selectedOption => selectedOption.value === childOption.value)\n )];\n option.selected = true;\n option.children.forEach(child => {\n child.selected = true;\n })\n this.persistentSelectedOptions = [...this.persistentSelectedOptions, ...newChildren];\n }\n }\n\n handleChildOptionClick(option: Option, wasSelected: boolean) {\n if (wasSelected) {\n this.persistentSelectedOptions = [...this.persistentSelectedOptions.filter(selectedOption => selectedOption.value !== option.value)];\n option.selected = false;\n } else {\n this.persistentSelectedOptions = [...this.persistentSelectedOptions, option];\n option.selected = true;\n }\n this.updateParentSelectedState();\n }\n\n updateParentSelectedState() {\n this.loadedOptions.forEach(option => {\n if(option.children?.length > 0) {\n if(option.children.every(child => child.selected === true)) option.selected = true;\n else {\n option.selected = false;\n if(this.isOptionIndeterminate(option)) {\n option.indeterminate = true;\n }else{\n option.indeterminate = false;\n }\n }\n }\n });\n }\n\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.filteredOptions = this.loadedOptions;\n // Dispatch the ifxMultiselectIsOpen event\n this.ifxOpen.emit(this.dropdownOpen);\n }\n }\n\n getSizeClass() {\n return `${this.size}` === \"s\"\n ? \"small-select\"\n : \"medium-select\";\n }\n\n toggleDropdown() {\n this.dropdownOpen = !this.dropdownOpen;\n setTimeout(() => {\n if (this.dropdownOpen) {\n document.addEventListener('click', this.handleDocumentClick);\n }\n // Dispatch the ifxOpen event\n this.ifxOpen.emit(this.dropdownOpen);\n }, 0);\n this.zIndex = Multiselect.globalZIndex++;\n }\n\n\n waitForElement(querySelectorFunc: Function, callback: Function, maxTries = 50) {\n let tries = 0;\n function request() {\n requestAnimationFrame(() => {\n const elements = querySelectorFunc();\n if (elements.length > 0 || tries > maxTries) {\n callback(elements);\n } else {\n tries++;\n request();\n }\n });\n }\n request();\n }\n\n\n handleKeyDown(event: KeyboardEvent) {\n if (this.disabled) return; // If it's disabled, don't do anything.\n\n const options = this.dropdownElement.querySelectorAll('.option');\n \n switch (event.code) {\n case 'Enter':\n this.toggleDropdown();\n // Wait a bit for the dropdown to finish rendering\n this.waitForElement(() => {\n return this.dropdownElement.querySelectorAll('.option');\n }, (options) => {\n this.updateHighlightedOption(options);\n });\n break;\n case 'Space': \n this.toggleDropdown();\n // Wait a bit for the dropdown to finish rendering\n this.waitForElement(() => {\n return this.dropdownElement.querySelectorAll('.option');\n }, (options) => {\n this.updateHighlightedOption(options);\n });\n break;\n case 'ArrowDown':\n this.handleArrowDown(options);\n if (this.dropdownOpen) {\n this.updateHighlightedOption(options);\n }\n break;\n case 'ArrowUp':\n this.handleArrowUp(options);\n if (this.dropdownOpen) {\n this.updateHighlightedOption(options);\n }\n break;\n }\n }\n\n handleWrapperClick(event: MouseEvent) {\n // This is your existing logic for positioning the dropdown\n this.positionDropdown();\n\n // Check if the event target is the wrapper itself and not a child element.\n if (event.currentTarget === event.target) {\n this.toggleDropdown();\n }\n }\n\n clearSelection() {\n this.persistentSelectedOptions = [];\n this.ifxSelect.emit(this.persistentSelectedOptions); // if you want to emit empty selection after clearing\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 there's more space above than below the trigger and the dropdown doesn't fit below\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\n\n // Helper function to update highlighted option based on currentIndex\n private updateHighlightedOption(options: NodeList) {\n // Clear all highlights\n options.forEach((option: Element) => option.classList.remove('is-highlighted'));\n\n // Apply highlight to the current option\n if (this.currentIndex >= 0 && this.currentIndex < options.length) {\n (options[this.currentIndex] as Element).classList.add('is-highlighted');\n (options[this.currentIndex] as HTMLElement).focus();\n }\n }\n\n // Helper function to handle arrow down navigation\n private handleArrowDown(options: NodeList) {\n if (this.currentIndex < options.length - 1) {\n this.currentIndex++;\n } else {\n this.currentIndex = 0; // Wrap to the beginning.\n }\n }\n\n // Helper function to handle arrow up navigation\n private handleArrowUp(options: NodeList) {\n if (this.currentIndex > 0) {\n this.currentIndex--;\n } else {\n this.currentIndex = options.length - 1; // Wrap to the end.\n }\n }\n \n handleOptionKeyDown(e: KeyboardEvent, option: Option) {\n if(e.key !== 'ArrowUp' && e.key !== 'ArrowDown') e.stopPropagation();\n if(e.key === 'Enter' || e.key === ' ') {\n this.handleOptionClick(option);\n }\n }\n\n renderOption(option: Option, index: number) {\n const isIndeterminate = this.isOptionIndeterminate(option);\n const isSelected = option.children ? isIndeterminate || this.isOptionSelected(option) : this.persistentSelectedOptions.some(selectedOption => selectedOption.value === option.value);\n const disableCheckbox = !isSelected && this.maxItemCount && this.persistentSelectedOptions.length >= this.maxItemCount;\n const uniqueId = `checkbox-${option.value}-${index}`; // Generate a unique ID using the index\n \n return (\n <div class=\"option-wrapper\">\n <div class={`option ${isSelected ? 'selected' : ''} ${disableCheckbox ? 'disabled' : ''} \n ${this.getSizeClass()}`}\n data-value={option.value}\n onKeyDown={(e) => !disableCheckbox && this.handleOptionKeyDown(e, option)}\n onClick={() => !disableCheckbox && this.handleOptionClick(option)}\n tabindex=\"0\"\n role={`${option.children?.length > 0 ? \"treeitem\" : \"option\"}`}>\n <ifx-checkbox tabIndex={-1} ref={(el) => option.checkboxRef = el} id={uniqueId} size=\"s\" checked={isIndeterminate ? false : isSelected} indeterminate={isIndeterminate} disabled={disableCheckbox}></ifx-checkbox>\n <label htmlFor={uniqueId} onClick={(e) => e.stopPropagation()}>{option.label}</label>\n </div>\n {option.children && option.children.map((child, childIndex) => this.renderSubOption(child, `${index}-${childIndex}`))}\n </div>\n );\n }\n\n isOptionSelected(option: Option): boolean {\n if (!option.children) return false;\n\n return option.children.every(child =>\n this.persistentSelectedOptions.some(persistentOption => persistentOption.value === child.value)\n );\n }\n\n\n isOptionIndeterminate(option: Option): boolean {\n if (!option.children) return false;\n\n const selectedChildren = option.children.filter(child =>\n this.persistentSelectedOptions.some(persistentOption => persistentOption.value === child.value)\n ).length;\n\n return selectedChildren > 0 && selectedChildren < option.children.length;\n }\n\n\n findInOptions(options: Option[], searchTerm: string): Option | null {\n for (const option of options) {\n if (option.value === searchTerm) {\n return option;\n }\n if (option.children) {\n const foundInChildren = this.findInOptions(option.children, searchTerm);\n if (foundInChildren) {\n return foundInChildren;\n }\n }\n }\n return null;\n }\n\n\n renderSubOption(option: Option, index: string) {\n const isSelected = this.persistentSelectedOptions.some(selectedOption => selectedOption.value === option.value);\n const disableCheckbox = !isSelected && this.maxItemCount && this.persistentSelectedOptions.length >= this.maxItemCount;\n const uniqueId = `checkbox-${option.value}-${index}`;\n\n return (\n <div class={`option sub-option ${isSelected ? 'selected' : ''} ${this.getSizeClass()} ${disableCheckbox ? 'disabled' : ''}`}\n data-value={option.value}\n role={`${option.children?.length > 0 ? \"option\" : \"treeitem\"}`}\n onKeyDown={(e) => !disableCheckbox && this.handleOptionKeyDown(e, option)}\n onClick={() => !disableCheckbox && this.handleOptionClick(option)}\n tabindex=\"0\">\n <ifx-checkbox tabIndex={-1} ref={(el) => option.checkboxRef = el} id={uniqueId} size=\"s\" checked={isSelected} disabled={disableCheckbox}></ifx-checkbox>\n <label htmlFor={uniqueId} onClick={(e) => e.stopPropagation()}>{option.label}</label>\n </div>\n );\n }\n\n private renderSelectAll() {\n const allSelected = this.persistentSelectedOptions.length === this.optionCount;\n const noneSelected = this.persistentSelectedOptions.length === 0;\n const indeterminate = this.optionCount > 0 && !noneSelected && !allSelected;\n\n const that = this;\n function toggleSelectAll() {\n if (allSelected) {\n that.clearSelection();\n } else {\n that.selectAll();\n }\n }\n\n function handleSelectAllKeydown(e: KeyboardEvent) {\n if(e.key !== 'ArrowUp' && e.key !== 'ArrowDown') e.stopPropagation();\n if(e.key === 'Enter' || e.key === ' ') {\n toggleSelectAll();\n }\n }\n\n return <div class=\"select-all-wrapper\">\n <div class={`option ${this.getSizeClass()}`} tabindex='0' onKeyDown={(e) => handleSelectAllKeydown(e)} onClick={toggleSelectAll}>\n <ifx-checkbox tabIndex={-1} id='selectAll' checked={allSelected} indeterminate={indeterminate} size=\"s\"></ifx-checkbox>\n <label htmlFor='selectAll'>Select all</label>\n </div>\n <ifx-dropdown-separator></ifx-dropdown-separator>\n </div>;\n }\n\n\n render() {\n // Create a label for the selected options\n const selectedOptionsLabels = this.persistentSelectedOptions\n .filter(option => {\n // check if option is a child and its parent is selected\n const isChildSelectedWithParent = this.persistentSelectedOptions.some(parentOption =>\n parentOption.children &&\n parentOption.children.some(child => child.value === option.value) &&\n parentOption.selected\n );\n return !isChildSelectedWithParent;\n })\n .map(option => option.label)\n .join(', ');\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.getSizeClass()} \n ${this.dropdownOpen ? 'active' : ''} \n ${this.dropdownFlipped ? 'is-flipped' : ''}\n ${this.internalError ? 'error' : \"\"}\n ${this.disabled ? '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 ${this.persistentSelectedOptions.length === 0 ? 'placeholder' : \"\"}\n `}\n onClick={this.disabled ? undefined : () => this.toggleDropdown()}\n >\n {this.persistentSelectedOptions.length > 0 ? selectedOptionsLabels : this.placeholder}\n </div>\n {this.dropdownOpen && (\n <div class=\"ifx-multiselect-dropdown-menu\"\n onScroll={(event) => this.handleScroll(event)}\n style={{ '--dynamic-z-index': this.zIndex.toString() }}>\n {this.showSearch && <input type=\"text\" role=\"textbox\" class=\"search-input\" onKeyDown={(e) => { e.stopPropagation() }} onInput={(event) => this.handleSearch(event.target)} placeholder=\"Search...\"></input>}\n {this.showSelectAll && this.renderSelectAll()}\n {this.filteredOptions.map((option, index) => this.renderOption(option, index))}\n {this.isLoading && <div>Loading more options...</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\" 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='chevronup-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}\n"]}
1
+ {"version":3,"file":"multiselect.js","sourceRoot":"","sources":["../../../../src/components/select/multi-select/multiselect.tsx"],"names":[],"mappings":"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","sourcesContent":["import { Component, Prop, State, Event, EventEmitter, Element, h, Watch, AttachInternals } from '@stencil/core';\nimport { Option } from './interfaces';\n\n// Debounce function\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\n\n\nexport class Multiselect {\n\n @Prop() name: string;\n @Prop() options: any[] | string;\n @Prop() batchSize: number = 50;\n @Prop() size: string = 'medium (40px)';\n @Prop() disabled: boolean = false;\n @Prop() error: boolean = false;\n @State() internalError: boolean = false;\n @Prop() errorMessage: string = \"Error\";\n @State() internalErrorMessage: string;\n @Prop() label: string = \"\";\n @State() persistentSelectedOptions: Option[] = [];\n @Prop() placeholder: string = \"\";\n @State() dropdownOpen = false;\n @State() dropdownFlipped: boolean;\n @Prop() maxItemCount: number;\n @State() zIndex: number = 1; // default z-index value\n static globalZIndex = 1; // This will be shared among all instances of the component.\n private currentIndex: number = 0; //needed for option selection using keyboard\n @State() isLoading: boolean = false;\n @State() loadedOptions: Option[] = [];\n @State() filteredOptions: Option[] = [];\n @Prop() showSearch: boolean = true;\n @Prop() showSelectAll: boolean = true;\n @State() optionCount: number = 0; // number of all options (leaves of the tree)\n @State() optionsProcessed: boolean = false; // flag whether options have already been counted, intial selections saved\n\n\n @Event() ifxSelect: EventEmitter;\n @Event() ifxMultiselectIsOpen: EventEmitter;\n\n @Element() el: HTMLElement;\n dropdownElement!: HTMLElement;\n\n @AttachInternals() internals: ElementInternals;\n\n\n @Watch('options')\n updateOptions() { \n this.loadedOptions = [];\n this.filteredOptions = [];\n this.optionCount = 0;\n this.optionsProcessed = false;\n this.persistentSelectedOptions = [];\n\n this.loadInitialOptions();\n }\n\n\n async loadInitialOptions() {\n this.isLoading = true;\n this.internalError = this.error;\n this.internalErrorMessage = this.errorMessage;\n // Load the first batch of options (e.g., first 20)\n this.loadedOptions = await this.fetchOptions(0, this.batchSize);\n this.isLoading = false;\n }\n\n async fetchMoreOptions() {\n this.isLoading = true;\n const moreOptions = await this.fetchOptions(this.loadedOptions.length, this.batchSize);\n this.loadedOptions = [...this.loadedOptions, ...moreOptions];\n this.isLoading = false;\n }\n\n\n handleScroll(event: UIEvent) {\n const element = event.target as HTMLElement;\n const halfwayPoint = Math.floor((element.scrollHeight - element.clientHeight) / 2); //loading more options when the user has scrolled halfway through the current list\n\n if (element.scrollTop >= halfwayPoint) {\n this.fetchMoreOptions();\n }\n }\n\n\n\n\n async fetchOptions(startIndex: number, count: number): Promise<Option[]> {\n let allOptions: Option[] = [];\n\n // Parse options if it's a string, or use directly if it's an array\n if (typeof this.options === 'string') {\n try {\n allOptions = JSON.parse(this.options);\n \n } catch (err) {\n console.error('Failed to parse options:', err);\n }\n } else if (Array.isArray(this.options)) {\n allOptions = this.options;\n } else {\n console.error('Unexpected value for options:', this.options);\n }\n\n if (!this.optionsProcessed) {\n this.optionCount = this.countOptions(allOptions);\n const initiallySelected = this.collectSelectedOptions(allOptions);\n const initallySelectedNotInState = initiallySelected.filter(init => !this.persistentSelectedOptions.some(opt => opt.value == init.value));\n this.persistentSelectedOptions = [...this.persistentSelectedOptions, ...initallySelectedNotInState];\n this.optionsProcessed = true;\n }\n // Slice the options array based on startIndex and count\n const slicedOptions = allOptions.slice(startIndex, startIndex + count);\n return slicedOptions;\n }\n\n /**\n * Collects and returns all options that are selected.\n * When the parent is selected, then the value of the children will be overriden with selected as well.\n * It will only collect the leaves of the tree.\n * \n * @param options A list of options.\n * @returns A list with all selected options\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 // if parent is selected, then select all child options\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 /**\n * Collects all leaf children options.\n * \n * @param option A list with all leaf-children.\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 /**\n * Count the number of options. Only counts the leaves of the options tree.\n */\n countOptions(options: Option[]): number {\n let count = 0;\n for (const option of options) {\n if (option.children && option.children.length >= 0) {\n count += this.countOptions(option.children);\n } else {\n count++;\n }\n }\n return count;\n }\n\n\n handleSearch = debounce((targetElement: HTMLInputElement) => {\n const searchTerm = targetElement.value.toLowerCase();\n if (searchTerm === '') {\n this.filteredOptions = this.loadedOptions;\n } else {\n this.filteredOptions = this.loadedOptions.filter(option => {\n const matchesSearchTerm = option.label.toLowerCase().includes(searchTerm);\n if (option.children) {\n const childrenMatch = option.children.some(child => {\n return child.label.toLowerCase().includes(searchTerm);\n });\n return matchesSearchTerm || childrenMatch;\n }\n return matchesSearchTerm;\n });\n }\n }, 300);\n\n componentDidLoad() {\n setTimeout(() => {\n this.positionDropdown();\n }, 500);\n\n // setInterval(this.handleScroll, 5000); // Runs every 5 seconds (5000 milliseconds)\n }\n\n componentWillLoad() {\n this.loadInitialOptions();\n this.filteredOptions = [...this.loadedOptions];\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('loadedOptions')\n loadedOptionsChanged() {\n this.filteredOptions = [...this.loadedOptions];\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\n handleOptionClick(option: Option) {\n this.internalError = false;\n\n if (!option.selected && this.isSelectionLimitReached(option)) {\n option.checkboxRef.toggleCheckedState(false)\n this.internalError = true;\n this.internalErrorMessage = \"Please consider the maximum number of items to choose from\";\n return;\n }\n \n this.updateSelection(option);\n this.ifxSelect.emit(this.persistentSelectedOptions);\n }\n\n\n isSelectionLimitReached(option: Option): boolean {\n let newOptionsLength = option.children ? option.children.length : 1;\n return this.maxItemCount && this.persistentSelectedOptions.length + newOptionsLength > this.maxItemCount &&\n !this.persistentSelectedOptions.some(selectedOption => selectedOption.value === option.value)\n }\n\n updateSelection(option: Option) {\n const wasSelected = this.persistentSelectedOptions.some(selectedOption => selectedOption.value === option.value);\n\n if (option.children && option.children.length > 0) {\n this.handleParentOptionClick(option);\n } else {\n this.handleChildOptionClick(option, wasSelected);\n }\n }\n\n async selectAll() {\n const allOptions = await this.fetchOptions(0, this.optionCount);\n this.selectAllRecursive(allOptions);\n \n this.ifxSelect.emit(this.persistentSelectedOptions);\n }\n\n private selectAllRecursive(options: Option[]) {\n for (const opt of options) {\n if (opt.children && opt.children.length > 0) {\n this.selectAllRecursive(opt.children);\n } else {\n if (!this.persistentSelectedOptions.some((some) => some.value === opt.value )) {\n opt.selected = true;\n this.persistentSelectedOptions = [...this.persistentSelectedOptions, opt];\n this.optionCount = this.countOptions( this.persistentSelectedOptions)\n }\n }\n }\n\n }\n\n handleParentOptionClick(option: Option) {\n const allChildrenSelected = option.children.every(child =>\n this.persistentSelectedOptions.some(selectedOption => selectedOption.value === child.value)\n );\n\n if (allChildrenSelected) {\n this.persistentSelectedOptions = [...this.persistentSelectedOptions.filter(\n selectedOption => !option.children.some(child => child.value === selectedOption.value)\n )];\n\n option.selected = false;\n option.children.forEach(child => {\n child.selected = false;\n })\n\n } else {\n const newChildren = [...option.children.filter(childOption =>\n !this.persistentSelectedOptions.some(selectedOption => selectedOption.value === childOption.value)\n )];\n option.selected = true;\n option.children.forEach(child => {\n child.selected = true;\n })\n this.persistentSelectedOptions = [...this.persistentSelectedOptions, ...newChildren];\n }\n }\n\n handleChildOptionClick(option: Option, wasSelected: boolean) {\n if (wasSelected) {\n this.persistentSelectedOptions = [...this.persistentSelectedOptions.filter(selectedOption => selectedOption.value !== option.value)];\n option.selected = false;\n } else {\n this.persistentSelectedOptions = [...this.persistentSelectedOptions, option];\n option.selected = true;\n }\n this.updateParentSelectedState();\n }\n\n updateParentSelectedState() {\n this.loadedOptions.forEach(option => {\n if(option.children?.length > 0) {\n if(option.children.every(child => child.selected === true)) option.selected = true;\n else {\n option.selected = false;\n if(this.isOptionIndeterminate(option)) {\n option.indeterminate = true;\n }else{\n option.indeterminate = false;\n }\n }\n }\n });\n }\n\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.filteredOptions = this.loadedOptions;\n // Dispatch the ifxMultiselectIsOpen event\n this.ifxMultiselectIsOpen.emit(this.dropdownOpen);\n }\n }\n\n getSizeClass() {\n return `${this.size}` === \"s\"\n ? \"small-select\"\n : \"medium-select\";\n }\n\n toggleDropdown() {\n this.dropdownOpen = !this.dropdownOpen;\n setTimeout(() => {\n if (this.dropdownOpen) {\n document.addEventListener('click', this.handleDocumentClick);\n }\n // Dispatch the ifxMultiselectIsOpen event\n this.ifxMultiselectIsOpen.emit(this.dropdownOpen);\n }, 0);\n this.zIndex = Multiselect.globalZIndex++;\n }\n\n\n waitForElement(querySelectorFunc: Function, callback: Function, maxTries = 50) {\n let tries = 0;\n function request() {\n requestAnimationFrame(() => {\n const elements = querySelectorFunc();\n if (elements.length > 0 || tries > maxTries) {\n callback(elements);\n } else {\n tries++;\n request();\n }\n });\n }\n request();\n }\n\n\n handleKeyDown(event: KeyboardEvent) {\n if (this.disabled) return; // If it's disabled, don't do anything.\n\n const options = this.dropdownElement.querySelectorAll('.option');\n \n switch (event.code) {\n case 'Enter':\n this.toggleDropdown();\n // Wait a bit for the dropdown to finish rendering\n this.waitForElement(() => {\n return this.dropdownElement.querySelectorAll('.option');\n }, (options) => {\n this.updateHighlightedOption(options);\n });\n break;\n case 'Space': \n this.toggleDropdown();\n // Wait a bit for the dropdown to finish rendering\n this.waitForElement(() => {\n return this.dropdownElement.querySelectorAll('.option');\n }, (options) => {\n this.updateHighlightedOption(options);\n });\n break;\n case 'ArrowDown':\n this.handleArrowDown(options);\n if (this.dropdownOpen) {\n this.updateHighlightedOption(options);\n }\n break;\n case 'ArrowUp':\n this.handleArrowUp(options);\n if (this.dropdownOpen) {\n this.updateHighlightedOption(options);\n }\n break;\n }\n }\n\n handleWrapperClick(event: MouseEvent) {\n // This is your existing logic for positioning the dropdown\n this.positionDropdown();\n\n // Check if the event target is the wrapper itself and not a child element.\n if (event.currentTarget === event.target) {\n this.toggleDropdown();\n }\n }\n\n clearSelection() {\n this.persistentSelectedOptions = [];\n this.ifxSelect.emit(this.persistentSelectedOptions); // if you want to emit empty selection after clearing\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 there's more space above than below the trigger and the dropdown doesn't fit below\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\n\n // Helper function to update highlighted option based on currentIndex\n private updateHighlightedOption(options: NodeList) {\n // Clear all highlights\n options.forEach((option: Element) => option.classList.remove('is-highlighted'));\n\n // Apply highlight to the current option\n if (this.currentIndex >= 0 && this.currentIndex < options.length) {\n (options[this.currentIndex] as Element).classList.add('is-highlighted');\n (options[this.currentIndex] as HTMLElement).focus();\n }\n }\n\n // Helper function to handle arrow down navigation\n private handleArrowDown(options: NodeList) {\n if (this.currentIndex < options.length - 1) {\n this.currentIndex++;\n } else {\n this.currentIndex = 0; // Wrap to the beginning.\n }\n }\n\n // Helper function to handle arrow up navigation\n private handleArrowUp(options: NodeList) {\n if (this.currentIndex > 0) {\n this.currentIndex--;\n } else {\n this.currentIndex = options.length - 1; // Wrap to the end.\n }\n }\n \n handleOptionKeyDown(e: KeyboardEvent, option: Option) {\n if(e.key !== 'ArrowUp' && e.key !== 'ArrowDown') e.stopPropagation();\n if(e.key === 'Enter' || e.key === ' ') {\n this.handleOptionClick(option);\n }\n }\n\n renderOption(option: Option, index: number) {\n const isIndeterminate = this.isOptionIndeterminate(option);\n const isSelected = option.children ? isIndeterminate || this.isOptionSelected(option) : this.persistentSelectedOptions.some(selectedOption => selectedOption.value === option.value);\n const disableCheckbox = !isSelected && this.maxItemCount && this.persistentSelectedOptions.length >= this.maxItemCount;\n const uniqueId = `checkbox-${option.value}-${index}`; // Generate a unique ID using the index\n \n return (\n <div class=\"option-wrapper\">\n <div class={`option ${isSelected ? 'selected' : ''} ${disableCheckbox ? 'disabled' : ''} \n ${this.getSizeClass()}`}\n data-value={option.value}\n onKeyDown={(e) => !disableCheckbox && this.handleOptionKeyDown(e, option)}\n onClick={() => !disableCheckbox && this.handleOptionClick(option)}\n tabindex=\"0\"\n role={`${option.children?.length > 0 ? \"treeitem\" : \"option\"}`}>\n <ifx-checkbox tabIndex={-1} ref={(el) => option.checkboxRef = el} id={uniqueId} size=\"s\" checked={isIndeterminate ? false : isSelected} indeterminate={isIndeterminate} disabled={disableCheckbox}></ifx-checkbox>\n <label htmlFor={uniqueId} onClick={(e) => e.stopPropagation()}>{option.label}</label>\n </div>\n {option.children && option.children.map((child, childIndex) => this.renderSubOption(child, `${index}-${childIndex}`))}\n </div>\n );\n }\n\n isOptionSelected(option: Option): boolean {\n if (!option.children) return false;\n\n return option.children.every(child =>\n this.persistentSelectedOptions.some(persistentOption => persistentOption.value === child.value)\n );\n }\n\n\n isOptionIndeterminate(option: Option): boolean {\n if (!option.children) return false;\n\n const selectedChildren = option.children.filter(child =>\n this.persistentSelectedOptions.some(persistentOption => persistentOption.value === child.value)\n ).length;\n\n return selectedChildren > 0 && selectedChildren < option.children.length;\n }\n\n\n findInOptions(options: Option[], searchTerm: string): Option | null {\n for (const option of options) {\n if (option.value === searchTerm) {\n return option;\n }\n if (option.children) {\n const foundInChildren = this.findInOptions(option.children, searchTerm);\n if (foundInChildren) {\n return foundInChildren;\n }\n }\n }\n return null;\n }\n\n\n renderSubOption(option: Option, index: string) {\n const isSelected = this.persistentSelectedOptions.some(selectedOption => selectedOption.value === option.value);\n const disableCheckbox = !isSelected && this.maxItemCount && this.persistentSelectedOptions.length >= this.maxItemCount;\n const uniqueId = `checkbox-${option.value}-${index}`;\n\n return (\n <div class={`option sub-option ${isSelected ? 'selected' : ''} ${this.getSizeClass()} ${disableCheckbox ? 'disabled' : ''}`}\n data-value={option.value}\n role={`${option.children?.length > 0 ? \"option\" : \"treeitem\"}`}\n onKeyDown={(e) => !disableCheckbox && this.handleOptionKeyDown(e, option)}\n onClick={() => !disableCheckbox && this.handleOptionClick(option)}\n tabindex=\"0\">\n <ifx-checkbox tabIndex={-1} ref={(el) => option.checkboxRef = el} id={uniqueId} size=\"s\" checked={isSelected} disabled={disableCheckbox}></ifx-checkbox>\n <label htmlFor={uniqueId} onClick={(e) => e.stopPropagation()}>{option.label}</label>\n </div>\n );\n }\n\n private renderSelectAll() {\n const allSelected = this.persistentSelectedOptions.length === this.optionCount;\n const noneSelected = this.persistentSelectedOptions.length === 0;\n const indeterminate = this.optionCount > 0 && !noneSelected && !allSelected;\n\n const that = this;\n function toggleSelectAll() {\n if (allSelected) {\n that.clearSelection();\n } else {\n that.selectAll();\n }\n }\n\n function handleSelectAllKeydown(e: KeyboardEvent) {\n if(e.key !== 'ArrowUp' && e.key !== 'ArrowDown') e.stopPropagation();\n if(e.key === 'Enter' || e.key === ' ') {\n toggleSelectAll();\n }\n }\n\n return <div class=\"select-all-wrapper\">\n <div class={`option ${this.getSizeClass()}`} tabindex='0' onKeyDown={(e) => handleSelectAllKeydown(e)} onClick={toggleSelectAll}>\n <ifx-checkbox tabIndex={-1} id='selectAll' checked={allSelected} indeterminate={indeterminate} size=\"s\"></ifx-checkbox>\n <label htmlFor='selectAll'>Select all</label>\n </div>\n <ifx-dropdown-separator></ifx-dropdown-separator>\n </div>;\n }\n\n\n render() {\n // Create a label for the selected options\n const selectedOptionsLabels = this.persistentSelectedOptions\n .filter(option => {\n // check if option is a child and its parent is selected\n const isChildSelectedWithParent = this.persistentSelectedOptions.some(parentOption =>\n parentOption.children &&\n parentOption.children.some(child => child.value === option.value) &&\n parentOption.selected\n );\n return !isChildSelectedWithParent;\n })\n .map(option => option.label)\n .join(', ');\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.getSizeClass()} \n ${this.dropdownOpen ? 'active' : ''} \n ${this.dropdownFlipped ? 'is-flipped' : ''}\n ${this.internalError ? 'error' : \"\"}\n ${this.disabled ? '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 ${this.persistentSelectedOptions.length === 0 ? 'placeholder' : \"\"}\n `}\n onClick={this.disabled ? undefined : () => this.toggleDropdown()}\n >\n {this.persistentSelectedOptions.length > 0 ? selectedOptionsLabels : this.placeholder}\n </div>\n {this.dropdownOpen && (\n <div class=\"ifx-multiselect-dropdown-menu\"\n onScroll={(event) => this.handleScroll(event)}\n style={{ '--dynamic-z-index': this.zIndex.toString() }}>\n {this.showSearch && <input type=\"text\" role=\"textbox\" class=\"search-input\" onKeyDown={(e) => { e.stopPropagation() }} onInput={(event) => this.handleSearch(event.target)} placeholder=\"Search...\"></input>}\n {this.showSelectAll && this.renderSelectAll()}\n {this.filteredOptions.map((option, index) => this.renderOption(option, index))}\n {this.isLoading && <div>Loading more options...</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\" 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='chevronup-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}\n"]}