@infineon/infineon-design-system-stencil 37.0.0--canary.1926.76e6b69bceb229a719b7b108b740979beceaf7fa.0 → 37.0.0--canary.1926.5d4a82a3815e9932459a2a13be73c36d122d8c9b.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 (618) hide show
  1. package/dist/cjs/dom-utils-2c4573c2.js +20 -0
  2. package/dist/cjs/dom-utils-2c4573c2.js.map +1 -0
  3. package/dist/cjs/ifx-accordion_2.cjs.entry.js +8 -1
  4. package/dist/cjs/ifx-accordion_2.cjs.entry.js.map +1 -1
  5. package/dist/cjs/ifx-alert_2.cjs.entry.js +6 -0
  6. package/dist/cjs/ifx-alert_2.cjs.entry.js.map +1 -1
  7. package/dist/cjs/ifx-badge.cjs.entry.js +9 -1
  8. package/dist/cjs/ifx-badge.cjs.entry.js.map +1 -1
  9. package/dist/cjs/ifx-basic-table.cjs.entry.js +6 -1
  10. package/dist/cjs/ifx-basic-table.cjs.entry.js.map +1 -1
  11. package/dist/cjs/ifx-breadcrumb.cjs.entry.js +8 -1
  12. package/dist/cjs/ifx-breadcrumb.cjs.entry.js.map +1 -1
  13. package/dist/cjs/ifx-button.cjs.entry.js +6 -1
  14. package/dist/cjs/ifx-button.cjs.entry.js.map +1 -1
  15. package/dist/cjs/ifx-card.cjs.entry.js +8 -3
  16. package/dist/cjs/ifx-card.cjs.entry.js.map +1 -1
  17. package/dist/cjs/ifx-checkbox-group.cjs.entry.js +6 -1
  18. package/dist/cjs/ifx-checkbox-group.cjs.entry.js.map +1 -1
  19. package/dist/cjs/ifx-checkbox.cjs.entry.js +8 -3
  20. package/dist/cjs/ifx-checkbox.cjs.entry.js.map +1 -1
  21. package/dist/cjs/ifx-chip_3.cjs.entry.js +17 -9
  22. package/dist/cjs/ifx-chip_3.cjs.entry.js.map +1 -1
  23. package/dist/cjs/ifx-content-switcher.cjs.entry.js +6 -1
  24. package/dist/cjs/ifx-content-switcher.cjs.entry.js.map +1 -1
  25. package/dist/cjs/ifx-date-picker.cjs.entry.js +9 -2
  26. package/dist/cjs/ifx-date-picker.cjs.entry.js.map +1 -1
  27. package/dist/cjs/ifx-dropdown.cjs.entry.js +6 -1
  28. package/dist/cjs/ifx-dropdown.cjs.entry.js.map +1 -1
  29. package/dist/cjs/ifx-file-upload.cjs.entry.js +9 -2
  30. package/dist/cjs/ifx-file-upload.cjs.entry.js.map +1 -1
  31. package/dist/cjs/ifx-footer.cjs.entry.js +9 -4
  32. package/dist/cjs/ifx-footer.cjs.entry.js.map +1 -1
  33. package/dist/cjs/ifx-icon-button.cjs.entry.js +6 -1
  34. package/dist/cjs/ifx-icon-button.cjs.entry.js.map +1 -1
  35. package/dist/cjs/ifx-icon.cjs.entry.js +31 -1
  36. package/dist/cjs/ifx-icon.cjs.entry.js.map +1 -1
  37. package/dist/cjs/ifx-indicator.cjs.entry.js +7 -2
  38. package/dist/cjs/ifx-indicator.cjs.entry.js.map +1 -1
  39. package/dist/cjs/ifx-link.cjs.entry.js +9 -1
  40. package/dist/cjs/ifx-link.cjs.entry.js.map +1 -1
  41. package/dist/cjs/ifx-modal.cjs.entry.js +9 -2
  42. package/dist/cjs/ifx-modal.cjs.entry.js.map +1 -1
  43. package/dist/cjs/ifx-multiselect_2.cjs.entry.js +5 -0
  44. package/dist/cjs/ifx-multiselect_2.cjs.entry.js.map +1 -1
  45. package/dist/cjs/ifx-navbar.cjs.entry.js +5 -3
  46. package/dist/cjs/ifx-navbar.cjs.entry.js.map +1 -1
  47. package/dist/cjs/ifx-notification.cjs.entry.js +10 -2
  48. package/dist/cjs/ifx-notification.cjs.entry.js.map +1 -1
  49. package/dist/cjs/ifx-progress-bar.cjs.entry.js +7 -1
  50. package/dist/cjs/ifx-progress-bar.cjs.entry.js.map +1 -1
  51. package/dist/cjs/ifx-radio-button-group.cjs.entry.js +6 -1
  52. package/dist/cjs/ifx-radio-button-group.cjs.entry.js.map +1 -1
  53. package/dist/cjs/ifx-radio-button.cjs.entry.js +7 -2
  54. package/dist/cjs/ifx-radio-button.cjs.entry.js.map +1 -1
  55. package/dist/cjs/ifx-search-bar.cjs.entry.js +6 -1
  56. package/dist/cjs/ifx-search-bar.cjs.entry.js.map +1 -1
  57. package/dist/cjs/ifx-search-field.cjs.entry.js +9 -1
  58. package/dist/cjs/ifx-search-field.cjs.entry.js.map +1 -1
  59. package/dist/cjs/ifx-segmented-control.cjs.entry.js +9 -2
  60. package/dist/cjs/ifx-segmented-control.cjs.entry.js.map +1 -1
  61. package/dist/cjs/ifx-select.cjs.entry.js +7 -2
  62. package/dist/cjs/ifx-select.cjs.entry.js.map +1 -1
  63. package/dist/cjs/ifx-sidebar.cjs.entry.js +7 -5
  64. package/dist/cjs/ifx-sidebar.cjs.entry.js.map +1 -1
  65. package/dist/cjs/ifx-slider.cjs.entry.js +7 -2
  66. package/dist/cjs/ifx-slider.cjs.entry.js.map +1 -1
  67. package/dist/cjs/ifx-spinner_2.cjs.entry.js +17 -6
  68. package/dist/cjs/ifx-spinner_2.cjs.entry.js.map +1 -1
  69. package/dist/cjs/ifx-status.cjs.entry.js +9 -1
  70. package/dist/cjs/ifx-status.cjs.entry.js.map +1 -1
  71. package/dist/cjs/ifx-stepper.cjs.entry.js +7 -2
  72. package/dist/cjs/ifx-stepper.cjs.entry.js.map +1 -1
  73. package/dist/cjs/ifx-switch.cjs.entry.js +6 -1
  74. package/dist/cjs/ifx-switch.cjs.entry.js.map +1 -1
  75. package/dist/cjs/ifx-table.cjs.entry.js +7 -2
  76. package/dist/cjs/ifx-table.cjs.entry.js.map +1 -1
  77. package/dist/cjs/ifx-tabs.cjs.entry.js +7 -2
  78. package/dist/cjs/ifx-tabs.cjs.entry.js.map +1 -1
  79. package/dist/cjs/ifx-tag.cjs.entry.js +9 -1
  80. package/dist/cjs/ifx-tag.cjs.entry.js.map +1 -1
  81. package/dist/cjs/ifx-textarea.cjs.entry.js +6 -1
  82. package/dist/cjs/ifx-textarea.cjs.entry.js.map +1 -1
  83. package/dist/cjs/ifx-tooltip.cjs.entry.js +9 -4
  84. package/dist/cjs/ifx-tooltip.cjs.entry.js.map +1 -1
  85. package/dist/cjs/ifx-tree-view.cjs.entry.js +9 -1
  86. package/dist/cjs/ifx-tree-view.cjs.entry.js.map +1 -1
  87. package/dist/cjs/tracking-f00364dc.js +41 -0
  88. package/dist/cjs/tracking-f00364dc.js.map +1 -0
  89. package/dist/collection/components/accordion/accordion.js +8 -2
  90. package/dist/collection/components/accordion/accordion.js.map +1 -1
  91. package/dist/collection/components/alert/alert.js +6 -0
  92. package/dist/collection/components/alert/alert.js.map +1 -1
  93. package/dist/collection/components/badge/badge.js +9 -1
  94. package/dist/collection/components/badge/badge.js.map +1 -1
  95. package/dist/collection/components/breadcrumb/breadcrumb.js +8 -1
  96. package/dist/collection/components/breadcrumb/breadcrumb.js.map +1 -1
  97. package/dist/collection/components/button/button.js +6 -1
  98. package/dist/collection/components/button/button.js.map +1 -1
  99. package/dist/collection/components/card/card.js +8 -3
  100. package/dist/collection/components/card/card.js.map +1 -1
  101. package/dist/collection/components/checkbox/checkbox.js +8 -3
  102. package/dist/collection/components/checkbox/checkbox.js.map +1 -1
  103. package/dist/collection/components/checkbox-group/checkbox-group.js +6 -1
  104. package/dist/collection/components/checkbox-group/checkbox-group.js.map +1 -1
  105. package/dist/collection/components/chip/chip.js +13 -8
  106. package/dist/collection/components/chip/chip.js.map +1 -1
  107. package/dist/collection/components/content-switcher/content-switcher.js +6 -1
  108. package/dist/collection/components/content-switcher/content-switcher.js.map +1 -1
  109. package/dist/collection/components/date-picker/date-picker.js +9 -2
  110. package/dist/collection/components/date-picker/date-picker.js.map +1 -1
  111. package/dist/collection/components/dropdown/dropdown.js +6 -1
  112. package/dist/collection/components/dropdown/dropdown.js.map +1 -1
  113. package/dist/collection/components/file-upload/file-upload.js +9 -2
  114. package/dist/collection/components/file-upload/file-upload.js.map +1 -1
  115. package/dist/collection/components/footer/footer.js +9 -4
  116. package/dist/collection/components/footer/footer.js.map +1 -1
  117. package/dist/collection/components/icon/infineonIconStencil.js +31 -1
  118. package/dist/collection/components/icon/infineonIconStencil.js.map +1 -1
  119. package/dist/collection/components/icon-button/icon-button.js +6 -1
  120. package/dist/collection/components/icon-button/icon-button.js.map +1 -1
  121. package/dist/collection/components/indicator/indicator.js +7 -2
  122. package/dist/collection/components/indicator/indicator.js.map +1 -1
  123. package/dist/collection/components/link/link.js +9 -1
  124. package/dist/collection/components/link/link.js.map +1 -1
  125. package/dist/collection/components/modal/modal.js +9 -2
  126. package/dist/collection/components/modal/modal.js.map +1 -1
  127. package/dist/collection/components/navigation/navbar/navbar.js +5 -3
  128. package/dist/collection/components/navigation/navbar/navbar.js.map +1 -1
  129. package/dist/collection/components/navigation/sidebar/sidebar.js +7 -5
  130. package/dist/collection/components/navigation/sidebar/sidebar.js.map +1 -1
  131. package/dist/collection/components/notification/notification.js +10 -2
  132. package/dist/collection/components/notification/notification.js.map +1 -1
  133. package/dist/collection/components/pagination/pagination.js +6 -1
  134. package/dist/collection/components/pagination/pagination.js.map +1 -1
  135. package/dist/collection/components/progress-bar/progress-bar.js +7 -1
  136. package/dist/collection/components/progress-bar/progress-bar.js.map +1 -1
  137. package/dist/collection/components/radio-button/radio-button.js +7 -2
  138. package/dist/collection/components/radio-button/radio-button.js.map +1 -1
  139. package/dist/collection/components/radio-button-group/radio-button-group.js +6 -1
  140. package/dist/collection/components/radio-button-group/radio-button-group.js.map +1 -1
  141. package/dist/collection/components/search-bar/search-bar.js +6 -1
  142. package/dist/collection/components/search-bar/search-bar.js.map +1 -1
  143. package/dist/collection/components/search-field/search-field.js +9 -1
  144. package/dist/collection/components/search-field/search-field.js.map +1 -1
  145. package/dist/collection/components/segmented-control/segmented-control.js +9 -2
  146. package/dist/collection/components/segmented-control/segmented-control.js.map +1 -1
  147. package/dist/collection/components/select/multi-select/multiselect.js +5 -0
  148. package/dist/collection/components/select/multi-select/multiselect.js.map +1 -1
  149. package/dist/collection/components/select/single-select/select.js +7 -2
  150. package/dist/collection/components/select/single-select/select.js.map +1 -1
  151. package/dist/collection/components/slider/slider.js +7 -2
  152. package/dist/collection/components/slider/slider.js.map +1 -1
  153. package/dist/collection/components/spinner/spinner.js +10 -2
  154. package/dist/collection/components/spinner/spinner.js.map +1 -1
  155. package/dist/collection/components/status/status.js +9 -1
  156. package/dist/collection/components/status/status.js.map +1 -1
  157. package/dist/collection/components/stepper/stepper.js +7 -2
  158. package/dist/collection/components/stepper/stepper.js.map +1 -1
  159. package/dist/collection/components/switch/switch.js +6 -1
  160. package/dist/collection/components/switch/switch.js.map +1 -1
  161. package/dist/collection/components/table-advanced-version/table.js +7 -2
  162. package/dist/collection/components/table-advanced-version/table.js.map +1 -1
  163. package/dist/collection/components/table-basic-version/table.js +6 -1
  164. package/dist/collection/components/table-basic-version/table.js.map +1 -1
  165. package/dist/collection/components/tabs/tabs.js +7 -3
  166. package/dist/collection/components/tabs/tabs.js.map +1 -1
  167. package/dist/collection/components/tag/tag.js +9 -1
  168. package/dist/collection/components/tag/tag.js.map +1 -1
  169. package/dist/collection/components/text-field/text-field.js +9 -4
  170. package/dist/collection/components/text-field/text-field.js.map +1 -1
  171. package/dist/collection/components/textarea/textarea.js +6 -1
  172. package/dist/collection/components/textarea/textarea.js.map +1 -1
  173. package/dist/collection/components/tooltip/tooltip.js +9 -4
  174. package/dist/collection/components/tooltip/tooltip.js.map +1 -1
  175. package/dist/collection/components/tree-view/tree-view.js +9 -1
  176. package/dist/collection/components/tree-view/tree-view.js.map +1 -1
  177. package/dist/collection/global/utils/dom-utils.js +15 -0
  178. package/dist/collection/global/utils/dom-utils.js.map +1 -0
  179. package/dist/collection/global/utils/tracking.js +37 -0
  180. package/dist/collection/global/utils/tracking.js.map +1 -0
  181. package/dist/components/ifx-accordion-item.js +1 -1
  182. package/dist/components/ifx-accordion.js +1 -1
  183. package/dist/components/ifx-alert.js +1 -1
  184. package/dist/components/ifx-badge.js +9 -1
  185. package/dist/components/ifx-badge.js.map +1 -1
  186. package/dist/components/ifx-basic-table.js +6 -1
  187. package/dist/components/ifx-basic-table.js.map +1 -1
  188. package/dist/components/ifx-breadcrumb-item-label.js +1 -1
  189. package/dist/components/ifx-breadcrumb.js +8 -1
  190. package/dist/components/ifx-breadcrumb.js.map +1 -1
  191. package/dist/components/ifx-button.js +1 -1
  192. package/dist/components/ifx-card.js +8 -3
  193. package/dist/components/ifx-card.js.map +1 -1
  194. package/dist/components/ifx-checkbox-group.js +7 -2
  195. package/dist/components/ifx-checkbox-group.js.map +1 -1
  196. package/dist/components/ifx-checkbox.js +1 -1
  197. package/dist/components/ifx-chip-item.js +1 -1
  198. package/dist/components/ifx-chip.js +1 -1
  199. package/dist/components/ifx-content-switcher.js +6 -1
  200. package/dist/components/ifx-content-switcher.js.map +1 -1
  201. package/dist/components/ifx-date-picker.js +10 -3
  202. package/dist/components/ifx-date-picker.js.map +1 -1
  203. package/dist/components/ifx-download.js +1 -1
  204. package/dist/components/ifx-dropdown-item.js +1 -1
  205. package/dist/components/ifx-dropdown-trigger-button.js +2 -2
  206. package/dist/components/ifx-dropdown.js +6 -1
  207. package/dist/components/ifx-dropdown.js.map +1 -1
  208. package/dist/components/ifx-faq.js +3 -3
  209. package/dist/components/ifx-file-upload.js +13 -6
  210. package/dist/components/ifx-file-upload.js.map +1 -1
  211. package/dist/components/ifx-filter-accordion.js +2 -2
  212. package/dist/components/ifx-filter-bar.js +2 -2
  213. package/dist/components/ifx-filter-search.js +2 -2
  214. package/dist/components/ifx-footer.js +9 -4
  215. package/dist/components/ifx-footer.js.map +1 -1
  216. package/dist/components/ifx-icon-button.js +1 -1
  217. package/dist/components/ifx-icon.js +1 -1
  218. package/dist/components/ifx-icons-preview.js +4 -4
  219. package/dist/components/ifx-indicator.js +1 -1
  220. package/dist/components/ifx-link.js +1 -1
  221. package/dist/components/ifx-list-entry.js +3 -3
  222. package/dist/components/ifx-list.js +2 -2
  223. package/dist/components/ifx-modal.js +11 -4
  224. package/dist/components/ifx-modal.js.map +1 -1
  225. package/dist/components/ifx-multiselect-option.js +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.js +6 -4
  229. package/dist/components/ifx-navbar.js.map +1 -1
  230. package/dist/components/ifx-notification.js +1 -1
  231. package/dist/components/ifx-overview-table.js +3 -3
  232. package/dist/components/ifx-pagination.js +1 -1
  233. package/dist/components/ifx-progress-bar.js +1 -1
  234. package/dist/components/ifx-radio-button-group.js +7 -2
  235. package/dist/components/ifx-radio-button-group.js.map +1 -1
  236. package/dist/components/ifx-radio-button.js +1 -1
  237. package/dist/components/ifx-search-bar.js +8 -3
  238. package/dist/components/ifx-search-bar.js.map +1 -1
  239. package/dist/components/ifx-search-field.js +1 -1
  240. package/dist/components/ifx-segment.js +1 -1
  241. package/dist/components/ifx-segmented-control.js +10 -3
  242. package/dist/components/ifx-segmented-control.js.map +1 -1
  243. package/dist/components/ifx-select.js +1 -1
  244. package/dist/components/ifx-set-filter.js +7 -7
  245. package/dist/components/ifx-sidebar-item.js +2 -2
  246. package/dist/components/ifx-sidebar.js +7 -5
  247. package/dist/components/ifx-sidebar.js.map +1 -1
  248. package/dist/components/ifx-slider.js +8 -3
  249. package/dist/components/ifx-slider.js.map +1 -1
  250. package/dist/components/ifx-spinner.js +1 -1
  251. package/dist/components/ifx-status.js +9 -1
  252. package/dist/components/ifx-status.js.map +1 -1
  253. package/dist/components/ifx-step.js +1 -1
  254. package/dist/components/ifx-stepper.js +7 -2
  255. package/dist/components/ifx-stepper.js.map +1 -1
  256. package/dist/components/ifx-switch.js +6 -1
  257. package/dist/components/ifx-switch.js.map +1 -1
  258. package/dist/components/ifx-table.js +16 -11
  259. package/dist/components/ifx-table.js.map +1 -1
  260. package/dist/components/ifx-tabs.js +8 -3
  261. package/dist/components/ifx-tabs.js.map +1 -1
  262. package/dist/components/ifx-tag.js +10 -2
  263. package/dist/components/ifx-tag.js.map +1 -1
  264. package/dist/components/ifx-template.js +1 -1
  265. package/dist/components/ifx-templates-ui.js +8 -8
  266. package/dist/components/ifx-text-field.js +1 -1
  267. package/dist/components/ifx-textarea.js +6 -1
  268. package/dist/components/ifx-textarea.js.map +1 -1
  269. package/dist/components/ifx-tooltip.js +10 -5
  270. package/dist/components/ifx-tooltip.js.map +1 -1
  271. package/dist/components/ifx-tree-view-item.js +2 -2
  272. package/dist/components/ifx-tree-view.js +9 -1
  273. package/dist/components/ifx-tree-view.js.map +1 -1
  274. package/dist/components/{p-d1790232.js → p-0590639e.js} +2 -2
  275. package/dist/components/{p-d1790232.js.map → p-0590639e.js.map} +1 -1
  276. package/dist/components/{p-bb4de57d.js → p-0e4632d4.js} +32 -2
  277. package/dist/components/p-0e4632d4.js.map +1 -0
  278. package/dist/components/p-1ecafb97.js +18 -0
  279. package/dist/components/p-1ecafb97.js.map +1 -0
  280. package/dist/components/{p-526e05ad.js → p-31696649.js} +11 -6
  281. package/dist/components/p-31696649.js.map +1 -0
  282. package/dist/components/{p-186dacc8.js → p-331ca3f3.js} +10 -5
  283. package/dist/components/p-331ca3f3.js.map +1 -0
  284. package/dist/components/{p-357107c5.js → p-54b39a91.js} +8 -3
  285. package/dist/components/p-54b39a91.js.map +1 -0
  286. package/dist/components/{p-cec3c56f.js → p-6a9e1fb6.js} +9 -4
  287. package/dist/components/p-6a9e1fb6.js.map +1 -0
  288. package/dist/components/{p-5e9d3450.js → p-6d95b3c1.js} +8 -2
  289. package/dist/components/p-6d95b3c1.js.map +1 -0
  290. package/dist/components/p-6ecb6a6f.js +39 -0
  291. package/dist/components/p-6ecb6a6f.js.map +1 -0
  292. package/dist/components/{p-17df0350.js → p-816b2612.js} +7 -2
  293. package/dist/components/p-816b2612.js.map +1 -0
  294. package/dist/components/{p-a9d3e6d2.js → p-8cbf32a7.js} +9 -4
  295. package/dist/components/p-8cbf32a7.js.map +1 -0
  296. package/dist/components/{p-a8d0ef73.js → p-927d5fd1.js} +16 -11
  297. package/dist/components/p-927d5fd1.js.map +1 -0
  298. package/dist/components/{p-cd913238.js → p-940ee336.js} +3 -3
  299. package/dist/components/{p-cd913238.js.map → p-940ee336.js.map} +1 -1
  300. package/dist/components/{p-9142f93b.js → p-94da6823.js} +8 -3
  301. package/dist/components/p-94da6823.js.map +1 -0
  302. package/dist/components/{p-53d4339c.js → p-9ea9e274.js} +10 -2
  303. package/dist/components/p-9ea9e274.js.map +1 -0
  304. package/dist/components/{p-6d12f845.js → p-ab4beff7.js} +13 -5
  305. package/dist/components/p-ab4beff7.js.map +1 -0
  306. package/dist/components/{p-0c449780.js → p-b1ca5daf.js} +8 -3
  307. package/dist/components/p-b1ca5daf.js.map +1 -0
  308. package/dist/components/{p-c3c4dfdd.js → p-bfc8b82f.js} +10 -5
  309. package/dist/components/p-bfc8b82f.js.map +1 -0
  310. package/dist/components/{p-320bce19.js → p-c5f7a0e2.js} +3 -3
  311. package/dist/components/{p-320bce19.js.map → p-c5f7a0e2.js.map} +1 -1
  312. package/dist/components/{p-38396fe7.js → p-c6e5f94d.js} +11 -3
  313. package/dist/components/p-c6e5f94d.js.map +1 -0
  314. package/dist/components/{p-351949f1.js → p-cb92983f.js} +11 -3
  315. package/dist/components/p-cb92983f.js.map +1 -0
  316. package/dist/components/{p-ed739e86.js → p-cca71d97.js} +9 -2
  317. package/dist/components/p-cca71d97.js.map +1 -0
  318. package/dist/components/{p-030c9f43.js → p-da273970.js} +6 -6
  319. package/dist/components/{p-030c9f43.js.map → p-da273970.js.map} +1 -1
  320. package/dist/components/{p-b0039ef1.js → p-f9815000.js} +8 -2
  321. package/dist/components/p-f9815000.js.map +1 -0
  322. package/dist/esm/dom-utils-1988cdf1.js +18 -0
  323. package/dist/esm/dom-utils-1988cdf1.js.map +1 -0
  324. package/dist/esm/ifx-accordion_2.entry.js +8 -1
  325. package/dist/esm/ifx-accordion_2.entry.js.map +1 -1
  326. package/dist/esm/ifx-alert_2.entry.js +6 -0
  327. package/dist/esm/ifx-alert_2.entry.js.map +1 -1
  328. package/dist/esm/ifx-badge.entry.js +10 -2
  329. package/dist/esm/ifx-badge.entry.js.map +1 -1
  330. package/dist/esm/ifx-basic-table.entry.js +6 -1
  331. package/dist/esm/ifx-basic-table.entry.js.map +1 -1
  332. package/dist/esm/ifx-breadcrumb.entry.js +8 -1
  333. package/dist/esm/ifx-breadcrumb.entry.js.map +1 -1
  334. package/dist/esm/ifx-button.entry.js +6 -1
  335. package/dist/esm/ifx-button.entry.js.map +1 -1
  336. package/dist/esm/ifx-card.entry.js +8 -3
  337. package/dist/esm/ifx-card.entry.js.map +1 -1
  338. package/dist/esm/ifx-checkbox-group.entry.js +6 -1
  339. package/dist/esm/ifx-checkbox-group.entry.js.map +1 -1
  340. package/dist/esm/ifx-checkbox.entry.js +8 -3
  341. package/dist/esm/ifx-checkbox.entry.js.map +1 -1
  342. package/dist/esm/ifx-chip_3.entry.js +17 -9
  343. package/dist/esm/ifx-chip_3.entry.js.map +1 -1
  344. package/dist/esm/ifx-content-switcher.entry.js +6 -1
  345. package/dist/esm/ifx-content-switcher.entry.js.map +1 -1
  346. package/dist/esm/ifx-date-picker.entry.js +9 -2
  347. package/dist/esm/ifx-date-picker.entry.js.map +1 -1
  348. package/dist/esm/ifx-dropdown.entry.js +6 -1
  349. package/dist/esm/ifx-dropdown.entry.js.map +1 -1
  350. package/dist/esm/ifx-file-upload.entry.js +9 -2
  351. package/dist/esm/ifx-file-upload.entry.js.map +1 -1
  352. package/dist/esm/ifx-footer.entry.js +9 -4
  353. package/dist/esm/ifx-footer.entry.js.map +1 -1
  354. package/dist/esm/ifx-icon-button.entry.js +6 -1
  355. package/dist/esm/ifx-icon-button.entry.js.map +1 -1
  356. package/dist/esm/ifx-icon.entry.js +32 -2
  357. package/dist/esm/ifx-icon.entry.js.map +1 -1
  358. package/dist/esm/ifx-indicator.entry.js +7 -2
  359. package/dist/esm/ifx-indicator.entry.js.map +1 -1
  360. package/dist/esm/ifx-link.entry.js +10 -2
  361. package/dist/esm/ifx-link.entry.js.map +1 -1
  362. package/dist/esm/ifx-modal.entry.js +9 -2
  363. package/dist/esm/ifx-modal.entry.js.map +1 -1
  364. package/dist/esm/ifx-multiselect_2.entry.js +5 -0
  365. package/dist/esm/ifx-multiselect_2.entry.js.map +1 -1
  366. package/dist/esm/ifx-navbar.entry.js +5 -3
  367. package/dist/esm/ifx-navbar.entry.js.map +1 -1
  368. package/dist/esm/ifx-notification.entry.js +11 -3
  369. package/dist/esm/ifx-notification.entry.js.map +1 -1
  370. package/dist/esm/ifx-progress-bar.entry.js +8 -2
  371. package/dist/esm/ifx-progress-bar.entry.js.map +1 -1
  372. package/dist/esm/ifx-radio-button-group.entry.js +6 -1
  373. package/dist/esm/ifx-radio-button-group.entry.js.map +1 -1
  374. package/dist/esm/ifx-radio-button.entry.js +7 -2
  375. package/dist/esm/ifx-radio-button.entry.js.map +1 -1
  376. package/dist/esm/ifx-search-bar.entry.js +6 -1
  377. package/dist/esm/ifx-search-bar.entry.js.map +1 -1
  378. package/dist/esm/ifx-search-field.entry.js +10 -2
  379. package/dist/esm/ifx-search-field.entry.js.map +1 -1
  380. package/dist/esm/ifx-segmented-control.entry.js +9 -2
  381. package/dist/esm/ifx-segmented-control.entry.js.map +1 -1
  382. package/dist/esm/ifx-select.entry.js +7 -2
  383. package/dist/esm/ifx-select.entry.js.map +1 -1
  384. package/dist/esm/ifx-sidebar.entry.js +7 -5
  385. package/dist/esm/ifx-sidebar.entry.js.map +1 -1
  386. package/dist/esm/ifx-slider.entry.js +7 -2
  387. package/dist/esm/ifx-slider.entry.js.map +1 -1
  388. package/dist/esm/ifx-spinner_2.entry.js +18 -7
  389. package/dist/esm/ifx-spinner_2.entry.js.map +1 -1
  390. package/dist/esm/ifx-status.entry.js +10 -2
  391. package/dist/esm/ifx-status.entry.js.map +1 -1
  392. package/dist/esm/ifx-stepper.entry.js +7 -2
  393. package/dist/esm/ifx-stepper.entry.js.map +1 -1
  394. package/dist/esm/ifx-switch.entry.js +6 -1
  395. package/dist/esm/ifx-switch.entry.js.map +1 -1
  396. package/dist/esm/ifx-table.entry.js +7 -2
  397. package/dist/esm/ifx-table.entry.js.map +1 -1
  398. package/dist/esm/ifx-tabs.entry.js +7 -2
  399. package/dist/esm/ifx-tabs.entry.js.map +1 -1
  400. package/dist/esm/ifx-tag.entry.js +10 -2
  401. package/dist/esm/ifx-tag.entry.js.map +1 -1
  402. package/dist/esm/ifx-textarea.entry.js +6 -1
  403. package/dist/esm/ifx-textarea.entry.js.map +1 -1
  404. package/dist/esm/ifx-tooltip.entry.js +9 -4
  405. package/dist/esm/ifx-tooltip.entry.js.map +1 -1
  406. package/dist/esm/ifx-tree-view.entry.js +10 -2
  407. package/dist/esm/ifx-tree-view.entry.js.map +1 -1
  408. package/dist/esm/tracking-a7efdbcd.js +39 -0
  409. package/dist/esm/tracking-a7efdbcd.js.map +1 -0
  410. package/dist/infineon-design-system-stencil/infineon-design-system-stencil.esm.js +1 -1
  411. package/dist/infineon-design-system-stencil/p-05d9aa1f.entry.js +2 -0
  412. package/dist/infineon-design-system-stencil/p-05d9aa1f.entry.js.map +1 -0
  413. package/dist/infineon-design-system-stencil/p-0c60ce87.entry.js +2 -0
  414. package/dist/infineon-design-system-stencil/p-0c60ce87.entry.js.map +1 -0
  415. package/dist/infineon-design-system-stencil/p-14525860.entry.js +2 -0
  416. package/dist/infineon-design-system-stencil/p-14525860.entry.js.map +1 -0
  417. package/dist/infineon-design-system-stencil/p-14842bbb.entry.js +2 -0
  418. package/dist/infineon-design-system-stencil/p-14842bbb.entry.js.map +1 -0
  419. package/dist/infineon-design-system-stencil/p-1e0d789f.entry.js +2 -0
  420. package/dist/infineon-design-system-stencil/p-1e0d789f.entry.js.map +1 -0
  421. package/dist/infineon-design-system-stencil/p-1ecafb97.js +2 -0
  422. package/dist/infineon-design-system-stencil/p-1ecafb97.js.map +1 -0
  423. package/dist/infineon-design-system-stencil/p-1fd80576.entry.js +2 -0
  424. package/dist/infineon-design-system-stencil/p-1fd80576.entry.js.map +1 -0
  425. package/dist/infineon-design-system-stencil/p-227fa186.entry.js +2 -0
  426. package/dist/infineon-design-system-stencil/p-227fa186.entry.js.map +1 -0
  427. package/dist/infineon-design-system-stencil/p-26c73456.entry.js +2 -0
  428. package/dist/infineon-design-system-stencil/p-26c73456.entry.js.map +1 -0
  429. package/dist/infineon-design-system-stencil/p-2d7159a9.entry.js +2 -0
  430. package/dist/infineon-design-system-stencil/p-2d7159a9.entry.js.map +1 -0
  431. package/dist/infineon-design-system-stencil/p-2e931b0d.entry.js +2 -0
  432. package/dist/infineon-design-system-stencil/p-2e931b0d.entry.js.map +1 -0
  433. package/dist/infineon-design-system-stencil/p-437973f5.entry.js +2 -0
  434. package/dist/infineon-design-system-stencil/p-437973f5.entry.js.map +1 -0
  435. package/dist/infineon-design-system-stencil/p-4eda4ef3.entry.js +2 -0
  436. package/dist/infineon-design-system-stencil/p-4eda4ef3.entry.js.map +1 -0
  437. package/dist/infineon-design-system-stencil/p-52420868.entry.js +2 -0
  438. package/dist/infineon-design-system-stencil/p-52420868.entry.js.map +1 -0
  439. package/dist/infineon-design-system-stencil/p-5493e6f5.entry.js +2 -0
  440. package/dist/infineon-design-system-stencil/p-5493e6f5.entry.js.map +1 -0
  441. package/dist/infineon-design-system-stencil/p-59c3ac10.entry.js +2 -0
  442. package/dist/infineon-design-system-stencil/p-59c3ac10.entry.js.map +1 -0
  443. package/dist/infineon-design-system-stencil/p-6d72ad32.entry.js +2 -0
  444. package/dist/infineon-design-system-stencil/p-6d72ad32.entry.js.map +1 -0
  445. package/dist/infineon-design-system-stencil/p-6ecb6a6f.js +2 -0
  446. package/dist/infineon-design-system-stencil/p-6ecb6a6f.js.map +1 -0
  447. package/dist/infineon-design-system-stencil/p-71e34467.entry.js +2 -0
  448. package/dist/infineon-design-system-stencil/p-71e34467.entry.js.map +1 -0
  449. package/dist/infineon-design-system-stencil/{p-0d3e5a0d.entry.js → p-76914839.entry.js} +2 -2
  450. package/dist/infineon-design-system-stencil/p-76914839.entry.js.map +1 -0
  451. package/dist/infineon-design-system-stencil/p-796675ed.entry.js +2 -0
  452. package/dist/infineon-design-system-stencil/p-796675ed.entry.js.map +1 -0
  453. package/dist/infineon-design-system-stencil/p-82c59e6b.entry.js +2 -0
  454. package/dist/infineon-design-system-stencil/p-82c59e6b.entry.js.map +1 -0
  455. package/dist/infineon-design-system-stencil/p-84d4d6a1.entry.js +2 -0
  456. package/dist/infineon-design-system-stencil/p-84d4d6a1.entry.js.map +1 -0
  457. package/dist/infineon-design-system-stencil/p-877e1d37.entry.js +2 -0
  458. package/dist/infineon-design-system-stencil/p-877e1d37.entry.js.map +1 -0
  459. package/dist/infineon-design-system-stencil/p-8a7bfe65.entry.js +2 -0
  460. package/dist/infineon-design-system-stencil/p-8a7bfe65.entry.js.map +1 -0
  461. package/dist/infineon-design-system-stencil/p-8ecae73b.entry.js +2 -0
  462. package/dist/infineon-design-system-stencil/p-8ecae73b.entry.js.map +1 -0
  463. package/dist/infineon-design-system-stencil/p-90efbef9.entry.js +2 -0
  464. package/dist/infineon-design-system-stencil/p-90efbef9.entry.js.map +1 -0
  465. package/dist/infineon-design-system-stencil/p-a0006775.entry.js +2 -0
  466. package/dist/infineon-design-system-stencil/p-a0006775.entry.js.map +1 -0
  467. package/dist/infineon-design-system-stencil/p-ae8110b7.entry.js +2 -0
  468. package/dist/infineon-design-system-stencil/p-ae8110b7.entry.js.map +1 -0
  469. package/dist/infineon-design-system-stencil/p-aeaa6d0b.entry.js +2 -0
  470. package/dist/infineon-design-system-stencil/p-aeaa6d0b.entry.js.map +1 -0
  471. package/dist/infineon-design-system-stencil/p-b17a0e8c.entry.js +2 -0
  472. package/dist/infineon-design-system-stencil/p-b17a0e8c.entry.js.map +1 -0
  473. package/dist/infineon-design-system-stencil/p-bb7b2a3c.entry.js +2 -0
  474. package/dist/infineon-design-system-stencil/p-bb7b2a3c.entry.js.map +1 -0
  475. package/dist/infineon-design-system-stencil/{p-b6dd2ac0.entry.js → p-bca4f6c8.entry.js} +3 -3
  476. package/dist/infineon-design-system-stencil/p-bca4f6c8.entry.js.map +1 -0
  477. package/dist/infineon-design-system-stencil/p-c164c83b.entry.js +2 -0
  478. package/dist/infineon-design-system-stencil/p-c164c83b.entry.js.map +1 -0
  479. package/dist/infineon-design-system-stencil/p-c36df3ce.entry.js +2 -0
  480. package/dist/infineon-design-system-stencil/p-c36df3ce.entry.js.map +1 -0
  481. package/dist/infineon-design-system-stencil/p-c88876dc.entry.js +2 -0
  482. package/dist/infineon-design-system-stencil/p-c88876dc.entry.js.map +1 -0
  483. package/dist/infineon-design-system-stencil/p-e0978af0.entry.js +2 -0
  484. package/dist/infineon-design-system-stencil/p-e0978af0.entry.js.map +1 -0
  485. package/dist/infineon-design-system-stencil/p-e172e81c.entry.js +2 -0
  486. package/dist/infineon-design-system-stencil/p-e172e81c.entry.js.map +1 -0
  487. package/dist/infineon-design-system-stencil/p-e5018880.entry.js +2 -0
  488. package/dist/infineon-design-system-stencil/p-e5018880.entry.js.map +1 -0
  489. package/dist/infineon-design-system-stencil/p-e5091718.entry.js +2 -0
  490. package/dist/infineon-design-system-stencil/p-e5091718.entry.js.map +1 -0
  491. package/dist/infineon-design-system-stencil/p-ed869b07.entry.js +2 -0
  492. package/dist/infineon-design-system-stencil/p-ed869b07.entry.js.map +1 -0
  493. package/dist/infineon-design-system-stencil/p-f3f8d603.entry.js +2 -0
  494. package/dist/infineon-design-system-stencil/p-f3f8d603.entry.js.map +1 -0
  495. package/dist/infineon-design-system-stencil/p-f544fb03.entry.js +2 -0
  496. package/dist/infineon-design-system-stencil/p-f544fb03.entry.js.map +1 -0
  497. package/dist/infineon-design-system-stencil/p-fe22fc31.entry.js +2 -0
  498. package/dist/infineon-design-system-stencil/p-fe22fc31.entry.js.map +1 -0
  499. package/dist/types/components/accordion/accordion.d.ts +1 -0
  500. package/dist/types/components/alert/alert.d.ts +1 -0
  501. package/dist/types/components/badge/badge.d.ts +2 -0
  502. package/dist/types/components/breadcrumb/breadcrumb.d.ts +1 -0
  503. package/dist/types/components/date-picker/date-picker.d.ts +1 -0
  504. package/dist/types/components/file-upload/file-upload.d.ts +1 -0
  505. package/dist/types/components/icon/infineonIconStencil.d.ts +3 -0
  506. package/dist/types/components/link/link.d.ts +2 -0
  507. package/dist/types/components/modal/modal.d.ts +1 -0
  508. package/dist/types/components/notification/notification.d.ts +2 -0
  509. package/dist/types/components/progress-bar/progress-bar.d.ts +1 -0
  510. package/dist/types/components/search-field/search-field.d.ts +2 -0
  511. package/dist/types/components/segmented-control/segmented-control.d.ts +1 -0
  512. package/dist/types/components/spinner/spinner.d.ts +2 -0
  513. package/dist/types/components/status/status.d.ts +2 -0
  514. package/dist/types/components/tag/tag.d.ts +2 -0
  515. package/dist/types/components/tree-view/tree-view.d.ts +2 -0
  516. package/dist/types/global/utils/dom-utils.d.ts +1 -0
  517. package/dist/types/global/utils/tracking.d.ts +9 -0
  518. package/package.json +1 -1
  519. package/dist/components/p-0c449780.js.map +0 -1
  520. package/dist/components/p-17df0350.js.map +0 -1
  521. package/dist/components/p-186dacc8.js.map +0 -1
  522. package/dist/components/p-351949f1.js.map +0 -1
  523. package/dist/components/p-357107c5.js.map +0 -1
  524. package/dist/components/p-38396fe7.js.map +0 -1
  525. package/dist/components/p-526e05ad.js.map +0 -1
  526. package/dist/components/p-53d4339c.js.map +0 -1
  527. package/dist/components/p-5e9d3450.js.map +0 -1
  528. package/dist/components/p-6d12f845.js.map +0 -1
  529. package/dist/components/p-9142f93b.js.map +0 -1
  530. package/dist/components/p-a8d0ef73.js.map +0 -1
  531. package/dist/components/p-a9d3e6d2.js.map +0 -1
  532. package/dist/components/p-b0039ef1.js.map +0 -1
  533. package/dist/components/p-bb4de57d.js.map +0 -1
  534. package/dist/components/p-c3c4dfdd.js.map +0 -1
  535. package/dist/components/p-cec3c56f.js.map +0 -1
  536. package/dist/components/p-ed739e86.js.map +0 -1
  537. package/dist/infineon-design-system-stencil/p-02496917.entry.js +0 -2
  538. package/dist/infineon-design-system-stencil/p-02496917.entry.js.map +0 -1
  539. package/dist/infineon-design-system-stencil/p-061bfdb1.entry.js +0 -2
  540. package/dist/infineon-design-system-stencil/p-061bfdb1.entry.js.map +0 -1
  541. package/dist/infineon-design-system-stencil/p-0d3e5a0d.entry.js.map +0 -1
  542. package/dist/infineon-design-system-stencil/p-13c107bf.entry.js +0 -2
  543. package/dist/infineon-design-system-stencil/p-13c107bf.entry.js.map +0 -1
  544. package/dist/infineon-design-system-stencil/p-17f3f2f5.entry.js +0 -2
  545. package/dist/infineon-design-system-stencil/p-17f3f2f5.entry.js.map +0 -1
  546. package/dist/infineon-design-system-stencil/p-2006c7a0.entry.js +0 -2
  547. package/dist/infineon-design-system-stencil/p-2006c7a0.entry.js.map +0 -1
  548. package/dist/infineon-design-system-stencil/p-25204a1e.entry.js +0 -2
  549. package/dist/infineon-design-system-stencil/p-25204a1e.entry.js.map +0 -1
  550. package/dist/infineon-design-system-stencil/p-292cff35.entry.js +0 -2
  551. package/dist/infineon-design-system-stencil/p-292cff35.entry.js.map +0 -1
  552. package/dist/infineon-design-system-stencil/p-2d89c5e0.entry.js +0 -2
  553. package/dist/infineon-design-system-stencil/p-2d89c5e0.entry.js.map +0 -1
  554. package/dist/infineon-design-system-stencil/p-2e7d87ed.entry.js +0 -2
  555. package/dist/infineon-design-system-stencil/p-2e7d87ed.entry.js.map +0 -1
  556. package/dist/infineon-design-system-stencil/p-33a4fd0a.entry.js +0 -2
  557. package/dist/infineon-design-system-stencil/p-33a4fd0a.entry.js.map +0 -1
  558. package/dist/infineon-design-system-stencil/p-37d6c639.entry.js +0 -2
  559. package/dist/infineon-design-system-stencil/p-37d6c639.entry.js.map +0 -1
  560. package/dist/infineon-design-system-stencil/p-3d23deba.entry.js +0 -2
  561. package/dist/infineon-design-system-stencil/p-3d23deba.entry.js.map +0 -1
  562. package/dist/infineon-design-system-stencil/p-3ff96710.entry.js +0 -2
  563. package/dist/infineon-design-system-stencil/p-3ff96710.entry.js.map +0 -1
  564. package/dist/infineon-design-system-stencil/p-4764665d.entry.js +0 -2
  565. package/dist/infineon-design-system-stencil/p-4764665d.entry.js.map +0 -1
  566. package/dist/infineon-design-system-stencil/p-47a3e831.entry.js +0 -2
  567. package/dist/infineon-design-system-stencil/p-47a3e831.entry.js.map +0 -1
  568. package/dist/infineon-design-system-stencil/p-487d2155.entry.js +0 -2
  569. package/dist/infineon-design-system-stencil/p-487d2155.entry.js.map +0 -1
  570. package/dist/infineon-design-system-stencil/p-4d9a4329.entry.js +0 -2
  571. package/dist/infineon-design-system-stencil/p-4d9a4329.entry.js.map +0 -1
  572. package/dist/infineon-design-system-stencil/p-5285ca40.entry.js +0 -2
  573. package/dist/infineon-design-system-stencil/p-5285ca40.entry.js.map +0 -1
  574. package/dist/infineon-design-system-stencil/p-5b5c144f.entry.js +0 -2
  575. package/dist/infineon-design-system-stencil/p-5b5c144f.entry.js.map +0 -1
  576. package/dist/infineon-design-system-stencil/p-5e376887.entry.js +0 -2
  577. package/dist/infineon-design-system-stencil/p-5e376887.entry.js.map +0 -1
  578. package/dist/infineon-design-system-stencil/p-5f38cace.entry.js +0 -2
  579. package/dist/infineon-design-system-stencil/p-5f38cace.entry.js.map +0 -1
  580. package/dist/infineon-design-system-stencil/p-6250b9f6.entry.js +0 -2
  581. package/dist/infineon-design-system-stencil/p-6250b9f6.entry.js.map +0 -1
  582. package/dist/infineon-design-system-stencil/p-65fe2246.entry.js +0 -2
  583. package/dist/infineon-design-system-stencil/p-65fe2246.entry.js.map +0 -1
  584. package/dist/infineon-design-system-stencil/p-676fb63a.entry.js +0 -2
  585. package/dist/infineon-design-system-stencil/p-676fb63a.entry.js.map +0 -1
  586. package/dist/infineon-design-system-stencil/p-6790d912.entry.js +0 -2
  587. package/dist/infineon-design-system-stencil/p-6790d912.entry.js.map +0 -1
  588. package/dist/infineon-design-system-stencil/p-6bdca580.entry.js +0 -2
  589. package/dist/infineon-design-system-stencil/p-6bdca580.entry.js.map +0 -1
  590. package/dist/infineon-design-system-stencil/p-741ee6fd.entry.js +0 -2
  591. package/dist/infineon-design-system-stencil/p-741ee6fd.entry.js.map +0 -1
  592. package/dist/infineon-design-system-stencil/p-76e0c34f.entry.js +0 -2
  593. package/dist/infineon-design-system-stencil/p-76e0c34f.entry.js.map +0 -1
  594. package/dist/infineon-design-system-stencil/p-9149a20a.entry.js +0 -2
  595. package/dist/infineon-design-system-stencil/p-9149a20a.entry.js.map +0 -1
  596. package/dist/infineon-design-system-stencil/p-9fc0f50d.entry.js +0 -2
  597. package/dist/infineon-design-system-stencil/p-9fc0f50d.entry.js.map +0 -1
  598. package/dist/infineon-design-system-stencil/p-a80e321b.entry.js +0 -2
  599. package/dist/infineon-design-system-stencil/p-a80e321b.entry.js.map +0 -1
  600. package/dist/infineon-design-system-stencil/p-aadd1a9d.entry.js +0 -2
  601. package/dist/infineon-design-system-stencil/p-aadd1a9d.entry.js.map +0 -1
  602. package/dist/infineon-design-system-stencil/p-ad1ec9d6.entry.js +0 -2
  603. package/dist/infineon-design-system-stencil/p-ad1ec9d6.entry.js.map +0 -1
  604. package/dist/infineon-design-system-stencil/p-ad7b58c3.entry.js +0 -2
  605. package/dist/infineon-design-system-stencil/p-ad7b58c3.entry.js.map +0 -1
  606. package/dist/infineon-design-system-stencil/p-b6dd2ac0.entry.js.map +0 -1
  607. package/dist/infineon-design-system-stencil/p-b73a5f18.entry.js +0 -2
  608. package/dist/infineon-design-system-stencil/p-b73a5f18.entry.js.map +0 -1
  609. package/dist/infineon-design-system-stencil/p-c84ef603.entry.js +0 -2
  610. package/dist/infineon-design-system-stencil/p-c84ef603.entry.js.map +0 -1
  611. package/dist/infineon-design-system-stencil/p-d890b0de.entry.js +0 -2
  612. package/dist/infineon-design-system-stencil/p-d890b0de.entry.js.map +0 -1
  613. package/dist/infineon-design-system-stencil/p-dd28f3a1.entry.js +0 -2
  614. package/dist/infineon-design-system-stencil/p-dd28f3a1.entry.js.map +0 -1
  615. package/dist/infineon-design-system-stencil/p-ef6d0dc6.entry.js +0 -2
  616. package/dist/infineon-design-system-stencil/p-ef6d0dc6.entry.js.map +0 -1
  617. package/dist/infineon-design-system-stencil/p-f338fb85.entry.js +0 -2
  618. package/dist/infineon-design-system-stencil/p-f338fb85.entry.js.map +0 -1
