@infineon/infineon-design-system-stencil 33.3.0 → 33.3.1--canary.1824.9e747abc2c6c3dcc35abd2895ce37d503bd1f141.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 (366) hide show
  1. package/dist/cjs/ifx-alert_2.cjs.entry.js +1 -1
  2. package/dist/cjs/ifx-basic-table.cjs.entry.js +1 -1
  3. package/dist/cjs/ifx-chip_3.cjs.entry.js +1 -1
  4. package/dist/cjs/ifx-faq.cjs.entry.js +1 -1
  5. package/dist/cjs/ifx-file-upload.cjs.entry.js +570 -0
  6. package/dist/cjs/ifx-file-upload.cjs.entry.js.map +1 -0
  7. package/dist/cjs/ifx-filter-accordion.cjs.entry.js +2 -2
  8. package/dist/cjs/ifx-filter-bar.cjs.entry.js +1 -1
  9. package/dist/cjs/ifx-filter-search.cjs.entry.js +1 -1
  10. package/dist/cjs/ifx-filter-type-group.cjs.entry.js +1 -1
  11. package/dist/cjs/ifx-footer-column.cjs.entry.js +1 -1
  12. package/dist/cjs/ifx-footer.cjs.entry.js +4 -4
  13. package/dist/cjs/ifx-icon-button.cjs.entry.js +1 -1
  14. package/dist/cjs/ifx-icon.cjs.entry.js +1 -1
  15. package/dist/cjs/ifx-icons-preview.cjs.entry.js +1 -1
  16. package/dist/cjs/ifx-link.cjs.entry.js +1 -1
  17. package/dist/cjs/ifx-list-entry.cjs.entry.js +1 -1
  18. package/dist/cjs/ifx-modal.cjs.entry.js +2 -2
  19. package/dist/cjs/ifx-navbar-item.cjs.entry.js +5 -5
  20. package/dist/cjs/ifx-navbar-profile.cjs.entry.js +3 -3
  21. package/dist/cjs/ifx-navbar.cjs.entry.js +3 -3
  22. package/dist/cjs/ifx-notification.cjs.entry.js +2 -2
  23. package/dist/cjs/ifx-number-indicator.cjs.entry.js +1 -1
  24. package/dist/cjs/ifx-overview-table.cjs.entry.js +1 -1
  25. package/dist/cjs/ifx-progress-bar.cjs.entry.js +1 -1
  26. package/dist/cjs/ifx-radio-button-group.cjs.entry.js +1 -1
  27. package/dist/cjs/ifx-radio-button.cjs.entry.js +2 -2
  28. package/dist/cjs/ifx-search-bar.cjs.entry.js +1 -1
  29. package/dist/cjs/ifx-search-field.cjs.entry.js +1 -1
  30. package/dist/cjs/ifx-segment.cjs.entry.js +1 -1
  31. package/dist/cjs/ifx-segmented-control.cjs.entry.js +2 -2
  32. package/dist/cjs/ifx-select.cjs.entry.js +2 -2
  33. package/dist/cjs/ifx-sidebar-item.cjs.entry.js +5 -5
  34. package/dist/cjs/ifx-sidebar-title.cjs.entry.js +1 -1
  35. package/dist/cjs/ifx-sidebar.cjs.entry.js +5 -5
  36. package/dist/cjs/ifx-slider.cjs.entry.js +2 -2
  37. package/dist/cjs/ifx-spinner_2.cjs.entry.js +6 -6
  38. package/dist/cjs/ifx-status.cjs.entry.js +1 -1
  39. package/dist/cjs/ifx-step.cjs.entry.js +4 -4
  40. package/dist/cjs/ifx-stepper.cjs.entry.js +2 -2
  41. package/dist/cjs/ifx-switch.cjs.entry.js +1 -1
  42. package/dist/cjs/ifx-tab.cjs.entry.js +1 -1
  43. package/dist/cjs/ifx-table.cjs.entry.js +2 -2
  44. package/dist/cjs/ifx-tabs.cjs.entry.js +2 -2
  45. package/dist/cjs/ifx-tag.cjs.entry.js +1 -1
  46. package/dist/cjs/ifx-templates-ui.cjs.entry.js +1 -1
  47. package/dist/cjs/ifx-textarea.cjs.entry.js +1 -1
  48. package/dist/cjs/ifx-tooltip.cjs.entry.js +4 -4
  49. package/dist/cjs/index-c9480f70.js +12 -8
  50. package/dist/cjs/infineon-design-system-stencil.cjs.js +1 -1
  51. package/dist/cjs/loader.cjs.js +1 -1
  52. package/dist/collection/collection-manifest.json +1 -0
  53. package/dist/collection/components/file-upload/file-upload.css +211 -0
  54. package/dist/collection/components/file-upload/file-upload.js +1501 -0
  55. package/dist/collection/components/file-upload/file-upload.js.map +1 -0
  56. package/dist/collection/components/file-upload/file-upload.stories.js +517 -0
  57. package/dist/collection/components/file-upload/file-upload.stories.js.map +1 -0
  58. package/dist/collection/components/footer/footer-column.js +1 -1
  59. package/dist/collection/components/footer/footer.js +4 -4
  60. package/dist/collection/components/icon/infineonIconStencil.js +1 -1
  61. package/dist/collection/components/icon-button/icon-button.js +1 -1
  62. package/dist/collection/components/icons-preview/icons-preview.js +1 -1
  63. package/dist/collection/components/link/link.js +1 -1
  64. package/dist/collection/components/modal/modal.js +2 -2
  65. package/dist/collection/components/navigation/navbar/navbar-item.js +5 -5
  66. package/dist/collection/components/navigation/navbar/navbar-profile.js +3 -3
  67. package/dist/collection/components/navigation/navbar/navbar.js +3 -3
  68. package/dist/collection/components/navigation/sidebar/sidebar-item.js +5 -5
  69. package/dist/collection/components/navigation/sidebar/sidebar-title.js +1 -1
  70. package/dist/collection/components/navigation/sidebar/sidebar.js +5 -5
  71. package/dist/collection/components/notification/notification.js +2 -2
  72. package/dist/collection/components/number-indicator/number-indicator.js +1 -1
  73. package/dist/collection/components/overview-table/overview-table.js +1 -1
  74. package/dist/collection/components/pagination/pagination.js +1 -1
  75. package/dist/collection/components/progress-bar/progress-bar.js +1 -1
  76. package/dist/collection/components/radio-button/radio-button.js +2 -2
  77. package/dist/collection/components/radio-button-group/radio-button-group.js +1 -1
  78. package/dist/collection/components/search-bar/search-bar.js +1 -1
  79. package/dist/collection/components/search-field/search-field.js +1 -1
  80. package/dist/collection/components/segmented-control/segment/segment.js +1 -1
  81. package/dist/collection/components/segmented-control/segmented-control.js +2 -2
  82. package/dist/collection/components/select/single-select/select.js +2 -2
  83. package/dist/collection/components/slider/slider.js +2 -2
  84. package/dist/collection/components/spinner/spinner.js +2 -2
  85. package/dist/collection/components/status/status.js +1 -1
  86. package/dist/collection/components/stepper/step/step.js +4 -4
  87. package/dist/collection/components/stepper/stepper.js +2 -2
  88. package/dist/collection/components/switch/switch.js +1 -1
  89. package/dist/collection/components/table-advanced-version/filter-bar/filter-bar.js +1 -1
  90. package/dist/collection/components/table-advanced-version/filter-type-group/filter-accordion/filter-accordion.js +2 -2
  91. package/dist/collection/components/table-advanced-version/filter-type-group/filter-search/filter-search.js +1 -1
  92. package/dist/collection/components/table-advanced-version/filter-type-group/filter-type-group.js +1 -1
  93. package/dist/collection/components/table-advanced-version/list/list-entry/list-entry.js +1 -1
  94. package/dist/collection/components/table-advanced-version/table.js +2 -2
  95. package/dist/collection/components/table-basic-version/table.js +1 -1
  96. package/dist/collection/components/tabs/tab.js +1 -1
  97. package/dist/collection/components/tabs/tabs.js +2 -2
  98. package/dist/collection/components/tag/tag.js +1 -1
  99. package/dist/collection/components/templates/template/template.js +1 -1
  100. package/dist/collection/components/templates/templates-ui/templates-ui.js +1 -1
  101. package/dist/collection/components/text-field/text-field.js +4 -4
  102. package/dist/collection/components/textarea/textarea.js +1 -1
  103. package/dist/collection/components/tooltip/tooltip.js +4 -4
  104. package/dist/collection/stories/setup-and-installation/faq/faq.js +1 -1
  105. package/dist/components/ifx-accordion-item.js +1 -1
  106. package/dist/components/ifx-alert.js +1 -1
  107. package/dist/components/ifx-basic-table.js +1 -1
  108. package/dist/components/ifx-breadcrumb-item-label.js +1 -1
  109. package/dist/components/ifx-checkbox-group.js +1 -1
  110. package/dist/components/ifx-checkbox.js +1 -1
  111. package/dist/components/ifx-chip-item.js +1 -1
  112. package/dist/components/ifx-chip.js +1 -1
  113. package/dist/components/ifx-date-picker.js +1 -1
  114. package/dist/components/ifx-download.js +1 -1
  115. package/dist/components/ifx-dropdown-item.js +1 -1
  116. package/dist/components/ifx-dropdown-trigger-button.js +1 -1
  117. package/dist/components/ifx-faq.js +3 -3
  118. package/dist/components/ifx-file-upload.d.ts +11 -0
  119. package/dist/components/ifx-file-upload.js +649 -0
  120. package/dist/components/ifx-file-upload.js.map +1 -0
  121. package/dist/components/ifx-filter-accordion.js +4 -4
  122. package/dist/components/ifx-filter-bar.js +2 -2
  123. package/dist/components/ifx-filter-search.js +3 -3
  124. package/dist/components/ifx-filter-type-group.js +1 -1
  125. package/dist/components/ifx-footer-column.js +1 -1
  126. package/dist/components/ifx-footer.js +4 -4
  127. package/dist/components/ifx-icon-button.js +1 -1
  128. package/dist/components/ifx-icon.js +1 -1
  129. package/dist/components/ifx-icons-preview.js +4 -4
  130. package/dist/components/ifx-link.js +1 -1
  131. package/dist/components/ifx-list-entry.js +4 -4
  132. package/dist/components/ifx-list.js +2 -2
  133. package/dist/components/ifx-modal.js +4 -4
  134. package/dist/components/ifx-multiselect.js +1 -1
  135. package/dist/components/ifx-navbar-item.js +7 -7
  136. package/dist/components/ifx-navbar-profile.js +3 -3
  137. package/dist/components/ifx-navbar.js +4 -4
  138. package/dist/components/ifx-notification.js +1 -1
  139. package/dist/components/ifx-number-indicator.js +1 -1
  140. package/dist/components/ifx-overview-table.js +4 -4
  141. package/dist/components/ifx-pagination.js +1 -1
  142. package/dist/components/ifx-progress-bar.js +1 -49
  143. package/dist/components/ifx-progress-bar.js.map +1 -1
  144. package/dist/components/ifx-radio-button-group.js +2 -2
  145. package/dist/components/ifx-radio-button.js +1 -1
  146. package/dist/components/ifx-search-bar.js +3 -3
  147. package/dist/components/ifx-search-field.js +1 -1
  148. package/dist/components/ifx-segment.js +2 -2
  149. package/dist/components/ifx-segmented-control.js +3 -3
  150. package/dist/components/ifx-select.js +1 -1
  151. package/dist/components/ifx-set-filter.js +5 -5
  152. package/dist/components/ifx-sidebar-item.js +7 -7
  153. package/dist/components/ifx-sidebar-title.js +1 -1
  154. package/dist/components/ifx-sidebar.js +5 -5
  155. package/dist/components/ifx-slider.js +3 -3
  156. package/dist/components/ifx-spinner.js +1 -1
  157. package/dist/components/ifx-status.js +1 -1
  158. package/dist/components/ifx-step.js +5 -5
  159. package/dist/components/ifx-stepper.js +2 -2
  160. package/dist/components/ifx-switch.js +1 -1
  161. package/dist/components/ifx-tab.js +1 -1
  162. package/dist/components/ifx-table.js +10 -10
  163. package/dist/components/ifx-tabs.js +3 -3
  164. package/dist/components/ifx-tag.js +2 -2
  165. package/dist/components/ifx-template.js +1 -1
  166. package/dist/components/ifx-templates-ui.js +8 -8
  167. package/dist/components/ifx-text-field.js +1 -1
  168. package/dist/components/ifx-textarea.js +1 -1
  169. package/dist/components/ifx-tooltip.js +5 -5
  170. package/dist/components/{p-eedb3b58.js → p-008afd49.js} +6 -6
  171. package/dist/components/{p-eedb3b58.js.map → p-008afd49.js.map} +1 -1
  172. package/dist/components/{p-f36effad.js → p-0b2bb8ad.js} +2 -2
  173. package/dist/components/{p-f36effad.js.map → p-0b2bb8ad.js.map} +1 -1
  174. package/dist/components/{p-85ce5a1e.js → p-118c5b21.js} +3 -3
  175. package/dist/components/{p-85ce5a1e.js.map → p-118c5b21.js.map} +1 -1
  176. package/dist/components/{p-88691420.js → p-1d0b8ace.js} +5 -5
  177. package/dist/components/{p-88691420.js.map → p-1d0b8ace.js.map} +1 -1
  178. package/dist/components/{p-23757cfd.js → p-2ba2b196.js} +3 -3
  179. package/dist/components/{p-23757cfd.js.map → p-2ba2b196.js.map} +1 -1
  180. package/dist/components/{p-8d115124.js → p-2e096da7.js} +5 -5
  181. package/dist/components/{p-8d115124.js.map → p-2e096da7.js.map} +1 -1
  182. package/dist/components/{p-4d64e776.js → p-45c75348.js} +2 -2
  183. package/dist/components/{p-4d64e776.js.map → p-45c75348.js.map} +1 -1
  184. package/dist/components/{p-ee5532fd.js → p-4882084d.js} +3 -3
  185. package/dist/components/{p-ee5532fd.js.map → p-4882084d.js.map} +1 -1
  186. package/dist/components/{p-b4e91450.js → p-49f70934.js} +3 -3
  187. package/dist/components/{p-b4e91450.js.map → p-49f70934.js.map} +1 -1
  188. package/dist/components/{p-04a697ad.js → p-524a6949.js} +2 -2
  189. package/dist/components/{p-04a697ad.js.map → p-524a6949.js.map} +1 -1
  190. package/dist/components/{p-7c7a5393.js → p-5d0763d9.js} +2 -2
  191. package/dist/components/{p-7c7a5393.js.map → p-5d0763d9.js.map} +1 -1
  192. package/dist/components/{p-327af560.js → p-6ddcb06b.js} +2 -2
  193. package/dist/components/{p-327af560.js.map → p-6ddcb06b.js.map} +1 -1
  194. package/dist/components/{p-803887ee.js → p-7ba45e8a.js} +3 -3
  195. package/dist/components/{p-803887ee.js.map → p-7ba45e8a.js.map} +1 -1
  196. package/dist/components/{p-e7551b24.js → p-7f0af813.js} +2 -2
  197. package/dist/components/{p-e7551b24.js.map → p-7f0af813.js.map} +1 -1
  198. package/dist/components/{p-f824645f.js → p-c4b939c0.js} +6 -6
  199. package/dist/components/{p-f824645f.js.map → p-c4b939c0.js.map} +1 -1
  200. package/dist/components/{p-77e746ee.js → p-cd01352d.js} +3 -3
  201. package/dist/components/{p-77e746ee.js.map → p-cd01352d.js.map} +1 -1
  202. package/dist/components/{p-1266857d.js → p-d4b2d98f.js} +4 -4
  203. package/dist/components/{p-1266857d.js.map → p-d4b2d98f.js.map} +1 -1
  204. package/dist/components/p-e56942b3.js +53 -0
  205. package/dist/components/p-e56942b3.js.map +1 -0
  206. package/dist/components/{p-dccd1c1c.js → p-ef6730e0.js} +3 -3
  207. package/dist/components/{p-dccd1c1c.js.map → p-ef6730e0.js.map} +1 -1
  208. package/dist/esm/ifx-alert_2.entry.js +1 -1
  209. package/dist/esm/ifx-basic-table.entry.js +1 -1
  210. package/dist/esm/ifx-chip_3.entry.js +1 -1
  211. package/dist/esm/ifx-faq.entry.js +1 -1
  212. package/dist/esm/ifx-file-upload.entry.js +566 -0
  213. package/dist/esm/ifx-file-upload.entry.js.map +1 -0
  214. package/dist/esm/ifx-filter-accordion.entry.js +2 -2
  215. package/dist/esm/ifx-filter-bar.entry.js +1 -1
  216. package/dist/esm/ifx-filter-search.entry.js +1 -1
  217. package/dist/esm/ifx-filter-type-group.entry.js +1 -1
  218. package/dist/esm/ifx-footer-column.entry.js +1 -1
  219. package/dist/esm/ifx-footer.entry.js +4 -4
  220. package/dist/esm/ifx-icon-button.entry.js +1 -1
  221. package/dist/esm/ifx-icon.entry.js +1 -1
  222. package/dist/esm/ifx-icons-preview.entry.js +1 -1
  223. package/dist/esm/ifx-link.entry.js +1 -1
  224. package/dist/esm/ifx-list-entry.entry.js +1 -1
  225. package/dist/esm/ifx-modal.entry.js +2 -2
  226. package/dist/esm/ifx-navbar-item.entry.js +5 -5
  227. package/dist/esm/ifx-navbar-profile.entry.js +3 -3
  228. package/dist/esm/ifx-navbar.entry.js +3 -3
  229. package/dist/esm/ifx-notification.entry.js +2 -2
  230. package/dist/esm/ifx-number-indicator.entry.js +1 -1
  231. package/dist/esm/ifx-overview-table.entry.js +1 -1
  232. package/dist/esm/ifx-progress-bar.entry.js +1 -1
  233. package/dist/esm/ifx-radio-button-group.entry.js +1 -1
  234. package/dist/esm/ifx-radio-button.entry.js +2 -2
  235. package/dist/esm/ifx-search-bar.entry.js +1 -1
  236. package/dist/esm/ifx-search-field.entry.js +1 -1
  237. package/dist/esm/ifx-segment.entry.js +1 -1
  238. package/dist/esm/ifx-segmented-control.entry.js +2 -2
  239. package/dist/esm/ifx-select.entry.js +2 -2
  240. package/dist/esm/ifx-sidebar-item.entry.js +5 -5
  241. package/dist/esm/ifx-sidebar-title.entry.js +1 -1
  242. package/dist/esm/ifx-sidebar.entry.js +5 -5
  243. package/dist/esm/ifx-slider.entry.js +2 -2
  244. package/dist/esm/ifx-spinner_2.entry.js +6 -6
  245. package/dist/esm/ifx-status.entry.js +1 -1
  246. package/dist/esm/ifx-step.entry.js +4 -4
  247. package/dist/esm/ifx-stepper.entry.js +2 -2
  248. package/dist/esm/ifx-switch.entry.js +1 -1
  249. package/dist/esm/ifx-tab.entry.js +1 -1
  250. package/dist/esm/ifx-table.entry.js +2 -2
  251. package/dist/esm/ifx-tabs.entry.js +2 -2
  252. package/dist/esm/ifx-tag.entry.js +1 -1
  253. package/dist/esm/ifx-templates-ui.entry.js +1 -1
  254. package/dist/esm/ifx-textarea.entry.js +1 -1
  255. package/dist/esm/ifx-tooltip.entry.js +4 -4
  256. package/dist/esm/index-c77e25a0.js +12 -8
  257. package/dist/esm/infineon-design-system-stencil.js +1 -1
  258. package/dist/esm/loader.js +1 -1
  259. package/dist/infineon-design-system-stencil/infineon-design-system-stencil.esm.js +1 -1
  260. package/dist/infineon-design-system-stencil/infineon-design-system-stencil.esm.js.map +1 -1
  261. package/dist/infineon-design-system-stencil/{p-66c73a3d.entry.js → p-02f83605.entry.js} +2 -2
  262. package/dist/infineon-design-system-stencil/{p-fbdd611c.entry.js → p-0512a705.entry.js} +2 -2
  263. package/dist/infineon-design-system-stencil/{p-fb3737ae.entry.js → p-07f2abf0.entry.js} +2 -2
  264. package/dist/infineon-design-system-stencil/p-0b6db901.entry.js +2 -0
  265. package/dist/infineon-design-system-stencil/{p-a045ee93.entry.js → p-0e9145f8.entry.js} +2 -2
  266. package/dist/infineon-design-system-stencil/{p-b77e56fd.entry.js → p-1038a1a1.entry.js} +2 -2
  267. package/dist/infineon-design-system-stencil/{p-42964318.entry.js → p-14fa6261.entry.js} +2 -2
  268. package/dist/infineon-design-system-stencil/{p-6ee1b4e7.entry.js → p-17df9778.entry.js} +2 -2
  269. package/dist/infineon-design-system-stencil/{p-00b3d9bf.entry.js → p-27e25f78.entry.js} +2 -2
  270. package/dist/infineon-design-system-stencil/{p-e4319c48.entry.js → p-294c7bab.entry.js} +2 -2
  271. package/dist/infineon-design-system-stencil/p-32e8759a.entry.js +2 -0
  272. package/dist/infineon-design-system-stencil/{p-f12c2743.entry.js → p-3796fda7.entry.js} +2 -2
  273. package/dist/infineon-design-system-stencil/{p-72bbedad.entry.js → p-3ad9c66a.entry.js} +2 -2
  274. package/dist/infineon-design-system-stencil/{p-6d936400.entry.js → p-47953778.entry.js} +2 -2
  275. package/dist/infineon-design-system-stencil/{p-7564f328.entry.js → p-4a239abe.entry.js} +2 -2
  276. package/dist/infineon-design-system-stencil/p-4d544302.entry.js +2 -0
  277. package/dist/infineon-design-system-stencil/{p-66d04b9e.entry.js → p-505aa612.entry.js} +2 -2
  278. package/dist/infineon-design-system-stencil/{p-8215490a.entry.js → p-563c4e58.entry.js} +2 -2
  279. package/dist/infineon-design-system-stencil/{p-cab23e90.entry.js → p-571635d2.entry.js} +2 -2
  280. package/dist/infineon-design-system-stencil/{p-5ce016ad.entry.js → p-5f3a20a2.entry.js} +2 -2
  281. package/dist/infineon-design-system-stencil/{p-e62df6c3.entry.js → p-685f1e5d.entry.js} +2 -2
  282. package/dist/infineon-design-system-stencil/{p-c183f92b.entry.js → p-69272ea3.entry.js} +2 -2
  283. package/dist/infineon-design-system-stencil/p-6b8deb4a.entry.js +2 -0
  284. package/dist/infineon-design-system-stencil/p-6b8deb4a.entry.js.map +1 -0
  285. package/dist/infineon-design-system-stencil/p-78039fa0.entry.js +2 -0
  286. package/dist/infineon-design-system-stencil/{p-5ba50092.entry.js → p-7a1327e5.entry.js} +2 -2
  287. package/dist/infineon-design-system-stencil/{p-96ba5e8c.entry.js → p-7d66ee28.entry.js} +2 -2
  288. package/dist/infineon-design-system-stencil/{p-dd27040f.entry.js → p-7feaadc5.entry.js} +2 -2
  289. package/dist/infineon-design-system-stencil/{p-760b9305.entry.js → p-91beff89.entry.js} +2 -2
  290. package/dist/infineon-design-system-stencil/p-91ffb683.entry.js +2 -0
  291. package/dist/infineon-design-system-stencil/{p-f2932f07.entry.js → p-997901f4.entry.js} +2 -2
  292. package/dist/infineon-design-system-stencil/{p-61010cd5.entry.js → p-9fbd4a42.entry.js} +2 -2
  293. package/dist/infineon-design-system-stencil/{p-64930d03.entry.js → p-a0f432cc.entry.js} +2 -2
  294. package/dist/infineon-design-system-stencil/p-ad50d807.entry.js +2 -0
  295. package/dist/infineon-design-system-stencil/{p-d1a97fd5.entry.js → p-b1538bfa.entry.js} +2 -2
  296. package/dist/infineon-design-system-stencil/{p-3e6ddbf5.entry.js → p-b900e8d0.entry.js} +2 -2
  297. package/dist/infineon-design-system-stencil/{p-ec7a9e00.entry.js → p-bb624976.entry.js} +2 -2
  298. package/dist/infineon-design-system-stencil/{p-9414543f.entry.js → p-c101a974.entry.js} +2 -2
  299. package/dist/infineon-design-system-stencil/{p-d9b49071.entry.js → p-cf27e139.entry.js} +2 -2
  300. package/dist/infineon-design-system-stencil/{p-aac226ce.entry.js → p-d0c21d65.entry.js} +2 -2
  301. package/dist/infineon-design-system-stencil/p-de1a042f.entry.js +2 -0
  302. package/dist/infineon-design-system-stencil/{p-41316712.entry.js → p-df86b421.entry.js} +2 -2
  303. package/dist/infineon-design-system-stencil/{p-6012a317.entry.js → p-eaf5dc4b.entry.js} +2 -2
  304. package/dist/infineon-design-system-stencil/p-eb510174.entry.js +2 -0
  305. package/dist/infineon-design-system-stencil/{p-080456bc.entry.js → p-f3a3242b.entry.js} +2 -2
  306. package/dist/infineon-design-system-stencil/{p-43ab7b53.entry.js → p-f5bc6488.entry.js} +2 -2
  307. package/dist/infineon-design-system-stencil/{p-7d761140.entry.js → p-f926dc7d.entry.js} +2 -2
  308. package/dist/infineon-design-system-stencil/{p-2ed9a934.entry.js → p-fa9610c3.entry.js} +2 -2
  309. package/dist/types/components/file-upload/file-upload.d.ts +143 -0
  310. package/dist/types/components/file-upload/file-upload.stories.d.ts +8 -0
  311. package/dist/types/components.d.ts +125 -0
  312. package/package.json +1 -1
  313. package/dist/infineon-design-system-stencil/p-11fa8bcb.entry.js +0 -2
  314. package/dist/infineon-design-system-stencil/p-1b59a7f9.entry.js +0 -2
  315. package/dist/infineon-design-system-stencil/p-2f87fada.entry.js +0 -2
  316. package/dist/infineon-design-system-stencil/p-56f6da95.entry.js +0 -2
  317. package/dist/infineon-design-system-stencil/p-afe7fdf8.entry.js +0 -2
  318. package/dist/infineon-design-system-stencil/p-b84588f9.entry.js +0 -2
  319. package/dist/infineon-design-system-stencil/p-cf3122b2.entry.js +0 -2
  320. package/dist/infineon-design-system-stencil/p-dc5ff11a.entry.js +0 -2
  321. /package/dist/infineon-design-system-stencil/{p-66c73a3d.entry.js.map → p-02f83605.entry.js.map} +0 -0
  322. /package/dist/infineon-design-system-stencil/{p-fbdd611c.entry.js.map → p-0512a705.entry.js.map} +0 -0
  323. /package/dist/infineon-design-system-stencil/{p-fb3737ae.entry.js.map → p-07f2abf0.entry.js.map} +0 -0
  324. /package/dist/infineon-design-system-stencil/{p-afe7fdf8.entry.js.map → p-0b6db901.entry.js.map} +0 -0
  325. /package/dist/infineon-design-system-stencil/{p-a045ee93.entry.js.map → p-0e9145f8.entry.js.map} +0 -0
  326. /package/dist/infineon-design-system-stencil/{p-b77e56fd.entry.js.map → p-1038a1a1.entry.js.map} +0 -0
  327. /package/dist/infineon-design-system-stencil/{p-42964318.entry.js.map → p-14fa6261.entry.js.map} +0 -0
  328. /package/dist/infineon-design-system-stencil/{p-6ee1b4e7.entry.js.map → p-17df9778.entry.js.map} +0 -0
  329. /package/dist/infineon-design-system-stencil/{p-00b3d9bf.entry.js.map → p-27e25f78.entry.js.map} +0 -0
  330. /package/dist/infineon-design-system-stencil/{p-e4319c48.entry.js.map → p-294c7bab.entry.js.map} +0 -0
  331. /package/dist/infineon-design-system-stencil/{p-cf3122b2.entry.js.map → p-32e8759a.entry.js.map} +0 -0
  332. /package/dist/infineon-design-system-stencil/{p-f12c2743.entry.js.map → p-3796fda7.entry.js.map} +0 -0
  333. /package/dist/infineon-design-system-stencil/{p-72bbedad.entry.js.map → p-3ad9c66a.entry.js.map} +0 -0
  334. /package/dist/infineon-design-system-stencil/{p-6d936400.entry.js.map → p-47953778.entry.js.map} +0 -0
  335. /package/dist/infineon-design-system-stencil/{p-7564f328.entry.js.map → p-4a239abe.entry.js.map} +0 -0
  336. /package/dist/infineon-design-system-stencil/{p-56f6da95.entry.js.map → p-4d544302.entry.js.map} +0 -0
  337. /package/dist/infineon-design-system-stencil/{p-66d04b9e.entry.js.map → p-505aa612.entry.js.map} +0 -0
  338. /package/dist/infineon-design-system-stencil/{p-8215490a.entry.js.map → p-563c4e58.entry.js.map} +0 -0
  339. /package/dist/infineon-design-system-stencil/{p-cab23e90.entry.js.map → p-571635d2.entry.js.map} +0 -0
  340. /package/dist/infineon-design-system-stencil/{p-5ce016ad.entry.js.map → p-5f3a20a2.entry.js.map} +0 -0
  341. /package/dist/infineon-design-system-stencil/{p-e62df6c3.entry.js.map → p-685f1e5d.entry.js.map} +0 -0
  342. /package/dist/infineon-design-system-stencil/{p-c183f92b.entry.js.map → p-69272ea3.entry.js.map} +0 -0
  343. /package/dist/infineon-design-system-stencil/{p-2f87fada.entry.js.map → p-78039fa0.entry.js.map} +0 -0
  344. /package/dist/infineon-design-system-stencil/{p-5ba50092.entry.js.map → p-7a1327e5.entry.js.map} +0 -0
  345. /package/dist/infineon-design-system-stencil/{p-96ba5e8c.entry.js.map → p-7d66ee28.entry.js.map} +0 -0
  346. /package/dist/infineon-design-system-stencil/{p-dd27040f.entry.js.map → p-7feaadc5.entry.js.map} +0 -0
  347. /package/dist/infineon-design-system-stencil/{p-760b9305.entry.js.map → p-91beff89.entry.js.map} +0 -0
  348. /package/dist/infineon-design-system-stencil/{p-11fa8bcb.entry.js.map → p-91ffb683.entry.js.map} +0 -0
  349. /package/dist/infineon-design-system-stencil/{p-f2932f07.entry.js.map → p-997901f4.entry.js.map} +0 -0
  350. /package/dist/infineon-design-system-stencil/{p-61010cd5.entry.js.map → p-9fbd4a42.entry.js.map} +0 -0
  351. /package/dist/infineon-design-system-stencil/{p-64930d03.entry.js.map → p-a0f432cc.entry.js.map} +0 -0
  352. /package/dist/infineon-design-system-stencil/{p-dc5ff11a.entry.js.map → p-ad50d807.entry.js.map} +0 -0
  353. /package/dist/infineon-design-system-stencil/{p-d1a97fd5.entry.js.map → p-b1538bfa.entry.js.map} +0 -0
  354. /package/dist/infineon-design-system-stencil/{p-3e6ddbf5.entry.js.map → p-b900e8d0.entry.js.map} +0 -0
  355. /package/dist/infineon-design-system-stencil/{p-ec7a9e00.entry.js.map → p-bb624976.entry.js.map} +0 -0
  356. /package/dist/infineon-design-system-stencil/{p-9414543f.entry.js.map → p-c101a974.entry.js.map} +0 -0
  357. /package/dist/infineon-design-system-stencil/{p-d9b49071.entry.js.map → p-cf27e139.entry.js.map} +0 -0
  358. /package/dist/infineon-design-system-stencil/{p-aac226ce.entry.js.map → p-d0c21d65.entry.js.map} +0 -0
  359. /package/dist/infineon-design-system-stencil/{p-b84588f9.entry.js.map → p-de1a042f.entry.js.map} +0 -0
  360. /package/dist/infineon-design-system-stencil/{p-41316712.entry.js.map → p-df86b421.entry.js.map} +0 -0
  361. /package/dist/infineon-design-system-stencil/{p-6012a317.entry.js.map → p-eaf5dc4b.entry.js.map} +0 -0
  362. /package/dist/infineon-design-system-stencil/{p-1b59a7f9.entry.js.map → p-eb510174.entry.js.map} +0 -0
  363. /package/dist/infineon-design-system-stencil/{p-080456bc.entry.js.map → p-f3a3242b.entry.js.map} +0 -0
  364. /package/dist/infineon-design-system-stencil/{p-43ab7b53.entry.js.map → p-f5bc6488.entry.js.map} +0 -0
  365. /package/dist/infineon-design-system-stencil/{p-7d761140.entry.js.map → p-f926dc7d.entry.js.map} +0 -0
  366. /package/dist/infineon-design-system-stencil/{p-2ed9a934.entry.js.map → p-fa9610c3.entry.js.map} +0 -0
@@ -177,7 +177,7 @@ const Template = class {
177
177
  }
178
178
  }
179
179
  render() {
180
- return (index.h("div", { key: '846a13427fd8ac957e2ed543167f3679274c110d' }, this.isTemplatePage
180
+ return (index.h("div", { key: 'be6f91bdcf65d990045ce7beb573e18a5d25b96c' }, this.isTemplatePage
181
181
  ?
182
182
  index.h("div", { class: "template__page-wrapper" }, !this.repoUrl && !this.repoError &&
183
183
  index.h("div", null, index.h("h3", null, "Your repository is getting ready.."), index.h("p", null, "This will only take a minute.")), this.isLoading && !this.repoError && index.h("div", null, index.h("ifx-spinner", { variant: 'default', size: 's' })), this.repoUrl && index.h("ifx-link", { href: this.repoUrl, target: "_parent", size: "m", variant: "underlined" }, "Your repository"), this.repoError && index.h("div", null, this.repoError))
@@ -183,7 +183,7 @@ const Table = class {
183
183
  return {};
184
184
  }
185
185
  render() {
186
- return (index.h(index.Host, { key: '354a1e781e5323bb669fa4058bb757d99d131f9e' }, index.h("div", { key: '39ae396feba51be9babfa48c1614e223967ba125', id: "table-wrapper", class: this.getClassNames() }, index.h("div", { key: 'be413883119cf1862cf171af2944dacf86d8b521', id: `ifxTable-${this.uniqueKey}`, class: `ifx-ag-grid ${this.variant === 'zebra' ? 'zebra' : ""}`, style: this.getTableStyle(), ref: (el) => (this.container = el) }))));
186
+ return (index.h(index.Host, { key: '5142758a2db73f270378e480ad4866b884cc5b14' }, index.h("div", { key: 'e0e8f0644f34ac4ba61644ecd449f5e926e786b0', id: "table-wrapper", class: this.getClassNames() }, index.h("div", { key: 'e938e3410c348bbc226d75e07b70a3580486b726', id: `ifxTable-${this.uniqueKey}`, class: `ifx-ag-grid ${this.variant === 'zebra' ? 'zebra' : ""}`, style: this.getTableStyle(), ref: (el) => (this.container = el) }))));
187
187
  }
188
188
  get host() { return index.getElement(this); }
189
189
  };
@@ -485,7 +485,7 @@ const Pagination = class {
485
485
  this.initPagination();
486
486
  }
487
487
  render() {
488
- return (index.h("div", { key: 'bcdab8abc24c10ba0ad9cd3c71f627b88dec16fd', class: "container" }, index.h("div", { key: '6e91f29112ed3f16b6a4a7dd3772f1be98267c4e', class: "items__per-page-wrapper" }, index.h("div", { key: 'c55a1a8d5d213e58410e282401ff7ea1cb065719', class: "items__per-page-label" }, "Results per Page"), index.h("div", { key: 'aafdfb3482ca7da258fe12be652eb2fa9aee5109', class: "items__per-page-field" }, index.h("ifx-select", { key: '7539b53f66917ce6aa9eb6ff8dc7dfa91028e092', placeholder: 'false', "show-search": 'false', value: undefined, disabled: false, error: false, size: "s", options: this.filteredItemsPerPage, "placeholder-value": "Select" }))), index.h("div", { key: '2fe1cf00bb8f56791443da1db747d68d68f898ab', class: "items__total-wrapper" }, index.h("div", { key: '5a8783ab57e95a898bacfb230a7d26ed56fb7830', class: "pagination" }, index.h("ifx-icon-button", { key: '792c14de7a13b461bbb076e8e2b31a1379ff87c1', class: "prev", icon: "arrow-left-24", onClick: () => this.changePage(this.internalPage - 1) }), index.h("ol", { key: '75ed8c16588e6822531145fb076b427010e822f5' }, this.visiblePages.map((page, i) => typeof page === 'number' ? (index.h("li", { key: `page-${page}`, class: { [this.CLASS_ACTIVE]: page === this.internalPage }, "data-page": page }, index.h("a", { href: "javascript:void(0)" }, page))) : (index.h("li", { class: "ellipsis", key: `ellipsis-${i}` }, index.h("span", null, "..."))))), index.h("ifx-icon-button", { key: '3375e62005080c9ae58059cc6b988e1879025d71', class: "next", icon: "arrow-right-24", onClick: () => this.changePage(this.internalPage + 1) })))));
488
+ return (index.h("div", { key: 'f698a31b53410da1c2e13fcf96b86369033c4342', class: "container" }, index.h("div", { key: '71542655e2e76337e866c2266ca32fd56fa041af', class: "items__per-page-wrapper" }, index.h("div", { key: 'b71fc0a3945051dfa321fe56bdf74424d0f4032e', class: "items__per-page-label" }, "Results per Page"), index.h("div", { key: '75afae25208d194f1f8ebcc9b0f462115ccb21ba', class: "items__per-page-field" }, index.h("ifx-select", { key: '21524346259b19f24ab3daef379acecd519cfd28', placeholder: 'false', "show-search": 'false', value: undefined, disabled: false, error: false, size: "s", options: this.filteredItemsPerPage, "placeholder-value": "Select" }))), index.h("div", { key: '076eb08f4117de8b8fca19c809778e247b4dae18', class: "items__total-wrapper" }, index.h("div", { key: '0e13cab91e2dcbc84643a405ae34fdbe6c5ae35b', class: "pagination" }, index.h("ifx-icon-button", { key: '1e898b6189eac137ea9e420d4a5982afcfb35cac', class: "prev", icon: "arrow-left-24", onClick: () => this.changePage(this.internalPage - 1) }), index.h("ol", { key: 'c336abf1b7d28c83f9b0176468da44f36b902daf' }, this.visiblePages.map((page, i) => typeof page === 'number' ? (index.h("li", { key: `page-${page}`, class: { [this.CLASS_ACTIVE]: page === this.internalPage }, "data-page": page }, index.h("a", { href: "javascript:void(0)" }, page))) : (index.h("li", { class: "ellipsis", key: `ellipsis-${i}` }, index.h("span", null, "..."))))), index.h("ifx-icon-button", { key: '7e8ad73143c1b4c2c5ccd9cfc60a2549291467b8', class: "next", icon: "arrow-right-24", onClick: () => this.changePage(this.internalPage + 1) })))));
489
489
  }
490
490
  get el() { return index.getElement(this); }
491
491
  };
@@ -12,7 +12,7 @@ const Faq = class {
12
12
  index.registerInstance(this, hostRef);
13
13
  }
14
14
  render() {
15
- return (index.h("div", { key: '654cada4bb1b178453c1183b8fe0554b38dbfa27', class: 'container' }, index.h("ifx-accordion", { key: 'a74e7603f6e9a772515d303342185453ec7cd809' }, index.h("ifx-accordion-item", { key: '5367585f585edd4a2ee9877a1611e2bca3aa966a', caption: "What is the Infineon DDS?" }, "The Infineon Digital Design System consists of code components, design principles, tools and guidelines as well as a dedicated interdisciplinary team. Its purpose is to support internal and external colleagues create digital user interfaces with a high level of usability as well as a consistent expression of the Infineon brand. The DDS does not focus on the content of a web application but it describes how the design of the application\u2019s structure should be."), index.h("ifx-accordion-item", { key: '44ae0a274050c9d5f894a25f3f40f3688c95ff53', caption: "How do I get access to the DDS?" }, "You can use the provided Figma file as a foundation for mockups and prototypes, use Storybook to view what UI components and variants are available and use code components provided via Storybook or Github."), index.h("ifx-accordion-item", { key: 'd97b7d946a933e70b7232f4dbbbb89c582d22b8d', caption: "Can I integrate the Infineon DDS into my project?" }, "Yes, you can. We are happy to discuss with you which point in time and which scope of integration is bestsuited for updating your interface to the Infineon DDS. (To avoid that users get confused by a mixture of UI components, we recommend choosing larger updates or technology changes as opportunity to integrate the Infineon DDS.)"), index.h("ifx-accordion-item", { key: '8c46c204474887279bba9976dd290237a0ce1797', caption: "Are Infineon DDS components accessable?" }, "We have taken WCAG 2.0 Level AA as baseline level for all design decisions inside the Infineon Digital Design System. To make an online experience truly accessible you have to implement the specific code, content, and visual design according to the accessibility standard. Find an introduction to this topic here."), index.h("ifx-accordion-item", { key: '829affec52cab85adf74014060bb2a4443be1533', caption: "How to request a new component?" }, "Please contact us like described in the contribution section! We are planning to expand the number of components continually. If your component is also usable for multiple other projects, there is a good chance we might work together with you."))));
15
+ return (index.h("div", { key: '1ef10be917644b56a0c61d123335a3b9807dc21e', class: 'container' }, index.h("ifx-accordion", { key: 'bb4bed20180007bd358dd62c5632e9bf64ced8aa' }, index.h("ifx-accordion-item", { key: '22f0b7e0a99560027f3b104c5aff5d4df497f08a', caption: "What is the Infineon DDS?" }, "The Infineon Digital Design System consists of code components, design principles, tools and guidelines as well as a dedicated interdisciplinary team. Its purpose is to support internal and external colleagues create digital user interfaces with a high level of usability as well as a consistent expression of the Infineon brand. The DDS does not focus on the content of a web application but it describes how the design of the application\u2019s structure should be."), index.h("ifx-accordion-item", { key: '93af0d9eb81169d4295de96c2ad8a38c98f7472d', caption: "How do I get access to the DDS?" }, "You can use the provided Figma file as a foundation for mockups and prototypes, use Storybook to view what UI components and variants are available and use code components provided via Storybook or Github."), index.h("ifx-accordion-item", { key: '513af2390df5b2c92103623b6ac468b58a951d5b', caption: "Can I integrate the Infineon DDS into my project?" }, "Yes, you can. We are happy to discuss with you which point in time and which scope of integration is bestsuited for updating your interface to the Infineon DDS. (To avoid that users get confused by a mixture of UI components, we recommend choosing larger updates or technology changes as opportunity to integrate the Infineon DDS.)"), index.h("ifx-accordion-item", { key: 'd198d32f2d537bc7c860aaa46f299188d07c3537', caption: "Are Infineon DDS components accessable?" }, "We have taken WCAG 2.0 Level AA as baseline level for all design decisions inside the Infineon Digital Design System. To make an online experience truly accessible you have to implement the specific code, content, and visual design according to the accessibility standard. Find an introduction to this topic here."), index.h("ifx-accordion-item", { key: '43ab4602486cb02854c8d76b3a2a0c2b7774be24', caption: "How to request a new component?" }, "Please contact us like described in the contribution section! We are planning to expand the number of components continually. If your component is also usable for multiple other projects, there is a good chance we might work together with you."))));
16
16
  }
17
17
  };
18
18
  Faq.style = IfxFaqStyle0;
@@ -0,0 +1,570 @@
1
+ 'use strict';
2
+
3
+ Object.defineProperty(exports, '__esModule', { value: true });
4
+
5
+ const index = require('./index-c9480f70.js');
6
+
7
+ const fileUploadCss = ":root{font-family:\"Source Sans 3\", sans-serif}:host{font-family:var(--ifx-font-family, sans-serif)}.file-upload-wrapper{display:flex;flex-direction:column}.file-upload-wrapper.disabled{pointer-events:none}.file-upload-wrapper.disabled label,.file-upload-wrapper.disabled .file-upload-info{color:#575352}.file-upload-label{font-style:normal;font-weight:400;font-size:1rem;line-height:1.5rem;color:#1D1D1D}.file-upload-label .required{display:inline-block;margin-left:4px}.file-upload-label .required.error{color:#CD002F}.upload-dropzone{border:1px dashed #BFBBBB;padding:40px;text-align:center;cursor:pointer;color:#1D1D1D;transition:border-color 0.3s ease;border-radius:1px;background:#FFFFFF}.upload-dropzone ifx-icon{color:#0A8276}.upload-dropzone:hover{border:1px dashed #8D8786}.upload-dropzone.drag-over{background:#F7F7F7}.upload-dropzone.drag-over,.upload-dropzone.drag-over.error{border:1px solid #0A8276}.upload-dropzone.error{border-color:#CD002F}.disabled .upload-dropzone{pointer-events:none;border-color:#BFBBBB;color:#BFBBBB}.disabled .upload-dropzone ifx-icon{color:#BFBBBB}.upload-dropzone input{display:none}.file-upload-info{font-style:normal;font-weight:400;font-size:0.75rem;line-height:1rem;letter-spacing:0em;color:#1D1D1D;margin:0;margin-top:4px}.file-upload-status{font-style:normal;font-weight:400;font-size:0.75rem;line-height:1rem;letter-spacing:0.2px;margin-top:8px}.file-upload-status.file-upload-status__error{display:flex;align-items:center;color:#CD002F}.file-upload-status.file-upload-status__error ifx-icon{position:relative;top:-1px;color:#CD002F;margin-right:8px}.upload-heading{font:600 1.125rem/1.625rem \"Source Sans 3\";margin-bottom:8px}.file-list-wrapper{margin-top:16px}.file-list{list-style:none;padding:0;margin:0;display:flex;flex-direction:column;gap:16px}.file-item{border:1px solid #BFBBBB;padding-top:12px;padding-right:16px;padding-bottom:8px;padding-left:16px;display:flex;gap:8px}.file-info{width:100%;min-width:0}.file-top-row{display:flex;align-items:center;justify-content:space-between;gap:16px;margin-top:-8px}.file-top-row ifx-icon{flex-shrink:0}.file-name-wrapper{display:flex;min-width:0;max-width:100%;white-space:nowrap;overflow:hidden;font-weight:400;font-size:0.875rem}.file-name-base{overflow:hidden;text-overflow:ellipsis;white-space:nowrap;flex-shrink:1;min-width:0}.file-name-ext{flex-shrink:0;margin-left:0}.file-middle-row{display:flex;align-items:center;font-size:0.75rem;line-height:1rem;flex-wrap:wrap;color:#575352}.file-middle-row .file-status{margin-left:12px}.file-middle-row .file-status ifx-icon{margin-right:8px}.file-progress-row{margin-top:4px}.file-progress-row ifx-progress-bar{width:100%}.upload-success{border-color:#0A8276}.upload-success .file-status ifx-icon{position:relative;top:1px;color:#4CA460}.upload-failed{border-color:#CD002F}.upload-failed .file-status{color:#CD002F;margin-left:0}";
8
+ const IfxFileUploadStyle0 = fileUploadCss;
9
+
10
+ const IfxFileUpload = class {
11
+ constructor(hostRef) {
12
+ index.registerInstance(this, hostRef);
13
+ this.ifxFileUploadAdd = index.createEvent(this, "ifxFileUploadAdd", 7);
14
+ this.ifxFileUploadRemove = index.createEvent(this, "ifxFileUploadRemove", 7);
15
+ this.ifxFileUploadChange = index.createEvent(this, "ifxFileUploadChange", 7);
16
+ this.ifxFileUploadError = index.createEvent(this, "ifxFileUploadError", 7);
17
+ this.ifxFileUploadInvalid = index.createEvent(this, "ifxFileUploadInvalid", 7);
18
+ this.ifxFileUploadStart = index.createEvent(this, "ifxFileUploadStart", 7);
19
+ this.ifxFileUploadComplete = index.createEvent(this, "ifxFileUploadComplete", 7);
20
+ this.ifxFileUploadAllComplete = index.createEvent(this, "ifxFileUploadAllComplete", 7);
21
+ this.ifxFileUploadAbort = index.createEvent(this, "ifxFileUploadAbort", 7);
22
+ this.ifxFileUploadDrop = index.createEvent(this, "ifxFileUploadDrop", 7);
23
+ this.ifxFileUploadClick = index.createEvent(this, "ifxFileUploadClick", 7);
24
+ this.ifxFileUploadMaxFilesExceeded = index.createEvent(this, "ifxFileUploadMaxFilesExceeded", 7);
25
+ this.ifxFileUploadValidation = index.createEvent(this, "ifxFileUploadValidation", 7);
26
+ this.ifxFileUploadRetry = index.createEvent(this, "ifxFileUploadRetry", 7);
27
+ this.dragAndDrop = false;
28
+ this.required = false;
29
+ this.disabled = false;
30
+ this.maxFileSizeMB = 7;
31
+ /** Default set of allowed file extensions (used internally). Can be extended using `additionalAllowedFileTypes`. */
32
+ this.allowedFileTypes = ['jpg', 'jpeg', 'png', 'pdf', 'mov', 'mp3', 'mp4'];
33
+ this.additionalAllowedFileTypes = [];
34
+ this.label = 'Label';
35
+ this.labelRequiredError = 'At least one file must be uploaded';
36
+ this.labelBrowseFiles = 'Browse files';
37
+ this.labelDragAndDrop = 'Drag & Drop or browse files to upload';
38
+ this.labelUploadedFilesHeading = 'Uploaded files';
39
+ this.labelFileTooLarge = 'Upload failed. Max file size: {{size}}MB.';
40
+ this.labelUnsupportedFileType = 'Unsupported file type.';
41
+ this.labelUploaded = 'Successfully uploaded';
42
+ this.labelUploadFailed = 'Upload failed. Please try again.';
43
+ this.labelSupportedFormatsTemplate = 'Supported file formats: {{types}}. Max file size: {{size}}MB.';
44
+ this.labelFileSingular = 'file';
45
+ this.labelFilePlural = 'files';
46
+ this.labelMaxFilesInfo = 'Up to {{count}} {{files}}.';
47
+ this.labelMaxFilesExceeded = 'Upload limit exceeded. Only {{count}} {{files}} allowed.';
48
+ this.ariaLabelBrowseFiles = 'Browse files';
49
+ this.ariaLabelDropzone = 'Upload area. Click to browse or drag and drop files.';
50
+ this.ariaLabelFileInput = 'Upload file';
51
+ this.ariaLabelRemoveFile = 'Remove file';
52
+ this.ariaLabelCancelUpload = 'Cancel upload';
53
+ this.ariaLabelRetryUpload = 'Retry upload';
54
+ this.ariaLabelUploadingStatus = 'Upload in progress';
55
+ this.ariaLabelUploadedStatus = 'Upload completed';
56
+ this.ariaLabelUploadFailedStatus = 'Upload failed';
57
+ this.internalId = `ifx-file-upload-${Math.random().toString(36).substr(2, 9)}`;
58
+ this.isDragOver = false;
59
+ this.files = [];
60
+ this.uploadTasks = [];
61
+ this.rejectedSizeFiles = [];
62
+ this.rejectedTypeFiles = [];
63
+ this.requiredError = false;
64
+ this.statusMessage = null;
65
+ this.fileInputEl = null;
66
+ this.extensionToMimeMap = {
67
+ /**
68
+ * Maps file extensions to MIME types.
69
+ * This is only used for translating `allowedFileTypes` (extensions) into MIME types,
70
+ * and for labeling in the UI. It does NOT define which files are globally allowed.
71
+ */
72
+ // Images
73
+ jpg: 'image/jpeg',
74
+ jpeg: 'image/jpeg',
75
+ png: 'image/png',
76
+ gif: 'image/gif',
77
+ svg: 'image/svg+xml',
78
+ webp: 'image/webp',
79
+ // Documents
80
+ pdf: 'application/pdf',
81
+ doc: 'application/msword',
82
+ docx: 'application/vnd.openxmlformats-officedocument.wordprocessingml.document',
83
+ xls: 'application/vnd.ms-excel',
84
+ xlsx: 'application/vnd.openxmlformats-officedocument.spreadsheetml.sheet',
85
+ ppt: 'application/vnd.ms-powerpoint',
86
+ pptx: 'application/vnd.openxmlformats-officedocument.presentationml.presentation',
87
+ txt: 'text/plain',
88
+ csv: 'text/csv',
89
+ json: 'application/json',
90
+ // Audio/Video
91
+ mp3: 'audio/mpeg',
92
+ wav: 'audio/wav',
93
+ mp4: 'video/mp4',
94
+ mov: 'video/quicktime',
95
+ webm: 'video/webm',
96
+ // Archive / Code
97
+ zip: 'application/zip',
98
+ rar: 'application/vnd.rar',
99
+ tar: 'application/x-tar',
100
+ gz: 'application/gzip',
101
+ // Sonstiges
102
+ xml: 'application/xml',
103
+ html: 'text/html',
104
+ css: 'text/css',
105
+ js: 'application/javascript'
106
+ };
107
+ }
108
+ get maxFiles() {
109
+ return this._maxFiles;
110
+ }
111
+ set maxFiles(value) {
112
+ if (typeof value === 'number' && value < 1) {
113
+ console.warn('Invalid `maxFiles` value. Must be >= 1. Value ignored.');
114
+ this._maxFiles = undefined;
115
+ }
116
+ else {
117
+ this._maxFiles = value;
118
+ }
119
+ }
120
+ validateRequired() {
121
+ var _a, _b;
122
+ if (this.required && this.files.length === 0) {
123
+ this.requiredError = true;
124
+ if (((_a = this.statusMessage) === null || _a === void 0 ? void 0 : _a.text) !== this.labelRequiredError) {
125
+ this.statusMessage = {
126
+ type: 'error',
127
+ text: this.labelRequiredError
128
+ };
129
+ }
130
+ this.ifxFileUploadValidation.emit({ valid: false });
131
+ }
132
+ else {
133
+ this.requiredError = false;
134
+ if (((_b = this.statusMessage) === null || _b === void 0 ? void 0 : _b.text) === this.labelRequiredError) {
135
+ this.statusMessage = null;
136
+ }
137
+ this.ifxFileUploadValidation.emit({ valid: true });
138
+ }
139
+ }
140
+ pluralize(count) {
141
+ return count === 1 ? this.labelFileSingular : this.labelFilePlural;
142
+ }
143
+ getNormalizedFileTypes() {
144
+ if (Array.isArray(this.allowedFileTypes)) {
145
+ return this.allowedFileTypes;
146
+ }
147
+ try {
148
+ return JSON.parse(this.allowedFileTypes);
149
+ }
150
+ catch (_a) {
151
+ return this.allowedFileTypes.split(',').map(t => t.trim());
152
+ }
153
+ }
154
+ getLabelFromMimeType(mime) {
155
+ for (const [ext, knownMime] of Object.entries(this.extensionToMimeMap)) {
156
+ if (knownMime === mime) {
157
+ return ext.toUpperCase();
158
+ }
159
+ }
160
+ return mime; // fallback: show raw MIME
161
+ }
162
+ handleFileChange(event) {
163
+ const input = event.target;
164
+ if (!input.files)
165
+ return;
166
+ this.processFiles(input.files);
167
+ }
168
+ handleDrop(event) {
169
+ var _a;
170
+ if (this.disabled)
171
+ return;
172
+ event.preventDefault();
173
+ event.stopPropagation();
174
+ this.isDragOver = false;
175
+ if ((_a = event.dataTransfer) === null || _a === void 0 ? void 0 : _a.files) {
176
+ const droppedFiles = Array.from(event.dataTransfer.files);
177
+ const allowedMimes = [
178
+ ...this.getNormalizedFileTypes()
179
+ .map(ext => this.extensionToMimeMap[ext.toLowerCase()])
180
+ .filter(Boolean),
181
+ ...this.getAdditionalMimeTypes()
182
+ ];
183
+ const acceptedFiles = [];
184
+ const rejectedFiles = [];
185
+ droppedFiles.forEach(file => {
186
+ const isValidType = allowedMimes.includes(file.type);
187
+ const isValidSize = file.size <= this.maxFileSizeMB * 1024 * 1024;
188
+ if (isValidType && isValidSize)
189
+ acceptedFiles.push(file);
190
+ else
191
+ rejectedFiles.push(file);
192
+ });
193
+ this.ifxFileUploadDrop.emit({
194
+ droppedFiles,
195
+ acceptedFiles,
196
+ rejectedFiles
197
+ });
198
+ this.processFiles(event.dataTransfer.files);
199
+ }
200
+ }
201
+ handleDragOver(event) {
202
+ if (this.disabled)
203
+ return;
204
+ event.preventDefault();
205
+ this.isDragOver = true;
206
+ }
207
+ handleDragLeave(event) {
208
+ if (this.disabled)
209
+ return;
210
+ event.preventDefault();
211
+ this.isDragOver = false;
212
+ }
213
+ processFiles(fileList) {
214
+ const selectedFiles = Array.from(fileList);
215
+ const allowedMimes = [
216
+ ...this.getNormalizedFileTypes()
217
+ .map(ext => this.extensionToMimeMap[ext.toLowerCase()])
218
+ .filter(Boolean),
219
+ ...this.getAdditionalMimeTypes()
220
+ ];
221
+ const validFiles = [];
222
+ const rejectedSize = [];
223
+ const rejectedType = [];
224
+ selectedFiles.forEach(file => {
225
+ const isValidType = allowedMimes.includes(file.type);
226
+ const isValidSize = file.size <= this.maxFileSizeMB * 1024 * 1024;
227
+ const isDuplicate = this.files.some(existing => existing.name === file.name && existing.size === file.size);
228
+ if (isDuplicate) {
229
+ this.ifxFileUploadInvalid.emit({ file, reason: 'duplicate' });
230
+ this.ifxFileUploadError.emit({
231
+ file,
232
+ errorType: 'duplicate',
233
+ message: `File "${file.name}" is already added`,
234
+ reason: 'duplicate'
235
+ });
236
+ return;
237
+ }
238
+ if (isValidType && isValidSize) {
239
+ validFiles.push(file);
240
+ }
241
+ else {
242
+ if (!isValidType) {
243
+ rejectedType.push(file.name);
244
+ this.ifxFileUploadInvalid.emit({ file, reason: 'invalid-type' });
245
+ }
246
+ if (!isValidSize) {
247
+ rejectedSize.push(file.name);
248
+ this.ifxFileUploadInvalid.emit({ file, reason: 'invalid-size' });
249
+ }
250
+ this.ifxFileUploadError.emit({
251
+ file,
252
+ errorType: !isValidType ? 'invalid-type' : 'file-too-large',
253
+ message: 'Invalid file rejected',
254
+ reason: !isValidType ? 'unsupported-type' : 'file-too-large'
255
+ });
256
+ }
257
+ });
258
+ this.rejectedSizeFiles = [...this.rejectedSizeFiles, ...rejectedSize];
259
+ this.rejectedTypeFiles = [...this.rejectedTypeFiles, ...rejectedType];
260
+ if (this.maxFiles && this.files.length + validFiles.length > this.maxFiles) {
261
+ const availableSlots = this.maxFiles - this.files.length;
262
+ const limitedFiles = validFiles.slice(0, Math.max(availableSlots, 0));
263
+ const overflowFiles = validFiles.slice(availableSlots);
264
+ this.files = [...this.files, ...limitedFiles];
265
+ limitedFiles.forEach(file => this.startUpload(file));
266
+ if (limitedFiles.length > 0) {
267
+ this.ifxFileUploadAdd.emit({ addedFiles: limitedFiles, files: this.files });
268
+ this.ifxFileUploadChange.emit({ files: this.files });
269
+ }
270
+ overflowFiles.forEach(file => {
271
+ this.ifxFileUploadInvalid.emit({ file, reason: 'too-many-files' });
272
+ this.ifxFileUploadError.emit({
273
+ file,
274
+ errorType: 'too-many-files',
275
+ message: `Upload limit exceeded. Max ${this.maxFiles} files allowed.`,
276
+ reason: 'too-many-files'
277
+ });
278
+ });
279
+ if (overflowFiles.length > 0) {
280
+ this.statusMessage = {
281
+ type: 'error',
282
+ text: this.labelMaxFilesExceeded
283
+ .replace('{{count}}', this.maxFiles.toString())
284
+ .replace('{{files}}', this.pluralize(this.maxFiles))
285
+ };
286
+ this.ifxFileUploadMaxFilesExceeded.emit({
287
+ maxFiles: this.maxFiles,
288
+ attempted: this.files.length + validFiles.length
289
+ });
290
+ }
291
+ return;
292
+ }
293
+ validFiles.forEach(file => this.startUpload(file));
294
+ this.files = [...this.files, ...validFiles];
295
+ if (validFiles.length > 0) {
296
+ this.ifxFileUploadAdd.emit({ addedFiles: validFiles, files: this.files });
297
+ this.ifxFileUploadChange.emit({ files: this.files });
298
+ }
299
+ this.validateRequired();
300
+ }
301
+ retryUpload(file) {
302
+ const taskIndex = this.uploadTasks.findIndex(t => t.file.name === file.name);
303
+ if (taskIndex !== -1) {
304
+ this.uploadTasks.splice(taskIndex, 1);
305
+ this.uploadTasks = [...this.uploadTasks];
306
+ }
307
+ this.ifxFileUploadRetry.emit({ file });
308
+ this.startUpload(file);
309
+ }
310
+ startUpload(file) {
311
+ this.ifxFileUploadStart.emit({ file });
312
+ const task = {
313
+ file,
314
+ progress: 3, // Start with initial progress for better UX
315
+ intervalId: null,
316
+ completed: false,
317
+ };
318
+ this.uploadTasks = [...this.uploadTasks, task];
319
+ if (this.uploadHandler) {
320
+ this.uploadHandler(file, (percent) => {
321
+ if (percent > task.progress) {
322
+ task.progress = Math.min(100, percent);
323
+ this.uploadTasks = [...this.uploadTasks];
324
+ }
325
+ }).then(() => {
326
+ task.progress = 100;
327
+ task.completed = true;
328
+ this.uploadTasks = [...this.uploadTasks];
329
+ this.ifxFileUploadComplete.emit({ file });
330
+ this.ifxFileUploadChange.emit({ files: this.files });
331
+ if (this.uploadTasks.every(t => t.completed)) {
332
+ this.ifxFileUploadAllComplete.emit({ files: this.files });
333
+ }
334
+ }).catch(() => {
335
+ task.error = true;
336
+ this.uploadTasks = [...this.uploadTasks];
337
+ this.ifxFileUploadError.emit({
338
+ file,
339
+ errorType: 'upload-failed',
340
+ message: 'Upload handler rejected file',
341
+ reason: 'custom'
342
+ });
343
+ });
344
+ }
345
+ else {
346
+ const totalSize = file.size;
347
+ const fakeUploadSpeed = 100000;
348
+ let uploaded = 0;
349
+ task.intervalId = window.setInterval(() => {
350
+ uploaded += fakeUploadSpeed / 5;
351
+ const progress = Math.min(100, Math.round((uploaded / totalSize) * 100));
352
+ task.progress = progress;
353
+ this.uploadTasks = [...this.uploadTasks];
354
+ if (progress >= 100) {
355
+ clearInterval(task.intervalId);
356
+ task.completed = true;
357
+ task.intervalId = null;
358
+ this.uploadTasks = [...this.uploadTasks];
359
+ this.ifxFileUploadComplete.emit({ file });
360
+ this.ifxFileUploadChange.emit({ files: this.files });
361
+ if (this.uploadTasks.every(t => t.completed)) {
362
+ this.ifxFileUploadAllComplete.emit({ files: this.files });
363
+ }
364
+ }
365
+ }, 200);
366
+ }
367
+ this.uploadTasks = [...this.uploadTasks, task];
368
+ }
369
+ cancelUpload(file) {
370
+ const taskIndex = this.uploadTasks.findIndex(t => t.file.name === file.name);
371
+ if (taskIndex !== -1) {
372
+ const task = this.uploadTasks[taskIndex];
373
+ if ((task === null || task === void 0 ? void 0 : task.intervalId) !== null) {
374
+ clearInterval(task.intervalId);
375
+ }
376
+ this.uploadTasks = this.uploadTasks.filter((_, i) => i !== taskIndex);
377
+ }
378
+ this.files = this.files.filter(f => f.name !== file.name);
379
+ this.ifxFileUploadAbort.emit({ file });
380
+ this.ifxFileUploadChange.emit({ files: this.files });
381
+ if (this.fileInputEl) {
382
+ this.fileInputEl.value = '';
383
+ }
384
+ this.validateRequired();
385
+ }
386
+ removeFile(file) {
387
+ var _a;
388
+ this.uploadTasks = this.uploadTasks.filter(task => task.file.name !== file.name);
389
+ this.files = this.files.filter(f => f.name !== file.name);
390
+ this.ifxFileUploadRemove.emit({ removedFile: file, files: this.files });
391
+ this.ifxFileUploadChange.emit({ files: this.files });
392
+ this.validateRequired();
393
+ if (this.fileInputEl) {
394
+ this.fileInputEl.value = '';
395
+ }
396
+ if (this.maxFiles &&
397
+ this.files.length < this.maxFiles &&
398
+ ((_a = this.statusMessage) === null || _a === void 0 ? void 0 : _a.text) !== this.labelRequiredError) {
399
+ this.statusMessage = null;
400
+ }
401
+ }
402
+ clearRejectedFile(fileName, type) {
403
+ if (type === 'size') {
404
+ this.rejectedSizeFiles = this.rejectedSizeFiles.filter(f => f !== fileName);
405
+ }
406
+ else {
407
+ this.rejectedTypeFiles = this.rejectedTypeFiles.filter(f => f !== fileName);
408
+ }
409
+ if (this.fileInputEl) {
410
+ this.fileInputEl.value = '';
411
+ }
412
+ if (this.maxFiles && this.files.length < this.maxFiles) {
413
+ this.statusMessage = null;
414
+ }
415
+ this.validateRequired();
416
+ }
417
+ splitFileNameParts(file) {
418
+ const name = file.name;
419
+ const dotIndex = name.lastIndexOf('.');
420
+ if (dotIndex === -1)
421
+ return { base: name, ext: '' };
422
+ return {
423
+ base: name.substring(0, dotIndex),
424
+ ext: name.substring(dotIndex)
425
+ };
426
+ }
427
+ getFileIcon(file) {
428
+ var _a;
429
+ const extension = (_a = file.name.split('.').pop()) === null || _a === void 0 ? void 0 : _a.toLowerCase();
430
+ switch (extension) {
431
+ case 'pdf': return 'file-pdf-16';
432
+ case 'jpg':
433
+ case 'jpeg': return 'file-jpg-16';
434
+ case 'png': return 'file-png-16';
435
+ case 'mov': return 'file-mov-16';
436
+ case 'mp3': return 'file-mp3-16';
437
+ case 'mp4': return 'file-mp4-16';
438
+ default: return 'file-16';
439
+ }
440
+ }
441
+ formatSize(bytes) {
442
+ if (bytes >= 1024 * 1024 * 1024) {
443
+ return `${(bytes / (1024 * 1024 * 1024)).toFixed(1)} GB`;
444
+ }
445
+ else if (bytes >= 1024 * 1024) {
446
+ return `${(bytes / (1024 * 1024)).toFixed(1)} MB`;
447
+ }
448
+ else if (bytes >= 1024) {
449
+ return `${(bytes / 1024).toFixed(0)} KB`;
450
+ }
451
+ else {
452
+ return `${bytes} B`;
453
+ }
454
+ }
455
+ getAcceptAttribute() {
456
+ const extensionTypes = this.getNormalizedFileTypes().map(ext => '.' + ext.toLowerCase());
457
+ const mimeTypes = this.getAdditionalMimeTypes();
458
+ return [...extensionTypes, ...mimeTypes].join(',');
459
+ }
460
+ getFormattedProgressText(task) {
461
+ const uploadedSize = Math.round((task.progress / 100) * task.file.size);
462
+ const uploadedText = this.formatSize(uploadedSize);
463
+ const totalText = this.formatSize(task.file.size);
464
+ return `${uploadedText} / ${totalText} uploaded`;
465
+ }
466
+ getAdditionalMimeTypes() {
467
+ if (!this.additionalAllowedFileTypes)
468
+ return [];
469
+ if (Array.isArray(this.additionalAllowedFileTypes))
470
+ return this.additionalAllowedFileTypes;
471
+ return this.additionalAllowedFileTypes.split(',').map(t => t.trim());
472
+ }
473
+ getSupportedFileText() {
474
+ const extensions = this.getNormalizedFileTypes().map(ext => ext.toUpperCase());
475
+ const mimeTypes = this.getAdditionalMimeTypes().map(mime => this.getLabelFromMimeType(mime));
476
+ const allTypes = [...extensions, ...mimeTypes];
477
+ const typesLabel = allTypes.join(', ');
478
+ let text = this.labelSupportedFormatsTemplate
479
+ .replace('{{types}}', typesLabel)
480
+ .replace('{{size}}', this.maxFileSizeMB.toString());
481
+ if (this.labelMaxFilesInfo && this.maxFiles) {
482
+ const fileWord = this.pluralize(this.maxFiles);
483
+ const maxFilesText = this.labelMaxFilesInfo
484
+ .replace('{{count}}', this.maxFiles.toString())
485
+ .replace('{{files}}', fileWord);
486
+ text += ` ${maxFilesText}`;
487
+ }
488
+ return text;
489
+ }
490
+ getFormattedFileTooLargeText() {
491
+ return this.labelFileTooLarge.replace('{{size}}', this.maxFileSizeMB.toString());
492
+ }
493
+ renderStatusMessage() {
494
+ if (!this.statusMessage)
495
+ return null;
496
+ return (index.h("div", { class: `file-upload-status file-upload-status__${this.statusMessage.type}` }, this.statusMessage.type === 'error' && (index.h("ifx-icon", { icon: "c-warning-16" })), this.statusMessage.text));
497
+ }
498
+ isInputDisabled() {
499
+ return this.disabled || (this.maxFiles !== undefined && this.files.length >= this.maxFiles);
500
+ }
501
+ componentDidLoad() {
502
+ if (this.hostElement.hasAttribute('show-demo-states')) {
503
+ this.showDemoStates = true;
504
+ }
505
+ if (this.showDemoStates) {
506
+ this.injectDemoState();
507
+ }
508
+ }
509
+ // Storybook Demo
510
+ async injectDemoState() {
511
+ const dummyContent = new Array(50000).fill('a').join(''); // ~50 KB
512
+ const bigContent = dummyContent + dummyContent; // ~100 KB
513
+ const uploading = new File([dummyContent], 'Image.jpg', { type: 'image/jpeg' }); // ~50 KB
514
+ const uploaded = new File([bigContent], 'File.pdf', { type: 'application/pdf' }); // ~100 KB
515
+ const failed = new File([dummyContent], 'Text.docx', { type: 'application/vnd.openxmlformats-officedocument.wordprocessingml.document' }); // ~50 KB
516
+ const tooLarge = new File([bigContent + bigContent + bigContent], 'Video.mp4', { type: 'video/mp4' }); // ~300 KB
517
+ const unsupported = new File(['demo'], 'Script.exe', { type: 'application/x-msdownload' }); // very small
518
+ this.files = [uploaded, uploading, failed];
519
+ this.uploadTasks = [
520
+ { file: uploaded, progress: 100, intervalId: null, completed: true },
521
+ { file: uploading, progress: 40, intervalId: null, completed: false },
522
+ { file: failed, progress: 80, intervalId: null, completed: false, error: true }
523
+ ];
524
+ this.rejectedSizeFiles = [tooLarge.name];
525
+ this.rejectedTypeFiles = [unsupported.name];
526
+ }
527
+ // Storybook Demo
528
+ async triggerDemoValidation() {
529
+ this.validateRequired();
530
+ }
531
+ render() {
532
+ return (index.h("div", { key: 'a80f89cee43ccff778f59842bb62e64e4b425753', class: {
533
+ 'file-upload-wrapper': true,
534
+ 'disabled': this.disabled
535
+ } }, this.label && (index.h("label", { key: 'b7de45f36b57f21185fc43173a90dd8fbda0b690', class: "file-upload-label", htmlFor: this.internalId }, this.label, this.required && (index.h("span", { key: 'd72b7c08c54f8fad7ea298df762b815eb565f648', class: `required ${this.requiredError ? 'error' : ''}` }, "*")))), this.dragAndDrop ? this.renderDragAndDropArea() : this.renderUploadArea(), (this.files.length > 0 || this.rejectedSizeFiles.length > 0 || this.rejectedTypeFiles.length > 0) && (index.h("div", { key: 'f0553b7a7f45764c416d5daa594aa9b1232f6399', class: "file-list-wrapper" }, index.h("div", { key: '56a0a3004b16ecb9bb348a274c2c2a286ca745e1', class: "upload-heading" }, this.labelUploadedFilesHeading), index.h("ul", { key: 'f0076761dab5015e5dd02f5ae8f8e4d65f5e9eef', class: "file-list" }, this.rejectedSizeFiles.map(fileName => (index.h("li", { class: "file-item upload-failed", key: `rejected-size-${fileName}` }, index.h("div", { class: "file-icon" }, index.h("ifx-icon", { icon: "file-16" })), index.h("div", { class: "file-info" }, index.h("div", { class: "file-top-row" }, index.h("span", { class: "file-name-wrapper" }, index.h("span", { class: "file-name-base" }, this.splitFileNameParts({ name: fileName }).base), index.h("span", { class: "file-name-ext" }, this.splitFileNameParts({ name: fileName }).ext)), index.h("div", { class: "file-actions" }, index.h("ifx-icon-button", { shape: "square", variant: "tertiary", icon: "delete-forever-16", size: "s", "aria-label": this.ariaLabelRemoveFile, onClick: () => this.clearRejectedFile(fileName, 'size') }))), index.h("div", { class: "file-middle-row" }, index.h("span", { class: "file-status", "aria-label": this.labelFileTooLarge.replace('{{size}}', this.maxFileSizeMB.toString()) }, this.getFormattedFileTooLargeText())))))), this.rejectedTypeFiles.map(fileName => (index.h("li", { class: "file-item upload-failed", key: `rejected-type-${fileName}` }, index.h("div", { class: "file-icon" }, index.h("ifx-icon", { icon: "file-16" })), index.h("div", { class: "file-info" }, index.h("div", { class: "file-top-row" }, index.h("span", { class: "file-name-wrapper" }, index.h("span", { class: "file-name-base" }, this.splitFileNameParts({ name: fileName }).base), index.h("span", { class: "file-name-ext" }, this.splitFileNameParts({ name: fileName }).ext)), index.h("div", { class: "file-actions" }, index.h("ifx-icon-button", { shape: "square", variant: "tertiary", icon: "delete-forever-16", size: "s", "aria-label": this.ariaLabelRemoveFile, onClick: () => this.clearRejectedFile(fileName, 'type') }))), index.h("div", { class: "file-middle-row" }, index.h("span", { class: "file-status", "aria-label": this.labelUnsupportedFileType }, this.labelUnsupportedFileType)))))), this.files.map((file) => {
536
+ var _a;
537
+ const task = this.uploadTasks.find(t => t.file.name === file.name);
538
+ const progress = (_a = task === null || task === void 0 ? void 0 : task.progress) !== null && _a !== void 0 ? _a : 100;
539
+ const isUploading = task && !task.completed;
540
+ const isError = (task === null || task === void 0 ? void 0 : task.error) === true;
541
+ const itemClass = isError ? 'file-item upload-failed' : isUploading ? 'file-item uploading' : 'file-item upload-success';
542
+ const uniqueKey = `${file.name}-${file.size}`;
543
+ const { base, ext } = this.splitFileNameParts(file);
544
+ return (index.h("li", { class: itemClass, key: uniqueKey }, index.h("div", { class: "file-icon" }, index.h("ifx-icon", { icon: this.getFileIcon(file) })), index.h("div", { class: "file-info" }, index.h("div", { class: "file-top-row" }, index.h("span", { class: "file-name-wrapper" }, index.h("span", { class: "file-name-base" }, base), index.h("span", { class: "file-name-ext" }, ext)), index.h("div", { class: "file-actions" }, index.h("ifx-icon-button", { shape: "square", variant: "tertiary", icon: "refresh-16", size: "s", "aria-label": this.ariaLabelRetryUpload, onClick: () => this.retryUpload(file), style: { display: isError ? 'inline-flex' : 'none' } }), index.h("ifx-icon-button", { shape: "square", variant: "tertiary", icon: "cross-16", size: "s", "aria-label": this.ariaLabelCancelUpload, onClick: () => this.cancelUpload(file), style: { display: isUploading ? 'inline-flex' : 'none' } }), index.h("ifx-icon-button", { shape: "square", variant: "tertiary", icon: "delete-forever-16", size: "s", "aria-label": this.ariaLabelRemoveFile, onClick: () => this.removeFile(file), style: { display: !isUploading ? 'inline-flex' : 'none' } }))), index.h("div", { class: "file-middle-row" }, isUploading && task && !task.error && (index.h("span", { class: "file-uploading", "aria-label": this.ariaLabelUploadingStatus }, this.getFormattedProgressText(task))), !isUploading && !isError && (index.h("span", null, index.h("span", { class: "file-size" }, this.formatSize(file.size)), index.h("span", { class: "file-status", "aria-label": this.ariaLabelUploadedStatus }, index.h("ifx-icon", { icon: "check-12" }), this.labelUploaded))), isError && (index.h("span", { class: "file-status", "aria-label": this.ariaLabelUploadFailedStatus }, this.labelUploadFailed))), isUploading && task && !task.error && (index.h("div", { class: "file-progress-row" }, index.h("ifx-progress-bar", { size: "s", value: progress, "show-label": "true" }))))));
545
+ }))))));
546
+ }
547
+ renderUploadArea() {
548
+ const handleInputRef = (el) => {
549
+ this.fileInputEl = el;
550
+ };
551
+ return (index.h("div", { class: { 'upload-button': true } }, index.h("ifx-button", { variant: "secondary", onClick: () => { var _a; return (_a = this.fileInputEl) === null || _a === void 0 ? void 0 : _a.click(); }, disabled: this.isInputDisabled(), "aria-label": this.ariaLabelBrowseFiles }, index.h("ifx-icon", { icon: "upload-16" }), this.labelBrowseFiles), index.h("input", { id: this.internalId, ref: handleInputRef, type: "file", accept: this.getAcceptAttribute(), multiple: true, onChange: (e) => this.handleFileChange(e), style: { display: 'none' }, disabled: this.isInputDisabled(), "aria-label": this.ariaLabelFileInput }), index.h("p", { class: "file-upload-info" }, this.getSupportedFileText()), this.renderStatusMessage()));
552
+ }
553
+ renderDragAndDropArea() {
554
+ const handleInputRef = (el) => {
555
+ this.fileInputEl = el;
556
+ };
557
+ const triggerInputClick = () => {
558
+ if (this.fileInputEl) {
559
+ this.fileInputEl.click();
560
+ }
561
+ };
562
+ return (index.h("div", { class: { 'disabled': this.isInputDisabled() } }, index.h("div", { class: { 'upload-dropzone': true, 'drag-over': this.isDragOver, 'error': this.requiredError }, onClick: triggerInputClick, onDragOver: (e) => this.handleDragOver(e), onDragLeave: (e) => this.handleDragLeave(e), onDrop: (e) => this.handleDrop(e), role: "button", tabIndex: 0, "aria-label": this.ariaLabelDropzone }, index.h("ifx-icon", { icon: "upload-24", class: "custom-icon" }), index.h("p", null, this.labelDragAndDrop), index.h("p", { class: "file-upload-info" }, this.getSupportedFileText()), index.h("div", { style: { height: '0px', overflow: 'hidden' } }, index.h("input", { id: this.internalId, ref: handleInputRef, type: "file", accept: this.getAcceptAttribute(), multiple: true, onChange: (e) => this.handleFileChange(e), disabled: this.isInputDisabled(), "aria-label": this.ariaLabelFileInput }))), this.renderStatusMessage()));
563
+ }
564
+ get hostElement() { return index.getElement(this); }
565
+ };
566
+ IfxFileUpload.style = IfxFileUploadStyle0;
567
+
568
+ exports.ifx_file_upload = IfxFileUpload;
569
+
570
+ //# sourceMappingURL=ifx-file-upload.cjs.entry.js.map