@@ -1 +0,0 @@
1
- {"version":3,"names":["fileUploadCss","IfxFileUploadStyle0","FileUpload","constructor","hostRef","this","dragAndDrop","required","disabled","maxFileSizeMB","allowedFileTypes","additionalAllowedFileTypes","label","labelRequiredError","labelBrowseFiles","labelDragAndDrop","labelUploadedFilesHeading","labelFileTooLarge","labelUnsupportedFileType","labelUploaded","labelUploadFailed","labelSupportedFormatsTemplate","labelFileSingular","labelFilePlural","labelMaxFilesInfo","labelMaxFilesExceeded","ariaLabelBrowseFiles","ariaLabelDropzone","ariaLabelFileInput","ariaLabelRemoveFile","ariaLabelCancelUpload","ariaLabelRetryUpload","ariaLabelUploadingStatus","ariaLabelUploadedStatus","ariaLabelUploadFailedStatus","internalId","Math","random","toString","substr","isDragOver","files","uploadTasks","rejectedSizeFiles","rejectedTypeFiles","requiredError","statusMessage","fileInputEl","extensionToMimeMap","jpg","jpeg","png","gif","svg","webp","pdf","doc","docx","xls","xlsx","ppt","pptx","txt","csv","json","mp3","wav","mp4","mov","webm","zip","rar","tar","gz","xml","html","css","js","maxFiles","_maxFiles","value","console","warn","undefined","validateRequired","length","_a","text","type","ifxFileUploadValidation","emit","valid","_b","pluralize","count","getNormalizedFileTypes","Array","isArray","JSON","parse","split","map","t","trim","getLabelFromMimeType","mime","ext","knownMime","Object","entries","toUpperCase","handleFileChange","event","input","target","processFiles","handleDrop","preventDefault","stopPropagation","dataTransfer","droppedFiles","from","allowedMimes","toLowerCase","filter","Boolean","getAdditionalMimeTypes","acceptedFiles","rejectedFiles","forEach","file","isValidType","includes","isValidSize","size","push","ifxFileUploadDrop","handleDragOver","handleDragLeave","fileList","selectedFiles","validFiles","rejectedSize","rejectedType","isDuplicate","some","existing","name","ifxFileUploadInvalid","reason","ifxFileUploadError","errorType","message","availableSlots","limitedFiles","slice","max","overflowFiles","startUpload","ifxFileUploadAdd","addedFiles","ifxFileUploadChange","replace","ifxFileUploadMaxFilesExceeded","attempted","retryUpload","taskIndex","findIndex","splice","ifxFileUploadRetry","ifxFileUploadStart","task","progress","intervalId","completed","uploadHandler","percent","min","then","ifxFileUploadComplete","every","ifxFileUploadAllComplete","catch","error","totalSize","fakeUploadSpeed","uploaded","window","setInterval","round","clearInterval","cancelUpload","_","i","f","ifxFileUploadAbort","removeFile","ifxFileUploadRemove","removedFile","clearRejectedFile","fileName","splitFileNameParts","dotIndex","lastIndexOf","base","substring","getFileIcon","extension","pop","formatSize","bytes","toFixed","getAcceptAttribute","extensionTypes","mimeTypes","join","getFormattedProgressText","uploadedSize","uploadedText","totalText","getSupportedFileText","extensions","allTypes","typesLabel","fileWord","maxFilesText","getFormattedFileTooLargeText","renderStatusMessage","h","class","icon","isInputDisabled","componentDidLoad","hostElement","hasAttribute","showDemoStates","injectDemoState","dummyContent","fill","bigContent","uploading","File","failed","tooLarge","unsupported","triggerDemoValidation","render","key","htmlFor","renderDragAndDropArea","renderUploadArea","shape","variant","onClick","find","isUploading","isError","itemClass","uniqueKey","style","display","handleInputRef","el","click","id","ref","accept","multiple","onChange","e","triggerInputClick","onDragOver","onDragLeave","onDrop","role","tabIndex","height","overflow"],"sources":["src/components/file-upload/file-upload.scss?tag=ifx-file-upload&encapsulation=shadow","src/components/file-upload/file-upload.tsx"],"sourcesContent":["@use \"~@infineon/design-system-tokens/dist/tokens\";\n@use \"../../global/font.scss\";\n\n:host {\n // TODO remove\n font-family: var(--ifx-font-family, sans-serif);\n}\n\n.file-upload-wrapper {\n display: flex;\n flex-direction: column;\n\n &.disabled {\n pointer-events: none;\n\n label,\n .file-upload-info {\n color: tokens.$ifxColorEngineering500;\n }\n }\n}\n\n.file-upload-label {\n font-style: normal;\n font-weight: 400;\n font-size: tokens.$ifxFontSizeM;\n line-height: tokens.$ifxLineHeightM;\n color: tokens.$ifxColorBaseBlack;\n\n .required {\n display: inline-block;\n margin-left: 4px;\n\n &.error {\n color: tokens.$ifxColorRed500;\n }\n }\n}\n\n.upload-dropzone {\n border: 1px dashed tokens.$ifxColorEngineering300;\n padding: tokens.$ifxSpace500;\n text-align: center;\n cursor: pointer;\n color: tokens.$ifxColorBaseBlack;\n transition: border-color 0.3s ease;\n border-radius: tokens.$ifxBorderRadius12;\n background: tokens.$ifxColorBaseWhite;\n\n ifx-icon {\n color: tokens.$ifxColorOcean500;\n }\n\n &:hover {\n border: 1px dashed tokens.$ifxColorEngineering400;\n }\n\n &.drag-over {\n border: 1px solid tokens.$ifxColorOcean500;\n background: tokens.$ifxColorEngineering100;\n\n &.error {\n border: 1px solid tokens.$ifxColorOcean500;\n }\n }\n\n &.error {\n border-color: tokens.$ifxColorRed500;\n }\n\n .disabled & {\n pointer-events: none;\n border-color: tokens.$ifxColorEngineering300;\n color: tokens.$ifxColorEngineering300;\n\n ifx-icon {\n color: tokens.$ifxColorEngineering300;\n }\n }\n}\n\n.upload-dropzone input {\n display: none;\n}\n\n.file-upload-info {\n font-style: normal;\n font-weight: tokens.$ifxFontWeightRegular;\n font-size: tokens.$ifxFontSizeXs;\n line-height: tokens.$ifxLineHeightXs;\n letter-spacing: tokens.$ifxLetterSpacingDefault;\n color: tokens.$ifxColorBaseBlack;\n margin: 0;\n margin-top: tokens.$ifxSpace50;\n}\n\n.file-upload-status {\n font-style: normal;\n font-weight: 400;\n font-size: tokens.$ifxFontSizeXs;\n line-height: tokens.$ifxLineHeightXs;\n letter-spacing: 0.2px;\n margin-top: tokens.$ifxSpace100;\n\n &.file-upload-status__error {\n display: flex;\n align-items: center;\n color: tokens.$ifxColorRed500;\n\n ifx-icon {\n position: relative;\n top: - tokens.$ifxSpace12;\n color: tokens.$ifxColorRed500;\n margin-right: tokens.$ifxSpace100;\n }\n }\n}\n\n.upload-heading {\n font: tokens.$ifxHeadingHeading06;\n margin-bottom: tokens.$ifxSpace100;\n}\n\n.file-list-wrapper {\n margin-top: tokens.$ifxSpace200;\n}\n\n.file-list {\n list-style: none;\n padding: 0;\n margin: 0;\n display: flex;\n flex-direction: column;\n gap: tokens.$ifxSpace200;\n}\n\n.file-item {\n border: 1px solid tokens.$ifxColorEngineering300;\n padding-top: tokens.$ifxSpace150;\n padding-right: tokens.$ifxSpace200;\n padding-bottom: tokens.$ifxSpace100;\n padding-left: tokens.$ifxSpace200;\n display: flex;\n gap: tokens.$ifxSpace100;\n}\n\n.file-info {\n width: 100%;\n min-width: 0;\n}\n\n.file-top-row {\n display: flex;\n align-items: center;\n justify-content: space-between;\n gap: tokens.$ifxSpace200;\n margin-top: - tokens.$ifxSpace100;\n}\n\n.file-top-row ifx-icon {\n flex-shrink: 0;\n}\n\n.file-name-wrapper {\n display: flex;\n min-width: 0;\n max-width: 100%;\n white-space: nowrap;\n overflow: hidden;\n font-weight: tokens.$ifxFontWeightRegular;\n font-size: tokens.$ifxFontSizeS;\n}\n\n.file-name-base {\n overflow: hidden;\n text-overflow: ellipsis;\n white-space: nowrap;\n flex-shrink: 1;\n min-width: 0;\n}\n\n.file-name-ext {\n flex-shrink: 0;\n margin-left: 0;\n}\n\n.file-middle-row {\n display: flex;\n align-items: center;\n font-size: tokens.$ifxFontSizeXs;\n line-height: tokens.$ifxLineHeightXs;\n flex-wrap: wrap;\n color: tokens.$ifxColorEngineering500;\n\n .file-status {\n margin-left: tokens.$ifxSpace150;\n\n ifx-icon {\n margin-right: tokens.$ifxSpace100;\n }\n }\n}\n\n.file-progress-row {\n margin-top: tokens.$ifxSpace50;\n}\n\n.file-progress-row ifx-progress-bar {\n width: 100%;\n}\n\n.upload-success {\n border-color: tokens.$ifxColorOcean500;\n\n .file-status {\n ifx-icon {\n position: relative;\n top: tokens.$ifxSpace12;\n color: tokens.$ifxColorGreen500;\n }\n }\n}\n\n.upload-failed {\n border-color: tokens.$ifxColorRed500;\n\n .file-status {\n color: tokens.$ifxColorRed500;\n margin-left: 0;\n }\n}\n","import { Component, h, State, Event, EventEmitter, Prop, Method, Element } from '@stencil/core';\n\ninterface UploadTask {\n file: File;\n progress: number;\n intervalId: number | null;\n completed: boolean;\n error?: boolean;\n}\n\nexport type FileUploadErrorReason =\n | 'network-error'\n | 'timeout'\n | 'file-too-large'\n | 'unsupported-type'\n | 'invalid-type'\n | 'custom'\n | (string & {});\n\n@Component({\n tag: 'ifx-file-upload',\n styleUrl: 'file-upload.scss',\n shadow: true\n})\nexport class FileUpload {\n @Element() hostElement: HTMLElement;\n\n @Prop() dragAndDrop: boolean = false;\n @Prop() required: boolean = false;\n @Prop() disabled: boolean = false;\n @Prop() maxFileSizeMB: number = 7;\n /** Default set of allowed file extensions (used internally). Can be extended using `additionalAllowedFileTypes`. */\n @Prop() allowedFileTypes: string | string[] = ['jpg', 'jpeg', 'png', 'pdf', 'mov', 'mp3', 'mp4'];\n @Prop() additionalAllowedFileTypes?: string | string[] = [];\n @Prop() uploadHandler?: (file: File, onProgress?: (progress: number) => void) => Promise<void>;\n\n private _maxFiles?: number;\n @Prop()\n get maxFiles(): number | undefined {\n return this._maxFiles;\n }\n set maxFiles(value: number | undefined) {\n if (typeof value === 'number' && value < 1) {\n console.warn('Invalid `maxFiles` value. Must be >= 1. Value ignored.');\n this._maxFiles = undefined;\n } else {\n this._maxFiles = value;\n }\n }\n\n @Prop() label: string = 'Label';\n @Prop() labelRequiredError: string = 'At least one file must be uploaded';\n @Prop() labelBrowseFiles: string = 'Browse files';\n @Prop() labelDragAndDrop: string = 'Drag & Drop or browse files to upload';\n @Prop() labelUploadedFilesHeading: string = 'Uploaded files';\n @Prop() labelFileTooLarge: string = 'Upload failed. Max file size: {{size}}MB.';\n @Prop() labelUnsupportedFileType: string = 'Unsupported file type.';\n @Prop() labelUploaded: string = 'Successfully uploaded';\n @Prop() labelUploadFailed: string = 'Upload failed. Please try again.';\n @Prop() labelSupportedFormatsTemplate: string = 'Supported file formats: {{types}}. Max file size: {{size}}MB.';\n @Prop() labelFileSingular: string = 'file';\n @Prop() labelFilePlural: string = 'files';\n @Prop() labelMaxFilesInfo?: string = 'Up to {{count}} {{files}}.';\n @Prop() labelMaxFilesExceeded: string = 'Upload limit exceeded. Only {{count}} {{files}} allowed.';\n\n @Prop() ariaLabelBrowseFiles: string = 'Browse files';\n @Prop() ariaLabelDropzone: string = 'Upload area. Click to browse or drag and drop files.';\n @Prop() ariaLabelFileInput: string = 'Upload file';\n @Prop() ariaLabelRemoveFile: string = 'Remove file';\n @Prop() ariaLabelCancelUpload: string = 'Cancel upload';\n @Prop() ariaLabelRetryUpload: string = 'Retry upload';\n @Prop() ariaLabelUploadingStatus: string = 'Upload in progress';\n @Prop() ariaLabelUploadedStatus: string = 'Upload completed';\n @Prop() ariaLabelUploadFailedStatus: string = 'Upload failed';\n\n private showDemoStates?: boolean;\n private internalId = `ifx-file-upload-${Math.random().toString(36).substr(2, 9)}`;\n\n @State() isDragOver: boolean = false;\n @State() files: File[] = [];\n @State() uploadTasks: UploadTask[] = [];\n @State() rejectedSizeFiles: string[] = [];\n @State() rejectedTypeFiles: string[] = [];\n @State() requiredError: boolean = false;\n @State() statusMessage: { type: 'error' | 'info' | 'success'; text: string } | null = null;\n\n\n @Event() ifxFileUploadAdd: EventEmitter<{ addedFiles: File[]; files: File[] }>;\n @Event() ifxFileUploadRemove: EventEmitter<{ removedFile: File; files: File[] }>;\n @Event() ifxFileUploadChange: EventEmitter<{ files: File[] }>;\n @Event() ifxFileUploadError: EventEmitter<{ errorType: string; file: File; message: string; reason?: string; }>;\n @Event() ifxFileUploadInvalid: EventEmitter<{ file: File; reason: string }>;\n @Event() ifxFileUploadStart: EventEmitter<{ file: File }>;\n @Event() ifxFileUploadComplete: EventEmitter<{ file: File }>;\n @Event() ifxFileUploadAllComplete: EventEmitter<{ files: File[] }>;\n @Event() ifxFileUploadAbort: EventEmitter<{ file: File }>;\n @Event() ifxFileUploadDrop: EventEmitter<{ droppedFiles: File[]; acceptedFiles: File[]; rejectedFiles: File[] }>;\n @Event() ifxFileUploadClick: EventEmitter<void>;\n @Event() ifxFileUploadMaxFilesExceeded: EventEmitter<{ maxFiles: number; attempted: number }>;\n @Event() ifxFileUploadValidation: EventEmitter<{ valid: boolean }>;\n @Event() ifxFileUploadRetry: EventEmitter<{ file: File }>;\n\n private fileInputEl: HTMLInputElement | null = null;\n\n private extensionToMimeMap: Record<string, string> = {\n /**\n * Maps file extensions to MIME types.\n * This is only used for translating `allowedFileTypes` (extensions) into MIME types,\n * and for labeling in the UI. It does NOT define which files are globally allowed.\n */\n\n // Images\n jpg: 'image/jpeg',\n jpeg: 'image/jpeg',\n png: 'image/png',\n gif: 'image/gif',\n svg: 'image/svg+xml',\n webp: 'image/webp',\n\n // Documents\n pdf: 'application/pdf',\n doc: 'application/msword',\n docx: 'application/vnd.openxmlformats-officedocument.wordprocessingml.document',\n xls: 'application/vnd.ms-excel',\n xlsx: 'application/vnd.openxmlformats-officedocument.spreadsheetml.sheet',\n ppt: 'application/vnd.ms-powerpoint',\n pptx: 'application/vnd.openxmlformats-officedocument.presentationml.presentation',\n txt: 'text/plain',\n csv: 'text/csv',\n json: 'application/json',\n\n // Audio/Video\n mp3: 'audio/mpeg',\n wav: 'audio/wav',\n mp4: 'video/mp4',\n mov: 'video/quicktime',\n webm: 'video/webm',\n\n // Archive / Code\n zip: 'application/zip',\n rar: 'application/vnd.rar',\n tar: 'application/x-tar',\n gz: 'application/gzip',\n\n // Sonstiges\n xml: 'application/xml',\n html: 'text/html',\n css: 'text/css',\n js: 'application/javascript'\n };\n\n private validateRequired(): void {\n if (this.required && this.files.length === 0) {\n this.requiredError = true;\n\n if (this.statusMessage?.text !== this.labelRequiredError) {\n this.statusMessage = {\n type: 'error',\n text: this.labelRequiredError\n };\n }\n\n this.ifxFileUploadValidation.emit({ valid: false });\n } else {\n this.requiredError = false;\n\n if (this.statusMessage?.text === this.labelRequiredError) {\n this.statusMessage = null;\n }\n\n this.ifxFileUploadValidation.emit({ valid: true });\n }\n }\n\n private pluralize(count: number): string {\n return count === 1 ? this.labelFileSingular : this.labelFilePlural;\n }\n\n private getNormalizedFileTypes(): string[] {\n if (Array.isArray(this.allowedFileTypes)) {\n return this.allowedFileTypes;\n }\n try {\n return JSON.parse(this.allowedFileTypes);\n } catch {\n return this.allowedFileTypes.split(',').map(t => t.trim());\n }\n }\n\n private getLabelFromMimeType(mime: string): string {\n for (const [ext, knownMime] of Object.entries(this.extensionToMimeMap)) {\n if (knownMime === mime) {\n return ext.toUpperCase();\n }\n }\n return mime; // fallback: show raw MIME\n }\n\n handleFileChange(event: Event) {\n const input = event.target as HTMLInputElement;\n if (!input.files) return;\n this.processFiles(input.files);\n }\n\n handleDrop(event: DragEvent) {\n if (this.disabled) return;\n event.preventDefault();\n event.stopPropagation();\n this.isDragOver = false;\n if (event.dataTransfer?.files) {\n const droppedFiles = Array.from(event.dataTransfer.files);\n const allowedMimes = [\n ...this.getNormalizedFileTypes()\n .map(ext => this.extensionToMimeMap[ext.toLowerCase()])\n .filter(Boolean),\n ...this.getAdditionalMimeTypes()\n ];\n\n const acceptedFiles: File[] = [];\n const rejectedFiles: File[] = [];\n\n droppedFiles.forEach(file => {\n const isValidType = allowedMimes.includes(file.type);\n const isValidSize = file.size <= this.maxFileSizeMB * 1024 * 1024;\n if (isValidType && isValidSize) acceptedFiles.push(file);\n else rejectedFiles.push(file);\n });\n\n this.ifxFileUploadDrop.emit({\n droppedFiles,\n acceptedFiles,\n rejectedFiles\n });\n\n this.processFiles(event.dataTransfer.files);\n }\n }\n\n handleDragOver(event: DragEvent) {\n if (this.disabled) return;\n event.preventDefault();\n this.isDragOver = true;\n }\n\n handleDragLeave(event: DragEvent) {\n if (this.disabled) return;\n event.preventDefault();\n this.isDragOver = false;\n }\n\n processFiles(fileList: FileList) {\n const selectedFiles = Array.from(fileList);\n const allowedMimes = [\n ...this.getNormalizedFileTypes()\n .map(ext => this.extensionToMimeMap[ext.toLowerCase()])\n .filter(Boolean),\n ...this.getAdditionalMimeTypes()\n ];\n\n const validFiles: File[] = [];\n const rejectedSize: string[] = [];\n const rejectedType: string[] = [];\n\n selectedFiles.forEach(file => {\n const isValidType = allowedMimes.includes(file.type);\n const isValidSize = file.size <= this.maxFileSizeMB * 1024 * 1024;\n const isDuplicate = this.files.some(existing =>\n existing.name === file.name && existing.size === file.size\n );\n\n if (isDuplicate) {\n this.ifxFileUploadInvalid.emit({ file, reason: 'duplicate' });\n this.ifxFileUploadError.emit({\n file,\n errorType: 'duplicate',\n message: `File \"${file.name}\" is already added`,\n reason: 'duplicate'\n });\n return;\n }\n\n if (isValidType && isValidSize) {\n validFiles.push(file);\n } else {\n if (!isValidType) {\n rejectedType.push(file.name);\n this.ifxFileUploadInvalid.emit({ file, reason: 'invalid-type' });\n }\n if (!isValidSize) {\n rejectedSize.push(file.name);\n this.ifxFileUploadInvalid.emit({ file, reason: 'invalid-size' });\n }\n this.ifxFileUploadError.emit({\n file,\n errorType: !isValidType ? 'invalid-type' : 'file-too-large',\n message: 'Invalid file rejected',\n reason: !isValidType ? 'unsupported-type' : 'file-too-large'\n });\n }\n });\n\n this.rejectedSizeFiles = [...this.rejectedSizeFiles, ...rejectedSize];\n this.rejectedTypeFiles = [...this.rejectedTypeFiles, ...rejectedType];\n\n if (this.maxFiles && this.files.length + validFiles.length > this.maxFiles) {\n const availableSlots = this.maxFiles - this.files.length;\n const limitedFiles = validFiles.slice(0, Math.max(availableSlots, 0));\n const overflowFiles = validFiles.slice(availableSlots);\n\n this.files = [...this.files, ...limitedFiles];\n\n limitedFiles.forEach(file => this.startUpload(file));\n\n if (limitedFiles.length > 0) {\n this.ifxFileUploadAdd.emit({ addedFiles: limitedFiles, files: this.files });\n this.ifxFileUploadChange.emit({ files: this.files });\n }\n\n overflowFiles.forEach(file => {\n this.ifxFileUploadInvalid.emit({ file, reason: 'too-many-files' });\n this.ifxFileUploadError.emit({\n file,\n errorType: 'too-many-files',\n message: `Upload limit exceeded. Max ${this.maxFiles} files allowed.`,\n reason: 'too-many-files'\n });\n });\n\n if (overflowFiles.length > 0) {\n this.statusMessage = {\n type: 'error',\n text: this.labelMaxFilesExceeded\n .replace('{{count}}', this.maxFiles.toString())\n .replace('{{files}}', this.pluralize(this.maxFiles))\n };\n this.ifxFileUploadMaxFilesExceeded.emit({\n maxFiles: this.maxFiles,\n attempted: this.files.length + validFiles.length\n });\n }\n\n return;\n }\n\n\n validFiles.forEach(file => this.startUpload(file));\n this.files = [...this.files, ...validFiles];\n\n if (validFiles.length > 0) {\n this.ifxFileUploadAdd.emit({ addedFiles: validFiles, files: this.files });\n this.ifxFileUploadChange.emit({ files: this.files });\n }\n\n this.validateRequired();\n }\n\n retryUpload(file: File) {\n const taskIndex = this.uploadTasks.findIndex(t => t.file.name === file.name);\n if (taskIndex !== -1) {\n this.uploadTasks.splice(taskIndex, 1);\n this.uploadTasks = [...this.uploadTasks];\n }\n this.ifxFileUploadRetry.emit({ file });\n this.startUpload(file);\n }\n\n startUpload(file: File) {\n this.ifxFileUploadStart.emit({ file });\n\n const task: UploadTask = {\n file,\n progress: 3, // Start with initial progress for better UX\n intervalId: null,\n completed: false,\n };\n\n this.uploadTasks = [...this.uploadTasks, task];\n\n if (this.uploadHandler) {\n this.uploadHandler(file, (percent: number) => {\n if (percent > task.progress) {\n task.progress = Math.min(100, percent);\n this.uploadTasks = [...this.uploadTasks];\n }\n }).then(() => {\n task.progress = 100;\n task.completed = true;\n this.uploadTasks = [...this.uploadTasks];\n this.ifxFileUploadComplete.emit({ file });\n this.ifxFileUploadChange.emit({ files: this.files });\n\n if (this.uploadTasks.every(t => t.completed)) {\n this.ifxFileUploadAllComplete.emit({ files: this.files });\n }\n }).catch(() => {\n task.error = true;\n this.uploadTasks = [...this.uploadTasks];\n this.ifxFileUploadError.emit({\n file,\n errorType: 'upload-failed',\n message: 'Upload handler rejected file',\n reason: 'custom'\n });\n });\n } else {\n const totalSize = file.size;\n const fakeUploadSpeed = 100000;\n let uploaded = 0;\n\n task.intervalId = window.setInterval(() => {\n uploaded += fakeUploadSpeed / 5;\n const progress = Math.min(100, Math.round((uploaded / totalSize) * 100));\n task.progress = progress;\n this.uploadTasks = [...this.uploadTasks];\n\n if (progress >= 100) {\n clearInterval(task.intervalId!);\n task.completed = true;\n task.intervalId = null;\n this.uploadTasks = [...this.uploadTasks];\n this.ifxFileUploadComplete.emit({ file });\n this.ifxFileUploadChange.emit({ files: this.files });\n\n if (this.uploadTasks.every(t => t.completed)) {\n this.ifxFileUploadAllComplete.emit({ files: this.files });\n }\n }\n }, 200);\n }\n\n this.uploadTasks = [...this.uploadTasks, task];\n }\n\n cancelUpload(file: File) {\n const taskIndex = this.uploadTasks.findIndex(t => t.file.name === file.name);\n if (taskIndex !== -1) {\n const task = this.uploadTasks[taskIndex];\n if (task?.intervalId !== null) {\n clearInterval(task.intervalId);\n }\n this.uploadTasks = this.uploadTasks.filter((_, i) => i !== taskIndex);\n }\n this.files = this.files.filter(f => f.name !== file.name);\n this.ifxFileUploadAbort.emit({ file });\n this.ifxFileUploadChange.emit({ files: this.files });\n if (this.fileInputEl) {\n this.fileInputEl.value = '';\n }\n this.validateRequired();\n }\n\n removeFile(file: File) {\n this.uploadTasks = this.uploadTasks.filter(task => task.file.name !== file.name);\n this.files = this.files.filter(f => f.name !== file.name);\n this.ifxFileUploadRemove.emit({ removedFile: file, files: this.files });\n this.ifxFileUploadChange.emit({ files: this.files });\n this.validateRequired();\n\n if (this.fileInputEl) {\n this.fileInputEl.value = '';\n }\n\n if (\n this.maxFiles &&\n this.files.length < this.maxFiles &&\n this.statusMessage?.text !== this.labelRequiredError\n ) {\n this.statusMessage = null;\n }\n }\n\n\n clearRejectedFile(fileName: string, type: 'size' | 'type') {\n if (type === 'size') {\n this.rejectedSizeFiles = this.rejectedSizeFiles.filter(f => f !== fileName);\n } else {\n this.rejectedTypeFiles = this.rejectedTypeFiles.filter(f => f !== fileName);\n }\n\n if (this.fileInputEl) {\n this.fileInputEl.value = '';\n }\n\n if (this.maxFiles && this.files.length < this.maxFiles) {\n this.statusMessage = null;\n }\n\n this.validateRequired();\n }\n\n splitFileNameParts(file: File): { base: string; ext: string } {\n const name = file.name;\n const dotIndex = name.lastIndexOf('.');\n if (dotIndex === -1) return { base: name, ext: '' };\n return {\n base: name.substring(0, dotIndex),\n ext: name.substring(dotIndex)\n };\n }\n\n getFileIcon(file: File): string {\n const extension = file.name.split('.').pop()?.toLowerCase();\n switch (extension) {\n case 'pdf': return 'file-pdf-16';\n case 'jpg':\n case 'jpeg': return 'file-jpg-16';\n case 'png': return 'file-png-16';\n case 'mov': return 'file-mov-16';\n case 'mp3': return 'file-mp3-16';\n case 'mp4': return 'file-mp4-16';\n default: return 'file-16';\n }\n }\n\n formatSize(bytes: number): string {\n if (bytes >= 1024 * 1024 * 1024) {\n return `${(bytes / (1024 * 1024 * 1024)).toFixed(1)} GB`;\n } else if (bytes >= 1024 * 1024) {\n return `${(bytes / (1024 * 1024)).toFixed(1)} MB`;\n } else if (bytes >= 1024) {\n return `${(bytes / 1024).toFixed(0)} KB`;\n } else {\n return `${bytes} B`;\n }\n }\n\n getAcceptAttribute(): string {\n const extensionTypes = this.getNormalizedFileTypes().map(ext => '.' + ext.toLowerCase());\n const mimeTypes = this.getAdditionalMimeTypes();\n\n return [...extensionTypes, ...mimeTypes].join(',');\n }\n\n private getFormattedProgressText(task: UploadTask): string {\n const uploadedSize = Math.round((task.progress / 100) * task.file.size);\n const uploadedText = this.formatSize(uploadedSize);\n const totalText = this.formatSize(task.file.size);\n return `${uploadedText} / ${totalText} uploaded`;\n }\n\n private getAdditionalMimeTypes(): string[] {\n if (!this.additionalAllowedFileTypes) return [];\n if (Array.isArray(this.additionalAllowedFileTypes)) return this.additionalAllowedFileTypes;\n return this.additionalAllowedFileTypes.split(',').map(t => t.trim());\n }\n\n private getSupportedFileText(): string {\n const extensions = this.getNormalizedFileTypes().map(ext => ext.toUpperCase());\n const mimeTypes = this.getAdditionalMimeTypes().map(mime => this.getLabelFromMimeType(mime));\n const allTypes = [...extensions, ...mimeTypes];\n const typesLabel = allTypes.join(', ');\n\n let text = this.labelSupportedFormatsTemplate\n .replace('{{types}}', typesLabel)\n .replace('{{size}}', this.maxFileSizeMB.toString());\n\n if (this.labelMaxFilesInfo && this.maxFiles) {\n const fileWord = this.pluralize(this.maxFiles);\n const maxFilesText = this.labelMaxFilesInfo\n .replace('{{count}}', this.maxFiles.toString())\n .replace('{{files}}', fileWord);\n text += ` ${maxFilesText}`;\n }\n\n return text;\n }\n\n private getFormattedFileTooLargeText(): string {\n return this.labelFileTooLarge.replace('{{size}}', this.maxFileSizeMB.toString());\n }\n\n private renderStatusMessage() {\n if (!this.statusMessage) return null;\n\n return (\n <div class={`file-upload-status file-upload-status__${this.statusMessage.type}`}>\n {this.statusMessage.type === 'error' && (\n <ifx-icon icon=\"c-warning-16\"></ifx-icon>\n )}\n {this.statusMessage.text}\n </div>\n );\n }\n\n private isInputDisabled(): boolean {\n return this.disabled || (this.maxFiles !== undefined && this.files.length >= this.maxFiles);\n }\n\n componentDidLoad() {\n if (this.hostElement.hasAttribute('show-demo-states')) {\n this.showDemoStates = true;\n }\n\n if (this.showDemoStates) {\n this.injectDemoState();\n }\n }\n\n // Storybook Demo\n @Method()\n async injectDemoState() {\n const dummyContent = new Array(50000).fill('a').join(''); // ~50 KB\n const bigContent = dummyContent + dummyContent; // ~100 KB\n\n const uploading = new File([dummyContent], 'Image.jpg', { type: 'image/jpeg' }); // ~50 KB\n const uploaded = new File([bigContent], 'File.pdf', { type: 'application/pdf' }); // ~100 KB\n const failed = new File([dummyContent], 'Text.docx', { type: 'application/vnd.openxmlformats-officedocument.wordprocessingml.document' }); // ~50 KB\n const tooLarge = new File([bigContent + bigContent + bigContent], 'Video.mp4', { type: 'video/mp4' }); // ~300 KB\n const unsupported = new File(['demo'], 'Script.exe', { type: 'application/x-msdownload' }); // very small\n\n this.files = [uploaded, uploading, failed];\n this.uploadTasks = [\n { file: uploaded, progress: 100, intervalId: null, completed: true },\n { file: uploading, progress: 40, intervalId: null, completed: false },\n { file: failed, progress: 80, intervalId: null, completed: false, error: true }\n ];\n this.rejectedSizeFiles = [tooLarge.name];\n this.rejectedTypeFiles = [unsupported.name];\n }\n\n\n\n // Storybook Demo\n @Method()\n async triggerDemoValidation(): Promise<void> {\n this.validateRequired();\n }\n\n render() {\n return (\n <div\n class={{\n 'file-upload-wrapper': true,\n 'disabled': this.disabled\n }}\n >\n {this.label && (\n <label class=\"file-upload-label\" htmlFor={this.internalId}>\n {this.label}\n {this.required && (\n <span class={`required ${this.requiredError ? 'error' : ''}`}>*</span>\n )}\n </label>\n )}\n\n {this.dragAndDrop ? this.renderDragAndDropArea() : this.renderUploadArea()}\n\n {(this.files.length > 0 || this.rejectedSizeFiles.length > 0 || this.rejectedTypeFiles.length > 0) && (\n <div class=\"file-list-wrapper\">\n <div class=\"upload-heading\">{this.labelUploadedFilesHeading}</div>\n <ul class=\"file-list\">\n {this.rejectedSizeFiles.map(fileName => (\n <li class=\"file-item upload-failed\" key={`rejected-size-${fileName}`}>\n <div class=\"file-icon\">\n <ifx-icon icon=\"file-16\"></ifx-icon>\n </div>\n <div class=\"file-info\">\n <div class=\"file-top-row\">\n <span class=\"file-name-wrapper\">\n <span class=\"file-name-base\">{this.splitFileNameParts({ name: fileName } as File).base}</span>\n <span class=\"file-name-ext\">{this.splitFileNameParts({ name: fileName } as File).ext}</span>\n </span>\n <div class=\"file-actions\">\n <ifx-icon-button\n shape=\"square\"\n variant=\"tertiary\"\n icon=\"delete-forever-16\"\n size=\"s\"\n aria-label={this.ariaLabelRemoveFile}\n onClick={() => this.clearRejectedFile(fileName, 'size')}\n ></ifx-icon-button>\n </div>\n </div>\n <div class=\"file-middle-row\">\n <span class=\"file-status\" aria-label={this.labelFileTooLarge.replace('{{size}}', this.maxFileSizeMB.toString())}>\n {this.getFormattedFileTooLargeText()}\n </span>\n </div>\n </div>\n </li>\n ))}\n\n {this.rejectedTypeFiles.map(fileName => (\n <li class=\"file-item upload-failed\" key={`rejected-type-${fileName}`}>\n <div class=\"file-icon\">\n <ifx-icon icon=\"file-16\"></ifx-icon>\n </div>\n <div class=\"file-info\">\n <div class=\"file-top-row\">\n <span class=\"file-name-wrapper\">\n <span class=\"file-name-base\">{this.splitFileNameParts({ name: fileName } as File).base}</span>\n <span class=\"file-name-ext\">{this.splitFileNameParts({ name: fileName } as File).ext}</span>\n </span>\n <div class=\"file-actions\">\n <ifx-icon-button\n shape=\"square\"\n variant=\"tertiary\"\n icon=\"delete-forever-16\"\n size=\"s\"\n aria-label={this.ariaLabelRemoveFile}\n onClick={() => this.clearRejectedFile(fileName, 'type')}\n ></ifx-icon-button>\n </div>\n </div>\n <div class=\"file-middle-row\">\n <span class=\"file-status\" aria-label={this.labelUnsupportedFileType}>\n {this.labelUnsupportedFileType}\n </span>\n </div>\n </div>\n </li>\n ))}\n\n {this.files.map((file) => {\n const task = this.uploadTasks.find(t => t.file.name === file.name);\n const progress = task?.progress ?? 100;\n const isUploading = task && !task.completed;\n const isError = task?.error === true;\n const itemClass = isError ? 'file-item upload-failed' : isUploading ? 'file-item uploading' : 'file-item upload-success';\n const uniqueKey = `${file.name}-${file.size}`;\n const { base, ext } = this.splitFileNameParts(file);\n\n return (\n <li class={itemClass} key={uniqueKey}>\n <div class=\"file-icon\">\n <ifx-icon icon={this.getFileIcon(file)}></ifx-icon>\n </div>\n <div class=\"file-info\">\n <div class=\"file-top-row\">\n <span class=\"file-name-wrapper\">\n <span class=\"file-name-base\">{base}</span>\n <span class=\"file-name-ext\">{ext}</span>\n </span>\n <div class=\"file-actions\">\n <ifx-icon-button\n shape=\"square\"\n variant=\"tertiary\"\n icon=\"refresh-16\"\n size=\"s\"\n aria-label={this.ariaLabelRetryUpload}\n onClick={() => this.retryUpload(file)}\n style={{ display: isError ? 'inline-flex' : 'none' }}\n ></ifx-icon-button>\n <ifx-icon-button\n shape=\"square\"\n variant=\"tertiary\"\n icon=\"cross-16\"\n size=\"s\"\n aria-label={this.ariaLabelCancelUpload}\n onClick={() => this.cancelUpload(file)}\n style={{ display: isUploading ? 'inline-flex' : 'none' }}\n ></ifx-icon-button>\n <ifx-icon-button\n shape=\"square\"\n variant=\"tertiary\"\n icon=\"delete-forever-16\"\n size=\"s\"\n aria-label={this.ariaLabelRemoveFile}\n onClick={() => this.removeFile(file)}\n style={{ display: !isUploading ? 'inline-flex' : 'none' }}\n ></ifx-icon-button>\n </div>\n </div>\n\n <div class=\"file-middle-row\">\n {isUploading && task && !task.error && (\n <span class=\"file-uploading\" aria-label={this.ariaLabelUploadingStatus}>\n {this.getFormattedProgressText(task)}\n </span>\n )}\n {!isUploading && !isError && (\n <span>\n <span class=\"file-size\">{this.formatSize(file.size)}</span>\n <span class=\"file-status\" aria-label={this.ariaLabelUploadedStatus}>\n <ifx-icon icon=\"check-16\"></ifx-icon>\n {this.labelUploaded}\n </span>\n </span>\n )}\n {isError && (\n <span class=\"file-status\" aria-label={this.ariaLabelUploadFailedStatus}>\n {this.labelUploadFailed}\n </span>\n )}\n </div>\n\n {isUploading && task && !task.error && (\n <div class=\"file-progress-row\">\n <ifx-progress-bar\n size=\"s\"\n value={progress}\n show-label=\"true\"\n ></ifx-progress-bar>\n </div>\n )}\n </div>\n </li>\n );\n })}\n </ul>\n </div>\n )}\n </div>\n );\n }\n\n renderUploadArea() {\n const handleInputRef = (el: HTMLInputElement | null) => {\n this.fileInputEl = el;\n };\n\n return (\n <div class={{ 'upload-button': true }}>\n <ifx-button\n variant=\"secondary\"\n onClick={() => this.fileInputEl?.click()}\n disabled={this.isInputDisabled()}\n aria-label={this.ariaLabelBrowseFiles}\n >\n <ifx-icon icon=\"upload-16\"></ifx-icon>\n {this.labelBrowseFiles}\n </ifx-button>\n <input\n id={this.internalId}\n ref={handleInputRef}\n type=\"file\"\n accept={this.getAcceptAttribute()}\n multiple\n onChange={(e) => this.handleFileChange(e)}\n style={{ display: 'none' }}\n disabled={this.isInputDisabled()}\n aria-label={this.ariaLabelFileInput}\n />\n <p class=\"file-upload-info\">\n {this.getSupportedFileText()}\n </p>\n {this.renderStatusMessage()}\n </div>\n );\n }\n\n\n renderDragAndDropArea() {\n const handleInputRef = (el: HTMLInputElement | null) => {\n this.fileInputEl = el;\n };\n\n const triggerInputClick = () => {\n if (this.fileInputEl) {\n this.fileInputEl.click();\n }\n };\n\n return (\n <div class={{ 'disabled': this.isInputDisabled() }}>\n <div\n class={{ 'upload-dropzone': true, 'drag-over': this.isDragOver, 'error': this.requiredError }}\n onClick={triggerInputClick}\n onDragOver={(e) => this.handleDragOver(e)}\n onDragLeave={(e) => this.handleDragLeave(e)}\n onDrop={(e) => this.handleDrop(e)}\n role=\"button\"\n tabIndex={0}\n aria-label={this.ariaLabelDropzone}\n >\n <ifx-icon icon=\"upload-16\" class=\"custom-icon\"></ifx-icon>\n <p>{this.labelDragAndDrop}</p>\n <p class=\"file-upload-info\">\n {this.getSupportedFileText()}\n </p>\n <div style={{ height: '0px', overflow: 'hidden' }}>\n <input\n id={this.internalId}\n ref={handleInputRef}\n type=\"file\"\n accept={this.getAcceptAttribute()}\n multiple\n onChange={(e) => this.handleFileChange(e)}\n disabled={this.isInputDisabled()}\n aria-label={this.ariaLabelFileInput}\n />\n </div>\n </div>\n {this.renderStatusMessage()}\n </div>\n );\n }\n\n}\n"],"mappings":"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","ignoreList":[]}
@@ -1,2 +0,0 @@
1
- import{r as e,c as t,h as i,g as r}from"./p-b7a462e5.js";const a='.date__picker-container{display:flex;flex-direction:column}.date__picker-container .label__wrapper{color:#1D1D1D;font:400 1rem/1.5rem "Source Sans 3"}.date__picker-container .label__wrapper .asterisk{display:none}.date__picker-container .label__wrapper .asterisk.required{display:inline;margin-left:4px}.date__picker-container .label__wrapper .asterisk.required.error{color:#CD002F}.date__picker-container.disabled .label__wrapper{color:#575352}.date__picker-container.error .caption__wrapper{color:#CD002F}.date__picker-container.disabled .caption__wrapper{color:#575352}.date__picker-container .caption__wrapper{margin-top:4px;color:#1D1D1D;font:400 0.75rem/1rem "Source Sans 3"}.date__picker-input{font-family:"Source Sans 3";outline:none;width:100%;cursor:pointer;border-radius:1px;border:1px solid #8D8786;height:100%}.date__picker-input.firefox__classes{padding:8px 16px;color:#8D8786;font-size:16px;text-transform:uppercase;font-style:normal;font-weight:400;line-height:24px;cursor:pointer}.date__picker-input:focus:not(.error,.success){border-color:#0A8276}.date__picker-input:hover:not(:disabled,:focus,.error,.success){border-color:#575352}.date__picker-input:disabled{border-color:#575352;background-color:#EEEDED}.date__picker-input.error{border-color:#CD002F}.date__picker-input.success:not(.error){border-color:#4CA460}.date__picker-input::-webkit-datetime-edit-text{color:#8D8786;font-size:16px;font-style:normal;font-weight:400;line-height:24px}.date__picker-input.has-value::-webkit-datetime-edit-text{color:#1D1D1D}.date__picker-input.has-value::-webkit-datetime-edit{color:#1D1D1D}::-webkit-datetime-edit{color:#8D8786;font-size:16px;text-transform:uppercase;font-style:normal;font-weight:400;line-height:24px}::-webkit-datetime-edit-fields-wrapper{padding:8px 16px;padding-bottom:9px;transform:translateY(1px)}::-webkit-inner-spin-button{display:none}::-webkit-calendar-picker-indicator{position:absolute;right:15px;font-size:19px;cursor:pointer;border-radius:1px}::-webkit-calendar-picker-indicator:focus-within{outline:2px solid #0A8276;outline-offset:2px}.input__wrapper{display:flex;justify-content:space-between;align-items:center;align-self:stretch;background:#FFFFFF;position:relative}.input__wrapper.large{height:40px}.input__wrapper.small{height:36px}.input__wrapper.disabled .icon__wrapper{background-color:#EEEDED}.icon__wrapper{position:absolute;right:17px;padding:2px;display:flex;justify-content:flex-end;align-items:center;pointer-events:none;z-index:100;background-color:#FFFFFF;line-height:16px}.icon__wrapper ifx-icon{vertical-align:middle}';const s=a;const o=class{constructor(i){e(this,i);this.ifxDate=t(this,"ifxDate",7);if(i.$hostElement$["s-ei"]){this.internals=i.$hostElement$["s-ei"]}else{this.internals=i.$hostElement$.attachInternals();i.$hostElement$["s-ei"]=this.internals}this.inputId=`ifx-date-picker-${++n}`;this.size="s";this.error=false;this.success=false;this.disabled=false;this.type="date";this.required=false;this.autocomplete="on"}getDate(e){const t=e.target.value;const i=new Date(t);const r=i.getDate();const a=i.getMonth()+1;const s=i.getFullYear();if(!t){this.internals.setFormValue(null);if(this.type==="datetime-local"){const e=i.getHours();const t=i.getMinutes();this.ifxDate.emit({day:r,month:a,year:s,hours:e,minutes:t})}else{this.ifxDate.emit({day:r,month:a,year:s})}return}const o=this.el.shadowRoot.querySelector(".date__picker-input");o.classList.add("has-value");this.internals.setFormValue(i.toISOString().substring(0,10));if(this.type==="datetime-local"){const e=i.getHours();const t=i.getMinutes();this.ifxDate.emit({day:r,month:a,year:s,hours:e,minutes:t})}else{this.ifxDate.emit({day:r,month:a,year:s})}}handleInputFocusOnIconClick(){const e=this.el.shadowRoot.querySelector(".date__picker-input");if(e){e.focus()}}getBrowser(){if(navigator.userAgent.indexOf("Chrome")!=-1){return"Chrome"}else if(navigator.userAgent.indexOf("Opera")!=-1){return"Opera"}else if(navigator.userAgent.indexOf("MSIE")!=-1){return"IE"}else if(navigator.userAgent.indexOf("Firefox")!=-1){return"Firefox"}else{return"unknown"}}setFireFoxClasses(){const e=this.getBrowser();const t=this.el.shadowRoot.querySelector(".date__picker-input");if(e==="Firefox"){t.classList.add("firefox__classes")}else if(t.classList.contains("firefox__classes")){t.classList.remove("firefox__classes")}}componentDidLoad(){this.setFireFoxClasses()}componentWillUpdate(){if(this.value){this.getDate({target:{value:this.value}})}}formResetCallback(){this.internals.setFormValue(null)}render(){var e,t;return i("div",{key:"4fd623e58f74d41cc7871b4971b4bd3806f310b2",class:`date__picker-container ${this.error?"error":""} ${this.disabled?"disabled":""}`},i("label",{key:"75f325296e0733fbe2021718b580ed1049248ffa",class:"label__wrapper",htmlFor:this.inputId},(e=this.label)===null||e===void 0?void 0:e.trim(),i("span",{key:"02de17b70b3d0af8d59cb2d13ec7b17ea939f2db",class:`asterisk ${this.required?"required":""} ${this.error?"error":""}`},"*")),i("div",{key:"7bf28947be09f941fb0bf4972e0c8c105366488b",class:`input__wrapper ${this.size==="l"?"large":"small"} ${this.disabled?"disabled":""}`},i("input",{key:"b2413ef548765a108c54c9b338c7274dde36b3f6",type:this.type,autocomplete:this.autocomplete,class:`date__picker-input ${this.error?"error":""} ${this.success?"success":""}`,disabled:this.disabled?true:undefined,"aria-invalid":this.error?true:undefined,"aria-label":this.ariaLabel,max:this.max,min:this.min,value:this.value,required:this.required,onChange:e=>this.getDate(e)}),i("div",{key:"87880933e1ec373376f2ff4dde170ad29bd326bf",class:"icon__wrapper",role:"button",onClick:()=>this.handleInputFocusOnIconClick()},i("ifx-icon",{key:"81bd4154b84f9c1bb48fc6ac6574a915aca0dfce",icon:"calendar16","aria-hidden":"true"}))),((t=this.caption)===null||t===void 0?void 0:t.trim())&&i("div",{key:"371a538db6b4c5e119e436b9dfccff1c5ad35cf1",class:"caption__wrapper"},this.caption.trim()))}static get formAssociated(){return true}get el(){return r(this)}};let n=0;o.style=s;export{o as ifx_date_picker};
2
- //# sourceMappingURL=p-741ee6fd.entry.js.map
@@ -1 +0,0 @@
1
- {"version":3,"names":["datePickerCss","IfxDatePickerStyle0","DatePicker","constructor","hostRef","this","inputId","datePickerId","size","error","success","disabled","type","required","autocomplete","getDate","e","inputValue","target","value","selectedDate","Date","day","month","getMonth","year","getFullYear","internals","setFormValue","hours","getHours","minutes","getMinutes","ifxDate","emit","input","el","shadowRoot","querySelector","classList","add","toISOString","substring","handleInputFocusOnIconClick","focus","getBrowser","navigator","userAgent","indexOf","setFireFoxClasses","browser","contains","remove","componentDidLoad","componentWillUpdate","formResetCallback","render","h","key","class","htmlFor","_a","label","trim","undefined","ariaLabel","max","min","onChange","role","onClick","icon","_b","caption"],"sources":["src/components/date-picker/date-picker.scss?tag=ifx-date-picker&encapsulation=shadow","src/components/date-picker/date-picker.tsx"],"sourcesContent":["@use '~@infineon/design-system-tokens/dist/tokens';\n\n.date__picker-container {\n display: flex;\n flex-direction: column;\n\n & .label__wrapper {\n color: tokens.$ifxColorBaseBlack;\n font: tokens.$ifxBodyBody03;\n\n & .asterisk { \n display: none;\n &.required {\n display: inline;\n margin-left: 4px;\n \n &.error {\n color: #CD002F;\n }\n }\n }\n\n }\n\n &.disabled {\n .label__wrapper {\n color: tokens.$ifxColorEngineering500;\n }\n }\n\n &.error {\n .caption__wrapper {\n color: tokens.$ifxColorRed500;\n }\n }\n\n &.disabled {\n .caption__wrapper {\n color: tokens.$ifxColorEngineering500;\n }\n }\n\n & .caption__wrapper {\n margin-top: tokens.$ifxSpace50;\n color: tokens.$ifxColorBaseBlack;\n font: tokens.$ifxBodyBody05;\n }\n}\n\n.date__picker-input {\n font-family: 'Source Sans 3';\n outline: none;\n width: 100%;\n cursor: pointer;\n border-radius: 1px;\n border: 1px solid tokens.$ifxColorEngineering400;\n height: 100%;\n\n &.firefox__classes {\n padding: 8px 16px;\n color: tokens.$ifxColorEngineering400;\n font-size: 16px;\n text-transform: uppercase;\n font-style: normal;\n font-weight: 400;\n line-height: 24px;\n cursor: pointer;\n }\n\n &:focus:not(.error, .success) {\n border-color: tokens.$ifxColorOcean500;\n }\n\n &:hover:not(:disabled, :focus, .error, .success) {\n border-color: tokens.$ifxColorEngineering500;\n }\n\n &:disabled {\n border-color: tokens.$ifxColorEngineering500;\n background-color: tokens.$ifxColorEngineering200;\n }\n\n &.error {\n border-color: tokens.$ifxColorRed500;\n }\n\n &.success:not(.error) {\n border-color: tokens.$ifxColorGreen500;\n }\n\n &::-webkit-datetime-edit-text {\n color: tokens.$ifxColorEngineering400;\n font-size: 16px;\n font-style: normal;\n font-weight: 400;\n line-height: 24px;\n }\n\n &.has-value::-webkit-datetime-edit-text {\n color: tokens.$ifxColorBaseBlack;\n }\n\n &.has-value::-webkit-datetime-edit {\n color: tokens.$ifxColorBaseBlack;\n }\n}\n\n::-webkit-datetime-edit {\n color: tokens.$ifxColorEngineering400;\n font-size: 16px;\n text-transform: uppercase;\n font-style: normal;\n font-weight: 400;\n line-height: 24px;\n}\n\n::-webkit-datetime-edit-fields-wrapper {\n padding: 8px 16px;\n padding-bottom: 9px;\n transform: translateY(1px);\n}\n\n::-webkit-inner-spin-button {\n display: none;\n}\n\n::-webkit-calendar-picker-indicator {\n position: absolute;\n right: 15px;\n font-size: 19px;\n cursor: pointer;\n border-radius: 1px;\n &:focus-within {\n outline: 2px solid tokens.$ifxColorOcean500;\n outline-offset: 2px;\n }\n}\n\n.input__wrapper {\n display: flex;\n justify-content: space-between;\n align-items: center;\n align-self: stretch;\n background: tokens.$ifxColorBaseWhite;\n position: relative;\n &.large {\n height: 40px;\n }\n\n &.small {\n height: 36px;\n }\n\n &.disabled {\n & .icon__wrapper {\n background-color: tokens.$ifxColorEngineering200;\n }\n }\n}\n\n.icon__wrapper {\n position: absolute;\n right: 17px;\n padding: 2px;\n display: flex;\n justify-content: flex-end;\n align-items: center;\n pointer-events: none;\n z-index: 100;\n background-color: tokens.$ifxColorBaseWhite;\n line-height: 16px;\n\n & ifx-icon {\n vertical-align: middle;\n }\n}\n","import { AttachInternals } from '@stencil/core';\nimport { Component, Prop, h, Element, Event, EventEmitter } from '@stencil/core';\n \n\n@Component({\n tag: 'ifx-date-picker',\n styleUrl: 'date-picker.scss',\n shadow: true,\n formAssociated: true,\n})\n\nexport class DatePicker {\n private inputId: string = `ifx-date-picker-${++datePickerId}`;\n\n @Element() el: HTMLElement;\n @Prop() size: string = 's';\n @Prop() error: boolean = false;\n @Prop() success: boolean = false;\n @Prop() disabled: boolean = false;\n @Prop() ariaLabel: string | null;\n @Prop() value: string;\n @Prop() type: string = 'date'\n @Prop() max: string;\n @Prop() min: string;\n @Prop() required: boolean = false;\n @Prop() label: string;\n @Prop() caption: string;\n @Prop() autocomplete: string = 'on';\n\n @AttachInternals() internals: ElementInternals;\n\n @Event() ifxDate: EventEmitter;\n\n getDate(e) { \n const inputValue = e.target.value;\n const selectedDate = new Date(inputValue);\n const day = selectedDate.getDate();\n const month = selectedDate.getMonth() + 1; \n const year = selectedDate.getFullYear();\n\n \n \n if (!inputValue) {\n this.internals.setFormValue(null);\n\n if(this.type === 'datetime-local') { \n const hours = selectedDate.getHours();\n const minutes = selectedDate.getMinutes();\n this.ifxDate.emit({day, month, year, hours, minutes});\n } else { \n this.ifxDate.emit({day, month, year});\n }\n return;\n }\n\n const input = this.el.shadowRoot.querySelector('.date__picker-input') as HTMLInputElement;\n input.classList.add('has-value');\n\n this.internals.setFormValue(selectedDate.toISOString().substring(0,10))\n if(this.type === 'datetime-local') { \n const hours = selectedDate.getHours();\n const minutes = selectedDate.getMinutes();\n this.ifxDate.emit({day, month, year, hours, minutes});\n } else { \n this.ifxDate.emit({day, month, year})\n }\n }\n\n handleInputFocusOnIconClick() { \n const input = this.el.shadowRoot.querySelector('.date__picker-input') as HTMLInputElement;\n if(input) { \n input.focus()\n }\n }\n\n getBrowser() {\n if( navigator.userAgent.indexOf(\"Chrome\") != -1 ) {\n return \"Chrome\";\n } else if( navigator.userAgent.indexOf(\"Opera\") != -1 ) {\n return \"Opera\";\n } else if( navigator.userAgent.indexOf(\"MSIE\") != -1 ) {\n return \"IE\";\n } else if( navigator.userAgent.indexOf(\"Firefox\") != -1 ) {\n return \"Firefox\";\n } else {\n return \"unknown\";\n }\n }\n\n setFireFoxClasses() { \n const browser = this.getBrowser()\n const input = this.el.shadowRoot.querySelector('.date__picker-input');\n\n if(browser === 'Firefox') { \n input.classList.add('firefox__classes')\n } else if(input.classList.contains('firefox__classes')) { \n input.classList.remove('firefox__classes')\n }\n }\n\n componentDidLoad() { \n this.setFireFoxClasses()\n }\n\n componentWillUpdate() { \n if (this.value) {\n this.getDate({ target: { value: this.value } });\n }\n }\n\n formResetCallback() {\n this.internals.setFormValue(null);\n }\n\n render() {\n return (\n <div class={`date__picker-container ${this.error ? 'error' : ''} ${this.disabled ? 'disabled': ''}`}>\n\n <label class='label__wrapper' htmlFor={ this.inputId }>\n { this.label?.trim() }\n <span class={`asterisk ${this.required ? 'required' : \"\"} ${this.error ? 'error' : \"\"}`}>*</span>\n </label>\n\n <div class={`input__wrapper ${this.size === 'l' ? 'large' : 'small'} ${this.disabled ? 'disabled' : ''}`}>\n <input\n type={this.type}\n autocomplete={this.autocomplete}\n class={`date__picker-input ${this.error ? 'error' : \"\"} ${this.success ? \"success\" : \"\"}`}\n disabled={this.disabled ? true : undefined}\n aria-invalid={this.error ? true : undefined}\n aria-label={this.ariaLabel}\n max={this.max}\n min={this.min}\n value={this.value}\n required={this.required}\n onChange={(e) => this.getDate(e)} />\n <div class=\"icon__wrapper\" role=\"button\" onClick={() => this.handleInputFocusOnIconClick()}>\n <ifx-icon icon='calendar16' aria-hidden=\"true\"></ifx-icon>\n </div>\n </div>\n\n { this.caption?.trim() && (\n <div class='caption__wrapper'>\n { this.caption.trim() }\n </div> \n )}\n </div>\n )\n }\n}\n\nlet datePickerId = 0;"],"mappings":"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","ignoreList":[]}
@@ -1,2 +0,0 @@
1
- import{r as e,c,h as i,g as s}from"./p-b7a462e5.js";const t=':root{--ifx-font-family:"Source Sans 3", "Arial, sans-serif"}:host{display:inline-block;user-select:none}.container{display:flex;flex-direction:row;align-items:center}.container.gap{gap:16px}.switch__checkbox-container{padding:4px;display:flex;align-items:center;position:relative;width:32px;height:16px;background-color:#FFFFFF;border:1px solid #575352;border-radius:20px;cursor:pointer;transition:background-color 0.3s ease;outline:none}.switch__checkbox-container:focus{outline:4px solid #0A8276;outline-offset:2px}.switch__checkbox-container:focus:not(:focus-visible){outline:none}.switch__checkbox-container:focus-visible{outline:2px solid #0A8276;outline-offset:2px}.switch__checkbox-container.disabled{cursor:default;border-color:#BFBBBB}.switch__label-wrapper label:hover{cursor:pointer}.switch__label-wrapper.disabled{color:#BFBBBB}.switch__checkbox-wrapper .switch{width:16px;height:16px;background-color:#575352;border-radius:50%;transition:transform 0.3s ease, background-color 0.3s ease}.switch__checkbox-wrapper .switch.disabled{background-color:#BFBBBB;border-color:#BFBBBB;cursor:default}.switch__checkbox-wrapper .switch.checked{transform:translateX(16px);background-color:#FFFFFF}.switch__checkbox-wrapper .switch.checked.disabled{cursor:default}.switch__checkbox-container:hover .toggle-switch{box-shadow:0 0 5px rgba(0, 0, 0, 0.2)}.switch__checkbox-container.checked{background-color:#0A8276;border-color:#0A8276}.switch__checkbox-container.checked.disabled{background-color:#BFBBBB;border-color:#BFBBBB;cursor:default}';const o=t;const a=class{constructor(i){e(this,i);this.ifxChange=c(this,"ifxChange",7);if(i.$hostElement$["s-ei"]){this.internals=i.$hostElement$["s-ei"]}else{this.internals=i.$hostElement$.attachInternals();i.$hostElement$["s-ei"]=this.internals}this.checked=false;this.name="";this.disabled=false;this.internalChecked=false}async isChecked(){return this.internalChecked}componentWillLoad(){this.internalChecked=this.checked}toggleLabelGap(){const e=this.el.shadowRoot.querySelector("slot");const c=this.el.shadowRoot.querySelector(".container");if(e.assignedNodes().length){c.classList.add("gap")}else{c.classList.remove("gap")}}componentDidLoad(){this.toggleLabelGap()}valueChanged(e,c){if(e!==c){this.internalChecked=e}}toggleSwitch(){if(this.disabled)return;this.internalChecked=!this.internalChecked;if(this.internalChecked){if(this.value!==undefined){this.internals.setFormValue(this.value)}else{this.internals.setFormValue("on")}}else{this.internals.setFormValue(null)}this.ifxChange.emit(this.internalChecked)}handleKeyDown(e){if(this.disabled)return;if(e.key==="Enter"||e.key===" "){this.toggleSwitch()}}formResetCallback(){this.internals.setFormValue(null)}render(){return i("div",{key:"4f885a605a162860014f8d77b84e7ae32f3ae344",class:"container",role:"switch","aria-checked":this.internalChecked?"true":"false","aria-label":this.name,onClick:()=>this.toggleSwitch(),onKeyDown:e=>this.handleKeyDown(e)},i("div",{key:"d0434a39c0d7d0dea0ff0456c4d85f1d3fa99d58",class:`switch__checkbox-container ${this.internalChecked?"checked":""} ${this.disabled?"disabled":""}`,tabindex:"0"},i("div",{key:"c9ef8f8dc05caf477e5f7c495d9df4c36979fe6d",class:"switch__checkbox-wrapper"},i("input",{key:"08ab2e52fb222aade1a6ae7450f6281954fa69da",type:"checkbox",hidden:true,name:this.name,disabled:this.disabled,checked:this.internalChecked,value:`${this.value}`}),i("div",{key:"bac7ec146e4df928918f58c0c26852c9ac85b08d",class:`switch ${this.internalChecked?"checked":""} ${this.disabled?"disabled":""}`}))),i("div",{key:"0515b41b92c0eea7bedb409550d20f579e86291b",class:`switch__label-wrapper ${this.disabled?"disabled":""}`},i("label",{key:"3336c1de70c159bd0acf70898c36f856949ad91e",htmlFor:"switch"},i("slot",{key:"736087db7e2a54dddf56e44cb161bf2a03cceda2",onSlotchange:()=>this.toggleLabelGap()}))))}static get formAssociated(){return true}get el(){return s(this)}static get watchers(){return{checked:["valueChanged"]}}};a.style=o;export{a as ifx_switch};
2
- //# sourceMappingURL=p-76e0c34f.entry.js.map
@@ -1 +0,0 @@
1
- {"version":3,"names":["switchCss","IfxSwitchStyle0","Switch","constructor","hostRef","this","checked","name","disabled","internalChecked","isChecked","componentWillLoad","toggleLabelGap","slot","el","shadowRoot","querySelector","container","assignedNodes","length","classList","add","remove","componentDidLoad","valueChanged","newValue","oldValue","toggleSwitch","value","undefined","internals","setFormValue","ifxChange","emit","handleKeyDown","event","key","formResetCallback","render","h","class","role","onClick","onKeyDown","tabindex","type","hidden","htmlFor","onSlotchange"],"sources":["src/components/switch/switch.scss?tag=ifx-switch&encapsulation=shadow","src/components/switch/switch.tsx"],"sourcesContent":["@use \"~@infineon/design-system-tokens/dist/tokens\";\n@use \"../../global/font.scss\";\n\n/* switch.css */\n:host {\n display: inline-block;\n user-select: none;\n}\n\n.container {\n display: flex;\n flex-direction: row;\n align-items: center;\n\n &.gap {\n gap: tokens.$ifxSpace200;\n }\n}\n\n\n.switch__checkbox-container {\n padding: tokens.$ifxSpace50;\n display: flex;\n align-items: center;\n position: relative;\n // Subtracting padding size from both height and width\n width: (tokens.$ifxSpace500)-8px;\n height: 16px;\n background-color: tokens.$ifxColorBaseWhite;\n border: 1px solid tokens.$ifxColorEngineering500;\n border-radius: 20px;\n cursor: pointer;\n transition: background-color 0.3s ease;\n outline: none;\n\n &:focus {\n outline: 4px solid tokens.$ifxColorOcean500;\n outline-offset: 2px;\n }\n\n &:focus:not(:focus-visible) {\n outline: none;\n }\n\n &:focus-visible {\n outline: 2px solid tokens.$ifxColorOcean500;\n outline-offset: 2px;\n }\n\n &.disabled {\n cursor: default;\n border-color: tokens.$ifxColorEngineering300;\n }\n\n\n}\n\n\n.switch__label-wrapper {\n\n & label { \n &:hover { \n cursor: pointer;\n }\n }\n\n &.disabled {\n color: tokens.$ifxColorEngineering300;\n }\n}\n\n\n.switch__checkbox-wrapper {\n\n .switch {\n // position: absolute;\n width: tokens.$ifxSpace200;\n height: tokens.$ifxSpace200;\n background-color: tokens.$ifxColorEngineering500;\n border-radius: 50%;\n transition: transform 0.3s ease, background-color 0.3s ease;\n\n &.disabled {\n background-color: tokens.$ifxColorEngineering300;\n border-color: tokens.$ifxColorEngineering300;\n cursor: default;\n }\n }\n\n .switch.checked {\n transform: translateX(16px);\n background-color: tokens.$ifxColorBaseWhite;\n\n &.disabled {\n cursor: default;\n }\n\n }\n\n}\n\n.switch__checkbox-container:hover .toggle-switch {\n box-shadow: 0 0 5px rgba(0, 0, 0, 0.2);\n}\n\n\n\n.switch__checkbox-container.checked {\n background-color: tokens.$ifxColorOcean500;\n border-color: tokens.$ifxColorOcean500;\n\n &.disabled {\n background-color: tokens.$ifxColorEngineering300;\n border-color: tokens.$ifxColorEngineering300;\n cursor: default;\n }\n}","import { AttachInternals, Method } from '@stencil/core';\nimport { Component, Prop, State, Watch, h, Event, EventEmitter, Element } from '@stencil/core';\n \n\n@Component({\n tag: 'ifx-switch',\n styleUrl: 'switch.scss',\n shadow: true,\n formAssociated: true\n})\nexport class Switch {\n @Prop() checked: boolean = false;\n @Prop() name: string = '';\n @Prop() disabled: boolean = false;\n @Prop() value: string;\n @State() internalChecked: boolean = false;\n\n @AttachInternals() internals: ElementInternals;\n\n @Element() el: HTMLIfxSwitchElement;\n\n @Event({ eventName: 'ifxChange' }) ifxChange: EventEmitter<boolean>;\n\n @Method()\n async isChecked(): Promise<boolean> {\n return this.internalChecked;\n }\n\n componentWillLoad() {\n this.internalChecked = this.checked;\n }\n \n\n toggleLabelGap() {\n const slot = this.el.shadowRoot.querySelector('slot');\n const container = this.el.shadowRoot.querySelector('.container');\n if (slot.assignedNodes().length) {\n container.classList.add('gap')\n } else { \n container.classList.remove('gap')\n }\n }\n \n componentDidLoad() {\n this.toggleLabelGap();\n\n }\n \n @Watch('checked')\n valueChanged(newValue: boolean, oldValue: boolean) {\n if (newValue !== oldValue) {\n this.internalChecked = newValue;\n }\n }\n\n toggleSwitch() {\n if (this.disabled) return;\n this.internalChecked = !this.internalChecked;\n\n if (this.internalChecked) {\n if (this.value !== undefined) {\n this.internals.setFormValue(this.value);\n } else {\n this.internals.setFormValue(\"on\")\n }\n } else {\n this.internals.setFormValue(null)\n }\n\n this.ifxChange.emit(this.internalChecked);\n }\n\n handleKeyDown(event: KeyboardEvent) {\n if (this.disabled) return;\n // If the pressed key is either 'Enter' or 'Space' \n if (event.key === 'Enter' || event.key === ' ') {\n this.toggleSwitch();\n }\n }\n\n /**\n * Callback for form association.\n * Called whenever the form is reset.\n */\n formResetCallback() {\n this.internals.setFormValue(null);\n }\n\n render() {\n return (\n <div\n class=\"container\"\n role=\"switch\"\n aria-checked={this.internalChecked ? 'true' : 'false'}\n aria-label={this.name}\n onClick={() => this.toggleSwitch()}\n onKeyDown={(event) => this.handleKeyDown(event)}\n >\n {/* Checkbox */}\n <div \n class={`switch__checkbox-container ${this.internalChecked ? 'checked' : ''} ${this.disabled ? 'disabled' : ''}`}\n tabindex=\"0\"\n >\n <div class=\"switch__checkbox-wrapper\">\n <input type=\"checkbox\" hidden\n name={this.name}\n disabled={this.disabled}\n checked={this.internalChecked}\n value={`${this.value}`} />\n <div class={`switch ${this.internalChecked ? 'checked' : ''} ${this.disabled ? 'disabled' : ''}`} />\n </div>\n </div >\n\n {/* Label */}\n <div class={`switch__label-wrapper ${this.disabled ? 'disabled' : ''}`} >\n <label htmlFor=\"switch\">\n <slot onSlotchange={() => this.toggleLabelGap()} />\n </label>\n </div>\n </div>\n )\n\n }\n}\n"],"mappings":"oDAAA,MAAMA,EAAY,sgDAClB,MAAAC,EAAeD,E,MCSFE,EAAM,MANnB,WAAAC,CAAAC,G,+MAOUC,KAAAC,QAAmB,MACnBD,KAAAE,KAAe,GACfF,KAAAG,SAAoB,MAEnBH,KAAAI,gBAA2B,K,CASpC,eAAMC,GACJ,OAAOL,KAAKI,e,CAGd,iBAAAE,GACEN,KAAKI,gBAAkBJ,KAAKC,O,CAI9B,cAAAM,GACE,MAAMC,EAAOR,KAAKS,GAAGC,WAAWC,cAAc,QAC9C,MAAMC,EAAYZ,KAAKS,GAAGC,WAAWC,cAAc,cACnD,GAAIH,EAAKK,gBAAgBC,OAAQ,CAC/BF,EAAUG,UAAUC,IAAI,M,KACnB,CACLJ,EAAUG,UAAUE,OAAO,M,EAI/B,gBAAAC,GACElB,KAAKO,gB,CAKP,YAAAY,CAAaC,EAAmBC,GAC9B,GAAID,IAAaC,EAAU,CACzBrB,KAAKI,gBAAkBgB,C,EAI3B,YAAAE,GACE,GAAItB,KAAKG,SAAU,OACnBH,KAAKI,iBAAmBJ,KAAKI,gBAE7B,GAAIJ,KAAKI,gBAAiB,CACxB,GAAIJ,KAAKuB,QAAUC,UAAW,CAC5BxB,KAAKyB,UAAUC,aAAa1B,KAAKuB,M,KAC5B,CACLvB,KAAKyB,UAAUC,aAAa,K,MAEzB,CACL1B,KAAKyB,UAAUC,aAAa,K,CAG9B1B,KAAK2B,UAAUC,KAAK5B,KAAKI,gB,CAG3B,aAAAyB,CAAcC,GACZ,GAAI9B,KAAKG,SAAU,OAEnB,GAAI2B,EAAMC,MAAQ,SAAWD,EAAMC,MAAQ,IAAK,CAC9C/B,KAAKsB,c,EAQT,iBAAAU,GACEhC,KAAKyB,UAAUC,aAAa,K,CAG9B,MAAAO,GACE,OACEC,EAAA,OAAAH,IAAA,2CACEI,MAAM,YACNC,KAAK,SAAQ,eACCpC,KAAKI,gBAAkB,OAAS,QAAO,aACzCJ,KAAKE,KACjBmC,QAAS,IAAMrC,KAAKsB,eACpBgB,UAAYR,GAAU9B,KAAK6B,cAAcC,IAGzCI,EAAA,OAAAH,IAAA,2CACEI,MAAO,8BAA8BnC,KAAKI,gBAAkB,UAAY,MAAMJ,KAAKG,SAAW,WAAa,KAC3GoC,SAAS,KAETL,EAAA,OAAAH,IAAA,2CAAKI,MAAM,4BACTD,EAAA,SAAAH,IAAA,2CAAOS,KAAK,WAAWC,OAAM,KAC3BvC,KAAMF,KAAKE,KACXC,SAAUH,KAAKG,SACfF,QAASD,KAAKI,gBACdmB,MAAO,GAAGvB,KAAKuB,UACjBW,EAAA,OAAAH,IAAA,2CAAKI,MAAO,UAAUnC,KAAKI,gBAAkB,UAAY,MAAMJ,KAAKG,SAAW,WAAa,SAKhG+B,EAAA,OAAAH,IAAA,2CAAKI,MAAO,yBAAyBnC,KAAKG,SAAW,WAAa,MAChE+B,EAAA,SAAAH,IAAA,2CAAOW,QAAQ,UACbR,EAAA,QAAAH,IAAA,2CAAMY,aAAc,IAAM3C,KAAKO,qB","ignoreList":[]}
@@ -1,2 +0,0 @@
1
- import{r as e,c as i,h as t,g as s}from"./p-b7a462e5.js";const a=':root{--ifx-font-family:"Source Sans 3", "Arial, sans-serif"}:host{display:inline-block}.chip{position:relative}.chip__wrapper{display:inline-flex;align-items:center;justify-content:center;gap:8px;box-sizing:border-box;border:1px solid #BFBBBB;border-radius:9999px;background:#FFFFFF;cursor:pointer;transition:border 100ms ease;font:400 0.875rem/1.25rem "Source Sans 3"}.chip__wrapper:hover,.chip__wrapper:focus-visible{outline:none;border:1px solid #575352}.chip__wrapper:focus{border:1px solid #0A8276}.chip__wrapper.chip__wrapper--small{padding:4px 12px}.chip__wrapper.chip__wrapper--large{padding:8px 16px}.chip__wrapper.chip__wrapper--opened{border:1px solid #0A8276}.chip__wrapper.chip__wrapper--opened .wrapper__open-button{transform:rotate(-180deg)}.chip__wrapper.chip__wrapper--selected{outline:3px solid #0A8276;outline-offset:-3px;color:#0A8276}.chip__wrapper.chip__wrapper--selected:hover,.chip__wrapper.chip__wrapper--selected:focus-visible{outline:3px solid #08665C;color:#08665C}.wrapper__label{display:inline-flex;align-items:center;gap:4px;font:400 0.875rem/1.25rem "Source Sans 3"}.wrapper__label .label__selected-options{font:600 0.875rem/1.25rem "Source Sans 3"}.wrapper__open-button{display:flex;align-items:center;transition:all 300ms ease}.wrapper__unselect-button{display:flex;align-items:center}.chip__dropdown{position:absolute;z-index:1;box-shadow:0px 6px 9px 0px rgba(29, 29, 29, 0.1019607843);border:1px solid #EEEDED;border-radius:1px;padding:8px 0;min-width:222px;background-color:#FFFFFF}';const n=a;const l=class{constructor(t){e(this,t);this.ifxChange=i(this,"ifxChange",7);this.placeholder="";this.size="large";this.value=undefined;this.variant="single";this.readOnly=false;this.opened=false;this.selectedOptions=[]}handleValueChange(e){this.syncSelectedOptionsWithProp(e)}handleReadOnlyChange(e){if(e){this.opened=false}}closeDropdownOnOutsideClick(e){const i=e.composedPath();const t=this.chip.shadowRoot.querySelector(".chip__wrapper");const s=this.chip.shadowRoot.querySelector(".chip__dropdown");if(!i.includes(s)&&!i.includes(t)&&this.opened){this.toggleDropdownMenu()}}handleKeyDown(e){if(e.code!=="Tab"){e.preventDefault()}if(e.target.tagName==="IFX-CHIP"){this.handleWrapperKeyDown(e)}else if(e.target.tagName==="IFX-CHIP-ITEM"){this.handleDropdownKeyDown(e)}}updateSelectedOptions(e){const i=e.detail;const t=[...this.selectedOptions];if(this.variant!=="multi"){if(i.selected){this.opened=false;const t=this.getChipItems();t.forEach((i=>{if(i.selected&&i!==e.target){i.chipState=Object.assign(Object.assign({},i.chipState),{emitIfxChipItemSelect:false});i.selected=false}}));this.selectedOptions=[i]}else{this.selectedOptions=[]}this.value=this.selectedOptions[0]?this.selectedOptions[0].value:undefined}else{if(i.selected){if(!this.selectedOptions.find((e=>e.value===i.value))){this.selectedOptions=[...this.selectedOptions,i]}}else{this.selectedOptions=this.selectedOptions.filter((e=>e.value!==i.value))}this.value=this.selectedOptions.map((e=>e.value))}if(i.emitIfxChange){this.ifxChange.emit({previousSelection:t,currentSelection:this.selectedOptions,name:this.placeholder})}}getChipItems(){return this.chip.querySelectorAll("ifx-chip-item")}getSelectedOptions(){if(this.variant!=="multi"){return this.selectedOptions.map((e=>e.label)).join("")}return this.selectedOptions.slice(0,2).map((e=>e.label)).join(", ")}toggleDropdownMenu(){if(this.readOnly)return;this.opened=!this.opened}focusChipItemAt(e=0){this.opened=true;const i=this.getChipItems();let t;if(e===-1){t=i.item(i.length-1)}else if(e>=0&&e<i.length){t=i.item(e)}else{console.error(`Invalid index: ${e}`);return}const s=t.shadowRoot.querySelector(".chip-item");if(s){setTimeout((()=>{s.focus()}),1)}}focusChip(){const e=this.chip.shadowRoot.querySelector(".chip__wrapper");e.focus()}handleUnselectButtonClick(e){e.stopPropagation();this.opened=false;let i=false;const t=this.getChipItems();t.forEach((e=>{if(e.selected){i=true;e.chipState=Object.assign(Object.assign({},e.chipState),{emitIfxChipItemSelect:false});e.selected=false}}));if(i){const e=this.selectedOptions;this.selectedOptions=[];this.value=[];this.ifxChange.emit({previousSelection:e,currentSelection:[],name:this.placeholder})}}handleWrapperClick(){if(!this.readOnly){this.toggleDropdownMenu()}}handleWrapperKeyDown(e){if(this.readOnly)return;if(!this.opened){switch(e.code){case"Space":case"Enter":case"ArrowDown":this.focusChipItemAt(0);break;case"ArrowUp":this.focusChipItemAt(-1);break}}else{switch(e.code){case"Escape":this.opened=false;this.focusChip();break}}}handleDropdownKeyDown(e){let i=this.getChipItems();let t=Array.from(i).indexOf(e.target);if(t===-1){console.error("Target not found in chip items");return}switch(e.code){case"ArrowDown":if(t===i.length-1)break;this.focusChipItemAt(t+1);break;case"ArrowUp":if(t===0)break;this.focusChipItemAt(t-1);break;case"Escape":this.opened=false;this.focusChip();break;case"Space":if(this.variant==="single"){this.opened=false;this.focusChip()}break;case"Enter":this.opened=false;this.focusChip();break}}syncChipState(){const e=this.getChipItems();let i=0;e.forEach((e=>{e.chipState={emitIfxChipItemSelect:true,size:this.size==="small"?"small":"large",variant:this.variant==="multi"?"multi":"single",key:i++}}))}syncSelectedOptionsWithProp(e){this.selectedOptions=[];const i=(()=>{let e=0;return()=>e++})();if(Array.isArray(e)){this.selectedOptions=e.map((e=>({value:e,label:e,selected:true,key:i(),emitIfxChange:true})))}else if(typeof e==="string"){this.selectedOptions=[{value:e,label:e,selected:true,key:i(),emitIfxChange:true}]}this.syncChipState()}componentWillLoad(){this.syncSelectedOptionsWithProp(this.value)}render(){return t("div",{key:"e14109cde5a4d4a9ed84c98ec91f12061c870fd7",class:"chip"},t("div",{key:"c53a4141e3c632b7b191c473af84fcea0f1734c6",class:`chip__wrapper chip__wrapper--${this.size==="small"?"small":"large"}\n chip__wrapper--${this.variant==="multi"?"multi":"single"}\n ${this.opened&&!this.readOnly?"chip__wrapper--opened":""}\n ${this.selectedOptions.length?"chip__wrapper--selected":""}`,tabIndex:0,onClick:!this.readOnly?()=>{this.handleWrapperClick()}:undefined,role:"combobox","aria-label":this.ariaLabel,"aria-value":this.getSelectedOptions(),"aria-haspopup":!this.readOnly?"listbox":undefined,"aria-expanded":!this.readOnly?this.opened.toString():undefined,"aria-controls":!this.readOnly?"dropdown":undefined,"aria-readonly":this.readOnly?"true":undefined,"aria-multiselectable":this.variant==="multi"?"true":undefined},t("div",{key:"2dd2d3efa423414c1b2f1d4bb14439ac5f79b6e3",class:"wrapper__label"},this.selectedOptions.length===0&&`${this.placeholder}`,this.selectedOptions.length!==0&&(this.variant==="multi"||this.readOnly)&&this.placeholder!==""&&`${this.placeholder}:`,this.selectedOptions.length!==0&&t("div",{key:"fa10908eb3780826670e4d571a64803d54022d6e",class:"label__selected-options"},this.getSelectedOptions()),this.selectedOptions.length>2&&this.variant==="multi"&&t("ifx-indicator",{key:"1f80e8bffce5a08f712d4e0b8ecb138290752ca2",variant:"number",number:this.selectedOptions.length-2})),!this.readOnly&&(this.variant!=="multi"||this.variant==="multi"&&this.selectedOptions.length===0)&&t("div",{key:"f9f144b629d6c21c91da36b37ac10667f30a3278",class:"wrapper__open-button"},t("ifx-icon",{key:1,icon:`chevron-down-16`})),this.variant!=="multi"&&this.readOnly!==false&&this.selectedOptions.length>0&&t("div",{key:"207c2ebcf32b8f86e69d89536223e06b028942a6",class:"wrapper__unselect-button",onClick:e=>{this.handleUnselectButtonClick(e)}},t("ifx-icon",{key:2,icon:`cross16`})),this.selectedOptions.length>=1&&this.variant==="multi"&&t("div",{key:"66b7fee014680ed354a33d7f5a3ca991370be17c",class:"wrapper__unselect-button",onClick:e=>{this.handleUnselectButtonClick(e)}},t("ifx-icon",{key:2,icon:`cross16`}))),this.opened&&!this.readOnly&&t("div",{key:"3f47c1664904fa7623f830447ef8d1bb0a4975e9",id:"dropdown",role:"listbox",class:"chip__dropdown"},t("slot",{key:"a3fe6154c33599a9cd12f5c7f5ecff99a0330e81"})))}get chip(){return s(this)}static get watchers(){return{value:["handleValueChange"],readOnly:["handleReadOnlyChange"]}}};l.style=n;const r=':root{--ifx-font-family:"Source Sans 3", "Arial, sans-serif"}.chip-item{display:flex;align-items:center;gap:8px;padding:8px 16px;user-select:none;transition:all 100ms ease;transition-property:background, color}.chip-item:hover{cursor:pointer;background-color:#EEEDED}.chip-item:active{background-color:#BFBBBB}.chip-item:focus{outline:2px solid #0A8276}.chip-item.chip-item--large{font:400 1rem/1.5rem "Source Sans 3"}.chip-item.chip-item--small{font:400 0.875rem/1.25rem "Source Sans 3"}.chip-item.chip-item--selected{color:#0A8276}.chip-item.chip-item--selected .chip-item__selected-indicator{display:block}.chip-item__selected-indicator{display:none;margin-left:auto}';const c=r;const h=class{constructor(t){e(this,t);this.ifxChipItemSelect=i(this,"ifxChipItemSelect",5);this.value=undefined;this.chipState={emitIfxChipItemSelect:true,variant:"multi",size:"large"};this.selected=false}updateItemSelection(e){if(this.chipState.variant==="single"){const i=e.target;if(this.chipItem!==i&&this.chipItem.parentElement===i.parentElement){this.selected=false}}}validateSelected(e,i){if(e!==i){if(this.chipState.emitIfxChipItemSelect){this.emitIfxChipItemSelectEvent()}else{this.chipState.emitIfxChipItemSelect=true}}}getItemLabel(){return this.chipItem.innerText}toggleItemSelection(){this.selected=!this.selected}emitIfxChipItemSelectEvent(e=true){this.ifxChipItemSelect.emit({emitIfxChange:e,key:this.chipState.key,label:this.getItemLabel(),selected:this.selected,value:this.value})}handleItemClick(){this.toggleItemSelection()}handleItemKeyDown(e){if(e.code==="Enter"||e.code==="Space"){this.toggleItemSelection()}}handleSelectedState(){if(this.selected){this.emitIfxChipItemSelectEvent(false)}}componentWillLoad(){this.handleSelectedState()}render(){return t("div",{key:"7ceff18d0a41b419a188d925fd854cc97d7a9ecd",class:`chip-item chip-item--${this.chipState.size} \n chip-item--${(this.selected&&this.chipState.variant)==="single"?"selected":""}`,tabIndex:0,onClick:()=>{this.handleItemClick()},onKeyDown:e=>{this.handleItemKeyDown(e)},role:"option","aria-selected":this.selected.toString()},this.chipState.variant==="multi"&&t("ifx-checkbox",{key:"d2f717951d288aa0863081e54cabf7edd1c6f7e6",checked:this.selected,tabIndex:-1,size:"s"}),t("div",{key:"fff335d9009c93863012f6a4307ed4322413c4f7",class:"chip-item__label"}," ",t("slot",{key:"a093e9caf2eecba28c58674dde3f788be1f5849b"})," "),t("div",{key:"ea76c6b3d0bdd2a687acfbe323ebd9e6d6034a40",class:"chip-item__selected-indicator"},t("ifx-icon",{key:"5d0ae125cb1ea0297d81d773c9981bd13f0c5759",icon:"check-16"}," ")))}get chipItem(){return s(this)}static get watchers(){return{selected:["validateSelected"]}}};h.style=c;const o='@charset "UTF-8";:root{--ifx-font-family:"Source Sans 3", "Arial, sans-serif"}:host{display:inline-flex}.container{display:inline-flex;justify-content:center;align-items:center;gap:32px;font-family:var(--ifx-font-family)}.container .items__per-page-wrapper{display:flex;align-items:center;gap:16px}.container .items__per-page-wrapper .items__per-page-label{color:#1D1D1D;font-size:14px;font-style:normal;font-weight:600;line-height:20px}.container .items__per-page-wrapper .items__per-page-field{display:flex;flex-direction:column;align-items:flex-start}.container .items__per-page-wrapper .items__per-page-field ifx-select{width:92px}.container .items__total-wrapper{display:flex;justify-content:center;align-items:center;gap:12px}.container .items__total-wrapper .items__total-button{display:flex;width:40px;height:40px;justify-content:center;align-items:center;border-radius:100px;border:1px solid #BFBBBB;background:#FFF}.container .items__total-wrapper .page__numbers-wrapper{display:flex;justify-content:center;align-items:center;gap:12px}.container .items__total-wrapper .page__numbers-wrapper .page__number-item{display:flex;padding:6px;flex-direction:column;justify-content:center;align-items:center;gap:10px;border-radius:100px}.container .items__total-wrapper .page__numbers-wrapper .page__number-item.active{background-color:#0A8276}.container .items__total-wrapper .page__numbers-wrapper .page__number-item.active span{color:#fff}.container .items__total-wrapper .page__numbers-wrapper .page__number-item:hover{cursor:pointer}.container .items__total-wrapper .page__numbers-wrapper .page__number-item:hover:not(.active){background-color:#ddd}.container .items__total-wrapper .page__numbers-wrapper .page__number-item:active:not(.active){background-color:#575352}.container .items__total-wrapper .page__numbers-wrapper .page__number-item span{display:flex;width:16px;height:16px;flex-direction:column;justify-content:center;color:#1D1D1D;text-align:center;font-size:13px;font-style:normal;font-weight:400;line-height:20px}.pagination{display:flex}.pagination ifx-icon-button:first-of-type{margin-right:12px}.pagination ifx-icon-button:last-of-type{margin-left:12px}a{padding:8px;border-radius:100px}ol{list-style-type:none;padding:0;margin:0;display:inline-flex;align-items:center;gap:12px}li{display:flex;flex-direction:column;justify-content:center;align-items:center;border-radius:100px}li:hover:not(.active) a{background-color:#EEEDED}li:active:not(.active) a{background-color:#575352;color:#fff}li.active{background-color:#0A8276}li.active a{color:#fff}li:hover{cursor:pointer}li a{text-decoration:none;display:flex;width:16px;height:16px;flex-direction:column;justify-content:center;color:#1D1D1D;text-align:center;font-size:13px;font-style:normal;font-weight:400;line-height:20px;align-items:center}.prev.disabled,.next.disabled{cursor:default}.prev.disabled:hover,.next.disabled:hover{cursor:default;text-decoration:none}.prev{margin-right:2.5px}.next{margin-left:2.5px}@media (min-width: 400px){li:first-child,li.active-sibling,li.active,li.active+li,li:last-child{display:inline-flex !important;flex-direction:row}li:first-child:nth-last-child(n+8)~li{display:none}li:first-child:nth-last-child(n+8)~li.active-sibling:before{content:"…";font-size:13px;display:inline-block;margin-right:6px}li:first-child:nth-last-child(n+8)~li.active+li:after{content:"…";font-size:13px;display:inline-block;margin-left:6px}li:first-child:nth-last-child(n+8)~li:nth-last-child(-n+5){display:inline-flex;flex-direction:row}li:first-child:nth-last-child(n+8)~li:nth-last-child(5):before{content:"…";font-size:13px;display:inline-block;margin-right:6px}li:first-child:nth-last-child(n+8)~li:nth-child(-n+2):before,li:first-child:nth-last-child(n+8)~li:nth-child(-n+2):after,li:first-child:nth-last-child(n+8)~li:nth-last-child(-n+2):before,li:first-child:nth-last-child(n+8)~li:nth-last-child(-n+2):after,li:first-child:nth-last-child(n+8)~li.active-sibling:nth-last-child(-n+4):before,li:first-child:nth-last-child(n+8)~li.active-sibling:nth-last-child(-n+4):after{display:none !important}li:first-child:nth-last-child(n+8).active~li:nth-last-child(-n+5),li:first-child:nth-last-child(n+8)~li.active~li:nth-last-child(-n+5){display:none}li:first-child:nth-last-child(n+8).active~li:nth-last-child(-n+5):before,li:first-child:nth-last-child(n+8)~li.active~li:nth-last-child(-n+5):before{display:none}li:first-child:nth-last-child(n+8).active~li:nth-child(-n+5),li:first-child:nth-last-child(n+8)~li.active~li:nth-child(-n+5){display:inline-flex !important;flex-direction:row}li:first-child:nth-last-child(n+8).active~li:nth-child(-n+4):after,li:first-child:nth-last-child(n+8)~li.active~li:nth-child(-n+4):after{display:none}li:first-child:nth-last-child(n+8).active~li:nth-child(5):after,li:first-child:nth-last-child(n+8)~li.active~li:nth-child(5):after{content:"…";font-size:13px;display:inline-block;margin-left:6px}li:first-child:nth-last-child(n+8).active:before,li:first-child:nth-last-child(n+8).active:after,li:first-child:nth-last-child(n+8)~li.active:before,li:first-child:nth-last-child(n+8)~li.active:after{display:none}}';const p=o;const d=class{constructor(t){e(this,t);this.ifxPageChange=i(this,"ifxPageChange",7);this.currentPage=1;this.internalPage=1;this.internalItemsPerPage=10;this.numberOfPages=[];this.total=1;this.filteredItemsPerPage=[];this.visiblePages=[];this.CLASS_DISABLED="disabled";this.CLASS_ACTIVE="active";this.handlePageClick=e=>{const i=e.currentTarget;const t=parseInt(i.dataset.page);if(!isNaN(t))this.changePage(t)}}setItemsPerPage(e){var i,t;const s=((i=e.detail)===null||i===void 0?void 0:i.value)||((t=e.detail)===null||t===void 0?void 0:t.label);const a=parseInt(s)||10;if(a===this.internalItemsPerPage){return}this.internalItemsPerPage=a;this.internalPage=1;this.calculateNumberOfPages();this.updateVisiblePages();this.handleEventEmission()}componentDidLoad(){this.initPagination()}updateVisiblePages(){const e=2;const i=this.numberOfPages.length;const t=this.internalPage;let s=[];if(i<=5){s=[...this.numberOfPages]}else{s.push(1);if(t>e+1)s.push("...");let a=Math.max(2,t-e);let n=Math.min(i-1,t+e);if(t<=e+1)n=e*2+1;if(t>=i-e)a=i-e*2;for(let e=a;e<=n;e++)s.push(e);if(t<i-e)s.push("...");s.push(i)}this.visiblePages=[...new Set(s)]}calculateNumberOfPages(){const e=Math.ceil(this.total/this.internalItemsPerPage);this.numberOfPages=Array.from({length:e},((e,i)=>i+1));this.internalPage=Math.max(1,Math.min(this.currentPage,e))}filterOptionsArray(){const e=typeof this.itemsPerPage==="string"?JSON.parse(this.itemsPerPage):this.itemsPerPage;this.filteredItemsPerPage=e.map((e=>Object.assign(Object.assign({},e),{label:e.label||e.value})))}componentWillLoad(){this.calculateNumberOfPages();this.filterOptionsArray();this.updateVisiblePages()}componentWillUpdate(){if(this.prevInternalPage!==this.internalPage){this.updateVisiblePages();this.prevInternalPage=this.internalPage}}componentDidUpdate(){this.initPagination()}handleEventEmission(){this.ifxPageChange.emit({currentPage:this.internalPage,totalPages:this.numberOfPages.length,itemsPerPage:this.internalItemsPerPage})}initPagination(){const e=this.el.shadowRoot.querySelector(".pagination");if(!e)return;const i=()=>{const i=e.querySelector(".prev");const t=e.querySelector(".next");if(i){i.disabled=this.internalPage===1;i.classList.toggle(this.CLASS_DISABLED,this.internalPage===1)}if(t){t.disabled=this.internalPage===this.numberOfPages.length;t.classList.toggle(this.CLASS_DISABLED,this.internalPage===this.numberOfPages.length)}};e.querySelectorAll("li").forEach((e=>{e.removeEventListener("click",this.handlePageClick);e.addEventListener("click",this.handlePageClick)}));i()}changePage(e){e=Math.max(1,Math.min(e,this.numberOfPages.length));if(e===this.internalPage)return;this.internalPage=e;this.handleEventEmission();this.initPagination()}render(){return t("div",{key:"f34d51257e81560aec1de209b91a18f8d3b80909",class:"container"},t("div",{key:"b437f38a7c494793ef43392a5200602d1ea280f7",class:"items__per-page-wrapper"},t("div",{key:"54fb7a4952ad76351188a3177611bf4bca95b007",class:"items__per-page-label"},"Results per Page"),t("div",{key:"d0bc72f83111f631485da2b6fe52b29c98208c83",class:"items__per-page-field"},t("ifx-select",{key:"62eea5b69a124994a159f04119cdcf5e54cb6e8e",placeholder:"false","show-search":"false",value:undefined,disabled:false,error:false,size:"s",options:this.filteredItemsPerPage,"placeholder-value":"Select"}))),t("div",{key:"689680c6df19027528fffd8e9ff4938952e9245f",class:"items__total-wrapper"},t("div",{key:"be26d81808f23878a51cf1fb9992433c6abeed26",class:"pagination"},t("ifx-icon-button",{key:"6abeed920c4f97763170459f714a3c2a0f7b144c",class:"prev",icon:"arrow-left-16",onClick:()=>this.changePage(this.internalPage-1)}),t("ol",{key:"bce48e8aed58fa1f92a04a294fa1dcffd04ed42c"},this.visiblePages.map(((e,i)=>typeof e==="number"?t("li",{key:`page-${e}`,class:{[this.CLASS_ACTIVE]:e===this.internalPage},"data-page":e},t("a",{href:"javascript:void(0)"},e)):t("li",{class:"ellipsis",key:`ellipsis-${i}`},t("span",null,"..."))))),t("ifx-icon-button",{key:"7e63ce955d14f7f19219bc856ca0bce02b180e08",class:"next",icon:"arrow-right-16",onClick:()=>this.changePage(this.internalPage+1)}))))}get el(){return s(this)}};d.style=p;export{l as ifx_chip,h as ifx_chip_item,d as ifx_pagination};
2
- //# sourceMappingURL=p-9149a20a.entry.js.map
@@ -1 +0,0 @@
1
- {"version":3,"names":["chipCss","IfxChipStyle0","Chip","constructor","hostRef","this","placeholder","size","value","undefined","variant","readOnly","opened","selectedOptions","handleValueChange","newValue","syncSelectedOptionsWithProp","handleReadOnlyChange","closeDropdownOnOutsideClick","event","path","composedPath","chipWrapper","chip","shadowRoot","querySelector","chipDropdown","includes","toggleDropdownMenu","handleKeyDown","code","preventDefault","target","tagName","handleWrapperKeyDown","handleDropdownKeyDown","updateSelectedOptions","eventDetail","detail","previousSelection","selected","chipItems","getChipItems","forEach","chipItem","chipState","Object","assign","emitIfxChipItemSelect","find","option","filter","map","emitIfxChange","ifxChange","emit","currentSelection","name","querySelectorAll","getSelectedOptions","label","join","slice","focusChipItemAt","index","item","length","console","error","shadowItem","setTimeout","focus","focusChip","handleUnselectButtonClick","stopPropagation","itemGotUnselected","handleWrapperClick","chipitems","targetIndex","Array","from","indexOf","syncChipState","key","generateKey","count","isArray","componentWillLoad","render","h","class","tabIndex","onClick","role","ariaLabel","toString","number","icon","e","id","chipItemCss","IfxChipItemStyle0","ChipItem","updateItemSelection","parentElement","validateSelected","oldValue","emitIfxChipItemSelectEvent","getItemLabel","innerText","toggleItemSelection","ifxChipItemSelect","handleItemClick","handleItemKeyDown","handleSelectedState","onKeyDown","checked","paginationCss","IfxPaginationStyle0","Pagination","currentPage","internalPage","internalItemsPerPage","numberOfPages","total","filteredItemsPerPage","visiblePages","CLASS_DISABLED","CLASS_ACTIVE","handlePageClick","li","currentTarget","page","parseInt","dataset","isNaN","changePage","setItemsPerPage","selectedValue","_a","_b","newItemsPerPage","calculateNumberOfPages","updateVisiblePages","handleEventEmission","componentDidLoad","initPagination","buffer","totalPages","current","pages","push","start","Math","max","end","min","i","Set","ceil","_","filterOptionsArray","items","itemsPerPage","JSON","parse","componentWillUpdate","prevInternalPage","componentDidUpdate","ifxPageChange","pagination","el","updateButtons","prev","next","disabled","classList","toggle","removeEventListener","addEventListener","newPage","options","href"],"sources":["src/components/chip/chip.scss?tag=ifx-chip&encapsulation=shadow","src/components/chip/chip.tsx","src/components/chip/chip-item/chip-item.scss?tag=ifx-chip-item&encapsulation=shadow","src/components/chip/chip-item/chip-item.tsx","src/components/pagination/pagination.scss?tag=ifx-pagination&encapsulation=shadow","src/components/pagination/pagination.tsx"],"sourcesContent":["@use \"~@infineon/design-system-tokens/dist/tokens\";\n@use \"../../global/font.scss\";\n\n:host {\n display: inline-block;\n}\n\n.chip {\n position: relative;\n}\n\n.chip__wrapper {\n display: inline-flex;\n align-items: center;\n justify-content: center;\n gap: tokens.$ifxSpace100;\n\n box-sizing: border-box;\n border: 1px solid tokens.$ifxColorEngineering300;\n border-radius: tokens.$ifxBorderRadiusRound;\n \n background: tokens.$ifxColorBaseWhite;\n \n cursor: pointer; \n \n transition: border 100ms ease;\n\n font: tokens.$ifxBodyBody04;\n \n &:hover, &:focus-visible {\n outline: none;\n border: 1px solid tokens.$ifxColorEngineering500;\n }\n\n &:focus {\n border: 1px solid tokens.$ifxColorOcean500;\n }\n \n &.chip__wrapper--small {\n padding: tokens.$ifxSpace50 tokens.$ifxSpace150;\n }\n \n &.chip__wrapper--large {\n padding: tokens.$ifxSpace100 tokens.$ifxSpace200;\n }\n \n &.chip__wrapper--opened {\n border: 1px solid tokens.$ifxColorOcean500;\n \n .wrapper__open-button {\n transform: rotate(-180deg);\n }\n }\n \n &.chip__wrapper--selected {\n outline: 3px solid tokens.$ifxColorOcean500;\n outline-offset: -3px;\n \n color: tokens.$ifxColorOcean500;\n \n &:hover, &:focus-visible {\n outline: 3px solid tokens.$ifxColorOcean600;\n \n color: tokens.$ifxColorOcean600;\n }\n }\n}\n\n.wrapper__label {\n display: inline-flex;\n align-items: center;\n gap: tokens.$ifxSpace50;\n\n font: tokens.$ifxBodyBody04;\n \n .label__selected-options {\n font: tokens.$ifxBodyBodySemibold04;\n }\n}\n\n.wrapper__open-button {\n display:flex;\n align-items: center;\n \n transition: all 300ms ease;\n}\n\n.wrapper__unselect-button {\n display:flex;\n align-items: center;\n}\n\n.chip__dropdown {\n position: absolute;\n z-index: 1;\n\n box-shadow: 0px 6px 9px 0px #1D1D1D1A;\n border: 1px solid tokens.$ifxColorEngineering200;\n border-radius: tokens.$ifxBorderRadius12;\n padding: tokens.$ifxSpace100 0;\n\n min-width: 222px;\n \n background-color: tokens.$ifxColorBaseWhite;\n}\n","import { h, Component, Element, Event, EventEmitter, Listen, Prop, State, Watch } from '@stencil/core';\nimport { ChipItemSelectEvent } from './interfaces';\n\n@Component({\n tag: 'ifx-chip',\n styleUrl: 'chip.scss',\n shadow: true\n})\nexport class Chip {\n @Element() chip: HTMLIfxChipElement;\n\n @Event() ifxChange: EventEmitter<{ previousSelection: Array<ChipItemSelectEvent>, currentSelection: Array<ChipItemSelectEvent>, name: string }>;\n @Prop() placeholder: string = '';\n @Prop() size: 'small' | 'large' = 'large';\n @Prop({ mutable: true }) value: Array<string> | string = undefined;\n @Prop() variant: 'single' | 'multi' = 'single';\n @Prop() readOnly: boolean = false;\n @Prop() ariaLabel: string | null;\n\n @State() opened: boolean = false;\n @State() selectedOptions: Array<ChipItemSelectEvent> = [];\n\n @Watch('value')\n handleValueChange(newValue: Array<string> | string) {\n this.syncSelectedOptionsWithProp(newValue);\n }\n\n @Watch('readOnly')\n handleReadOnlyChange(newValue: boolean) {\n if (newValue) {\n this.opened = false;\n }\n }\n\n @Listen('mousedown', { target: 'document' })\n closeDropdownOnOutsideClick(event: MouseEvent) {\n const path = event.composedPath();\n const chipWrapper: HTMLElement = this.chip.shadowRoot.querySelector('.chip__wrapper');\n const chipDropdown: HTMLElement = this.chip.shadowRoot.querySelector('.chip__dropdown');\n if (!path.includes(chipDropdown) && !path.includes(chipWrapper) && this.opened) {\n this.toggleDropdownMenu();\n }\n }\n\n @Listen('keydown')\n handleKeyDown(event: KeyboardEvent) {\n // override behavior of all keys except Tab. Users should be able to tab out of the component.\n if (event.code !== 'Tab') {\n event.preventDefault(); \n }\n\n if ((event.target as HTMLElement).tagName === 'IFX-CHIP') {\n this.handleWrapperKeyDown(event);\n } else if ((event.target as HTMLElement).tagName === 'IFX-CHIP-ITEM') {\n this.handleDropdownKeyDown(event);\n }\n }\n\n @Listen('ifxChipItemSelect')\n updateSelectedOptions(event: CustomEvent<ChipItemSelectEvent>) {\n const eventDetail: ChipItemSelectEvent = event.detail;\n const previousSelection: Array<ChipItemSelectEvent> = [...this.selectedOptions];\n\n if (this.variant !== 'multi') {\n if (eventDetail.selected) {\n this.opened = false;\n const chipItems: NodeList = this.getChipItems();\n chipItems.forEach((chipItem: HTMLIfxChipItemElement) => {\n if (chipItem.selected && chipItem !== event.target) {\n chipItem.chipState = {\n ...chipItem.chipState,\n emitIfxChipItemSelect: false,\n };\n chipItem.selected = false;\n }\n });\n this.selectedOptions = [eventDetail];\n } else {\n this.selectedOptions = [];\n }\n this.value = this.selectedOptions[0] ? this.selectedOptions[0].value : undefined;\n } else {\n if (eventDetail.selected) {\n // Prevent duplicate entries\n if (!this.selectedOptions.find(option => option.value === eventDetail.value)) {\n this.selectedOptions = [...this.selectedOptions, eventDetail];\n }\n } else {\n this.selectedOptions = this.selectedOptions.filter((option) => option.value !== eventDetail.value);\n }\n this.value = this.selectedOptions.map((option) => option.value);\n }\n\n if (eventDetail.emitIfxChange) {\n this.ifxChange.emit({\n previousSelection: previousSelection,\n currentSelection: this.selectedOptions,\n name: this.placeholder\n });\n }\n }\n\n getChipItems(): NodeList {\n return this.chip.querySelectorAll('ifx-chip-item');\n }\n\n getSelectedOptions(): string {\n if (this.variant !== 'multi') {\n return this.selectedOptions.map(option => option.label).join('');\n }\n return this.selectedOptions.slice(0, 2).map(option => option.label).join(', ');\n }\n\n toggleDropdownMenu() {\n if (this.readOnly) return;\n this.opened = !this.opened;\n }\n\n /**\n * Focuses the chip item at the specified index.\n * @param index the index of the chip item to focus. -1 will focus the last chip item.\n */\n focusChipItemAt(index: number = 0) {\n this.opened = true;\n const chipItems: NodeList = this.getChipItems();\n let item: HTMLIfxChipItemElement;\n \n if (index === -1) {\n item = chipItems.item(chipItems.length - 1) as HTMLIfxChipItemElement;\n } else if (index >= 0 && index < chipItems.length) {\n item = chipItems.item(index) as HTMLIfxChipItemElement;\n } else {\n console.error(`Invalid index: ${index}`);\n return;\n }\n\n const shadowItem = item.shadowRoot.querySelector('.chip-item') as HTMLDivElement;\n if (shadowItem) {\n // Delay needed for the shadow item to be rendered.\n setTimeout(() => {\n shadowItem.focus();\n }, 1);\n }\n }\n\n focusChip() {\n const chipWrapper: HTMLElement = this.chip.shadowRoot.querySelector('.chip__wrapper');\n chipWrapper.focus();\n }\n\n handleUnselectButtonClick(event: MouseEvent) {\n event.stopPropagation();\n this.opened = false;\n\n let itemGotUnselected = false;\n const chipItems: NodeList = this.getChipItems();\n chipItems.forEach((chipItem: HTMLIfxChipItemElement) => {\n if (chipItem.selected) {\n itemGotUnselected = true;\n chipItem.chipState = {\n ...chipItem.chipState,\n emitIfxChipItemSelect: false,\n }\n chipItem.selected = false;\n }\n });\n\n /* Emit event only if at least one item was unselected. */\n if (itemGotUnselected) {\n const previousSelection: Array<ChipItemSelectEvent> = this.selectedOptions;\n this.selectedOptions = [];\n this.value = [];\n this.ifxChange.emit({\n previousSelection: previousSelection,\n currentSelection: [],\n name: this.placeholder\n });\n }\n }\n\n handleWrapperClick() {\n if (!this.readOnly) {\n this.toggleDropdownMenu();\n }\n }\n\n handleWrapperKeyDown(event: KeyboardEvent) {\n // Keymap oriented at https://www.w3.org/WAI/ARIA/apg/patterns/combobox/#keyboard_interaction\n if (this.readOnly) return;\n\n if (!this.opened) {\n switch (event.code) {\n case 'Space':\n case 'Enter':\n case 'ArrowDown':\n this.focusChipItemAt(0);\n break;\n case 'ArrowUp':\n this.focusChipItemAt(-1);\n break;\n }\n } else {\n switch (event.code) {\n case 'Escape':\n this.opened = false;\n this.focusChip();\n break;\n }\n }\n }\n\n handleDropdownKeyDown(event: KeyboardEvent) {\n let chipitems = this.getChipItems();\n\n let targetIndex = Array.from(chipitems).indexOf(event.target as HTMLIfxChipItemElement);\n if (targetIndex === -1) {\n console.error('Target not found in chip items');\n return;\n }\n\n switch (event.code) {\n case 'ArrowDown':\n if (targetIndex === chipitems.length - 1) break;\n this.focusChipItemAt(targetIndex + 1);\n break;\n case 'ArrowUp':\n if (targetIndex === 0) break;\n this.focusChipItemAt( targetIndex - 1);\n break;\n case 'Escape':\n this.opened = false;\n this.focusChip();\n break;\n case 'Space':\n // selection is handled by the chip-item component\n if (this.variant === 'single') {\n // only close dropdown if single select\n this.opened = false;\n this.focusChip();\n }\n break;\n case 'Enter':\n // selection is handled by the chip-item component\n this.opened = false;\n this.focusChip();\n break;\n }\n }\n\n syncChipState() {\n const chipItems: NodeList = this.getChipItems();\n let key: number = 0;\n chipItems.forEach((chipItem: HTMLIfxChipItemElement) => {\n chipItem.chipState = {\n emitIfxChipItemSelect: true,\n size: (this.size === 'small' ? 'small' : 'large'),\n variant: (this.variant === 'multi' ? 'multi' : 'single'),\n key: key++\n };\n });\n }\n\n syncSelectedOptionsWithProp(newValue: Array<string> | string) {\n // Clear old selected options\n this.selectedOptions = [];\n\n const generateKey = (() => {\n let count = 0;\n return () => count++;\n })();\n\n if (Array.isArray(newValue)) {\n this.selectedOptions = newValue.map(value => ({\n value,\n label: value,\n selected: true,\n key: generateKey(),\n emitIfxChange: true\n }));\n } else if (typeof newValue === 'string') {\n this.selectedOptions = [{\n value: newValue,\n label: newValue,\n selected: true,\n key: generateKey(),\n emitIfxChange: true\n }];\n }\n\n this.syncChipState();\n }\n\n componentWillLoad() {\n this.syncSelectedOptionsWithProp(this.value);\n }\n\n render() {\n return (\n <div class='chip'>\n <div class={`chip__wrapper chip__wrapper--${this.size === 'small' ? 'small' : 'large'}\n chip__wrapper--${this.variant === 'multi' ? 'multi' : 'single'}\n ${this.opened && !this.readOnly ? 'chip__wrapper--opened' : ''}\n ${this.selectedOptions.length ? 'chip__wrapper--selected' : ''}`}\n tabIndex={0}\n onClick={!this.readOnly ? () => { this.handleWrapperClick() } : undefined}\n role='combobox'\n aria-label={this.ariaLabel}\n aria-value={this.getSelectedOptions()}\n aria-haspopup={!this.readOnly ? 'listbox' : undefined}\n aria-expanded={!this.readOnly ? this.opened.toString() : undefined}\n aria-controls={!this.readOnly ? 'dropdown' : undefined}\n aria-readonly={this.readOnly ? 'true' : undefined}\n aria-multiselectable={this.variant === 'multi' ? 'true' : undefined}\n >\n\n <div class='wrapper__label'>\n {\n (this.selectedOptions.length === 0) && `${this.placeholder}`\n }\n\n {\n (this.selectedOptions.length !== 0 && (this.variant === 'multi' || this.readOnly) && this.placeholder !== '') &&\n `${this.placeholder}:`\n }\n\n {\n (this.selectedOptions.length !== 0) &&\n <div class='label__selected-options'>\n {this.getSelectedOptions()}\n </div>\n }\n\n {\n (this.selectedOptions.length > 2 && this.variant === 'multi') &&\n <ifx-indicator variant='number' number={this.selectedOptions.length - 2}></ifx-indicator>\n }\n </div>\n\n {\n !this.readOnly && (this.variant !== 'multi' || (this.variant === 'multi' && this.selectedOptions.length === 0)) &&\n <div class='wrapper__open-button'>\n <ifx-icon key={1} icon={`chevron-down-16`} />\n </div>\n }\n\n\n { \n (this.variant !== 'multi' && this.readOnly !== false && this.selectedOptions.length > 0) &&\n <div class='wrapper__unselect-button' onClick={(e) => { this.handleUnselectButtonClick(e) }}>\n <ifx-icon key={2} icon={`cross16`} />\n </div>\n }\n\n {\n ((this.selectedOptions.length >= 1) && this.variant === 'multi') &&\n <div class='wrapper__unselect-button' onClick={(e) => { this.handleUnselectButtonClick(e) }}>\n <ifx-icon key={2} icon={`cross16`} />\n </div>\n }\n\n </div>\n\n {\n this.opened && !this.readOnly &&\n <div id='dropdown' role='listbox' class='chip__dropdown'>\n <slot />\n </div>\n }\n </div>\n );\n }\n}\n","@use \"~@infineon/design-system-tokens/dist/tokens\";\n@use \"../../../global/font.scss\";\n\n.chip-item {\n display: flex;\n align-items: center;\n gap: tokens.$ifxSpace100;\n \n padding: tokens.$ifxSpace100 tokens.$ifxSpace200;\n \n user-select: none;\n \n transition: all 100ms ease;\n transition-property: background, color;\n \n &:hover {\n cursor: pointer;\n \n background-color: tokens.$ifxColorEngineering200;\n }\n \n &:active {\n background-color: tokens.$ifxColorEngineering300;\n }\n\n &:focus {\n outline: 2px solid tokens.$ifxColorOcean500;\n }\n \n &.chip-item--large {\n font: tokens.$ifxBodyBody03;\n }\n \n &.chip-item--small {\n font: tokens.$ifxBodyBody04;\n }\n\n &.chip-item--selected {\n color: tokens.$ifxColorOcean500;\n\n .chip-item__selected-indicator {\n display: block;\n }\n }\n}\n\n.chip-item__selected-indicator {\n display: none;\n \n margin-left: auto;\n}\n\n","import { h,\n Component,\n Element,\n Event,\n EventEmitter, \n Listen,\n Prop, \n Watch } from '@stencil/core';\nimport { ChipItemSelectEvent, ChipState } from '../interfaces';\n\n@Component({\ntag: 'ifx-chip-item',\nstyleUrl: 'chip-item.scss',\nshadow: true\n})\n\nexport class ChipItem {\n@Element() chipItem: HTMLIfxChipItemElement;\n\n@Event({ composed: false }) ifxChipItemSelect: EventEmitter<ChipItemSelectEvent>;\n\n@Prop() value: string = undefined;\n@Prop() chipState: ChipState = { emitIfxChipItemSelect: true, variant: 'multi', size: 'large' }; \n@Prop({ mutable: true, reflect: true }) selected: boolean = false;\n\n@Listen('ifxChipItemSelect', { target: 'body' })\nupdateItemSelection(event: CustomEvent<ChipItemSelectEvent>) {\n if (this.chipState.variant === 'single') {\n const target = event.target as HTMLIfxChipItemElement;\n /* Also making sure chip items are from the same group (parent) while unselecting. */\n if (this.chipItem !== target && this.chipItem.parentElement === target.parentElement) {\n this.selected = false;\n }\n }\n} \n\n@Watch('selected')\nvalidateSelected(newValue: boolean, oldValue: boolean) {\n if (newValue !== oldValue) {\n /* Do not emit if ChipState does not allow. */\n if (this.chipState.emitIfxChipItemSelect){\n this.emitIfxChipItemSelectEvent();\n } else {\n this.chipState.emitIfxChipItemSelect = true;\n }\n }\n} \n\ngetItemLabel(): string {\n return this.chipItem.innerText as string;\n}\n\ntoggleItemSelection() {\n this.selected = !this.selected;\n}\n \n\nemitIfxChipItemSelectEvent(emitIfxChange: boolean = true) {\n this.ifxChipItemSelect.emit({ emitIfxChange: emitIfxChange,\n key: this.chipState.key,\n label: this.getItemLabel(), \n selected: this.selected, \n value: this.value });\n}\n\nhandleItemClick() {\n this.toggleItemSelection();\n}\n\nhandleItemKeyDown(event: KeyboardEvent) {\n if (event.code === 'Enter' || event.code === 'Space') {\n this.toggleItemSelection();\n }\n}\n\nhandleSelectedState() {\n if (this.selected) {\n this.emitIfxChipItemSelectEvent(false);\n }\n}\n\n\ncomponentWillLoad() {\n /* Propogating the selected state to the Chip (Parent) component if it is set. */\n this.handleSelectedState();\n}\n\nrender() {\n return (\n <div class={`chip-item chip-item--${this.chipState.size} \n chip-item--${(this.selected && this.chipState.variant) === 'single' ? 'selected' : ''}`} \n tabIndex={0}\n onClick={() => {this.handleItemClick()}}\n onKeyDown={(e) => {this.handleItemKeyDown(e)}}\n role=\"option\"\n aria-selected={this.selected.toString()}> \n {/* Checkbox; renders only in 'multi' variant. */}\n { \n this.chipState.variant === 'multi' &&\n <ifx-checkbox checked={this.selected}\n tabIndex={-1} \n size='s'>\n </ifx-checkbox>\n }\n\n <div class='chip-item__label'> <slot /> </div>\n\n {/* Selected indicator only visible in 'single' variant. */}\n <div class='chip-item__selected-indicator'> \n <ifx-icon icon='check-16'> </ifx-icon> \n </div>\n\n </div>\n );\n}\n}","@use \"~@infineon/design-system-tokens/dist/tokens\";\n@use \"../../global/font.scss\";\n\n:host {\n display: inline-flex;\n}\n\n.container {\n display: inline-flex;\n justify-content: center;\n align-items: center;\n gap: 32px;\n font-family: var(--ifx-font-family); // tokens.$ifxFontFamilyBody;\n\n\n\n\n & .items__per-page-wrapper {\n display: flex;\n align-items: center;\n gap: 16px;\n\n & .items__per-page-label {\n color: #1D1D1D;\n font-size: 14px;\n font-style: normal;\n font-weight: 600;\n line-height: 20px;\n }\n\n & .items__per-page-field {\n display: flex;\n flex-direction: column;\n align-items: flex-start;\n\n & ifx-select {\n width: 92px;\n }\n }\n }\n\n & .items__total-wrapper {\n display: flex;\n justify-content: center;\n align-items: center;\n gap: 12px;\n\n & .items__total-button {\n display: flex;\n width: 40px;\n height: 40px;\n justify-content: center;\n align-items: center;\n border-radius: 100px;\n border: 1px solid #BFBBBB;\n background: #FFF;\n }\n\n & .page__numbers-wrapper {\n display: flex;\n justify-content: center;\n align-items: center;\n gap: 12px;\n\n & .page__number-item {\n display: flex;\n padding: 6px;\n flex-direction: column;\n justify-content: center;\n align-items: center;\n gap: 10px;\n border-radius: 100px;\n\n &.active {\n background-color: #0A8276;\n\n & span {\n color: #fff;\n }\n }\n\n &:hover {\n cursor: pointer;\n }\n\n &:hover:not(.active) {\n background-color: #ddd;\n\n }\n\n &:active:not(.active) {\n background-color: #575352;\n }\n\n & span {\n display: flex;\n width: 16px;\n height: 16px;\n flex-direction: column;\n justify-content: center;\n color: #1D1D1D;\n text-align: center;\n font-size: 13px;\n font-style: normal;\n font-weight: 400;\n line-height: 20px;\n }\n }\n }\n }\n}\n\n\n.pagination {\n display: flex;\n\n & ifx-icon-button:first-of-type {\n margin-right: 12px;\n }\n\n & ifx-icon-button:last-of-type {\n margin-left: 12px;\n }\n}\n\na {\n padding: 8px;\n border-radius: 100px;\n}\n\nol {\n list-style-type: none;\n padding: 0;\n margin: 0;\n display: inline-flex;\n align-items: center;\n gap: 12px;\n}\n\nli {\n display: flex;\n flex-direction: column;\n justify-content: center;\n align-items: center;\n border-radius: 100px;\n\n &:hover:not(.active) {\n & a {\n background-color: #EEEDED;\n }\n }\n\n &:active:not(.active) {\n & a {\n background-color: #575352;\n color: #fff;\n }\n }\n\n &.active {\n background-color: #0A8276;\n\n & a {\n color: #fff;\n }\n }\n\n &:hover {\n cursor: pointer;\n }\n\n & a {\n text-decoration: none;\n display: flex;\n width: 16px;\n height: 16px;\n flex-direction: column;\n justify-content: center;\n color: #1D1D1D;\n text-align: center;\n font-size: 13px;\n font-style: normal;\n font-weight: 400;\n line-height: 20px;\n align-items: center;\n }\n}\n\n.prev,\n.next {\n &.disabled {\n cursor: default;\n\n &:hover {\n cursor: default;\n text-decoration: none;\n }\n }\n}\n\n.prev {\n margin-right: 2.5px;\n}\n\n.next {\n margin-left: 2.5px;\n}\n\n\n@mixin ellipsis($before: true) {\n content: \"\\2026\";\n font-size: 13px;\n display: inline-block;\n\n @if($before) {\n margin-right: 6px;\n }\n\n @else {\n margin-left: 6px;\n }\n}\n\n\n// @media(max-width:460px) {\n// li {\n\n// &:first-child,\n// &.active,\n// &.active-sibling:nth-last-child(2), // Show second to last child if the last one is active\n// &:last-child {\n// //display: inline-block !important;\n// display: inline-flex !important;\n// flex-direction: row;\n// }\n\n// $how-many-on-ends: 3; // 1,2,3,...,10 || 1,...,8,9,10\n// // There are >= 5 pages\n// &:first-child:nth-last-child(n+6) {\n\n// &~li {\n// // Start out with all siblings hidden\n// display: none;\n\n// // Show the last children in the list by default\n// &:nth-last-child(-n+#{$how-many-on-ends}) {\n// //display: inline-block;\n// display: inline-flex;\n// flex-direction: row;\n\n// }\n\n// // The child at the beginning of the last group shows ellipsis for the group\n// &:nth-last-child(#{$how-many-on-ends}) {\n// &:before {\n// @include ellipsis(true);\n// }\n// }\n\n// // The very beginning elements do not need to show ellipsis\n// // The very end elements do not need to show ellipsis\n// }\n\n\n// &.active,\n// &~li.active {\n\n// // Show ellipsis before and after the active element\n// &:before {\n// @include ellipsis(true);\n// }\n// &:after {\n// @include ellipsis(false);\n// }\n\n\n// // If the active element is in the first or last group, don't show ellipsis (siblings will take care of it)\n// &:nth-child(-n+#{$how-many-on-ends - 1}),\n// &:nth-last-child(-n+#{$how-many-on-ends - 1}) {\n// &:before, &:after {\n// display: none;\n// }\n// }\n\n// // Hide the last group if \"active\" comes before them\n// &~li:nth-last-child(-n+#{$how-many-on-ends}) {\n// display: none;\n// }\n\n// // Show the first group together if \"active\" comes before them\n// &~li:nth-child(-n+#{$how-many-on-ends}) {\n// //display: inline-block;\n// display: inline-flex;\n// flex-direction: row;\n// }\n\n// // If \"active\" is before the last member in the group, don't show ellipsis\n// &~li:nth-child(-n+#{$how-many-on-ends - 1}) {\n// &:after {\n// display: none;\n// }\n// }\n\n\n// // The child at the end of the first group shows ellipsis for the group\n// &~li:nth-child(#{$how-many-on-ends}) {\n// &:after {\n// @include ellipsis(false);\n// }\n// }\n// }\n// }\n// }\n// }\n\n@media (min-width: 400px) {\n li {\n\n &:first-child,\n &.active-sibling,\n &.active,\n &.active+li,\n &:last-child {\n //display: inline-block!important;\n display: inline-flex !important;\n flex-direction: row;\n }\n\n // There are >= 7 pages\n &:first-child:nth-last-child(n+8) {\n $how-many-on-ends: 5; // 1,2,3,4,5,...,10 || 1,...6,7,8,9,10\n\n &~li {\n // Start out with all siblings hidden\n display: none;\n\n // Show ellipsis before the previous one\n &.active-sibling:before {\n @include ellipsis(true);\n }\n\n // Show ellipsis after the next one\n &.active+li:after {\n @include ellipsis(false);\n }\n\n // Show the last children in the list by default\n &:nth-last-child(-n+#{$how-many-on-ends}) {\n //display: inline-block;\n display: inline-flex;\n flex-direction: row;\n }\n\n // The child at the beginning of the last group shows ellipsis for the group\n &:nth-last-child(#{$how-many-on-ends}) {\n &:before {\n @include ellipsis(true);\n }\n }\n\n // The very beginning elements do not need to show ellipsis\n &:nth-child(-n+#{$how-many-on-ends - 3}),\n // The very end elements do not need to show ellipsis\n &:nth-last-child(-n+#{$how-many-on-ends - 3}),\n // Even if it's a sibling to \"active\"\n &.active-sibling:nth-last-child(-n+#{$how-many-on-ends - 1}) {\n\n &:before,\n &:after {\n display: none !important;\n }\n }\n }\n\n &.active,\n &~li.active {\n\n // Hide the last group if \"active\" comes before them\n &~li:nth-last-child(-n+#{$how-many-on-ends}) {\n display: none;\n\n // If there is overlap, the element will show, but hide it's ellipsis\n &:before {\n display: none;\n }\n }\n\n // Show the first group together if \"active\" comes before them\n &~li:nth-child(-n+#{$how-many-on-ends}) {\n //display: inline-block;\n display: inline-flex !important;\n flex-direction: row;\n }\n\n // If \"active\" is before the last member in the group, don't show ellipsis\n &~li:nth-child(-n+#{$how-many-on-ends - 1}) {\n &:after {\n display: none;\n }\n }\n\n\n // The child at the end of the first group shows ellipsis for the group\n &~li:nth-child(#{$how-many-on-ends}) {\n &:after {\n @include ellipsis(false);\n }\n }\n\n // \"active\" should never show ellipsis\n &:before,\n &:after {\n display: none;\n }\n }\n }\n }\n}","import { Component, h, Element, Event, EventEmitter, Prop, State, Listen } from '@stencil/core';\n\n@Component({\n tag: 'ifx-pagination',\n styleUrl: 'pagination.scss',\n shadow: true\n})\nexport class Pagination {\n @Element() el: HTMLElement;\n @Event() ifxPageChange: EventEmitter;\n @Prop() currentPage: number = 1;\n @State() internalPage: number = 1;\n @State() internalItemsPerPage: number = 10;\n @State() numberOfPages: number[] = [];\n @Prop() total: number = 1;\n @Prop() itemsPerPage: any[] | string;\n @State() filteredItemsPerPage: any[] = [];\n @State() visiblePages: (number | string)[] = [];\n\n private CLASS_DISABLED = \"disabled\";\n private CLASS_ACTIVE = \"active\";\n private prevInternalPage: number;\n\n @Listen('ifxSelect')\n setItemsPerPage(e: CustomEvent) {\n const selectedValue = e.detail?.value || e.detail?.label; \n const newItemsPerPage = parseInt(selectedValue) || 10;\n\n if (newItemsPerPage === this.internalItemsPerPage) {\n return;\n }\n\n this.internalItemsPerPage = newItemsPerPage;\n this.internalPage = 1; \n this.calculateNumberOfPages();\n this.updateVisiblePages();\n this.handleEventEmission();\n }\n\n componentDidLoad() {\n this.initPagination();\n }\n\n updateVisiblePages() {\n const buffer = 2;\n const totalPages = this.numberOfPages.length;\n const current = this.internalPage;\n let pages: (number | string)[] = [];\n \n if (totalPages <= 5) {\n pages = [...this.numberOfPages];\n } else {\n pages.push(1);\n \n if (current > buffer + 1) pages.push('...');\n \n let start = Math.max(2, current - buffer);\n let end = Math.min(totalPages - 1, current + buffer);\n \n if (current <= buffer + 1) end = buffer * 2 + 1;\n if (current >= totalPages - buffer) start = totalPages - buffer * 2;\n \n for (let i = start; i <= end; i++) pages.push(i);\n \n if (current < totalPages - buffer) pages.push('...');\n pages.push(totalPages);\n }\n \n this.visiblePages = [...new Set(pages)];\n }\n\n calculateNumberOfPages() {\n const totalPages = Math.ceil(this.total / this.internalItemsPerPage);\n this.numberOfPages = Array.from({ length: totalPages }, (_, i) => i + 1);\n this.internalPage = Math.max(1, Math.min(this.currentPage, totalPages));\n }\n\n filterOptionsArray() { \n const items = typeof this.itemsPerPage === 'string' ? \n JSON.parse(this.itemsPerPage) : this.itemsPerPage;\n this.filteredItemsPerPage = items.map(item => ({\n ...item,\n label: item.label || item.value\n }));\n }\n\n componentWillLoad() {\n this.calculateNumberOfPages();\n this.filterOptionsArray();\n this.updateVisiblePages();\n }\n\n componentWillUpdate() { \n if (this.prevInternalPage !== this.internalPage) {\n this.updateVisiblePages();\n this.prevInternalPage = this.internalPage;\n }\n }\n\n componentDidUpdate() {\n this.initPagination();\n }\n\n handleEventEmission() {\n this.ifxPageChange.emit({\n currentPage: this.internalPage,\n totalPages: this.numberOfPages.length,\n itemsPerPage: this.internalItemsPerPage\n });\n }\n\n initPagination() {\n const pagination = this.el.shadowRoot.querySelector('.pagination');\n if (!pagination) return;\n\n const updateButtons = () => {\n const prev = pagination.querySelector<HTMLButtonElement>('.prev');\n const next = pagination.querySelector<HTMLButtonElement>('.next');\n if (prev) {\n prev.disabled = this.internalPage === 1;\n prev.classList.toggle(this.CLASS_DISABLED, this.internalPage === 1);\n }\n if (next) {\n next.disabled = this.internalPage === this.numberOfPages.length;\n next.classList.toggle(this.CLASS_DISABLED, this.internalPage === this.numberOfPages.length);\n }\n };\n\n pagination.querySelectorAll('li').forEach(li => {\n li.removeEventListener('click', this.handlePageClick);\n li.addEventListener('click', this.handlePageClick);\n });\n\n updateButtons();\n }\n\n private handlePageClick = (e: Event) => {\n const li = e.currentTarget as HTMLLIElement;\n const page = parseInt(li.dataset.page);\n if (!isNaN(page)) this.changePage(page);\n };\n\n changePage(newPage: number) {\n newPage = Math.max(1, Math.min(newPage, this.numberOfPages.length));\n if (newPage === this.internalPage) return;\n \n this.internalPage = newPage;\n this.handleEventEmission();\n this.initPagination();\n }\n\n render() {\n return (\n <div class=\"container\">\n <div class=\"items__per-page-wrapper\">\n <div class=\"items__per-page-label\">Results per Page</div>\n <div class=\"items__per-page-field\">\n <ifx-select\n placeholder='false'\n show-search='false'\n value={undefined}\n disabled={false}\n error={false}\n size=\"s\"\n options={this.filteredItemsPerPage}\n placeholder-value=\"Select\"\n ></ifx-select>\n </div>\n </div>\n \n <div class=\"items__total-wrapper\">\n <div class=\"pagination\">\n <ifx-icon-button\n class=\"prev\"\n icon=\"arrow-left-16\"\n onClick={() => this.changePage(this.internalPage - 1)}\n ></ifx-icon-button>\n \n <ol>\n {this.visiblePages.map((page, i) => typeof page === 'number' ? (\n <li \n key={`page-${page}`}\n class={{ [this.CLASS_ACTIVE]: page === this.internalPage }}\n data-page={page}\n >\n <a href=\"javascript:void(0)\">{page}</a>\n </li>\n ) : (\n <li class=\"ellipsis\" key={`ellipsis-${i}`}>\n <span>...</span>\n </li>\n ))}\n </ol>\n \n <ifx-icon-button\n class=\"next\"\n icon=\"arrow-right-16\"\n onClick={() => this.changePage(this.internalPage + 1)}\n ></ifx-icon-button>\n </div>\n </div>\n </div>\n );\n }\n}"],"mappings":"yDAAA,MAAMA,EAAU,m/CAChB,MAAAC,EAAeD,E,MCOFE,EAAI,MALjB,WAAAC,CAAAC,G,+CASUC,KAAAC,YAAsB,GACtBD,KAAAE,KAA0B,QACTF,KAAAG,MAAgCC,UACjDJ,KAAAK,QAA8B,SAC9BL,KAAAM,SAAoB,MAGnBN,KAAAO,OAAkB,MAClBP,KAAAQ,gBAA8C,E,CAGvD,iBAAAC,CAAkBC,GAChBV,KAAKW,4BAA4BD,E,CAInC,oBAAAE,CAAqBF,GACnB,GAAIA,EAAU,CACZV,KAAKO,OAAS,K,EAKlB,2BAAAM,CAA4BC,GAC1B,MAAMC,EAAOD,EAAME,eACnB,MAAMC,EAA2BjB,KAAKkB,KAAKC,WAAWC,cAAc,kBACpE,MAAMC,EAA4BrB,KAAKkB,KAAKC,WAAWC,cAAc,mBACrE,IAAKL,EAAKO,SAASD,KAAkBN,EAAKO,SAASL,IAAgBjB,KAAKO,OAAQ,CAC9EP,KAAKuB,oB,EAKT,aAAAC,CAAcV,GAEZ,GAAIA,EAAMW,OAAS,MAAO,CACxBX,EAAMY,gB,CAGR,GAAKZ,EAAMa,OAAuBC,UAAY,WAAY,CACxD5B,KAAK6B,qBAAqBf,E,MACrB,GAAKA,EAAMa,OAAuBC,UAAY,gBAAiB,CACpE5B,KAAK8B,sBAAsBhB,E,EAK/B,qBAAAiB,CAAsBjB,GACpB,MAAMkB,EAAmClB,EAAMmB,OAC/C,MAAMC,EAAgD,IAAIlC,KAAKQ,iBAE/D,GAAIR,KAAKK,UAAY,QAAS,CAC5B,GAAI2B,EAAYG,SAAU,CACxBnC,KAAKO,OAAS,MACd,MAAM6B,EAAsBpC,KAAKqC,eACjCD,EAAUE,SAASC,IACjB,GAAIA,EAASJ,UAAYI,IAAazB,EAAMa,OAAQ,CAClDY,EAASC,UAASC,OAAAC,OAAAD,OAAAC,OAAA,GACbH,EAASC,WAAS,CACrBG,sBAAuB,QAEzBJ,EAASJ,SAAW,K,KAGxBnC,KAAKQ,gBAAkB,CAACwB,E,KACnB,CACLhC,KAAKQ,gBAAkB,E,CAEzBR,KAAKG,MAAQH,KAAKQ,gBAAgB,GAAKR,KAAKQ,gBAAgB,GAAGL,MAAQC,S,KAClE,CACL,GAAI4B,EAAYG,SAAU,CAExB,IAAKnC,KAAKQ,gBAAgBoC,MAAKC,GAAUA,EAAO1C,QAAU6B,EAAY7B,QAAQ,CAC5EH,KAAKQ,gBAAkB,IAAIR,KAAKQ,gBAAiBwB,E,MAE9C,CACLhC,KAAKQ,gBAAkBR,KAAKQ,gBAAgBsC,QAAQD,GAAWA,EAAO1C,QAAU6B,EAAY7B,O,CAE9FH,KAAKG,MAAQH,KAAKQ,gBAAgBuC,KAAKF,GAAWA,EAAO1C,O,CAG3D,GAAI6B,EAAYgB,cAAe,CAC7BhD,KAAKiD,UAAUC,KAAK,CAClBhB,kBAAmBA,EACnBiB,iBAAkBnD,KAAKQ,gBACvB4C,KAAMpD,KAAKC,a,EAKjB,YAAAoC,GACE,OAAOrC,KAAKkB,KAAKmC,iBAAiB,gB,CAGpC,kBAAAC,GACE,GAAItD,KAAKK,UAAY,QAAS,CAC5B,OAAOL,KAAKQ,gBAAgBuC,KAAIF,GAAUA,EAAOU,QAAOC,KAAK,G,CAE/D,OAAOxD,KAAKQ,gBAAgBiD,MAAM,EAAG,GAAGV,KAAIF,GAAUA,EAAOU,QAAOC,KAAK,K,CAG3E,kBAAAjC,GACE,GAAIvB,KAAKM,SAAU,OACnBN,KAAKO,QAAUP,KAAKO,M,CAOtB,eAAAmD,CAAgBC,EAAgB,GAC9B3D,KAAKO,OAAS,KACd,MAAM6B,EAAsBpC,KAAKqC,eACjC,IAAIuB,EAEJ,GAAID,KAAW,EAAG,CAChBC,EAAOxB,EAAUwB,KAAKxB,EAAUyB,OAAS,E,MACpC,GAAIF,GAAS,GAAKA,EAAQvB,EAAUyB,OAAQ,CACjDD,EAAOxB,EAAUwB,KAAKD,E,KACjB,CACLG,QAAQC,MAAM,kBAAkBJ,KAChC,M,CAGF,MAAMK,EAAaJ,EAAKzC,WAAWC,cAAc,cACjD,GAAI4C,EAAY,CAEdC,YAAW,KACTD,EAAWE,OAAO,GACjB,E,EAIP,SAAAC,GACE,MAAMlD,EAA2BjB,KAAKkB,KAAKC,WAAWC,cAAc,kBACpEH,EAAYiD,O,CAGd,yBAAAE,CAA0BtD,GACxBA,EAAMuD,kBACNrE,KAAKO,OAAS,MAEd,IAAI+D,EAAoB,MACxB,MAAMlC,EAAsBpC,KAAKqC,eACjCD,EAAUE,SAASC,IACjB,GAAIA,EAASJ,SAAU,CACrBmC,EAAoB,KACpB/B,EAASC,UAASC,OAAAC,OAAAD,OAAAC,OAAA,GACbH,EAASC,WAAS,CACrBG,sBAAuB,QAEzBJ,EAASJ,SAAW,K,KAKxB,GAAImC,EAAmB,CACrB,MAAMpC,EAAgDlC,KAAKQ,gBAC3DR,KAAKQ,gBAAkB,GACvBR,KAAKG,MAAQ,GACbH,KAAKiD,UAAUC,KAAK,CAClBhB,kBAAmBA,EACnBiB,iBAAkB,GAClBC,KAAMpD,KAAKC,a,EAKjB,kBAAAsE,GACE,IAAKvE,KAAKM,SAAU,CAClBN,KAAKuB,oB,EAIT,oBAAAM,CAAqBf,GAEnB,GAAId,KAAKM,SAAU,OAEnB,IAAKN,KAAKO,OAAQ,CAChB,OAAQO,EAAMW,MACZ,IAAK,QACL,IAAK,QACL,IAAK,YACHzB,KAAK0D,gBAAgB,GACrB,MACF,IAAK,UACH1D,KAAK0D,iBAAiB,GACtB,M,KAEC,CACL,OAAQ5C,EAAMW,MACZ,IAAK,SACHzB,KAAKO,OAAS,MACdP,KAAKmE,YACL,M,EAKR,qBAAArC,CAAsBhB,GACpB,IAAI0D,EAAYxE,KAAKqC,eAErB,IAAIoC,EAAcC,MAAMC,KAAKH,GAAWI,QAAQ9D,EAAMa,QACtD,GAAI8C,KAAiB,EAAG,CACtBX,QAAQC,MAAM,kCACd,M,CAGF,OAAQjD,EAAMW,MACZ,IAAK,YACH,GAAIgD,IAAgBD,EAAUX,OAAS,EAAG,MAC1C7D,KAAK0D,gBAAgBe,EAAc,GACnC,MACF,IAAK,UACH,GAAIA,IAAgB,EAAG,MACvBzE,KAAK0D,gBAAiBe,EAAc,GACpC,MACF,IAAK,SACHzE,KAAKO,OAAS,MACdP,KAAKmE,YACL,MACF,IAAK,QAEH,GAAInE,KAAKK,UAAY,SAAU,CAE7BL,KAAKO,OAAS,MACdP,KAAKmE,W,CAEP,MACF,IAAK,QAEHnE,KAAKO,OAAS,MACdP,KAAKmE,YACL,M,CAIN,aAAAU,GACE,MAAMzC,EAAsBpC,KAAKqC,eACjC,IAAIyC,EAAc,EAClB1C,EAAUE,SAASC,IACjBA,EAASC,UAAY,CACnBG,sBAAuB,KACvBzC,KAAOF,KAAKE,OAAS,QAAU,QAAU,QACzCG,QAAUL,KAAKK,UAAY,QAAU,QAAU,SAC/CyE,IAAKA,IACN,G,CAIL,2BAAAnE,CAA4BD,GAE1BV,KAAKQ,gBAAkB,GAEvB,MAAMuE,EAAc,MAClB,IAAIC,EAAQ,EACZ,MAAO,IAAMA,GACd,EAHmB,GAKpB,GAAIN,MAAMO,QAAQvE,GAAW,CAC3BV,KAAKQ,gBAAkBE,EAASqC,KAAI5C,IAAK,CACvCA,QACAoD,MAAOpD,EACPgC,SAAU,KACV2C,IAAKC,IACL/B,cAAe,Q,MAEZ,UAAWtC,IAAa,SAAU,CACvCV,KAAKQ,gBAAkB,CAAC,CACtBL,MAAOO,EACP6C,MAAO7C,EACPyB,SAAU,KACV2C,IAAKC,IACL/B,cAAe,M,CAInBhD,KAAK6E,e,CAGP,iBAAAK,GACElF,KAAKW,4BAA4BX,KAAKG,M,CAGxC,MAAAgF,GACE,OACEC,EAAA,OAAAN,IAAA,2CAAKO,MAAM,QACTD,EAAA,OAAAN,IAAA,2CAAKO,MAAO,gCAAgCrF,KAAKE,OAAS,QAAU,QAAU,6CACnDF,KAAKK,UAAY,QAAU,QAAU,+BACpDL,KAAKO,SAAWP,KAAKM,SAAW,wBAA0B,yBAC1DN,KAAKQ,gBAAgBqD,OAAS,0BAA4B,KACpEyB,SAAU,EACVC,SAAUvF,KAAKM,SAAW,KAAQN,KAAKuE,oBAAoB,EAAKnE,UAChEoF,KAAK,WAAU,aACHxF,KAAKyF,UAAS,aACdzF,KAAKsD,qBAAoB,iBACrBtD,KAAKM,SAAW,UAAYF,UAAS,iBACrCJ,KAAKM,SAAWN,KAAKO,OAAOmF,WAAatF,UAAS,iBAClDJ,KAAKM,SAAW,WAAaF,UAAS,gBACvCJ,KAAKM,SAAW,OAASF,UAAS,uBAC3BJ,KAAKK,UAAY,QAAU,OAASD,WAG1DgF,EAAA,OAAAN,IAAA,2CAAKO,MAAM,kBAENrF,KAAKQ,gBAAgBqD,SAAW,GAAM,GAAG7D,KAAKC,cAI9CD,KAAKQ,gBAAgBqD,SAAW,IAAM7D,KAAKK,UAAY,SAAWL,KAAKM,WAAaN,KAAKC,cAAgB,IAC1G,GAAGD,KAAKC,eAIPD,KAAKQ,gBAAgBqD,SAAW,GACjCuB,EAAA,OAAAN,IAAA,2CAAKO,MAAM,2BACRrF,KAAKsD,sBAKPtD,KAAKQ,gBAAgBqD,OAAS,GAAK7D,KAAKK,UAAY,SACrD+E,EAAA,iBAAAN,IAAA,2CAAezE,QAAQ,SAASsF,OAAQ3F,KAAKQ,gBAAgBqD,OAAS,MAKvE7D,KAAKM,WAAaN,KAAKK,UAAY,SAAYL,KAAKK,UAAY,SAAWL,KAAKQ,gBAAgBqD,SAAW,IAC5GuB,EAAA,OAAAN,IAAA,2CAAKO,MAAM,wBACTD,EAAA,YAAUN,IAAK,EAAGc,KAAM,qBAMzB5F,KAAKK,UAAY,SAAWL,KAAKM,WAAa,OAASN,KAAKQ,gBAAgBqD,OAAS,GACtFuB,EAAA,OAAAN,IAAA,2CAAKO,MAAM,2BAA2BE,QAAUM,IAAQ7F,KAAKoE,0BAA0ByB,EAAE,GACvFT,EAAA,YAAUN,IAAK,EAAGc,KAAM,aAKxB5F,KAAKQ,gBAAgBqD,QAAU,GAAM7D,KAAKK,UAAY,SACxD+E,EAAA,OAAAN,IAAA,2CAAKO,MAAM,2BAA2BE,QAAUM,IAAQ7F,KAAKoE,0BAA0ByB,EAAE,GACvFT,EAAA,YAAUN,IAAK,EAAGc,KAAM,cAO5B5F,KAAKO,SAAWP,KAAKM,UACrB8E,EAAA,OAAAN,IAAA,2CAAKgB,GAAG,WAAWN,KAAK,UAAUH,MAAM,kBACtCD,EAAA,QAAAN,IAAA,8C,mIC7WZ,MAAMiB,EAAc,iqBACpB,MAAAC,EAAeD,E,MCeFE,EAAQ,MANrB,WAAAnG,CAAAC,G,+DAWQC,KAAAG,MAAgBC,UAChBJ,KAAAwC,UAAuB,CAAEG,sBAAuB,KAAMtC,QAAS,QAASH,KAAM,SAC9CF,KAAAmC,SAAoB,K,CAG5D,mBAAA+D,CAAoBpF,GACjB,GAAId,KAAKwC,UAAUnC,UAAY,SAAU,CACrC,MAAMsB,EAASb,EAAMa,OAErB,GAAI3B,KAAKuC,WAAaZ,GAAU3B,KAAKuC,SAAS4D,gBAAkBxE,EAAOwE,cAAe,CAClFnG,KAAKmC,SAAW,K,GAM3B,gBAAAiE,CAAiB1F,EAAmB2F,GACjC,GAAI3F,IAAa2F,EAAU,CAEvB,GAAIrG,KAAKwC,UAAUG,sBAAsB,CACrC3C,KAAKsG,4B,KACF,CACHtG,KAAKwC,UAAUG,sBAAwB,I,GAKlD,YAAA4D,GACG,OAAOvG,KAAKuC,SAASiE,S,CAGxB,mBAAAC,GACGzG,KAAKmC,UAAYnC,KAAKmC,Q,CAIzB,0BAAAmE,CAA2BtD,EAAyB,MACjDhD,KAAK0G,kBAAkBxD,KAAK,CAAEF,cAAeA,EACrB8B,IAAK9E,KAAKwC,UAAUsC,IACpBvB,MAAOvD,KAAKuG,eACZpE,SAAUnC,KAAKmC,SACfhC,MAAOH,KAAKG,O,CAGvC,eAAAwG,GACG3G,KAAKyG,qB,CAGR,iBAAAG,CAAkB9F,GACf,GAAIA,EAAMW,OAAS,SAAWX,EAAMW,OAAS,QAAS,CAClDzB,KAAKyG,qB,EAIZ,mBAAAI,GACG,GAAI7G,KAAKmC,SAAU,CACfnC,KAAKsG,2BAA2B,M,EAKvC,iBAAApB,GAEGlF,KAAK6G,qB,CAGR,MAAA1B,GACG,OACIC,EAAA,OAAAN,IAAA,2CAAKO,MAAO,wBAAwBrF,KAAKwC,UAAUtC,0CACxBF,KAAKmC,UAAYnC,KAAKwC,UAAUnC,WAAa,SAAW,WAAa,KAC5FiF,SAAU,EACVC,QAAS,KAAOvF,KAAK2G,iBAAiB,EACtCG,UAAYjB,IAAO7F,KAAK4G,kBAAkBf,EAAE,EAC5CL,KAAK,SAAQ,gBACExF,KAAKmC,SAASuD,YAGzB1F,KAAKwC,UAAUnC,UAAY,SAC3B+E,EAAA,gBAAAN,IAAA,2CAAciC,QAAS/G,KAAKmC,SACxBmD,UAAW,EACXpF,KAAK,MAIbkF,EAAA,OAAAN,IAAA,2CAAKO,MAAM,oBAAkB,IAAED,EAAA,QAAAN,IAAA,6CAAQ,KAGvCM,EAAA,OAAAN,IAAA,2CAAKO,MAAM,iCACPD,EAAA,YAAAN,IAAA,2CAAUc,KAAK,YAAU,M,uGC7GxC,MAAMoB,EAAgB,ohKACtB,MAAAC,EAAeD,E,MCMFE,EAAU,MALvB,WAAApH,CAAAC,G,uDAQUC,KAAAmH,YAAsB,EACrBnH,KAAAoH,aAAuB,EACvBpH,KAAAqH,qBAA+B,GAC/BrH,KAAAsH,cAA0B,GAC3BtH,KAAAuH,MAAgB,EAEfvH,KAAAwH,qBAA8B,GAC9BxH,KAAAyH,aAAoC,GAErCzH,KAAA0H,eAAiB,WACjB1H,KAAA2H,aAAe,SAoHf3H,KAAA4H,gBAAmB/B,IACzB,MAAMgC,EAAKhC,EAAEiC,cACb,MAAMC,EAAOC,SAASH,EAAGI,QAAQF,MACjC,IAAKG,MAAMH,GAAO/H,KAAKmI,WAAWJ,EAAK,C,CAnHvC,eAAAK,CAAgBvC,G,QACd,MAAMwC,IAAgBC,EAAAzC,EAAE5D,UAAM,MAAAqG,SAAA,SAAAA,EAAEnI,UAASoI,EAAA1C,EAAE5D,UAAM,MAAAsG,SAAA,SAAAA,EAAEhF,OACnD,MAAMiF,EAAkBR,SAASK,IAAkB,GAEnD,GAAIG,IAAoBxI,KAAKqH,qBAAsB,CACjD,M,CAGFrH,KAAKqH,qBAAuBmB,EAC5BxI,KAAKoH,aAAe,EACpBpH,KAAKyI,yBACLzI,KAAK0I,qBACL1I,KAAK2I,qB,CAGT,gBAAAC,GACE5I,KAAK6I,gB,CAGP,kBAAAH,GACE,MAAMI,EAAS,EACf,MAAMC,EAAa/I,KAAKsH,cAAczD,OACtC,MAAMmF,EAAUhJ,KAAKoH,aACrB,IAAI6B,EAA6B,GAEjC,GAAIF,GAAc,EAAG,CACnBE,EAAQ,IAAIjJ,KAAKsH,c,KACZ,CACL2B,EAAMC,KAAK,GAEX,GAAIF,EAAUF,EAAS,EAAGG,EAAMC,KAAK,OAErC,IAAIC,EAAQC,KAAKC,IAAI,EAAGL,EAAUF,GAClC,IAAIQ,EAAMF,KAAKG,IAAIR,EAAa,EAAGC,EAAUF,GAE7C,GAAIE,GAAWF,EAAS,EAAGQ,EAAMR,EAAS,EAAI,EAC9C,GAAIE,GAAWD,EAAaD,EAAQK,EAAQJ,EAAaD,EAAS,EAElE,IAAK,IAAIU,EAAIL,EAAOK,GAAKF,EAAKE,IAAKP,EAAMC,KAAKM,GAE9C,GAAIR,EAAUD,EAAaD,EAAQG,EAAMC,KAAK,OAC9CD,EAAMC,KAAKH,E,CAGb/I,KAAKyH,aAAe,IAAI,IAAIgC,IAAIR,G,CAGlC,sBAAAR,GACE,MAAMM,EAAaK,KAAKM,KAAK1J,KAAKuH,MAAQvH,KAAKqH,sBAC/CrH,KAAKsH,cAAgB5C,MAAMC,KAAK,CAAEd,OAAQkF,IAAc,CAACY,EAAGH,IAAMA,EAAI,IACtExJ,KAAKoH,aAAegC,KAAKC,IAAI,EAAGD,KAAKG,IAAIvJ,KAAKmH,YAAa4B,G,CAG7D,kBAAAa,GACE,MAAMC,SAAe7J,KAAK8J,eAAiB,SACzCC,KAAKC,MAAMhK,KAAK8J,cAAgB9J,KAAK8J,aACvC9J,KAAKwH,qBAAuBqC,EAAM9G,KAAIa,GAAInB,OAAAC,OAAAD,OAAAC,OAAA,GACrCkB,GAAI,CACPL,MAAOK,EAAKL,OAASK,EAAKzD,S,CAI9B,iBAAA+E,GACElF,KAAKyI,yBACLzI,KAAK4J,qBACL5J,KAAK0I,oB,CAGP,mBAAAuB,GACG,GAAIjK,KAAKkK,mBAAqBlK,KAAKoH,aAAc,CAChDpH,KAAK0I,qBACL1I,KAAKkK,iBAAmBlK,KAAKoH,Y,EAIjC,kBAAA+C,GACEnK,KAAK6I,gB,CAGP,mBAAAF,GACE3I,KAAKoK,cAAclH,KAAK,CACtBiE,YAAanH,KAAKoH,aAClB2B,WAAY/I,KAAKsH,cAAczD,OAC/BiG,aAAc9J,KAAKqH,sB,CAIvB,cAAAwB,GACE,MAAMwB,EAAarK,KAAKsK,GAAGnJ,WAAWC,cAAc,eACpD,IAAKiJ,EAAY,OAEjB,MAAME,EAAgB,KACpB,MAAMC,EAAOH,EAAWjJ,cAAiC,SACzD,MAAMqJ,EAAOJ,EAAWjJ,cAAiC,SACzD,GAAIoJ,EAAM,CACRA,EAAKE,SAAW1K,KAAKoH,eAAiB,EACtCoD,EAAKG,UAAUC,OAAO5K,KAAK0H,eAAgB1H,KAAKoH,eAAiB,E,CAEnE,GAAIqD,EAAM,CACRA,EAAKC,SAAW1K,KAAKoH,eAAiBpH,KAAKsH,cAAczD,OACzD4G,EAAKE,UAAUC,OAAO5K,KAAK0H,eAAgB1H,KAAKoH,eAAiBpH,KAAKsH,cAAczD,O,GAIxFwG,EAAWhH,iBAAiB,MAAMf,SAAQuF,IACxCA,EAAGgD,oBAAoB,QAAS7K,KAAK4H,iBACrCC,EAAGiD,iBAAiB,QAAS9K,KAAK4H,gBAAgB,IAGpD2C,G,CASF,UAAApC,CAAW4C,GACTA,EAAU3B,KAAKC,IAAI,EAAGD,KAAKG,IAAIwB,EAAS/K,KAAKsH,cAAczD,SAC3D,GAAIkH,IAAY/K,KAAKoH,aAAc,OAEnCpH,KAAKoH,aAAe2D,EACpB/K,KAAK2I,sBACL3I,KAAK6I,gB,CAGP,MAAA1D,GACE,OACEC,EAAA,OAAAN,IAAA,2CAAKO,MAAM,aACTD,EAAA,OAAAN,IAAA,2CAAKO,MAAM,2BACTD,EAAA,OAAAN,IAAA,2CAAKO,MAAM,yBAAuB,oBAClCD,EAAA,OAAAN,IAAA,2CAAKO,MAAM,yBACTD,EAAA,cAAAN,IAAA,2CACE7E,YAAY,QAAO,cACP,QACZE,MAAOC,UACPsK,SAAU,MACV3G,MAAO,MACP7D,KAAK,IACL8K,QAAShL,KAAKwH,qBAAoB,oBAChB,aAKxBpC,EAAA,OAAAN,IAAA,2CAAKO,MAAM,wBACTD,EAAA,OAAAN,IAAA,2CAAKO,MAAM,cACTD,EAAA,mBAAAN,IAAA,2CACEO,MAAM,OACNO,KAAK,gBACLL,QAAS,IAAMvF,KAAKmI,WAAWnI,KAAKoH,aAAe,KAGrDhC,EAAA,MAAAN,IAAA,4CACC9E,KAAKyH,aAAa1E,KAAI,CAACgF,EAAMyB,WAAazB,IAAS,SAClD3C,EAAA,MACEN,IAAK,QAAQiD,IACb1C,MAAO,CAAE,CAACrF,KAAK2H,cAAeI,IAAS/H,KAAKoH,cAAc,YAC/CW,GAEX3C,EAAA,KAAG6F,KAAK,sBAAsBlD,IAGhC3C,EAAA,MAAIC,MAAM,WAAWP,IAAK,YAAY0E,KACpCpE,EAAA,uBAKJA,EAAA,mBAAAN,IAAA,2CACEO,MAAM,OACNO,KAAK,iBACLL,QAAS,IAAMvF,KAAKmI,WAAWnI,KAAKoH,aAAe,O","ignoreList":[]}
@@ -1,2 +0,0 @@
1
- import{r as t,h as e,g as i}from"./p-b7a462e5.js";const o=':root{--ifx-font-family:"Source Sans 3", "Arial, sans-serif"}.checkbox-group-container{display:flex;flex-direction:column}.checkbox-group{display:flex;font-family:var(--ifx-font-family);gap:8px}.checkbox-group.horizontal{flex-direction:row;column-gap:12px}.checkbox-group.vertical{flex-direction:column;row-gap:12px}.group-label{font:400 0.75rem/1rem "Source Sans 3";margin-bottom:8px;text-align:left;text-underline-position:from-font;text-decoration-skip-ink:none}.caption{margin-top:8px;align-self:flex-start;display:flex;width:100%;column-gap:8px;justify-content:space-between;align-items:center}.caption.default{color:#1D1D1D}.caption.error{color:#CD002F}.caption-text{font:400 0.75rem/1rem "Source Sans 3";flex:1;text-align:left;text-underline-position:from-font;text-decoration-skip-ink:none}.caption-icon{flex:0;display:flex}';const a=o;const s=class{constructor(e){t(this,e);this.errorStates=new Map;this.alignment="vertical";this.groupLabelText="Group Label Text";this.hasErrors=false;this.handleSlotChange=()=>{this.initializeState()}}handleCheckboxError(t){const e=t.target;if(e.tagName==="ifx-checkbox"){this.errorStates.set(e,t.detail);this.updateHasErrors()}}async setGroupError(t){const e=Array.from(this.el.querySelectorAll("ifx-checkbox"));e.forEach((e=>{e.error=t}))}componentWillLoad(){this.initializeState()}initializeState(){this.errorStates.clear();const t=Array.from(this.el.querySelectorAll("ifx-checkbox"));t.forEach((t=>{if(!this.errorStates.has(t)){this.errorStates.set(t,t.error||false)}}));this.updateHasErrors()}updateHasErrors(){this.hasErrors=Array.from(this.errorStates.values()).some((t=>t))}render(){return e("div",{key:"2f455a4fa40d089e1aafab0b669aa4f4ded80be0",class:"checkbox-group-container"},this.showGroupLabel?e("div",{class:"group-label"},this.groupLabelText," *"):"",e("div",{key:"eb6f16bf53e13620681c87eb7cb4062a37abd068",class:`checkbox-group ${this.alignment} ${this.size}`},e("slot",{key:"00ec08507a2ef1ff8e893b6c8b9aa917a7735224",onSlotchange:this.handleSlotChange})),this.showCaption?e("div",{class:`caption ${this.hasErrors?"error":"default"}`},this.showCaptionIcon?e("div",{class:"caption-icon"},e("ifx-icon",{icon:"c-info-16"})):"",e("div",{class:"caption-text"},this.captionText)):"")}static get formAssociated(){return true}get el(){return i(this)}};s.style=a;export{s as ifx_checkbox_group};
2
- //# sourceMappingURL=p-9fc0f50d.entry.js.map
@@ -1 +0,0 @@
1
- {"version":3,"names":["checkboxGroupCss","IfxCheckboxGroupStyle0","CheckboxGroup","constructor","hostRef","this","errorStates","Map","alignment","groupLabelText","hasErrors","handleSlotChange","initializeState","handleCheckboxError","event","checkbox","target","tagName","set","detail","updateHasErrors","setGroupError","error","checkboxes","Array","from","el","querySelectorAll","forEach","componentWillLoad","clear","has","values","some","render","h","key","class","showGroupLabel","size","onSlotchange","showCaption","showCaptionIcon","icon","captionText"],"sources":["src/components/checkbox-group/checkbox-group.scss?tag=ifx-checkbox-group&encapsulation=shadow","src/components/checkbox-group/checkbox-group.tsx"],"sourcesContent":["@use \"~@infineon/design-system-tokens/dist/tokens\";\n@use \"../../global/font.scss\";\n\n.checkbox-group-container {\n display: flex;\n flex-direction: column;\n}\n\n.checkbox-group {\n display: flex;\n font-family: var(--ifx-font-family); // tokens.$ifxFontFamilyBody;\n\n\n gap: tokens.$ifxSpace100;\n\n &.horizontal {\n flex-direction: row;\n column-gap: tokens.$ifxSpace150;\n }\n\n &.vertical {\n flex-direction: column;\n row-gap: tokens.$ifxSpace150;\n }\n}\n\n.group-label {\n font: tokens.$ifxBodyBody05;\n margin-bottom: tokens.$ifxSpace100;\n text-align: left;\n text-underline-position: from-font;\n text-decoration-skip-ink: none;\n}\n\n.caption {\n margin-top: tokens.$ifxSpace100;\n align-self: flex-start;\n display: flex;\n width: 100%;\n column-gap: tokens.$ifxSpace100;\n justify-content: space-between;\n align-items: center;\n\n &.default {\n color: tokens.$ifxColorBaseBlack;\n }\n\n &.error {\n color: tokens.$ifxColorRed500;\n }\n}\n\n.caption-text {\n font: tokens.$ifxBodyBody05;\n flex: 1;\n text-align: left;\n text-underline-position: from-font;\n text-decoration-skip-ink: none;\n}\n\n.caption-icon {\n flex:0;\n display: flex;\n}","import { Component, State, Prop, h, Element, Listen, Method } from '@stencil/core';\n\n@Component({\n tag: 'ifx-checkbox-group',\n styleUrl: 'checkbox-group.scss',\n shadow: true,\n formAssociated: true\n})\n\nexport class CheckboxGroup {\n private errorStates: Map<HTMLElement, boolean> = new Map();\n\n @Element() el: HTMLElement;\n @Prop() alignment: 'horizontal' | 'vertical' = 'vertical';\n @Prop() size: string;\n @Prop() showGroupLabel: boolean;\n @Prop() groupLabelText: string = 'Group Label Text';\n @Prop() showCaption: boolean;\n @Prop() captionText: string;\n @Prop() showCaptionIcon: boolean;\n @State() hasErrors: boolean = false;\n\n @Listen('ifxError')\n handleCheckboxError(event: CustomEvent) {\n const checkbox = event.target as HTMLElement;\n if (checkbox.tagName === 'ifx-checkbox') {\n this.errorStates.set(checkbox, event.detail);\n this.updateHasErrors();\n }\n }\n\n // Method to set the error state of all checkboxes in the group\n @Method()\n async setGroupError(error: boolean) {\n const checkboxes = Array.from(this.el.querySelectorAll('ifx-checkbox'));\n checkboxes.forEach((checkbox) => {\n (checkbox as any).error = error;\n });\n }\n\n componentWillLoad() {\n this.initializeState();\n }\n\n handleSlotChange = () => {\n this.initializeState();\n };\n\n private initializeState() {\n this.errorStates.clear();\n const checkboxes = Array.from(this.el.querySelectorAll('ifx-checkbox'));\n checkboxes.forEach((checkbox) => {\n if (!this.errorStates.has(checkbox)) {\n this.errorStates.set(checkbox, (checkbox as any).error || false);\n }\n });\n this.updateHasErrors();\n }\n\n private updateHasErrors() {\n this.hasErrors = Array.from(this.errorStates.values()).some((error) => error);\n }\n\n render() {\n return (\n <div class='checkbox-group-container'>\n {this.showGroupLabel ? <div class='group-label'>{this.groupLabelText} *</div> : ''}\n <div class={`checkbox-group ${this.alignment} ${this.size}`}>\n <slot onSlotchange={this.handleSlotChange}></slot>\n </div>\n {this.showCaption ? (\n <div class={`caption ${this.hasErrors ? 'error' : 'default'}`}>\n {this.showCaptionIcon ? <div class='caption-icon'><ifx-icon icon=\"c-info-16\">\n </ifx-icon></div> : ''}\n <div class='caption-text'>{this.captionText}</div>\n </div>) : ''}\n </div>\n );\n }\n}"],"mappings":"kDAAA,MAAMA,EAAmB,m0BACzB,MAAAC,EAAeD,E,MCQFE,EAAa,MAP1B,WAAAC,CAAAC,G,UAQUC,KAAAC,YAAyC,IAAIC,IAG7CF,KAAAG,UAAuC,WAGvCH,KAAAI,eAAyB,mBAIxBJ,KAAAK,UAAqB,MAwB9BL,KAAAM,iBAAmB,KACjBN,KAAKO,iBAAiB,C,CAtBxB,mBAAAC,CAAoBC,GAClB,MAAMC,EAAWD,EAAME,OACvB,GAAID,EAASE,UAAY,eAAgB,CACvCZ,KAAKC,YAAYY,IAAIH,EAAUD,EAAMK,QACrCd,KAAKe,iB,EAMT,mBAAMC,CAAcC,GAClB,MAAMC,EAAaC,MAAMC,KAAKpB,KAAKqB,GAAGC,iBAAiB,iBACvDJ,EAAWK,SAASb,IACjBA,EAAiBO,MAAQA,CAAK,G,CAInC,iBAAAO,GACExB,KAAKO,iB,CAOC,eAAAA,GACNP,KAAKC,YAAYwB,QACjB,MAAMP,EAAaC,MAAMC,KAAKpB,KAAKqB,GAAGC,iBAAiB,iBACvDJ,EAAWK,SAASb,IAClB,IAAKV,KAAKC,YAAYyB,IAAIhB,GAAW,CACnCV,KAAKC,YAAYY,IAAIH,EAAWA,EAAiBO,OAAS,M,KAG9DjB,KAAKe,iB,CAGC,eAAAA,GACNf,KAAKK,UAAYc,MAAMC,KAAKpB,KAAKC,YAAY0B,UAAUC,MAAMX,GAAUA,G,CAGzE,MAAAY,GACE,OACEC,EAAA,OAAAC,IAAA,2CAAKC,MAAM,4BACRhC,KAAKiC,eAAiBH,EAAA,OAAKE,MAAM,eAAehC,KAAKI,eAAc,MAAY,GAChF0B,EAAA,OAAAC,IAAA,2CAAKC,MAAO,kBAAkBhC,KAAKG,aAAaH,KAAKkC,QACnDJ,EAAA,QAAAC,IAAA,2CAAMI,aAAcnC,KAAKM,oBAE1BN,KAAKoC,YACJN,EAAA,OAAKE,MAAO,WAAWhC,KAAKK,UAAY,QAAU,aAC/CL,KAAKqC,gBAAkBP,EAAA,OAAKE,MAAM,gBAAeF,EAAA,YAAUQ,KAAK,eAC7C,GACpBR,EAAA,OAAKE,MAAM,gBAAgBhC,KAAKuC,cACxB,G","ignoreList":[]}
@@ -1,2 +0,0 @@
1
- import{r as e,c as t,h as r,a,g as s}from"./p-b7a462e5.js";const i=':root{--ifx-font-family:"Source Sans 3", "Arial, sans-serif"}:host{display:flex;flex-direction:column;width:100%}.wrapper__label{color:#1D1D1D;font:400 1rem/1.5rem "Source Sans 3"}:host(.wrapper--disabled) .wrapper__label{color:#575352}.wrapper__textarea{width:100%}.wrapper__textarea.fullWidth{width:100%}.wrapper__textarea.fullWidth textarea{width:100%;box-sizing:border-box}.wrapper__textarea textarea{border:1px solid #8D8786;border-radius:1px;padding:8px 16px;background-color:#FFFFFF;color:#1D1D1D;font:400 1rem/1.5rem "Source Sans 3";transition:all 100ms ease;transition-property:border-color}.wrapper__textarea textarea:hover{border:1px solid #575352}.wrapper__textarea textarea:focus-within{outline:none;border:1px solid #0A8276}:host(.wrapper--error) .wrapper__textarea textarea{border:1px solid #CD002F}:host(.wrapper--disabled) .wrapper__textarea textarea{border:1px solid #575352;background-color:#EEEDED}.wrapper__caption{color:#1D1D1D;font:400 0.75rem/1rem "Source Sans 3"}:host(.wrapper--error) .wrapper__caption{color:#CD002F}:host(.wrapper--disabled) .wrapper__caption{color:#575352}';const o=i;const l=class{constructor(r){e(this,r);this.ifxInput=t(this,"ifxInput",7);if(r.$hostElement$["s-ei"]){this.internals=r.$hostElement$["s-ei"]}else{this.internals=r.$hostElement$.attachInternals();r.$hostElement$["s-ei"]=this.internals}this.inputId=`ifx-textarea-${++h}`;this.disabled=false;this.error=false;this.readOnly=false;this.resize="both";this.wrap="soft";this.fullWidth="false"}async reset(){this.resetTextarea()}handleComponentWidth(){const e=this.el.shadowRoot.querySelector(".wrapper__textarea");const t=this.fullWidth.toLowerCase()==="true";if(t){e.classList.add("fullWidth")}else if(e.classList.contains("fullWidth")){e.classList.remove("fullWidth")}}componentDidRender(){this.handleComponentWidth()}formResetCallback(){this.resetTextarea();this.internals.setFormValue("")}handleOnInput(e){this.value=e.target.value;this.internals.setFormValue(this.value);this.ifxInput.emit(this.value)}resetTextarea(){this.value="";this.internals.setValidity({});this.internals.setFormValue("")}componentWillLoad(){this.internals.setFormValue(this.value)}render(){var e,t;return r(a,{key:"a3423a4743fa203b36bcfd8dcac6734e2c1e1ea3",class:`wrapper--${this.error?"error":""} wrapper--${this.disabled?"disabled":""}`},r("label",{key:"1591ea6a9a165e25467e2f0db97bb57b5f6b3029",class:"wrapper__label",htmlFor:this.inputId},(e=this.label)===null||e===void 0?void 0:e.trim()),r("div",{key:"d8cf8abbaf67ade0848070311c2f82beec91bc84",class:"wrapper__textarea"},r("textarea",{key:"4c7f5d0b2e64eb2cb065834878f0d9fe0d50d389","aria-label":"a textarea","aria-value":this.value,"aria-disabled":this.disabled,id:this.inputId,style:{resize:this.resize},name:this.name?this.name:this.inputId,cols:this.cols,rows:this.rows,maxlength:this.maxlength,wrap:this.wrap,disabled:this.disabled,readonly:this.readOnly,placeholder:this.placeholder,value:this.value,onInput:e=>this.handleOnInput(e)})),((t=this.caption)===null||t===void 0?void 0:t.trim())&&r("div",{key:"754c7ad6c405480cf8b5378a3f6ba54994f84d05",class:"wrapper__caption"},this.caption.trim()))}static get formAssociated(){return true}get el(){return s(this)}};let h=0;l.style=o;export{l as ifx_textarea};
2
- //# sourceMappingURL=p-a80e321b.entry.js.map
@@ -1 +0,0 @@
1
- {"version":3,"names":["textareaCss","IfxTextareaStyle0","TextArea","constructor","hostRef","this","inputId","textareaId","disabled","error","readOnly","resize","wrap","fullWidth","reset","resetTextarea","handleComponentWidth","textareaWrapper","el","shadowRoot","querySelector","isFullWidth","toLowerCase","classList","add","contains","remove","componentDidRender","formResetCallback","internals","setFormValue","handleOnInput","e","value","target","ifxInput","emit","setValidity","componentWillLoad","render","h","Host","key","class","htmlFor","_a","label","trim","id","style","name","cols","rows","maxlength","readonly","placeholder","onInput","_b","caption"],"sources":["src/components/textarea/textarea.scss?tag=ifx-textarea&encapsulation=shadow","src/components/textarea/textarea.tsx"],"sourcesContent":["@use \"~@infineon/design-system-tokens/dist/tokens\";\n@use \"../../global/font.scss\";\n\n:host {\n display: flex;\n flex-direction: column;\n width: 100%;\n}\n\n.wrapper__label {\n color: tokens.$ifxColorBaseBlack;\n font: tokens.$ifxBodyBody03;\n}\n:host(.wrapper--disabled) .wrapper__label {\n color: tokens.$ifxColorEngineering500;\n}\n\n.wrapper__textarea {\n width: 100%;\n &.fullWidth { \n width: 100%;\n & textarea { \n width: 100%;\n box-sizing: border-box; \n }\n }\n}\n\n.wrapper__textarea textarea {\n border: 1px solid tokens.$ifxColorEngineering400;\n border-radius: tokens.$ifxSpace12;\n padding: tokens.$ifxSpace100 tokens.$ifxSpace200;\n \n background-color: tokens.$ifxColorBaseWhite;\n color: tokens.$ifxColorBaseBlack;\n font: tokens.$ifxBodyBody03;\n \n transition: all 100ms ease;\n transition-property: border-color;\n\n &:hover {\n border: 1px solid tokens.$ifxColorEngineering500;\n }\n \n &:focus-within {\n outline: none;\n border: 1px solid tokens.$ifxColorOcean500;\n }\n}\n\n:host(.wrapper--error) .wrapper__textarea textarea {\n border: 1px solid tokens.$ifxColorRed500;\n}\n:host(.wrapper--disabled) .wrapper__textarea textarea {\n border: 1px solid tokens.$ifxColorEngineering500;\n\n background-color: tokens.$ifxColorEngineering200;\n}\n\n.wrapper__caption {\n color: tokens.$ifxColorBaseBlack;\n font: tokens.$ifxBodyBody05;\n}\n:host(.wrapper--error) .wrapper__caption {\n color: tokens.$ifxColorRed500;\n}\n:host(.wrapper--disabled) .wrapper__caption {\n color: tokens.$ifxColorEngineering500;\n}","import { h, AttachInternals, Component, Event, EventEmitter, Host, Method, Prop, Element } from \"@stencil/core\"\n\n@Component({\n\tformAssociated: true,\n\tshadow: true,\n\tstyleUrl: 'textarea.scss',\n\ttag: 'ifx-textarea'\n})\n\nexport class TextArea {\n\n\tprivate inputId: string = `ifx-textarea-${++textareaId}`;\n\n\t@AttachInternals() internals: ElementInternals;\n\n\t@Event() ifxInput: EventEmitter<String>;\n\t@Element() el;\n\t@Prop() caption: string;\n\t@Prop() cols: number;\n\t@Prop() disabled: boolean = false;\n\t@Prop() error: boolean = false;\n\t@Prop() label: string;\n\t@Prop() maxlength: number;\n\t@Prop() name: string;\n\t@Prop() placeholder: string;\n\t@Prop() readOnly: boolean = false;\n\t@Prop() resize: 'both' | 'horizontal' | 'vertical' | 'none' = 'both';\n\t@Prop() rows: number;\n\t@Prop({ mutable: true }) value: string;\n\t@Prop() wrap: 'hard' | 'soft' | 'off' = 'soft';\n\t@Prop({ reflect: true }) fullWidth: string = \"false\";\n\n\t@Method()\n\tasync reset() {\n\t\tthis.resetTextarea();\n\t}\n\n\thandleComponentWidth() {\n\t\tconst textareaWrapper = this.el.shadowRoot.querySelector('.wrapper__textarea')\n\t\tconst isFullWidth = this.fullWidth.toLowerCase() === \"true\";\n\t\t\n if (isFullWidth) {\n\t\t\ttextareaWrapper.classList.add('fullWidth')\n } else if(textareaWrapper.classList.contains('fullWidth')) {\n\t\t\ttextareaWrapper.classList.remove('fullWidth');\n }\n }\n\n\tcomponentDidRender() {\n this.handleComponentWidth()\n }\n\t\n\tformResetCallback(): void {\n\t\tthis.resetTextarea();\n\t\tthis.internals.setFormValue(\"\");\n\t}\n\t\n\thandleOnInput(e: InputEvent): void {\n\t\tthis.value = (e.target as HTMLTextAreaElement).value;\n\t\tthis.internals.setFormValue(this.value);\n\t\tthis.ifxInput.emit(this.value);\n\t}\n\n\tresetTextarea() {\n\t\tthis.value = '';\n\t\tthis.internals.setValidity({});\n\t\tthis.internals.setFormValue('');\n\t}\n\n\tcomponentWillLoad() {\n\t\tthis.internals.setFormValue(this.value);\n\t}\n\n\trender() {\n\t\treturn (\n\t\t\t<Host class={`wrapper--${this.error ? 'error' : ''} wrapper--${this.disabled ? 'disabled': ''}`}>\n\t\t\t\t<label class='wrapper__label' htmlFor={ this.inputId }>\n\t\t\t\t\t{ this.label?.trim() }\n\t\t\t\t</label>\n\n\t\t\t\t<div class='wrapper__textarea'>\n\t\t\t\t\t<textarea\n\t\t\t\t\t\taria-label='a textarea'\n\t\t\t\t\t\taria-value={ this.value }\n\t\t\t\t\t\taria-disabled={ this.disabled }\n\t\t\t\t\t\tid={ this.inputId }\n\t\t\t\t\t\tstyle={ {resize: this.resize} }\n\t\t\t\t\t\tname={ this.name ? this.name : this.inputId}\n\t\t\t\t\t\tcols={ this.cols }\n\t\t\t\t\t\trows={ this.rows }\n\t\t\t\t\t\tmaxlength={ this.maxlength }\n\t\t\t\t\t\twrap={ this.wrap }\n\t\t\t\t\t\tdisabled={ this.disabled }\n\t\t\t\t\t\treadonly={ this.readOnly }\n\t\t\t\t\t\tplaceholder={ this.placeholder }\n\t\t\t\t\t\tvalue={ this.value }\n\t\t\t\t\t\tonInput={ (e) => this.handleOnInput(e) }\n\t\t\t\t\t/>\n\t\t\t\t</div>\n\n\t\t\t\t{ this.caption?.trim() && (\n\t\t\t\t\t<div class='wrapper__caption'>\n\t\t\t\t\t\t{ this.caption.trim() }\n\t\t\t\t\t</div> \n\t\t\t\t)}\n\t\t\t</Host>\n\t\t);\n\t}\n}\n\nlet textareaId = 0;"],"mappings":"2DAAA,MAAMA,EAAc,glCACpB,MAAAC,EAAeD,E,MCQFE,EAAQ,MAPrB,WAAAC,CAAAC,G,6MASSC,KAAAC,QAAkB,kBAAkBC,IAQpCF,KAAAG,SAAoB,MACpBH,KAAAI,MAAiB,MAKjBJ,KAAAK,SAAoB,MACpBL,KAAAM,OAAsD,OAGtDN,KAAAO,KAAgC,OACfP,KAAAQ,UAAoB,O,CAG7C,WAAMC,GACLT,KAAKU,e,CAGN,oBAAAC,GACC,MAAMC,EAAkBZ,KAAKa,GAAGC,WAAWC,cAAc,sBACzD,MAAMC,EAAchB,KAAKQ,UAAUS,gBAAkB,OAEnD,GAAID,EAAa,CAClBJ,EAAgBM,UAAUC,IAAI,Y,MACtB,GAAGP,EAAgBM,UAAUE,SAAS,aAAc,CAC5DR,EAAgBM,UAAUG,OAAO,Y,EAInC,kBAAAC,GACGtB,KAAKW,sB,CAGR,iBAAAY,GACCvB,KAAKU,gBACLV,KAAKwB,UAAUC,aAAa,G,CAG7B,aAAAC,CAAcC,GACb3B,KAAK4B,MAASD,EAAEE,OAA+BD,MAC/C5B,KAAKwB,UAAUC,aAAazB,KAAK4B,OACjC5B,KAAK8B,SAASC,KAAK/B,KAAK4B,M,CAGzB,aAAAlB,GACCV,KAAK4B,MAAQ,GACb5B,KAAKwB,UAAUQ,YAAY,IAC3BhC,KAAKwB,UAAUC,aAAa,G,CAG7B,iBAAAQ,GACCjC,KAAKwB,UAAUC,aAAazB,KAAK4B,M,CAGlC,MAAAM,G,QACC,OACCC,EAACC,EAAI,CAAAC,IAAA,2CAACC,MAAO,YAAYtC,KAAKI,MAAQ,QAAU,eAAeJ,KAAKG,SAAW,WAAY,MAC1FgC,EAAA,SAAAE,IAAA,2CAAOC,MAAM,iBAAiBC,QAAUvC,KAAKC,UAC1CuC,EAAAxC,KAAKyC,SAAK,MAAAD,SAAA,SAAAA,EAAEE,QAGfP,EAAA,OAAAE,IAAA,2CAAKC,MAAM,qBACVH,EAAA,YAAAE,IAAA,wDACY,aAAY,aACVrC,KAAK4B,MAAK,gBACP5B,KAAKG,SACrBwC,GAAK3C,KAAKC,QACV2C,MAAQ,CAACtC,OAAQN,KAAKM,QACtBuC,KAAO7C,KAAK6C,KAAO7C,KAAK6C,KAAO7C,KAAKC,QACpC6C,KAAO9C,KAAK8C,KACZC,KAAO/C,KAAK+C,KACZC,UAAYhD,KAAKgD,UACjBzC,KAAOP,KAAKO,KACZJ,SAAWH,KAAKG,SAChB8C,SAAWjD,KAAKK,SAChB6C,YAAclD,KAAKkD,YACnBtB,MAAQ5B,KAAK4B,MACbuB,QAAWxB,GAAM3B,KAAK0B,cAAcC,QAIpCyB,EAAApD,KAAKqD,WAAO,MAAAD,SAAA,SAAAA,EAAEV,SACfP,EAAA,OAAAE,IAAA,2CAAKC,MAAM,oBACRtC,KAAKqD,QAAQX,Q,mEAQrB,IAAIxC,EAAa,E","ignoreList":[]}
@@ -1,2 +0,0 @@
1
- import{r as s,h as e}from"./p-b7a462e5.js";const t=':root{--ifx-font-family:"Source Sans 3", "Arial, sans-serif"}:host{display:flex;width:100%}.progress-bar{height:16px;bottom:0;right:0;top:0;left:0;display:flex;height:20px;border-radius:1px;width:100%;overflow:hidden;background-color:#EEEDED;font-family:var(--ifx-font-family)}.progress-bar.s{height:4px}.progress-bar .label{font-style:normal;font-size:0.875rem;font-weight:400;line-height:1.25rem;color:#FFFFFF}.progress-bar .progress{display:flex;align-items:center;justify-content:center;min-width:fit-content;height:100%;background-color:#0A8276;transition:width 0.2s ease}';const r=t;const a=class{constructor(e){s(this,e);this.value=0;this.showLabel=false}valueChanged(s,e){if(s!==e){this.internalValue=s}}componentWillLoad(){this.internalValue=this.value}render(){return e("div",{key:"82861c170a3b32675e7a2c1b59125cf30660f1cf","aria-label":"a progress bar","aria-value":this.value,class:`progress-bar ${this.size}`},e("div",{key:"5d6c41afbdc76de9b253b43c0712957e79fe5ed0",class:"progress",style:{width:`${this.internalValue}%`}},this.showLabel&&this.size!=="s"&&this.internalValue!==0&&e("span",{key:"94a7298d8c69d42d737b93092612771d9d8fab59",class:"label"},`${this.internalValue}%`)))}static get watchers(){return{value:["valueChanged"]}}};a.style=r;export{a as ifx_progress_bar};
2
- //# sourceMappingURL=p-aadd1a9d.entry.js.map
@@ -1 +0,0 @@
1
- {"version":3,"names":["progressBarCss","IfxProgressBarStyle0","ProgressBar","constructor","hostRef","this","value","showLabel","valueChanged","newValue","oldValue","internalValue","componentWillLoad","render","h","key","class","size","style","width"],"sources":["src/components/progress-bar/progress-bar.scss?tag=ifx-progress-bar&encapsulation=shadow","src/components/progress-bar/progress-bar.tsx"],"sourcesContent":["@use \"~@infineon/design-system-tokens/dist/tokens\";\n@use \"../../global/font.scss\";\n\n:host {\n display: flex;\n width: 100%;\n}\n\n.progress-bar {\n height: tokens.$ifxSize200;\n bottom: 0;\n right: 0;\n top: 0;\n left: 0;\n display: flex;\n height: tokens.$ifxSize250;\n border-radius: tokens.$ifxBorderRadius12;\n width: 100%; // Ensure the bar itself can grow up to 100% width\n overflow: hidden; // Ensures that the inner progress bar doesn't exceed the width of the outer progress bar\n background-color: tokens.$ifxColorEngineering200;\n font-family: var(--ifx-font-family); // tokens.$ifxFontFamilyBody;\n\n \n \n &.s {\n height: 4px;\n }\n\n .label {\n font-style: normal;\n font-size: tokens.$ifxFontSizeS;\n font-weight: 400;\n line-height: tokens.$ifxLineHeightS;\n color: tokens.$ifxColorBaseWhite;\n }\n \n .progress {\n display: flex;\n align-items: center;\n justify-content: center;\n min-width: fit-content;\n height: 100%;\n background-color: #0A8276;\n transition: width 0.2s ease;\n }\n}","import { Component, Prop, h, State, Watch } from '@stencil/core';\n \n\n@Component({\n tag: 'ifx-progress-bar',\n styleUrl: 'progress-bar.scss',\n shadow: true\n})\nexport class ProgressBar {\n @Prop() value: number = 0;\n @Prop() size: string;\n @Prop() showLabel: boolean = false;\n\n @State() internalValue: number;\n\n @Watch('value')\n valueChanged(newValue: number, oldValue: number) {\n if (newValue !== oldValue) {\n this.internalValue = newValue;\n }\n }\n\n \n componentWillLoad() {\n this.internalValue = this.value;\n }\n\n\n\n render() {\n return (\n <div aria-label='a progress bar' aria-value={this.value} class={`progress-bar ${this.size}`}>\n <div class=\"progress\" style={{ width: `${this.internalValue}%` }}>\n {this.showLabel && this.size !== \"s\" && this.internalValue !== 0 && <span class=\"label\">{`${this.internalValue}%`}</span>}\n </div>\n </div>\n );\n }\n}\n"],"mappings":"2CAAA,MAAMA,EAAiB,okBACvB,MAAAC,EAAeD,E,MCOFE,EAAW,MALxB,WAAAC,CAAAC,G,UAMUC,KAAAC,MAAgB,EAEhBD,KAAAE,UAAqB,K,CAK7B,YAAAC,CAAaC,EAAkBC,GAC7B,GAAID,IAAaC,EAAU,CACzBL,KAAKM,cAAgBF,C,EAKzB,iBAAAG,GACEP,KAAKM,cAAgBN,KAAKC,K,CAK5B,MAAAO,GACE,OACEC,EAAA,OAAAC,IAAA,wDAAgB,iBAAgB,aAAaV,KAAKC,MAAQU,MAAO,gBAAgBX,KAAKY,QACpFH,EAAA,OAAAC,IAAA,2CAAKC,MAAM,WAAWE,MAAO,CAAEC,MAAO,GAAGd,KAAKM,mBAC3CN,KAAKE,WAAaF,KAAKY,OAAS,KAAOZ,KAAKM,gBAAkB,GAAKG,EAAA,QAAAC,IAAA,2CAAMC,MAAM,SAAS,GAAGX,KAAKM,mB","ignoreList":[]}
@@ -1,2 +0,0 @@
1
- import{r as e,c as r,h as i,g as o}from"./p-b7a462e5.js";const t=':host{display:inline-flex;vertical-align:top}.checkbox__container{box-sizing:border-box;display:inline-flex;flex-direction:row;align-items:top;padding:0px;gap:8px;font-family:"Source Sans 3";vertical-align:bottom}.checkbox__container .checkbox__wrapper{box-sizing:border-box;display:flex;position:relative;justify-content:center;align-items:center;width:20px;height:20px;background-color:#FFFFFF;border:1px solid #575352;border-radius:1px;flex:none;order:0;flex-grow:0;align-self:flex-start}.checkbox__container .checkbox__wrapper.checkbox-m{height:24px;width:24px}.checkbox__container .checkbox__wrapper.error{border-color:#CD002F}.checkbox__container .checkbox__wrapper:focus-visible{border:1px solid #575352;outline:2px solid #0A8276;outline-offset:2px}.checkbox__container .checkbox__wrapper:hover{background-color:#EEEDED;border:1px solid #575352;border-radius:1px;flex:none;order:0;flex-grow:0}.checkbox__container .checkbox__wrapper.disabled{background-color:#BFBBBB;border-color:#BFBBBB;border-radius:1px;flex:none;order:0;flex-grow:0}.checkbox__container .checkbox__wrapper.checked:not(.indeterminate){background-color:#0A8276;border-radius:1px;border-color:transparent;flex:none;order:0;flex-grow:0;color:#FFFFFF}.checkbox__container .checkbox__wrapper.checked:not(.indeterminate).error{background-color:#CD002F}.checkbox__container .checkbox__wrapper.checked:not(.indeterminate):focus-visible{border:1px solid transparent;outline:2px solid #0A8276;outline-offset:2px}.checkbox__container .checkbox__wrapper.checked:not(.indeterminate):hover{background-color:#08665C;border-radius:1px;flex:none;order:0;flex-grow:0}.checkbox__container .checkbox__wrapper.checked:not(.indeterminate).disabled{background:#BFBBBB;border-radius:1px;flex:none;order:0;flex-grow:0}.checkbox__container .checkbox__wrapper.indeterminate:before{content:"";display:block;width:70%;height:2px;background-color:#08665C;position:absolute;top:50%;left:50%;transform:translate(-50%, -50%)}.checkbox__container .label{font-style:normal;font-weight:400;font-size:0.875rem;line-height:1.25rem;color:#1D1D1D;overflow-wrap:break-word;word-wrap:break-word;word-break:break-all;max-width:100%}.checkbox__container .label.label-m{font-size:1rem;line-height:1.5rem}.checkbox__container .label.disabled{color:#BFBBBB}.checkbox__container .checkbox__wrapper:hover,.checkbox__container .label:hover{cursor:pointer}';const c=t;const n=class{constructor(i){e(this,i);this.ifxChange=r(this,"ifxChange",7);this.ifxError=r(this,"ifxError",7);if(i.$hostElement$["s-ei"]){this.internals=i.$hostElement$["s-ei"]}else{this.internals=i.$hostElement$.attachInternals();i.$hostElement$["s-ei"]=this.internals}this.disabled=false;this.checked=false;this.error=false;this.size="m";this.indeterminate=false}handleCheckbox(){if(!this.disabled){if(!this.inputElement.indeterminate){this.internalChecked=!this.internalChecked}if(this.internalChecked&&!this.internalIndeterminate){if(this.value!==undefined){this.internals.setFormValue(this.value)}else{this.internals.setFormValue("on")}}else{this.internals.setFormValue(null)}this.ifxChange.emit(this.internalChecked)}}async isChecked(){return this.internalChecked}async toggleCheckedState(e){this.internalChecked=e}valueChanged(e,r){if(e!==r){this.internalChecked=e;this.inputElement.checked=this.internalChecked}}errorChanged(e,r){if(e!==r){this.ifxError.emit(e)}}indeterminateChanged(e,r){if(e!==r){this.internalIndeterminate=e;this.inputElement.indeterminate=this.internalIndeterminate}}handleKeydown(e){if(e.keyCode===32||e.keyCode===13){this.handleCheckbox();e.preventDefault()}}componentWillLoad(){this.internalChecked=this.checked;this.internalIndeterminate=this.indeterminate}componentDidRender(){this.inputElement.indeterminate=this.internalIndeterminate}formResetCallback(){this.internals.setFormValue(null)}getCheckedClassName(){if(this.error){if(this.internalChecked){return"checked error"}else{return"error"}}else if(this.internalChecked){return"checked"}else return""}render(){const e=this.el.innerHTML;let r=false;if(e){r=true}return i("div",{key:"ae37e8cf56cecc28d1d3441e4ca70a66d19fd4a9",class:"checkbox__container"},i("input",{key:"210ff7879962c1df556491d83d3ebcf7238b6b50",type:"checkbox",hidden:true,ref:e=>this.inputElement=e,checked:this.internalChecked,onChange:this.handleCheckbox.bind(this),id:"checkbox",value:`${this.value}`,disabled:this.disabled?true:undefined}),i("div",{key:"2b1b2065f41003c4e627e802fa70728f7b884710",tabindex:"0",onClick:this.handleCheckbox.bind(this),onKeyDown:this.handleKeydown.bind(this),role:"checkbox","aria-checked":this.indeterminate?"mixed":this.internalChecked.toString(),"aria-disabled":this.disabled,"aria-labelledby":"label",class:`checkbox__wrapper \n ${this.getCheckedClassName()}\n ${this.size==="m"?"checkbox-m":""}\n ${this.indeterminate?"indeterminate":""}\n ${this.disabled?"disabled":""}`},this.internalChecked&&!this.internalIndeterminate&&i("ifx-icon",{key:"ca2171404ee8926623bab88b5d4abbb906d66a9d",icon:"check-16","aria-hidden":"true"})),r&&i("div",{key:"efb5c73f051dceb60b79220bffd5b1694502be7b",id:"label",class:`label ${this.size==="m"?"label-m":""} ${this.disabled?"disabled":""} `,onClick:this.handleCheckbox.bind(this)},i("slot",{key:"1c3d1089dfce161a4e4c093c3211a8d772b3d90b"})))}static get formAssociated(){return true}get el(){return o(this)}static get watchers(){return{checked:["valueChanged"],error:["errorChanged"],indeterminate:["indeterminateChanged"]}}};n.style=c;export{n as ifx_checkbox};
2
- //# sourceMappingURL=p-ad1ec9d6.entry.js.map
@@ -1 +0,0 @@
1
- {"version":3,"names":["checkboxCss","IfxCheckboxStyle0","Checkbox","constructor","hostRef","this","disabled","checked","error","size","indeterminate","handleCheckbox","inputElement","internalChecked","internalIndeterminate","value","undefined","internals","setFormValue","ifxChange","emit","isChecked","toggleCheckedState","newVal","valueChanged","newValue","oldValue","errorChanged","ifxError","indeterminateChanged","handleKeydown","event","keyCode","preventDefault","componentWillLoad","componentDidRender","formResetCallback","getCheckedClassName","render","slot","el","innerHTML","hasSlot","h","key","class","type","hidden","ref","onChange","bind","id","tabindex","onClick","onKeyDown","role","toString","icon"],"sources":["src/components/checkbox/checkbox.scss?tag=ifx-checkbox&encapsulation=shadow","src/components/checkbox/checkbox.tsx"],"sourcesContent":["@use \"~@infineon/design-system-tokens/dist/tokens\";\n\n:host {\n display: inline-flex;\n vertical-align: top;\n}\n\n.checkbox__container {\n box-sizing: border-box;\n display: inline-flex;\n flex-direction: row;\n align-items: top;\n padding: 0px;\n gap: tokens.$ifxSpace100;\n font-family: tokens.$ifxFontFamilyBody;\n vertical-align: bottom;\n\n & .checkbox__wrapper {\n box-sizing: border-box;\n display: flex;\n position: relative; //needs to be added for the indeterminate state of the checkbox\n justify-content: center;\n align-items: center;\n width: tokens.$ifxSize250;\n height: tokens.$ifxSize250;\n background-color: tokens.$ifxColorBaseWhite;\n border: 1px solid #575352;\n border-radius: tokens.$ifxBorderRadius12;\n flex: none;\n order: 0;\n flex-grow: 0;\n align-self: flex-start;\n\n &.checkbox-m {\n height: tokens.$ifxSize300;\n width: tokens.$ifxSize300;\n }\n\n &.error {\n border-color: #CD002F;\n }\n\n &:focus-visible {\n border: 1px solid #575352;\n outline: 2px solid #0A8276;\n outline-offset: 2px;\n }\n\n &:hover {\n background-color: #EEEDED;\n border: 1px solid #575352;\n border-radius: tokens.$ifxBorderRadius12;\n flex: none;\n order: 0;\n flex-grow: 0;\n }\n\n &.disabled {\n background-color: #BFBBBB;\n border-color: #BFBBBB;\n border-radius: tokens.$ifxBorderRadius12;\n flex: none;\n order: 0;\n flex-grow: 0;\n }\n\n &.checked:not(.indeterminate) {\n background-color: #0A8276;\n border-radius: tokens.$ifxBorderRadius12;\n border-color: tokens.$ifxColorBaseTransparent;\n flex: none;\n order: 0;\n flex-grow: 0;\n color: tokens.$ifxColorBaseWhite;\n\n &.error {\n background-color: #CD002F;\n }\n\n &:focus-visible {\n border: 1px solid transparent;\n outline: 2px solid #0A8276;\n outline-offset: 2px;\n }\n\n &:hover {\n background-color: #08665C;\n border-radius: tokens.$ifxBorderRadius12;\n flex: none;\n order: 0;\n flex-grow: 0;\n }\n\n &.disabled {\n background: #BFBBBB;\n border-radius: tokens.$ifxBorderRadius12;\n flex: none;\n order: 0;\n flex-grow: 0;\n }\n }\n\n &.indeterminate {\n &:before {\n content: \"\";\n display: block;\n width: 70%; // Adjust as needed for the width of the minus sign\n height: 2px; // Adjust for thickness of the minus sign\n background-color: #08665C; // Color of the minus sign\n position: absolute;\n top: 50%;\n left: 50%;\n transform: translate(-50%, -50%);\n }\n }\n\n }\n\n & .label {\n font-style: normal;\n font-weight: 400;\n font-size: tokens.$ifxFontSizeS;\n line-height: tokens.$ifxLineHeightS;\n color: tokens.$ifxColorBaseBlack;\n overflow-wrap: break-word;\n word-wrap: break-word;\n word-break: break-all;\n max-width: 100%;\n\n &.label-m {\n font-size: tokens.$ifxFontSizeM;\n line-height: tokens.$ifxLineHeightM;\n }\n\n &.disabled {\n color: #BFBBBB;\n }\n }\n\n & .checkbox__wrapper,\n & .label {\n &:hover {\n cursor: pointer;\n }\n }\n}","import { Component, h, Prop, Element, State, Event, EventEmitter, Watch, Method, AttachInternals } from '@stencil/core';\n\n@Component({\n tag: 'ifx-checkbox',\n styleUrl: 'checkbox.scss',\n shadow: true,\n formAssociated: true\n})\n\nexport class Checkbox {\n private inputElement: HTMLInputElement;\n\n @Element() el;\n @Prop() disabled: boolean = false;\n @Prop() checked: boolean = false;\n @Prop() error: boolean = false;\n @Prop() size: string = 'm';\n @Prop() indeterminate: boolean = false;\n @Prop() value: string;\n @State() internalChecked: boolean;\n @State() internalIndeterminate: boolean;\n\n @AttachInternals() internals: ElementInternals;\n\n @Event({ bubbles: true, composed: true }) ifxChange: EventEmitter;\n @Event({ bubbles: true, composed: true }) ifxError: EventEmitter;\n\n handleCheckbox() {\n if (!this.disabled) {\n if (!this.inputElement.indeterminate) {\n this.internalChecked = !this.internalChecked;\n } \n if (this.internalChecked && !this.internalIndeterminate) {\n if (this.value !== undefined) {\n this.internals.setFormValue(this.value);\n } else {\n this.internals.setFormValue(\"on\")\n }\n } else {\n this.internals.setFormValue(null)\n }\n this.ifxChange.emit(this.internalChecked);\n }\n }\n\n @Method()\n async isChecked(): Promise<boolean> {\n return this.internalChecked;\n }\n\n @Method()\n async toggleCheckedState(newVal: boolean) {\n this.internalChecked = newVal;\n }\n\n @Watch('checked')\n valueChanged(newValue: boolean, oldValue: boolean) {\n if (newValue !== oldValue) {\n this.internalChecked = newValue;\n this.inputElement.checked = this.internalChecked; // update the checkbox's checked property\n }\n }\n\n @Watch('error')\n errorChanged(newValue: boolean, oldValue: boolean) {\n if (newValue !== oldValue) {\n this.ifxError.emit(newValue);\n }\n }\n\n @Watch('indeterminate')\n indeterminateChanged(newValue: boolean, oldValue: boolean) {\n if (newValue !== oldValue) {\n this.internalIndeterminate = newValue;\n this.inputElement.indeterminate = this.internalIndeterminate; // update the checkbox's indeterminate property\n }\n }\n\n handleKeydown(event) {\n // Keycode 32 corresponds to the Space key, 13 corresponds to the Enter key\n if (event.keyCode === 32 || event.keyCode === 13) {\n this.handleCheckbox();\n event.preventDefault(); // prevent the default action when space or enter is pressed\n }\n }\n\n componentWillLoad() {\n this.internalChecked = this.checked;\n this.internalIndeterminate = this.indeterminate;\n }\n\n componentDidRender() {\n this.inputElement.indeterminate = this.internalIndeterminate;\n }\n\n /**\n * Callback for form association.\n * Called whenever the form is reset.\n */\n formResetCallback() {\n this.internals.setFormValue(null);\n }\n\n getCheckedClassName() {\n if (this.error) {\n if (this.internalChecked) {\n return \"checked error\"\n } else {\n return \"error\"\n }\n } else if (this.internalChecked) {\n return \"checked\";\n } else return \"\"\n }\n\n render() {\n const slot = this.el.innerHTML;\n let hasSlot = false;\n if (slot) {\n hasSlot = true;\n }\n return (\n <div class=\"checkbox__container\">\n <input\n type=\"checkbox\"\n hidden\n ref={(el) => (this.inputElement = el)}\n checked={this.internalChecked}\n onChange={this.handleCheckbox.bind(this)} // Listen for changes here\n id='checkbox'\n value={`${this.value}`}\n disabled={this.disabled ? true : undefined}\n />\n <div\n tabindex=\"0\"\n onClick={this.handleCheckbox.bind(this)}\n onKeyDown={this.handleKeydown.bind(this)}\n role=\"checkbox\"\n aria-checked={this.indeterminate ? 'mixed' : this.internalChecked.toString()}\n aria-disabled={this.disabled}\n aria-labelledby=\"label\"\n class={`checkbox__wrapper \n ${this.getCheckedClassName()}\n ${this.size === \"m\" ? \"checkbox-m\" : \"\"}\n ${this.indeterminate ? 'indeterminate' : \"\"}\n ${this.disabled ? 'disabled' : \"\"}`}\n >\n {this.internalChecked && !this.internalIndeterminate && <ifx-icon icon=\"check-16\" aria-hidden=\"true\"></ifx-icon>}\n </div>\n {hasSlot &&\n <div id=\"label\" class={`label ${this.size === \"m\" ? \"label-m\" : \"\"} ${this.disabled ? 'disabled' : \"\"} `} onClick={this.handleCheckbox.bind(this)}>\n <slot />\n </div>}\n </div>\n );\n }\n}"],"mappings":"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","ignoreList":[]}