@spw-ds/spw-stencil-library 1.2.3 → 1.2.4

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 (661) hide show
  1. package/dist/cjs/{index-iVhYitTd.js → index-ivINMH9O.js} +5 -5
  2. package/dist/cjs/{index-iVhYitTd.js.map → index-ivINMH9O.js.map} +1 -1
  3. package/dist/cjs/loader.cjs.js +2 -2
  4. package/dist/cjs/spw-accordion.spw-accordion-content.spw-accordion-item.spw-accordion-title.entry.cjs.js.map +1 -1
  5. package/dist/cjs/spw-accordion_4.cjs.entry.js +3 -3
  6. package/dist/cjs/spw-accordion_4.cjs.entry.js.map +1 -1
  7. package/dist/cjs/spw-breadcrumb-item.cjs.entry.js +1 -1
  8. package/dist/cjs/spw-breadcrumb.cjs.entry.js +1 -1
  9. package/dist/cjs/spw-button_2.cjs.entry.js +5 -5
  10. package/dist/cjs/spw-card-content.cjs.entry.js +2 -2
  11. package/dist/cjs/spw-card-excerpt.cjs.entry.js +1 -1
  12. package/dist/cjs/spw-card-image.cjs.entry.js +1 -1
  13. package/dist/cjs/spw-card-subtag-item.cjs.entry.js +1 -1
  14. package/dist/cjs/spw-card-subtags.cjs.entry.js +1 -1
  15. package/dist/cjs/spw-card-title.cjs.entry.js +1 -1
  16. package/dist/cjs/spw-card.cjs.entry.js +1 -1
  17. package/dist/cjs/spw-checkbox.cjs.entry.js +3 -3
  18. package/dist/cjs/spw-checkbox.cjs.entry.js.map +1 -1
  19. package/dist/cjs/spw-checkbox.entry.cjs.js.map +1 -1
  20. package/dist/cjs/spw-cookies.cjs.entry.js +1 -1
  21. package/dist/cjs/spw-custom-select.cjs.entry.js +23 -5
  22. package/dist/cjs/spw-custom-select.cjs.entry.js.map +1 -1
  23. package/dist/cjs/spw-custom-select.entry.cjs.js.map +1 -1
  24. package/dist/cjs/spw-date-picker.cjs.entry.js +195 -34
  25. package/dist/cjs/spw-date-picker.cjs.entry.js.map +1 -1
  26. package/dist/cjs/spw-date-picker.entry.cjs.js.map +1 -1
  27. package/dist/cjs/spw-dropdown-container.cjs.entry.js +20 -0
  28. package/dist/cjs/spw-dropdown-container.cjs.entry.js.map +1 -0
  29. package/dist/cjs/spw-dropdown-container.entry.cjs.js.map +1 -0
  30. package/dist/cjs/spw-dropdown-item.cjs.entry.js +87 -0
  31. package/dist/cjs/spw-dropdown-item.cjs.entry.js.map +1 -0
  32. package/dist/cjs/spw-dropdown-item.entry.cjs.js.map +1 -0
  33. package/dist/cjs/spw-dropdown.cjs.entry.js +2 -2
  34. package/dist/cjs/spw-dropdown.cjs.entry.js.map +1 -1
  35. package/dist/cjs/spw-dropdown.entry.cjs.js.map +1 -1
  36. package/dist/cjs/spw-field-label_6.cjs.entry.js +7 -7
  37. package/dist/cjs/spw-field-message.cjs.entry.js +2 -2
  38. package/dist/cjs/spw-file-upload.cjs.entry.js +6 -5
  39. package/dist/cjs/spw-file-upload.cjs.entry.js.map +1 -1
  40. package/dist/cjs/spw-file-upload.entry.cjs.js.map +1 -1
  41. package/dist/cjs/spw-footer-bottom.cjs.entry.js +2 -2
  42. package/dist/cjs/spw-footer-content-col.cjs.entry.js +2 -2
  43. package/dist/cjs/spw-footer-content.cjs.entry.js +2 -2
  44. package/dist/cjs/spw-footer-link.cjs.entry.js +2 -2
  45. package/dist/cjs/spw-footer.cjs.entry.js +2 -2
  46. package/dist/cjs/spw-header-lang-item.cjs.entry.js +2 -2
  47. package/dist/cjs/spw-header-lang.cjs.entry.js +2 -2
  48. package/dist/cjs/spw-header-navigation-dropdown.cjs.entry.js +2 -2
  49. package/dist/cjs/spw-header-navigation-item.cjs.entry.js +3 -3
  50. package/dist/cjs/spw-header-navigation.cjs.entry.js +2 -2
  51. package/dist/cjs/spw-header-persona-item.cjs.entry.js +2 -2
  52. package/dist/cjs/spw-header-persona.cjs.entry.js +2 -2
  53. package/dist/cjs/spw-header.cjs.entry.js +2 -2
  54. package/dist/cjs/spw-hero.cjs.entry.js +2 -2
  55. package/dist/cjs/spw-illustration.cjs.entry.js +1 -1
  56. package/dist/cjs/spw-iodda.cjs.entry.js +2 -2
  57. package/dist/cjs/spw-list-description.cjs.entry.js +2 -2
  58. package/dist/cjs/spw-list-item.cjs.entry.js +2 -2
  59. package/dist/cjs/spw-list-title.cjs.entry.js +2 -2
  60. package/dist/cjs/spw-list.cjs.entry.js +2 -2
  61. package/dist/cjs/spw-message.cjs.entry.js +1 -1
  62. package/dist/cjs/spw-modal.cjs.entry.js +4 -4
  63. package/dist/cjs/spw-mosaic-item.cjs.entry.js +2 -2
  64. package/dist/cjs/spw-mosaic.cjs.entry.js +2 -2
  65. package/dist/cjs/spw-pagination.cjs.entry.js +8 -8
  66. package/dist/cjs/spw-radio.cjs.entry.js +3 -3
  67. package/dist/cjs/spw-search-field.cjs.entry.js +3 -3
  68. package/dist/cjs/spw-select.cjs.entry.js +13 -3
  69. package/dist/cjs/spw-select.cjs.entry.js.map +1 -1
  70. package/dist/cjs/spw-select.entry.cjs.js.map +1 -1
  71. package/dist/cjs/spw-sidebar-navigation-dropdown.cjs.entry.js +2 -2
  72. package/dist/cjs/spw-sidebar-navigation-item.cjs.entry.js +85 -7
  73. package/dist/cjs/spw-sidebar-navigation-item.cjs.entry.js.map +1 -1
  74. package/dist/cjs/spw-sidebar-navigation-item.entry.cjs.js.map +1 -1
  75. package/dist/cjs/spw-sidebar-navigation-separator.cjs.entry.js +2 -2
  76. package/dist/cjs/spw-sidebar.cjs.entry.js +10 -2
  77. package/dist/cjs/spw-sidebar.cjs.entry.js.map +1 -1
  78. package/dist/cjs/spw-sidebar.entry.cjs.js.map +1 -1
  79. package/dist/cjs/spw-skeleton.cjs.entry.js +5 -3
  80. package/dist/cjs/spw-skeleton.cjs.entry.js.map +1 -1
  81. package/dist/cjs/spw-skeleton.entry.cjs.js.map +1 -1
  82. package/dist/cjs/spw-socials.cjs.entry.js +2 -2
  83. package/dist/cjs/spw-stencil-library.cjs.js +2 -2
  84. package/dist/cjs/spw-table-body.cjs.entry.js +2 -2
  85. package/dist/cjs/spw-table-cell.cjs.entry.js +33 -3
  86. package/dist/cjs/spw-table-cell.cjs.entry.js.map +1 -1
  87. package/dist/cjs/spw-table-cell.entry.cjs.js.map +1 -1
  88. package/dist/cjs/spw-table-footer.cjs.entry.js +3 -3
  89. package/dist/cjs/spw-table-footer.cjs.entry.js.map +1 -1
  90. package/dist/cjs/spw-table-footer.entry.cjs.js.map +1 -1
  91. package/dist/cjs/spw-table-head.cjs.entry.js +2 -2
  92. package/dist/cjs/spw-table-header.cjs.entry.js +4 -4
  93. package/dist/cjs/spw-table-row.cjs.entry.js +2 -2
  94. package/dist/cjs/spw-table.cjs.entry.js +47 -7
  95. package/dist/cjs/spw-table.cjs.entry.js.map +1 -1
  96. package/dist/cjs/spw-table.entry.cjs.js.map +1 -1
  97. package/dist/cjs/spw-tabs-content.cjs.entry.js +1 -1
  98. package/dist/cjs/spw-tabs-navigation-item.cjs.entry.js +3 -3
  99. package/dist/cjs/spw-tabs-navigation.cjs.entry.js +2 -2
  100. package/dist/cjs/spw-tabs.cjs.entry.js +6 -4
  101. package/dist/cjs/spw-tabs.cjs.entry.js.map +1 -1
  102. package/dist/cjs/spw-tabs.entry.cjs.js.map +1 -1
  103. package/dist/cjs/spw-tag.cjs.entry.js +2 -2
  104. package/dist/cjs/spw-text-field.cjs.entry.js +3 -3
  105. package/dist/cjs/spw-textarea.cjs.entry.js +3 -3
  106. package/dist/cjs/spw-tile-description.cjs.entry.js +2 -2
  107. package/dist/cjs/spw-tile-title.cjs.entry.js +2 -2
  108. package/dist/cjs/spw-tile.cjs.entry.js +2 -2
  109. package/dist/cjs/spw-tooltip.cjs.entry.js +2 -2
  110. package/dist/cjs/spw-topbar.cjs.entry.js +2 -2
  111. package/dist/cjs/spw-wizard-item.cjs.entry.js +64 -0
  112. package/dist/cjs/spw-wizard-item.cjs.entry.js.map +1 -0
  113. package/dist/cjs/spw-wizard-item.entry.cjs.js.map +1 -0
  114. package/dist/cjs/spw-wizard.cjs.entry.js +90 -0
  115. package/dist/cjs/spw-wizard.cjs.entry.js.map +1 -0
  116. package/dist/cjs/spw-wizard.entry.cjs.js.map +1 -0
  117. package/dist/cjs/{utils-CKYAw_Le.js → utils-D_vNTY6w.js} +3 -3
  118. package/dist/cjs/{utils-CKYAw_Le.js.map → utils-D_vNTY6w.js.map} +1 -1
  119. package/dist/collection/collection-manifest.json +5 -1
  120. package/dist/collection/components/spw-accordion/spw-accordion-item/spw-accordion-item.css +1 -1
  121. package/dist/collection/components/spw-checkbox/spw-checkbox.css +1 -1
  122. package/dist/collection/components/spw-custom-select/spw-custom-select.js +42 -3
  123. package/dist/collection/components/spw-custom-select/spw-custom-select.js.map +1 -1
  124. package/dist/collection/components/spw-date-picker/spw-date-picker.css +1 -1
  125. package/dist/collection/components/spw-date-picker/spw-date-picker.js +240 -29
  126. package/dist/collection/components/spw-date-picker/spw-date-picker.js.map +1 -1
  127. package/dist/collection/components/spw-dropdown/spw-dropdown-container/spw-dropdown-container.css +2 -0
  128. package/dist/collection/components/spw-dropdown/spw-dropdown-container/spw-dropdown-container.js +19 -0
  129. package/dist/collection/components/spw-dropdown/spw-dropdown-container/spw-dropdown-container.js.map +1 -0
  130. package/dist/collection/components/spw-dropdown/spw-dropdown-item/spw-dropdown-item.css +2 -0
  131. package/dist/collection/components/spw-dropdown/spw-dropdown-item/spw-dropdown-item.js +175 -0
  132. package/dist/collection/components/spw-dropdown/spw-dropdown-item/spw-dropdown-item.js.map +1 -0
  133. package/dist/collection/components/spw-dropdown/spw-dropdown.js +2 -2
  134. package/dist/collection/components/spw-dropdown/spw-dropdown.js.map +1 -1
  135. package/dist/collection/components/spw-field-label/spw-field-label.js +1 -1
  136. package/dist/collection/components/spw-field-message/spw-field-message.js +1 -1
  137. package/dist/collection/components/spw-file-upload/spw-file-upload.js +3 -2
  138. package/dist/collection/components/spw-file-upload/spw-file-upload.js.map +1 -1
  139. package/dist/collection/components/spw-footer/spw-footer-bottom/spw-footer-bottom.js +1 -1
  140. package/dist/collection/components/spw-footer/spw-footer-content/spw-footer-content.js +1 -1
  141. package/dist/collection/components/spw-footer/spw-footer-content-col/spw-footer-content-col.js +1 -1
  142. package/dist/collection/components/spw-footer/spw-footer-link/spw-footer-link.js +1 -1
  143. package/dist/collection/components/spw-footer/spw-footer.js +1 -1
  144. package/dist/collection/components/spw-group/spw-group.js +1 -1
  145. package/dist/collection/components/spw-header/spw-header-lang/spw-header-lang.js +1 -1
  146. package/dist/collection/components/spw-header/spw-header-lang-item/spw-header-lang-item.js +1 -1
  147. package/dist/collection/components/spw-header/spw-header-navigation/spw-header-navigation.js +1 -1
  148. package/dist/collection/components/spw-header/spw-header-navigation-dropdown/spw-header-navigation-dropdown.js +1 -1
  149. package/dist/collection/components/spw-header/spw-header-navigation-item/spw-header-navigation-item.js +1 -1
  150. package/dist/collection/components/spw-header/spw-header-persona/spw-header-persona.js +1 -1
  151. package/dist/collection/components/spw-header/spw-header-persona-item/spw-header-persona-item.js +1 -1
  152. package/dist/collection/components/spw-header/spw-header.js +1 -1
  153. package/dist/collection/components/spw-hero/spw-hero.js +1 -1
  154. package/dist/collection/components/spw-iodda/spw-iodda.js +1 -1
  155. package/dist/collection/components/spw-link/spw-link.js +1 -1
  156. package/dist/collection/components/spw-list/spw-list-description/spw-list-description.js +1 -1
  157. package/dist/collection/components/spw-list/spw-list-item/spw-list-item.js +1 -1
  158. package/dist/collection/components/spw-list/spw-list-title/spw-list-title.js +1 -1
  159. package/dist/collection/components/spw-list/spw-list.js +1 -1
  160. package/dist/collection/components/spw-loading/spw-loading.js +1 -1
  161. package/dist/collection/components/spw-modal/spw-modal.js +1 -1
  162. package/dist/collection/components/spw-mosaic/spw-mosaic-item/spw-mosaic-item.js +1 -1
  163. package/dist/collection/components/spw-mosaic/spw-mosaic.js +1 -1
  164. package/dist/collection/components/spw-pagination/spw-pagination.js +6 -6
  165. package/dist/collection/components/spw-radio/spw-radio.js +1 -1
  166. package/dist/collection/components/spw-search-field/spw-search-field.js +2 -2
  167. package/dist/collection/components/spw-select/spw-select.js +32 -1
  168. package/dist/collection/components/spw-select/spw-select.js.map +1 -1
  169. package/dist/collection/components/spw-separator/spw-separator.js +1 -1
  170. package/dist/collection/components/spw-sidebar/spw-sidebar-navigation-dropdown/spw-sidebar-navigation-dropdown.js +1 -1
  171. package/dist/collection/components/spw-sidebar/spw-sidebar-navigation-item/spw-sidebar-navigation-item.css +1 -1
  172. package/dist/collection/components/spw-sidebar/spw-sidebar-navigation-item/spw-sidebar-navigation-item.js +105 -6
  173. package/dist/collection/components/spw-sidebar/spw-sidebar-navigation-item/spw-sidebar-navigation-item.js.map +1 -1
  174. package/dist/collection/components/spw-sidebar/spw-sidebar-navigation-separator/spw-sidebar-navigation-separator.js +1 -1
  175. package/dist/collection/components/spw-sidebar/spw-sidebar.js +9 -1
  176. package/dist/collection/components/spw-sidebar/spw-sidebar.js.map +1 -1
  177. package/dist/collection/components/spw-skeleton/spw-skeleton.js +4 -2
  178. package/dist/collection/components/spw-skeleton/spw-skeleton.js.map +1 -1
  179. package/dist/collection/components/spw-socials/spw-socials.js +1 -1
  180. package/dist/collection/components/spw-table/spw-table-body/spw-table-body.js +1 -1
  181. package/dist/collection/components/spw-table/spw-table-cell/spw-table-cell.css +1 -1
  182. package/dist/collection/components/spw-table/spw-table-cell/spw-table-cell.js +56 -1
  183. package/dist/collection/components/spw-table/spw-table-cell/spw-table-cell.js.map +1 -1
  184. package/dist/collection/components/spw-table/spw-table-footer/spw-table-footer.css +1 -1
  185. package/dist/collection/components/spw-table/spw-table-footer/spw-table-footer.js +1 -1
  186. package/dist/collection/components/spw-table/spw-table-head/spw-table-head.js +1 -1
  187. package/dist/collection/components/spw-table/spw-table-header/spw-table-header.js +2 -2
  188. package/dist/collection/components/spw-table/spw-table-row/spw-table-row.js +1 -1
  189. package/dist/collection/components/spw-table/spw-table.css +1 -1
  190. package/dist/collection/components/spw-table/spw-table.js +110 -9
  191. package/dist/collection/components/spw-table/spw-table.js.map +1 -1
  192. package/dist/collection/components/spw-tabs/spw-tabs-navigation/spw-tabs-navigation.js +1 -1
  193. package/dist/collection/components/spw-tabs/spw-tabs-navigation-item/spw-tabs-navigation-item.js +1 -1
  194. package/dist/collection/components/spw-tabs/spw-tabs.js +6 -4
  195. package/dist/collection/components/spw-tabs/spw-tabs.js.map +1 -1
  196. package/dist/collection/components/spw-tag/spw-tag.js +1 -1
  197. package/dist/collection/components/spw-text-field/spw-text-field.js +1 -1
  198. package/dist/collection/components/spw-textarea/spw-textarea.js +1 -1
  199. package/dist/collection/components/spw-theme-provider/spw-theme-provider.js +1 -1
  200. package/dist/collection/components/spw-tile/spw-tile-description/spw-tile-description.js +1 -1
  201. package/dist/collection/components/spw-tile/spw-tile-title/spw-tile-title.js +1 -1
  202. package/dist/collection/components/spw-tile/spw-tile.js +1 -1
  203. package/dist/collection/components/spw-tooltip/spw-tooltip.js +1 -1
  204. package/dist/collection/components/spw-topbar/spw-topbar.js +1 -1
  205. package/dist/collection/components/spw-wizard/spw-wizard-item/spw-wizard-item.css +2 -0
  206. package/dist/collection/components/spw-wizard/spw-wizard-item/spw-wizard-item.js +339 -0
  207. package/dist/collection/components/spw-wizard/spw-wizard-item/spw-wizard-item.js.map +1 -0
  208. package/dist/collection/components/spw-wizard/spw-wizard.css +2 -0
  209. package/dist/collection/components/spw-wizard/spw-wizard.js +192 -0
  210. package/dist/collection/components/spw-wizard/spw-wizard.js.map +1 -0
  211. package/dist/collection/stories/components/spw-date-picker/spw-date-picker.stories.js +46 -1
  212. package/dist/collection/stories/components/spw-date-picker/spw-date-picker.stories.js.map +1 -1
  213. package/dist/collection/stories/organisms/spw-header/spw-header.stories.js +1 -1
  214. package/dist/collection/stories/organisms/spw-header/spw-header.stories.js.map +1 -1
  215. package/dist/collection/stories/organisms/spw-table/spw-table.stories.js +119 -0
  216. package/dist/collection/stories/organisms/spw-table/spw-table.stories.js.map +1 -1
  217. package/dist/collection/stories/organisms/spw-wizard/spw-wizard.stories.js +208 -0
  218. package/dist/collection/stories/organisms/spw-wizard/spw-wizard.stories.js.map +1 -0
  219. package/dist/collection/utils/utils.js +1 -1
  220. package/dist/collection/utils/utils.js.map +1 -1
  221. package/dist/components/index.js +3 -3
  222. package/dist/components/index.js.map +1 -1
  223. package/dist/components/{p-B-sLKmnT.js → p-AjhBdYbk.js} +6 -6
  224. package/dist/components/{p-B-sLKmnT.js.map → p-AjhBdYbk.js.map} +1 -1
  225. package/dist/components/{p-zpG0udTn.js → p-BBi01mKM.js} +3 -3
  226. package/dist/components/{p-zpG0udTn.js.map → p-BBi01mKM.js.map} +1 -1
  227. package/dist/components/{p-DIhULKFM.js → p-Bvpi6byK.js} +3 -3
  228. package/dist/components/{p-DIhULKFM.js.map → p-Bvpi6byK.js.map} +1 -1
  229. package/dist/components/{p-GUYao_6w.js → p-CNNUoO2J.js} +4 -4
  230. package/dist/components/{p-GUYao_6w.js.map → p-CNNUoO2J.js.map} +1 -1
  231. package/dist/components/{p-fNRoK67L.js → p-CVuBJlFL.js} +3 -3
  232. package/dist/components/{p-fNRoK67L.js.map → p-CVuBJlFL.js.map} +1 -1
  233. package/dist/components/{p-B3OQ2nRI.js → p-D4PsQ_SH.js} +4 -4
  234. package/dist/components/p-D4PsQ_SH.js.map +1 -0
  235. package/dist/components/p-DHBpMBYT.js +129 -0
  236. package/dist/components/p-DHBpMBYT.js.map +1 -0
  237. package/dist/components/{p-BDRCqK1w.js → p-J5AA2xQI.js} +3 -3
  238. package/dist/components/{p-BDRCqK1w.js.map → p-J5AA2xQI.js.map} +1 -1
  239. package/dist/components/{p-Dku0Cksp.js → p-_sdYD0eS.js} +6 -6
  240. package/dist/components/{p-Dku0Cksp.js.map → p-_sdYD0eS.js.map} +1 -1
  241. package/dist/components/{p-DaosfSzT.js → p-du-Bai6S.js} +12 -12
  242. package/dist/components/{p-DaosfSzT.js.map → p-du-Bai6S.js.map} +1 -1
  243. package/dist/components/{p-BF73GiQU.js → p-qgvllwX6.js} +3 -3
  244. package/dist/components/{p-BF73GiQU.js.map → p-qgvllwX6.js.map} +1 -1
  245. package/dist/components/{p-BowHA3gk.js → p-t1vZcpqC.js} +3 -3
  246. package/dist/components/{p-BowHA3gk.js.map → p-t1vZcpqC.js.map} +1 -1
  247. package/dist/components/spw-accordion-item.js +1 -1
  248. package/dist/components/spw-breadcrumb-item.js +1 -1
  249. package/dist/components/spw-button.js +1 -1
  250. package/dist/components/spw-card-content.js +1 -1
  251. package/dist/components/spw-checkbox.js +1 -1
  252. package/dist/components/spw-cookies.js +4 -4
  253. package/dist/components/spw-custom-select.js +27 -8
  254. package/dist/components/spw-custom-select.js.map +1 -1
  255. package/dist/components/spw-date-picker.js +203 -38
  256. package/dist/components/spw-date-picker.js.map +1 -1
  257. package/dist/components/spw-dropdown-container.d.ts +11 -0
  258. package/dist/components/spw-dropdown-container.js +36 -0
  259. package/dist/components/spw-dropdown-container.js.map +1 -0
  260. package/dist/components/spw-dropdown-item.d.ts +11 -0
  261. package/dist/components/spw-dropdown-item.js +115 -0
  262. package/dist/components/spw-dropdown-item.js.map +1 -0
  263. package/dist/components/spw-dropdown.js +1 -1
  264. package/dist/components/spw-dropdown.js.map +1 -1
  265. package/dist/components/spw-field-label.js +1 -1
  266. package/dist/components/spw-field-message.js +1 -1
  267. package/dist/components/spw-file-upload.js +7 -6
  268. package/dist/components/spw-file-upload.js.map +1 -1
  269. package/dist/components/spw-footer-bottom.js +1 -1
  270. package/dist/components/spw-footer-content-col.js +1 -1
  271. package/dist/components/spw-footer-content.js +1 -1
  272. package/dist/components/spw-footer-link.js +1 -1
  273. package/dist/components/spw-footer.js +1 -1
  274. package/dist/components/spw-group.js +2 -2
  275. package/dist/components/spw-header-lang-item.js +1 -1
  276. package/dist/components/spw-header-lang.js +3 -3
  277. package/dist/components/spw-header-navigation-dropdown.js +1 -1
  278. package/dist/components/spw-header-navigation-item.js +2 -2
  279. package/dist/components/spw-header-navigation.js +1 -1
  280. package/dist/components/spw-header-persona-item.js +1 -1
  281. package/dist/components/spw-header-persona.js +1 -1
  282. package/dist/components/spw-header.js +3 -3
  283. package/dist/components/spw-hero.js +1 -1
  284. package/dist/components/spw-iodda.js +6 -6
  285. package/dist/components/spw-link.js +1 -1
  286. package/dist/components/spw-list-description.js +1 -1
  287. package/dist/components/spw-list-item.js +1 -1
  288. package/dist/components/spw-list-title.js +1 -1
  289. package/dist/components/spw-list.js +1 -1
  290. package/dist/components/spw-loading.js +1 -1
  291. package/dist/components/spw-message.js +1 -1
  292. package/dist/components/spw-modal.js +3 -3
  293. package/dist/components/spw-mosaic-item.js +1 -1
  294. package/dist/components/spw-mosaic.js +1 -1
  295. package/dist/components/spw-pagination.js +1 -1
  296. package/dist/components/spw-radio.js +2 -2
  297. package/dist/components/spw-search-field.js +5 -5
  298. package/dist/components/spw-select.js +16 -5
  299. package/dist/components/spw-select.js.map +1 -1
  300. package/dist/components/spw-separator.js +1 -1
  301. package/dist/components/spw-sidebar-navigation-dropdown.js +1 -1
  302. package/dist/components/spw-sidebar-navigation-item.js +88 -8
  303. package/dist/components/spw-sidebar-navigation-item.js.map +1 -1
  304. package/dist/components/spw-sidebar-navigation-separator.js +2 -2
  305. package/dist/components/spw-sidebar.js +9 -1
  306. package/dist/components/spw-sidebar.js.map +1 -1
  307. package/dist/components/spw-skeleton.js +4 -2
  308. package/dist/components/spw-skeleton.js.map +1 -1
  309. package/dist/components/spw-socials.js +1 -1
  310. package/dist/components/spw-table-body.js +1 -1
  311. package/dist/components/spw-table-cell.js +35 -3
  312. package/dist/components/spw-table-cell.js.map +1 -1
  313. package/dist/components/spw-table-footer.js +2 -2
  314. package/dist/components/spw-table-footer.js.map +1 -1
  315. package/dist/components/spw-table-head.js +1 -1
  316. package/dist/components/spw-table-header.js +4 -4
  317. package/dist/components/spw-table-row.js +1 -1
  318. package/dist/components/spw-table.js +52 -8
  319. package/dist/components/spw-table.js.map +1 -1
  320. package/dist/components/spw-tabs-navigation-item.js +3 -3
  321. package/dist/components/spw-tabs-navigation.js +1 -1
  322. package/dist/components/spw-tabs.js +5 -3
  323. package/dist/components/spw-tabs.js.map +1 -1
  324. package/dist/components/spw-tag.js +1 -1
  325. package/dist/components/spw-text-field.js +1 -1
  326. package/dist/components/spw-textarea.js +4 -4
  327. package/dist/components/spw-theme-provider.js +1 -1
  328. package/dist/components/spw-tile-description.js +1 -1
  329. package/dist/components/spw-tile-title.js +1 -1
  330. package/dist/components/spw-tile.js +1 -1
  331. package/dist/components/spw-tooltip.js +1 -1
  332. package/dist/components/spw-topbar.js +1 -1
  333. package/dist/components/spw-wizard-item.d.ts +11 -0
  334. package/dist/components/spw-wizard-item.js +100 -0
  335. package/dist/components/spw-wizard-item.js.map +1 -0
  336. package/dist/components/spw-wizard.d.ts +11 -0
  337. package/dist/components/spw-wizard.js +110 -0
  338. package/dist/components/spw-wizard.js.map +1 -0
  339. package/dist/components_json.json +943 -14
  340. package/dist/esm/{index-BYM_CUUH.js → index-CvfVJV8a.js} +5 -5
  341. package/dist/esm/{index-BYM_CUUH.js.map → index-CvfVJV8a.js.map} +1 -1
  342. package/dist/esm/loader.js +3 -3
  343. package/dist/esm/spw-accordion.spw-accordion-content.spw-accordion-item.spw-accordion-title.entry.js.map +1 -1
  344. package/dist/esm/spw-accordion_4.entry.js +3 -3
  345. package/dist/esm/spw-accordion_4.entry.js.map +1 -1
  346. package/dist/esm/spw-breadcrumb-item.entry.js +1 -1
  347. package/dist/esm/spw-breadcrumb.entry.js +1 -1
  348. package/dist/esm/spw-button_2.entry.js +5 -5
  349. package/dist/esm/spw-card-content.entry.js +2 -2
  350. package/dist/esm/spw-card-excerpt.entry.js +1 -1
  351. package/dist/esm/spw-card-image.entry.js +1 -1
  352. package/dist/esm/spw-card-subtag-item.entry.js +1 -1
  353. package/dist/esm/spw-card-subtags.entry.js +1 -1
  354. package/dist/esm/spw-card-title.entry.js +1 -1
  355. package/dist/esm/spw-card.entry.js +1 -1
  356. package/dist/esm/spw-checkbox.entry.js +3 -3
  357. package/dist/esm/spw-checkbox.entry.js.map +1 -1
  358. package/dist/esm/spw-cookies.entry.js +1 -1
  359. package/dist/esm/spw-custom-select.entry.js +23 -5
  360. package/dist/esm/spw-custom-select.entry.js.map +1 -1
  361. package/dist/esm/spw-date-picker.entry.js +195 -34
  362. package/dist/esm/spw-date-picker.entry.js.map +1 -1
  363. package/dist/esm/spw-dropdown-container.entry.js +18 -0
  364. package/dist/esm/spw-dropdown-container.entry.js.map +1 -0
  365. package/dist/esm/spw-dropdown-item.entry.js +85 -0
  366. package/dist/esm/spw-dropdown-item.entry.js.map +1 -0
  367. package/dist/esm/spw-dropdown.entry.js +2 -2
  368. package/dist/esm/spw-dropdown.entry.js.map +1 -1
  369. package/dist/esm/spw-field-label_6.entry.js +7 -7
  370. package/dist/esm/spw-field-message.entry.js +2 -2
  371. package/dist/esm/spw-file-upload.entry.js +6 -5
  372. package/dist/esm/spw-file-upload.entry.js.map +1 -1
  373. package/dist/esm/spw-footer-bottom.entry.js +2 -2
  374. package/dist/esm/spw-footer-content-col.entry.js +2 -2
  375. package/dist/esm/spw-footer-content.entry.js +2 -2
  376. package/dist/esm/spw-footer-link.entry.js +2 -2
  377. package/dist/esm/spw-footer.entry.js +2 -2
  378. package/dist/esm/spw-header-lang-item.entry.js +2 -2
  379. package/dist/esm/spw-header-lang.entry.js +2 -2
  380. package/dist/esm/spw-header-navigation-dropdown.entry.js +2 -2
  381. package/dist/esm/spw-header-navigation-item.entry.js +3 -3
  382. package/dist/esm/spw-header-navigation.entry.js +2 -2
  383. package/dist/esm/spw-header-persona-item.entry.js +2 -2
  384. package/dist/esm/spw-header-persona.entry.js +2 -2
  385. package/dist/esm/spw-header.entry.js +2 -2
  386. package/dist/esm/spw-hero.entry.js +2 -2
  387. package/dist/esm/spw-illustration.entry.js +1 -1
  388. package/dist/esm/spw-iodda.entry.js +2 -2
  389. package/dist/esm/spw-list-description.entry.js +2 -2
  390. package/dist/esm/spw-list-item.entry.js +2 -2
  391. package/dist/esm/spw-list-title.entry.js +2 -2
  392. package/dist/esm/spw-list.entry.js +2 -2
  393. package/dist/esm/spw-message.entry.js +1 -1
  394. package/dist/esm/spw-modal.entry.js +4 -4
  395. package/dist/esm/spw-mosaic-item.entry.js +2 -2
  396. package/dist/esm/spw-mosaic.entry.js +2 -2
  397. package/dist/esm/spw-pagination.entry.js +8 -8
  398. package/dist/esm/spw-radio.entry.js +3 -3
  399. package/dist/esm/spw-search-field.entry.js +3 -3
  400. package/dist/esm/spw-select.entry.js +13 -3
  401. package/dist/esm/spw-select.entry.js.map +1 -1
  402. package/dist/esm/spw-sidebar-navigation-dropdown.entry.js +2 -2
  403. package/dist/esm/spw-sidebar-navigation-item.entry.js +85 -7
  404. package/dist/esm/spw-sidebar-navigation-item.entry.js.map +1 -1
  405. package/dist/esm/spw-sidebar-navigation-separator.entry.js +2 -2
  406. package/dist/esm/spw-sidebar.entry.js +10 -2
  407. package/dist/esm/spw-sidebar.entry.js.map +1 -1
  408. package/dist/esm/spw-skeleton.entry.js +5 -3
  409. package/dist/esm/spw-skeleton.entry.js.map +1 -1
  410. package/dist/esm/spw-socials.entry.js +2 -2
  411. package/dist/esm/spw-stencil-library.js +3 -3
  412. package/dist/esm/spw-table-body.entry.js +2 -2
  413. package/dist/esm/spw-table-cell.entry.js +33 -3
  414. package/dist/esm/spw-table-cell.entry.js.map +1 -1
  415. package/dist/esm/spw-table-footer.entry.js +3 -3
  416. package/dist/esm/spw-table-footer.entry.js.map +1 -1
  417. package/dist/esm/spw-table-head.entry.js +2 -2
  418. package/dist/esm/spw-table-header.entry.js +4 -4
  419. package/dist/esm/spw-table-row.entry.js +2 -2
  420. package/dist/esm/spw-table.entry.js +47 -7
  421. package/dist/esm/spw-table.entry.js.map +1 -1
  422. package/dist/esm/spw-tabs-content.entry.js +1 -1
  423. package/dist/esm/spw-tabs-navigation-item.entry.js +3 -3
  424. package/dist/esm/spw-tabs-navigation.entry.js +2 -2
  425. package/dist/esm/spw-tabs.entry.js +6 -4
  426. package/dist/esm/spw-tabs.entry.js.map +1 -1
  427. package/dist/esm/spw-tag.entry.js +2 -2
  428. package/dist/esm/spw-text-field.entry.js +3 -3
  429. package/dist/esm/spw-textarea.entry.js +3 -3
  430. package/dist/esm/spw-tile-description.entry.js +2 -2
  431. package/dist/esm/spw-tile-title.entry.js +2 -2
  432. package/dist/esm/spw-tile.entry.js +2 -2
  433. package/dist/esm/spw-tooltip.entry.js +2 -2
  434. package/dist/esm/spw-topbar.entry.js +2 -2
  435. package/dist/esm/spw-wizard-item.entry.js +62 -0
  436. package/dist/esm/spw-wizard-item.entry.js.map +1 -0
  437. package/dist/esm/spw-wizard.entry.js +88 -0
  438. package/dist/esm/spw-wizard.entry.js.map +1 -0
  439. package/dist/esm/{utils-zpG0udTn.js → utils-BBi01mKM.js} +3 -3
  440. package/dist/esm/{utils-zpG0udTn.js.map → utils-BBi01mKM.js.map} +1 -1
  441. package/dist/spw-stencil-library/{p-e2f03a02.entry.js → p-000f04a1.entry.js} +2 -2
  442. package/dist/spw-stencil-library/{p-e2f03a02.entry.js.map → p-000f04a1.entry.js.map} +1 -1
  443. package/dist/spw-stencil-library/{p-f5de314e.entry.js → p-06cb6865.entry.js} +2 -2
  444. package/dist/spw-stencil-library/{p-52c51ac5.entry.js → p-06ec3521.entry.js} +2 -2
  445. package/dist/spw-stencil-library/{p-0226ad72.entry.js → p-0baeea00.entry.js} +2 -2
  446. package/dist/spw-stencil-library/p-0e1ec1e6.entry.js +2 -0
  447. package/dist/spw-stencil-library/p-0e1ec1e6.entry.js.map +1 -0
  448. package/dist/spw-stencil-library/{p-fbe468de.entry.js → p-2113f2f6.entry.js} +2 -2
  449. package/dist/spw-stencil-library/{p-44d87d3f.entry.js → p-22f972ca.entry.js} +2 -2
  450. package/dist/spw-stencil-library/{p-181ae002.entry.js → p-25329033.entry.js} +2 -2
  451. package/dist/spw-stencil-library/{p-9219fe7c.entry.js → p-2abc48ed.entry.js} +2 -2
  452. package/dist/spw-stencil-library/{p-3ab472db.entry.js → p-2b011668.entry.js} +2 -2
  453. package/dist/spw-stencil-library/{p-ba27b9b0.entry.js → p-2c28684f.entry.js} +2 -2
  454. package/dist/spw-stencil-library/{p-ba27b9b0.entry.js.map → p-2c28684f.entry.js.map} +1 -1
  455. package/dist/spw-stencil-library/{p-272dc0ee.entry.js → p-2c79bd06.entry.js} +2 -2
  456. package/dist/spw-stencil-library/{p-272dc0ee.entry.js.map → p-2c79bd06.entry.js.map} +1 -1
  457. package/dist/spw-stencil-library/{p-b0dc1073.entry.js → p-2cfb78fb.entry.js} +2 -2
  458. package/dist/spw-stencil-library/{p-c2de4206.entry.js → p-2d974226.entry.js} +2 -2
  459. package/dist/spw-stencil-library/{p-19a69f36.entry.js → p-300b4bdb.entry.js} +2 -2
  460. package/dist/spw-stencil-library/{p-19a69f36.entry.js.map → p-300b4bdb.entry.js.map} +1 -1
  461. package/dist/spw-stencil-library/{p-5f82570e.entry.js → p-31793077.entry.js} +2 -2
  462. package/dist/spw-stencil-library/p-31793077.entry.js.map +1 -0
  463. package/dist/spw-stencil-library/{p-cb269271.entry.js → p-32fd509b.entry.js} +2 -2
  464. package/dist/spw-stencil-library/{p-02151d7e.entry.js → p-438f1793.entry.js} +2 -2
  465. package/dist/spw-stencil-library/{p-1f382434.entry.js → p-451a9785.entry.js} +2 -2
  466. package/dist/spw-stencil-library/{p-4d61f200.entry.js → p-45d99a2b.entry.js} +2 -2
  467. package/dist/spw-stencil-library/{p-a93f21f9.entry.js → p-46567994.entry.js} +2 -2
  468. package/dist/spw-stencil-library/{p-2fd3eb76.entry.js → p-48417d99.entry.js} +2 -2
  469. package/dist/spw-stencil-library/{p-dd4bf12d.entry.js → p-488c2d88.entry.js} +2 -2
  470. package/dist/spw-stencil-library/{p-bf2d0cf4.entry.js → p-4c21a696.entry.js} +2 -2
  471. package/dist/spw-stencil-library/{p-08d78730.entry.js → p-4e1774df.entry.js} +2 -2
  472. package/dist/spw-stencil-library/{p-a30563ff.entry.js → p-512a2787.entry.js} +2 -2
  473. package/dist/spw-stencil-library/p-572188ac.entry.js +2 -0
  474. package/dist/spw-stencil-library/p-572188ac.entry.js.map +1 -0
  475. package/dist/spw-stencil-library/{p-04274072.entry.js → p-5a1b3ad1.entry.js} +3 -3
  476. package/dist/spw-stencil-library/{p-c838e17b.entry.js → p-5e34ea9d.entry.js} +2 -2
  477. package/dist/spw-stencil-library/{p-74b4aea0.entry.js → p-5f873b56.entry.js} +2 -2
  478. package/dist/spw-stencil-library/{p-cff5a7e4.entry.js → p-5fde9dae.entry.js} +2 -2
  479. package/dist/spw-stencil-library/{p-09a2d080.entry.js → p-63d1c97f.entry.js} +2 -2
  480. package/dist/spw-stencil-library/{p-2dff657f.entry.js → p-6e74b1b0.entry.js} +2 -2
  481. package/dist/spw-stencil-library/{p-fda153e0.entry.js → p-6ea811f3.entry.js} +2 -2
  482. package/dist/spw-stencil-library/p-6ed76337.entry.js +2 -0
  483. package/dist/spw-stencil-library/p-6ed76337.entry.js.map +1 -0
  484. package/dist/spw-stencil-library/p-76e11724.entry.js +2 -0
  485. package/dist/spw-stencil-library/p-76e11724.entry.js.map +1 -0
  486. package/dist/spw-stencil-library/p-823b60ae.entry.js +2 -0
  487. package/dist/spw-stencil-library/p-823b60ae.entry.js.map +1 -0
  488. package/dist/spw-stencil-library/{p-11805364.entry.js → p-86bdf571.entry.js} +2 -2
  489. package/dist/spw-stencil-library/p-8c287e51.entry.js +2 -0
  490. package/dist/spw-stencil-library/p-8c287e51.entry.js.map +1 -0
  491. package/dist/spw-stencil-library/{p-fabf41a2.entry.js → p-8cfb4646.entry.js} +2 -2
  492. package/dist/spw-stencil-library/p-8cfb4646.entry.js.map +1 -0
  493. package/dist/spw-stencil-library/{p-8dca994a.entry.js → p-9b63ccca.entry.js} +2 -2
  494. package/dist/spw-stencil-library/{p-42658e0a.entry.js → p-9d984204.entry.js} +2 -2
  495. package/dist/spw-stencil-library/p-9d984204.entry.js.map +1 -0
  496. package/dist/spw-stencil-library/{p-5a034423.entry.js → p-9e12973d.entry.js} +2 -2
  497. package/dist/spw-stencil-library/{p-zpG0udTn.js → p-BBi01mKM.js} +2 -2
  498. package/dist/spw-stencil-library/{p-zpG0udTn.js.map → p-BBi01mKM.js.map} +1 -1
  499. package/dist/spw-stencil-library/p-CvfVJV8a.js +3 -0
  500. package/dist/spw-stencil-library/{p-BYM_CUUH.js.map → p-CvfVJV8a.js.map} +1 -1
  501. package/dist/spw-stencil-library/{p-1d9ef3d5.entry.js → p-a25ad9f2.entry.js} +2 -2
  502. package/dist/spw-stencil-library/{p-376b1e84.entry.js → p-a31a30f3.entry.js} +2 -2
  503. package/dist/spw-stencil-library/p-a31a30f3.entry.js.map +1 -0
  504. package/dist/spw-stencil-library/p-a61253c2.entry.js +2 -0
  505. package/dist/spw-stencil-library/p-a61253c2.entry.js.map +1 -0
  506. package/dist/spw-stencil-library/{p-8c6c9db5.entry.js → p-a840f2ca.entry.js} +2 -2
  507. package/dist/spw-stencil-library/{p-403fe46c.entry.js → p-b0e3875a.entry.js} +2 -2
  508. package/dist/spw-stencil-library/{p-b45534d4.entry.js → p-b1bb413f.entry.js} +2 -2
  509. package/dist/spw-stencil-library/p-b1de48f3.entry.js +2 -0
  510. package/dist/spw-stencil-library/p-b1de48f3.entry.js.map +1 -0
  511. package/dist/spw-stencil-library/{p-db2354cf.entry.js → p-b6a56ec7.entry.js} +2 -2
  512. package/dist/spw-stencil-library/{p-db2354cf.entry.js.map → p-b6a56ec7.entry.js.map} +1 -1
  513. package/dist/spw-stencil-library/{p-75159246.entry.js → p-bb225503.entry.js} +2 -2
  514. package/dist/spw-stencil-library/{p-1d93e0d8.entry.js → p-bff5424c.entry.js} +2 -2
  515. package/dist/spw-stencil-library/{p-cf508941.entry.js → p-c314e59f.entry.js} +2 -2
  516. package/dist/spw-stencil-library/p-c3985590.entry.js +2 -0
  517. package/dist/spw-stencil-library/p-c3985590.entry.js.map +1 -0
  518. package/dist/spw-stencil-library/{p-e72c6410.entry.js → p-cbf8aea1.entry.js} +2 -2
  519. package/dist/spw-stencil-library/p-ce72bca4.entry.js +2 -0
  520. package/dist/spw-stencil-library/p-ce72bca4.entry.js.map +1 -0
  521. package/dist/spw-stencil-library/{p-b0ca9615.entry.js → p-d03b1644.entry.js} +2 -2
  522. package/dist/spw-stencil-library/p-d115a739.entry.js +2 -0
  523. package/dist/spw-stencil-library/{p-64670b2e.entry.js.map → p-d115a739.entry.js.map} +1 -1
  524. package/dist/spw-stencil-library/p-d2258e0a.entry.js +2 -0
  525. package/dist/spw-stencil-library/p-d2258e0a.entry.js.map +1 -0
  526. package/dist/spw-stencil-library/{p-817e139e.entry.js → p-d384f832.entry.js} +2 -2
  527. package/dist/spw-stencil-library/{p-532314d2.entry.js → p-d8ba3e5c.entry.js} +2 -2
  528. package/dist/spw-stencil-library/{p-e00468aa.entry.js → p-e0c31c21.entry.js} +2 -2
  529. package/dist/spw-stencil-library/{p-e00468aa.entry.js.map → p-e0c31c21.entry.js.map} +1 -1
  530. package/dist/spw-stencil-library/{p-09d27c4b.entry.js → p-e3485695.entry.js} +2 -2
  531. package/dist/spw-stencil-library/{p-ae905af5.entry.js → p-e4b4f2b3.entry.js} +2 -2
  532. package/dist/spw-stencil-library/{p-93a5f755.entry.js → p-e4d193cd.entry.js} +2 -2
  533. package/dist/spw-stencil-library/{p-158e7952.entry.js → p-e936741c.entry.js} +2 -2
  534. package/dist/spw-stencil-library/{p-8ef8864e.entry.js → p-ecec4588.entry.js} +2 -2
  535. package/dist/spw-stencil-library/{p-8ef8864e.entry.js.map → p-ecec4588.entry.js.map} +1 -1
  536. package/dist/spw-stencil-library/{p-98ee79d6.entry.js → p-f154589d.entry.js} +2 -2
  537. package/dist/spw-stencil-library/{p-98ee79d6.entry.js.map → p-f154589d.entry.js.map} +1 -1
  538. package/dist/spw-stencil-library/{p-7d80a44e.entry.js → p-f28bf2be.entry.js} +2 -2
  539. package/dist/spw-stencil-library/{p-7d80a44e.entry.js.map → p-f28bf2be.entry.js.map} +1 -1
  540. package/dist/spw-stencil-library/p-f5caed11.entry.js +2 -0
  541. package/dist/spw-stencil-library/p-f5caed11.entry.js.map +1 -0
  542. package/dist/spw-stencil-library/{p-7cd55113.entry.js → p-f70ed5c3.entry.js} +2 -2
  543. package/dist/spw-stencil-library/{p-a8311acd.entry.js → p-f7760a47.entry.js} +2 -2
  544. package/dist/spw-stencil-library/{p-a8311acd.entry.js.map → p-f7760a47.entry.js.map} +1 -1
  545. package/dist/spw-stencil-library/p-f8ad31d4.entry.js +2 -0
  546. package/dist/spw-stencil-library/{p-03f1a257.entry.js.map → p-f8ad31d4.entry.js.map} +1 -1
  547. package/dist/spw-stencil-library/{p-3450855b.entry.js → p-fa52aa2c.entry.js} +2 -2
  548. package/dist/spw-stencil-library/{p-554af1e3.entry.js → p-fc6af4d8.entry.js} +2 -2
  549. package/dist/spw-stencil-library/spw-accordion.spw-accordion-content.spw-accordion-item.spw-accordion-title.entry.esm.js.map +1 -1
  550. package/dist/spw-stencil-library/spw-checkbox.entry.esm.js.map +1 -1
  551. package/dist/spw-stencil-library/spw-custom-select.entry.esm.js.map +1 -1
  552. package/dist/spw-stencil-library/spw-date-picker.entry.esm.js.map +1 -1
  553. package/dist/spw-stencil-library/spw-dropdown-container.entry.esm.js.map +1 -0
  554. package/dist/spw-stencil-library/spw-dropdown-item.entry.esm.js.map +1 -0
  555. package/dist/spw-stencil-library/spw-dropdown.entry.esm.js.map +1 -1
  556. package/dist/spw-stencil-library/spw-file-upload.entry.esm.js.map +1 -1
  557. package/dist/spw-stencil-library/spw-select.entry.esm.js.map +1 -1
  558. package/dist/spw-stencil-library/spw-sidebar-navigation-item.entry.esm.js.map +1 -1
  559. package/dist/spw-stencil-library/spw-sidebar.entry.esm.js.map +1 -1
  560. package/dist/spw-stencil-library/spw-skeleton.entry.esm.js.map +1 -1
  561. package/dist/spw-stencil-library/spw-stencil-library.css +1 -1
  562. package/dist/spw-stencil-library/spw-stencil-library.esm.js +1 -1
  563. package/dist/spw-stencil-library/spw-table-cell.entry.esm.js.map +1 -1
  564. package/dist/spw-stencil-library/spw-table-footer.entry.esm.js.map +1 -1
  565. package/dist/spw-stencil-library/spw-table.entry.esm.js.map +1 -1
  566. package/dist/spw-stencil-library/spw-tabs.entry.esm.js.map +1 -1
  567. package/dist/spw-stencil-library/spw-wizard-item.entry.esm.js.map +1 -0
  568. package/dist/spw-stencil-library/spw-wizard.entry.esm.js.map +1 -0
  569. package/dist/stats.json +3162 -942
  570. package/dist/types/components/spw-custom-select/spw-custom-select.d.ts +2 -0
  571. package/dist/types/components/spw-date-picker/spw-date-picker.d.ts +7 -0
  572. package/dist/types/components/spw-dropdown/spw-dropdown-container/spw-dropdown-container.d.ts +3 -0
  573. package/dist/types/components/spw-dropdown/spw-dropdown-item/spw-dropdown-item.d.ts +23 -0
  574. package/dist/types/components/spw-select/spw-select.d.ts +1 -0
  575. package/dist/types/components/spw-sidebar/spw-sidebar-navigation-item/spw-sidebar-navigation-item.d.ts +8 -0
  576. package/dist/types/components/spw-sidebar/spw-sidebar.d.ts +1 -0
  577. package/dist/types/components/spw-table/spw-table-cell/spw-table-cell.d.ts +9 -0
  578. package/dist/types/components/spw-table/spw-table.d.ts +11 -1
  579. package/dist/types/components/spw-wizard/spw-wizard-item/spw-wizard-item.d.ts +35 -0
  580. package/dist/types/components/spw-wizard/spw-wizard.d.ts +19 -0
  581. package/dist/types/components.d.ts +296 -0
  582. package/dist/types/stories/components/spw-date-picker/spw-date-picker.stories.d.ts +2 -0
  583. package/dist/types/stories/organisms/spw-table/spw-table.stories.d.ts +1 -0
  584. package/dist/types/stories/organisms/spw-wizard/spw-wizard.stories.d.ts +8 -0
  585. package/hydrate/index.js +800 -150
  586. package/hydrate/index.mjs +800 -150
  587. package/package.json +1 -1
  588. package/dist/components/p-B3OQ2nRI.js.map +0 -1
  589. package/dist/components/p-Cf-dIWNi.js +0 -129
  590. package/dist/components/p-Cf-dIWNi.js.map +0 -1
  591. package/dist/spw-stencil-library/p-03f1a257.entry.js +0 -2
  592. package/dist/spw-stencil-library/p-2e9756c4.entry.js +0 -2
  593. package/dist/spw-stencil-library/p-2e9756c4.entry.js.map +0 -1
  594. package/dist/spw-stencil-library/p-34dc26ba.entry.js +0 -2
  595. package/dist/spw-stencil-library/p-34dc26ba.entry.js.map +0 -1
  596. package/dist/spw-stencil-library/p-376b1e84.entry.js.map +0 -1
  597. package/dist/spw-stencil-library/p-42658e0a.entry.js.map +0 -1
  598. package/dist/spw-stencil-library/p-5f82570e.entry.js.map +0 -1
  599. package/dist/spw-stencil-library/p-64670b2e.entry.js +0 -2
  600. package/dist/spw-stencil-library/p-73db3953.entry.js +0 -2
  601. package/dist/spw-stencil-library/p-73db3953.entry.js.map +0 -1
  602. package/dist/spw-stencil-library/p-7e30e4c2.entry.js +0 -2
  603. package/dist/spw-stencil-library/p-7e30e4c2.entry.js.map +0 -1
  604. package/dist/spw-stencil-library/p-9356f8c9.entry.js +0 -2
  605. package/dist/spw-stencil-library/p-9356f8c9.entry.js.map +0 -1
  606. package/dist/spw-stencil-library/p-BYM_CUUH.js +0 -3
  607. package/dist/spw-stencil-library/p-a950bce8.entry.js +0 -2
  608. package/dist/spw-stencil-library/p-a950bce8.entry.js.map +0 -1
  609. package/dist/spw-stencil-library/p-c54fee67.entry.js +0 -2
  610. package/dist/spw-stencil-library/p-c54fee67.entry.js.map +0 -1
  611. package/dist/spw-stencil-library/p-d3d4755a.entry.js +0 -2
  612. package/dist/spw-stencil-library/p-d3d4755a.entry.js.map +0 -1
  613. package/dist/spw-stencil-library/p-fabf41a2.entry.js.map +0 -1
  614. /package/dist/spw-stencil-library/{p-f5de314e.entry.js.map → p-06cb6865.entry.js.map} +0 -0
  615. /package/dist/spw-stencil-library/{p-52c51ac5.entry.js.map → p-06ec3521.entry.js.map} +0 -0
  616. /package/dist/spw-stencil-library/{p-0226ad72.entry.js.map → p-0baeea00.entry.js.map} +0 -0
  617. /package/dist/spw-stencil-library/{p-fbe468de.entry.js.map → p-2113f2f6.entry.js.map} +0 -0
  618. /package/dist/spw-stencil-library/{p-44d87d3f.entry.js.map → p-22f972ca.entry.js.map} +0 -0
  619. /package/dist/spw-stencil-library/{p-181ae002.entry.js.map → p-25329033.entry.js.map} +0 -0
  620. /package/dist/spw-stencil-library/{p-9219fe7c.entry.js.map → p-2abc48ed.entry.js.map} +0 -0
  621. /package/dist/spw-stencil-library/{p-3ab472db.entry.js.map → p-2b011668.entry.js.map} +0 -0
  622. /package/dist/spw-stencil-library/{p-b0dc1073.entry.js.map → p-2cfb78fb.entry.js.map} +0 -0
  623. /package/dist/spw-stencil-library/{p-c2de4206.entry.js.map → p-2d974226.entry.js.map} +0 -0
  624. /package/dist/spw-stencil-library/{p-cb269271.entry.js.map → p-32fd509b.entry.js.map} +0 -0
  625. /package/dist/spw-stencil-library/{p-02151d7e.entry.js.map → p-438f1793.entry.js.map} +0 -0
  626. /package/dist/spw-stencil-library/{p-1f382434.entry.js.map → p-451a9785.entry.js.map} +0 -0
  627. /package/dist/spw-stencil-library/{p-4d61f200.entry.js.map → p-45d99a2b.entry.js.map} +0 -0
  628. /package/dist/spw-stencil-library/{p-a93f21f9.entry.js.map → p-46567994.entry.js.map} +0 -0
  629. /package/dist/spw-stencil-library/{p-2fd3eb76.entry.js.map → p-48417d99.entry.js.map} +0 -0
  630. /package/dist/spw-stencil-library/{p-dd4bf12d.entry.js.map → p-488c2d88.entry.js.map} +0 -0
  631. /package/dist/spw-stencil-library/{p-bf2d0cf4.entry.js.map → p-4c21a696.entry.js.map} +0 -0
  632. /package/dist/spw-stencil-library/{p-08d78730.entry.js.map → p-4e1774df.entry.js.map} +0 -0
  633. /package/dist/spw-stencil-library/{p-a30563ff.entry.js.map → p-512a2787.entry.js.map} +0 -0
  634. /package/dist/spw-stencil-library/{p-04274072.entry.js.map → p-5a1b3ad1.entry.js.map} +0 -0
  635. /package/dist/spw-stencil-library/{p-c838e17b.entry.js.map → p-5e34ea9d.entry.js.map} +0 -0
  636. /package/dist/spw-stencil-library/{p-74b4aea0.entry.js.map → p-5f873b56.entry.js.map} +0 -0
  637. /package/dist/spw-stencil-library/{p-cff5a7e4.entry.js.map → p-5fde9dae.entry.js.map} +0 -0
  638. /package/dist/spw-stencil-library/{p-09a2d080.entry.js.map → p-63d1c97f.entry.js.map} +0 -0
  639. /package/dist/spw-stencil-library/{p-2dff657f.entry.js.map → p-6e74b1b0.entry.js.map} +0 -0
  640. /package/dist/spw-stencil-library/{p-fda153e0.entry.js.map → p-6ea811f3.entry.js.map} +0 -0
  641. /package/dist/spw-stencil-library/{p-11805364.entry.js.map → p-86bdf571.entry.js.map} +0 -0
  642. /package/dist/spw-stencil-library/{p-8dca994a.entry.js.map → p-9b63ccca.entry.js.map} +0 -0
  643. /package/dist/spw-stencil-library/{p-5a034423.entry.js.map → p-9e12973d.entry.js.map} +0 -0
  644. /package/dist/spw-stencil-library/{p-1d9ef3d5.entry.js.map → p-a25ad9f2.entry.js.map} +0 -0
  645. /package/dist/spw-stencil-library/{p-8c6c9db5.entry.js.map → p-a840f2ca.entry.js.map} +0 -0
  646. /package/dist/spw-stencil-library/{p-403fe46c.entry.js.map → p-b0e3875a.entry.js.map} +0 -0
  647. /package/dist/spw-stencil-library/{p-b45534d4.entry.js.map → p-b1bb413f.entry.js.map} +0 -0
  648. /package/dist/spw-stencil-library/{p-75159246.entry.js.map → p-bb225503.entry.js.map} +0 -0
  649. /package/dist/spw-stencil-library/{p-1d93e0d8.entry.js.map → p-bff5424c.entry.js.map} +0 -0
  650. /package/dist/spw-stencil-library/{p-cf508941.entry.js.map → p-c314e59f.entry.js.map} +0 -0
  651. /package/dist/spw-stencil-library/{p-e72c6410.entry.js.map → p-cbf8aea1.entry.js.map} +0 -0
  652. /package/dist/spw-stencil-library/{p-b0ca9615.entry.js.map → p-d03b1644.entry.js.map} +0 -0
  653. /package/dist/spw-stencil-library/{p-817e139e.entry.js.map → p-d384f832.entry.js.map} +0 -0
  654. /package/dist/spw-stencil-library/{p-532314d2.entry.js.map → p-d8ba3e5c.entry.js.map} +0 -0
  655. /package/dist/spw-stencil-library/{p-09d27c4b.entry.js.map → p-e3485695.entry.js.map} +0 -0
  656. /package/dist/spw-stencil-library/{p-ae905af5.entry.js.map → p-e4b4f2b3.entry.js.map} +0 -0
  657. /package/dist/spw-stencil-library/{p-93a5f755.entry.js.map → p-e4d193cd.entry.js.map} +0 -0
  658. /package/dist/spw-stencil-library/{p-158e7952.entry.js.map → p-e936741c.entry.js.map} +0 -0
  659. /package/dist/spw-stencil-library/{p-7cd55113.entry.js.map → p-f70ed5c3.entry.js.map} +0 -0
  660. /package/dist/spw-stencil-library/{p-3450855b.entry.js.map → p-fa52aa2c.entry.js.map} +0 -0
  661. /package/dist/spw-stencil-library/{p-554af1e3.entry.js.map → p-fc6af4d8.entry.js.map} +0 -0
@@ -0,0 +1,87 @@
1
+ 'use strict';
2
+
3
+ var index = require('./index-ivINMH9O.js');
4
+
5
+ const spwDropdownItemCss = "/*! normalize.css v8.0.1 | MIT License | github.com/necolas/normalize.css */html{-webkit-text-size-adjust:100%;line-height:1.3}h1,h2,h3,h4,h5,h6,li,p,ul{margin:0;padding:0}ul{list-style:none}:host{-webkit-text-size-adjust:100%;box-sizing:border-box;display:block;font-size:100%;line-height:1.3}:host *,:host :after,:host :before{box-sizing:inherit;font-family:Nunito Sans}body{margin:0}main{display:block}h1{font-size:2em;margin:.67em 0}hr{box-sizing:content-box;height:0;overflow:visible}pre{font-family:monospace,monospace;font-size:1em}a{background-color:transparent}abbr[title]{border-bottom:none;text-decoration:underline;-webkit-text-decoration:underline dotted;text-decoration:underline dotted}b,strong{font-weight:bolder}code,kbd,samp{font-family:monospace,monospace;font-size:1em}small{font-size:80%}sub,sup{font-size:75%;line-height:0;position:relative;vertical-align:baseline}sub{bottom:-.25em}sup{top:-.5em}img{border-style:none}button,input,optgroup,select,textarea{font-family:inherit;font-size:100%;line-height:1.15;margin:0}button,input{overflow:visible}button,select{text-transform:none}[type=button],[type=reset],[type=submit],button{-webkit-appearance:button}[type=button]::-moz-focus-inner,[type=reset]::-moz-focus-inner,[type=submit]::-moz-focus-inner,button::-moz-focus-inner{border-style:none;padding:0}[type=button]:-moz-focusring,[type=reset]:-moz-focusring,[type=submit]:-moz-focusring,button:-moz-focusring{outline:1px dotted ButtonText}fieldset{padding:.35em .75em .625em}legend{box-sizing:border-box;color:inherit;display:table;max-width:100%;padding:0;white-space:normal}progress{vertical-align:baseline}textarea{overflow:auto}[type=checkbox],[type=radio]{box-sizing:border-box;padding:0}[type=number]::-webkit-inner-spin-button,[type=number]::-webkit-outer-spin-button{height:auto}[type=search]{-webkit-appearance:textfield;outline-offset:-2px}[type=search]::-webkit-search-decoration{-webkit-appearance:none}::-webkit-file-upload-button{-webkit-appearance:button;font:inherit}details{display:block}summary{display:list-item}[hidden],template{display:none}:root{--spw-ds-container-xl:1200px;--spw-ds-container-lg:1024px;--spw-ds-container-md:768px;--spw-ds-container-sm:640px}.spw-ds-container{margin-left:auto;margin-right:auto;padding-left:16px;padding-right:16px;width:100%}@media (min-width:460px){.spw-ds-container{max-width:var(--spw-ds-container-sm)}}@media (min-width:768px){.spw-ds-container{max-width:var(--spw-ds-container-md)}}@media (min-width:1024px){.spw-ds-container{max-width:var(--spw-ds-container-lg)}}@media (min-width:1350px){.spw-ds-container{max-width:var(--spw-ds-container-xl)}}.spw-dropdown-item{align-items:center;border-radius:4px;color:var(--spw-colors-support-grey-grey-900);cursor:pointer;display:flex;font-size:14px;gap:8px;padding:8px 12px;position:relative;text-decoration:none;transition:background-color .2s ease}.spw-dropdown-item:hover{background-color:var(--spw-colors-support-grey-grey-200)}.spw-dropdown-item--disabled{cursor:not-allowed;opacity:.5;pointer-events:none}.spw-dropdown-item--has-sub-items{padding-right:32px}.spw-dropdown-item--sub-items-open{background-color:var(--spw-colors-support-grey-grey-100)}.spw-dropdown-item__icon{align-items:center;color:var(--spw-colors-support-grey-grey-700);display:inline-flex;font-size:14px;height:20px;justify-content:center;width:20px}.spw-dropdown-item__content{align-items:center;display:flex;flex:1;justify-content:space-between;position:relative}.spw-dropdown-item__label{flex:1;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.spw-dropdown-item__toggle{align-items:center;border-radius:50%;cursor:pointer;display:inline-flex;height:20px;justify-content:center;position:absolute;right:-24px;top:50%;transform:translateY(-50%);transition:background-color .2s ease,transform .2s ease;width:20px}.spw-dropdown-item__toggle:hover{background-color:var(--spw-colors-support-grey-grey-300)}.spw-dropdown-item__toggle spw-icon{color:var(--spw-colors-support-grey-grey-900);font-size:12px;transition:transform .2s ease}.spw-dropdown-item__toggle--open spw-icon{transform:rotate(180deg)}.spw-dropdown-item__sub-items{margin-top:4px;padding-left:16px}.spw-dropdown-item__sub-items spw-dropdown-item{font-size:13px}";
6
+
7
+ const SpwDropdownItem = class {
8
+ constructor(hostRef) {
9
+ index.registerInstance(this, hostRef);
10
+ /** Si true, l'item est désactivé */
11
+ this.disabled = false;
12
+ /** Variante d'icône font-awesome */
13
+ this.iconVariant = 'fa-regular';
14
+ this.hasSubItems = false;
15
+ this.subItemsOpen = false;
16
+ this.handleToggleSubItems = (event) => {
17
+ event.preventDefault();
18
+ event.stopPropagation();
19
+ if (this.disabled)
20
+ return;
21
+ this.subItemsOpen = !this.subItemsOpen;
22
+ };
23
+ this.handleItemClick = (event) => {
24
+ if (this.disabled)
25
+ return;
26
+ if (this.hasSubItems && !this.href) {
27
+ event.preventDefault();
28
+ event.stopPropagation();
29
+ this.subItemsOpen = !this.subItemsOpen;
30
+ }
31
+ };
32
+ }
33
+ componentDidLoad() {
34
+ this.checkForSubItems();
35
+ this.setupMutationObserver();
36
+ setTimeout(() => {
37
+ this.checkForSubItems();
38
+ }, 0);
39
+ }
40
+ componentDidUpdate() {
41
+ this.checkForSubItems();
42
+ }
43
+ disconnectedCallback() {
44
+ if (this.mutationObserver) {
45
+ this.mutationObserver.disconnect();
46
+ }
47
+ }
48
+ setupMutationObserver() {
49
+ this.mutationObserver = new MutationObserver(() => {
50
+ this.checkForSubItems();
51
+ });
52
+ this.mutationObserver.observe(this.el, {
53
+ childList: true,
54
+ subtree: true,
55
+ });
56
+ }
57
+ checkForSubItems() {
58
+ const subItems = this.el.querySelector('[slot="sub-items"]');
59
+ const newHasSubItems = subItems !== null && (subItems.children.length > 0 || subItems.childNodes.length > 0);
60
+ if (this.hasSubItems !== newHasSubItems) {
61
+ this.hasSubItems = newHasSubItems;
62
+ }
63
+ }
64
+ get classes() {
65
+ return {
66
+ 'spw-dropdown-item': true,
67
+ 'spw-dropdown-item--disabled': this.disabled,
68
+ 'spw-dropdown-item--has-sub-items': this.hasSubItems,
69
+ 'spw-dropdown-item--sub-items-open': this.subItemsOpen,
70
+ };
71
+ }
72
+ render() {
73
+ const Tag = this.href && !this.disabled ? 'a' : 'div';
74
+ const toggleClasses = {
75
+ 'spw-dropdown-item__toggle': true,
76
+ 'spw-dropdown-item__toggle--open': this.subItemsOpen,
77
+ };
78
+ return (index.h(index.Host, { key: '307e80182a8b735db854ce11d5bb3a1688b7e39d' }, index.h(Tag, { key: 'd24ab632d44b956c73b45765ce67ec3981aa3252', class: this.classes, href: this.href, "aria-disabled": this.disabled ? 'true' : undefined, onClick: this.handleItemClick }, this.icon && (index.h("div", { key: '570adea95e5a6c747c3382dcf8bfc9c1dbc55fb2', class: "spw-dropdown-item__icon" }, index.h("spw-icon", { key: 'c1040595688bfbc7b984e28baef9350899cef0ac', variant: this.iconVariant, icon: this.icon }))), index.h("div", { key: '6745b1625652a5defd03391b5f3382e338377cc7', class: "spw-dropdown-item__content" }, index.h("div", { key: 'c42468f6430fa62f0d975f4951823bfd5700ffa3', class: "spw-dropdown-item__label" }, index.h("slot", { key: '401083c4c4a0faefb8cc57d291185cbca254895e' })), this.hasSubItems && (index.h("div", { key: '34ecf263810f66dc4dfd4bcdbd779bd56510e8e7', class: toggleClasses, onClick: this.handleToggleSubItems }, index.h("spw-icon", { key: 'a0f1cc9ce266ff7287fdc82520425648f8d06ab8', icon: "fa-chevron-down" }))))), this.hasSubItems && (index.h("div", { key: '9d0591237181e952d7582d5103454d6c2d990b7d', class: "spw-dropdown-item__sub-items", style: { display: this.subItemsOpen ? 'block' : 'none' } }, index.h("slot", { key: '193df0fb5aea4f0474c0f4b3a035fa04b76eadcd', name: "sub-items" })))));
79
+ }
80
+ get el() { return index.getElement(this); }
81
+ };
82
+ SpwDropdownItem.style = spwDropdownItemCss;
83
+
84
+ exports.spw_dropdown_item = SpwDropdownItem;
85
+ //# sourceMappingURL=spw-dropdown-item.entry.cjs.js.map
86
+
87
+ //# sourceMappingURL=spw-dropdown-item.cjs.entry.js.map
@@ -0,0 +1 @@
1
+ {"file":"spw-dropdown-item.entry.cjs.js","mappings":";;;;AAAA,MAAM,kBAAkB,GAAG,ipIAAipI;;MCO/pI,eAAe,GAAA,MAAA;AAL5B,IAAA,WAAA,CAAA,OAAA,EAAA;;;AAWU,QAAA,IAAQ,CAAA,QAAA,GAAY,KAAK;;AAIzB,QAAA,IAAW,CAAA,WAAA,GAA4C,YAAY;AAElE,QAAA,IAAW,CAAA,WAAA,GAAY,KAAK;AAC5B,QAAA,IAAY,CAAA,YAAA,GAAY,KAAK;AA2C9B,QAAA,IAAA,CAAA,oBAAoB,GAAG,CAAC,KAAiB,KAAI;YACnD,KAAK,CAAC,cAAc,EAAE;YACtB,KAAK,CAAC,eAAe,EAAE;YAEvB,IAAI,IAAI,CAAC,QAAQ;gBAAE;AAEnB,YAAA,IAAI,CAAC,YAAY,GAAG,CAAC,IAAI,CAAC,YAAY;AACxC,SAAC;AAEO,QAAA,IAAA,CAAA,eAAe,GAAG,CAAC,KAAiB,KAAI;YAC9C,IAAI,IAAI,CAAC,QAAQ;gBAAE;YAEnB,IAAI,IAAI,CAAC,WAAW,IAAI,CAAC,IAAI,CAAC,IAAI,EAAE;gBAClC,KAAK,CAAC,cAAc,EAAE;gBACtB,KAAK,CAAC,eAAe,EAAE;AACvB,gBAAA,IAAI,CAAC,YAAY,GAAG,CAAC,IAAI,CAAC,YAAY;;AAE1C,SAAC;AAiDF;IAzGC,gBAAgB,GAAA;QACd,IAAI,CAAC,gBAAgB,EAAE;QACvB,IAAI,CAAC,qBAAqB,EAAE;QAE5B,UAAU,CAAC,MAAK;YACd,IAAI,CAAC,gBAAgB,EAAE;SACxB,EAAE,CAAC,CAAC;;IAGP,kBAAkB,GAAA;QAChB,IAAI,CAAC,gBAAgB,EAAE;;IAGzB,oBAAoB,GAAA;AAClB,QAAA,IAAI,IAAI,CAAC,gBAAgB,EAAE;AACzB,YAAA,IAAI,CAAC,gBAAgB,CAAC,UAAU,EAAE;;;IAI9B,qBAAqB,GAAA;AAC3B,QAAA,IAAI,CAAC,gBAAgB,GAAG,IAAI,gBAAgB,CAAC,MAAK;YAChD,IAAI,CAAC,gBAAgB,EAAE;AACzB,SAAC,CAAC;QAEF,IAAI,CAAC,gBAAgB,CAAC,OAAO,CAAC,IAAI,CAAC,EAAE,EAAE;AACrC,YAAA,SAAS,EAAE,IAAI;AACf,YAAA,OAAO,EAAE,IAAI;AACd,SAAA,CAAC;;IAGI,gBAAgB,GAAA;QACtB,MAAM,QAAQ,GAAG,IAAI,CAAC,EAAE,CAAC,aAAa,CAAC,oBAAoB,CAAC;QAC5D,MAAM,cAAc,GAAG,QAAQ,KAAK,IAAI,KAAK,QAAQ,CAAC,QAAQ,CAAC,MAAM,GAAG,CAAC,IAAI,QAAQ,CAAC,UAAU,CAAC,MAAM,GAAG,CAAC,CAAC;AAE5G,QAAA,IAAI,IAAI,CAAC,WAAW,KAAK,cAAc,EAAE;AACvC,YAAA,IAAI,CAAC,WAAW,GAAG,cAAc;;;AAuBrC,IAAA,IAAY,OAAO,GAAA;QACjB,OAAO;AACL,YAAA,mBAAmB,EAAE,IAAI;YACzB,6BAA6B,EAAE,IAAI,CAAC,QAAQ;YAC5C,kCAAkC,EAAE,IAAI,CAAC,WAAW;YACpD,mCAAmC,EAAE,IAAI,CAAC,YAAY;SAC5B;;IAG9B,MAAM,GAAA;AACJ,QAAA,MAAM,GAAG,GAAG,IAAI,CAAC,IAAI,IAAI,CAAC,IAAI,CAAC,QAAQ,GAAG,GAAG,GAAG,KAAK;AAErD,QAAA,MAAM,aAAa,GAAG;AACpB,YAAA,2BAA2B,EAAE,IAAI;YACjC,iCAAiC,EAAE,IAAI,CAAC,YAAY;SAC1B;QAE5B,QACEA,QAACC,UAAI,EAAA,EAAA,GAAA,EAAA,0CAAA,EAAA,EACHD,OAAA,CAAC,GAAG,EAAA,EAAA,GAAA,EAAA,0CAAA,EAAC,KAAK,EAAE,IAAI,CAAC,OAAO,EAAE,IAAI,EAAE,IAAI,CAAC,IAAI,EAAiB,eAAA,EAAA,IAAI,CAAC,QAAQ,GAAG,MAAM,GAAG,SAAS,EAAE,OAAO,EAAE,IAAI,CAAC,eAAe,EAAA,EACxH,IAAI,CAAC,IAAI,KACRA,OAAK,CAAA,KAAA,EAAA,EAAA,GAAA,EAAA,0CAAA,EAAA,KAAK,EAAC,yBAAyB,EAAA,EAClCA,OAAA,CAAA,UAAA,EAAA,EAAA,GAAA,EAAA,0CAAA,EAAU,OAAO,EAAE,IAAI,CAAC,WAAW,EAAE,IAAI,EAAE,IAAI,CAAC,IAAI,EAAA,CAAa,CAC7D,CACP,EAEDA,OAAK,CAAA,KAAA,EAAA,EAAA,GAAA,EAAA,0CAAA,EAAA,KAAK,EAAC,4BAA4B,EAAA,EACrCA,OAAK,CAAA,KAAA,EAAA,EAAA,GAAA,EAAA,0CAAA,EAAA,KAAK,EAAC,0BAA0B,EAAA,EACnCA,OAAA,CAAA,MAAA,EAAA,EAAA,GAAA,EAAA,0CAAA,EAAA,CAAa,CACT,EAEL,IAAI,CAAC,WAAW,KACfA,OAAK,CAAA,KAAA,EAAA,EAAA,GAAA,EAAA,0CAAA,EAAA,KAAK,EAAE,aAAa,EAAE,OAAO,EAAE,IAAI,CAAC,oBAAoB,EAAA,EAC3DA,OAAA,CAAA,UAAA,EAAA,EAAA,GAAA,EAAA,0CAAA,EAAU,IAAI,EAAC,iBAAiB,GAAY,CACxC,CACP,CACG,CACF,EAEL,IAAI,CAAC,WAAW,KACfA,OAAA,CAAA,KAAA,EAAA,EAAA,GAAA,EAAA,0CAAA,EAAK,KAAK,EAAC,8BAA8B,EAAC,KAAK,EAAE,EAAE,OAAO,EAAE,IAAI,CAAC,YAAY,GAAG,OAAO,GAAG,MAAM,EAAE,EAAA,EAChGA,OAAM,CAAA,MAAA,EAAA,EAAA,GAAA,EAAA,0CAAA,EAAA,IAAI,EAAC,WAAW,EAAA,CAAQ,CAC1B,CACP,CACI;;;;;;;;","names":["h","Host"],"sources":["src/components/spw-dropdown/spw-dropdown-item/spw-dropdown-item.scss?tag=spw-dropdown-item","src/components/spw-dropdown/spw-dropdown-item/spw-dropdown-item.tsx"],"sourcesContent":[":host {\n display: block;\n}\n\n.spw-dropdown-item {\n cursor: pointer;\n position: relative;\n display: flex;\n align-items: center;\n gap: 8px;\n padding: 8px 12px;\n color: var(--spw-colors-support-grey-grey-900);\n text-decoration: none;\n transition: background-color 0.2s ease;\n font-size: 14px;\n border-radius: 4px;\n\n &:hover {\n background-color: var(--spw-colors-support-grey-grey-200);\n }\n\n &--disabled {\n cursor: not-allowed;\n opacity: 0.5;\n pointer-events: none;\n }\n\n &--has-sub-items {\n padding-right: 32px;\n }\n\n &--sub-items-open {\n background-color: var(--spw-colors-support-grey-grey-100);\n }\n\n &__icon {\n display: inline-flex;\n align-items: center;\n justify-content: center;\n width: 20px;\n height: 20px;\n font-size: 14px;\n color: var(--spw-colors-support-grey-grey-700);\n }\n\n &__content {\n flex: 1;\n display: flex;\n align-items: center;\n justify-content: space-between;\n position: relative;\n }\n\n &__label {\n flex: 1;\n white-space: nowrap;\n overflow: hidden;\n text-overflow: ellipsis;\n }\n\n &__toggle {\n position: absolute;\n right: -24px;\n top: 50%;\n transform: translateY(-50%);\n width: 20px;\n height: 20px;\n display: inline-flex;\n align-items: center;\n justify-content: center;\n border-radius: 50%;\n cursor: pointer;\n transition:\n background-color 0.2s ease,\n transform 0.2s ease;\n\n &:hover {\n background-color: var(--spw-colors-support-grey-grey-300);\n }\n\n spw-icon {\n font-size: 12px;\n color: var(--spw-colors-support-grey-grey-900);\n transition: transform 0.2s ease;\n }\n\n &--open {\n spw-icon {\n transform: rotate(180deg);\n }\n }\n }\n\n &__sub-items {\n padding-left: 16px;\n margin-top: 4px;\n\n spw-dropdown-item {\n font-size: 13px;\n }\n }\n}\n","import { Component, Host, h, Prop, Element, State } from '@stencil/core';\n\n@Component({\n tag: 'spw-dropdown-item',\n styleUrl: 'spw-dropdown-item.scss',\n shadow: false,\n})\nexport class SpwDropdownItem {\n @Element() el: HTMLElement;\n\n /** Lien href pour l'item */\n @Prop() href?: string;\n /** Si true, l'item est désactivé */\n @Prop() disabled: boolean = false;\n /** Icône optionnelle à afficher */\n @Prop() icon?: string;\n /** Variante d'icône font-awesome */\n @Prop() iconVariant: 'fa-solid' | 'fa-brands' | 'fa-regular' = 'fa-regular';\n\n @State() hasSubItems: boolean = false;\n @State() subItemsOpen: boolean = false;\n\n private mutationObserver?: MutationObserver;\n\n componentDidLoad() {\n this.checkForSubItems();\n this.setupMutationObserver();\n\n setTimeout(() => {\n this.checkForSubItems();\n }, 0);\n }\n\n componentDidUpdate() {\n this.checkForSubItems();\n }\n\n disconnectedCallback() {\n if (this.mutationObserver) {\n this.mutationObserver.disconnect();\n }\n }\n\n private setupMutationObserver() {\n this.mutationObserver = new MutationObserver(() => {\n this.checkForSubItems();\n });\n\n this.mutationObserver.observe(this.el, {\n childList: true,\n subtree: true,\n });\n }\n\n private checkForSubItems() {\n const subItems = this.el.querySelector('[slot=\"sub-items\"]');\n const newHasSubItems = subItems !== null && (subItems.children.length > 0 || subItems.childNodes.length > 0);\n\n if (this.hasSubItems !== newHasSubItems) {\n this.hasSubItems = newHasSubItems;\n }\n }\n\n private handleToggleSubItems = (event: MouseEvent) => {\n event.preventDefault();\n event.stopPropagation();\n\n if (this.disabled) return;\n\n this.subItemsOpen = !this.subItemsOpen;\n };\n\n private handleItemClick = (event: MouseEvent) => {\n if (this.disabled) return;\n\n if (this.hasSubItems && !this.href) {\n event.preventDefault();\n event.stopPropagation();\n this.subItemsOpen = !this.subItemsOpen;\n }\n };\n\n private get classes() {\n return {\n 'spw-dropdown-item': true,\n 'spw-dropdown-item--disabled': this.disabled,\n 'spw-dropdown-item--has-sub-items': this.hasSubItems,\n 'spw-dropdown-item--sub-items-open': this.subItemsOpen,\n } as Record<string, boolean>;\n }\n\n render() {\n const Tag = this.href && !this.disabled ? 'a' : 'div';\n\n const toggleClasses = {\n 'spw-dropdown-item__toggle': true,\n 'spw-dropdown-item__toggle--open': this.subItemsOpen,\n } as Record<string, boolean>;\n\n return (\n <Host>\n <Tag class={this.classes} href={this.href} aria-disabled={this.disabled ? 'true' : undefined} onClick={this.handleItemClick}>\n {this.icon && (\n <div class=\"spw-dropdown-item__icon\">\n <spw-icon variant={this.iconVariant} icon={this.icon}></spw-icon>\n </div>\n )}\n\n <div class=\"spw-dropdown-item__content\">\n <div class=\"spw-dropdown-item__label\">\n <slot></slot>\n </div>\n\n {this.hasSubItems && (\n <div class={toggleClasses} onClick={this.handleToggleSubItems}>\n <spw-icon icon=\"fa-chevron-down\"></spw-icon>\n </div>\n )}\n </div>\n </Tag>\n\n {this.hasSubItems && (\n <div class=\"spw-dropdown-item__sub-items\" style={{ display: this.subItemsOpen ? 'block' : 'none' }}>\n <slot name=\"sub-items\"></slot>\n </div>\n )}\n </Host>\n );\n }\n}\n"],"version":3}
@@ -0,0 +1 @@
1
+ {"version":3,"file":"spw-dropdown-item.entry.cjs.js","sources":["src/components/spw-dropdown/spw-dropdown-item/spw-dropdown-item.scss?tag=spw-dropdown-item","src/components/spw-dropdown/spw-dropdown-item/spw-dropdown-item.tsx"],"sourcesContent":[":host {\n display: block;\n}\n\n.spw-dropdown-item {\n cursor: pointer;\n position: relative;\n display: flex;\n align-items: center;\n gap: 8px;\n padding: 8px 12px;\n color: var(--spw-colors-support-grey-grey-900);\n text-decoration: none;\n transition: background-color 0.2s ease;\n font-size: 14px;\n border-radius: 4px;\n\n &:hover {\n background-color: var(--spw-colors-support-grey-grey-200);\n }\n\n &--disabled {\n cursor: not-allowed;\n opacity: 0.5;\n pointer-events: none;\n }\n\n &--has-sub-items {\n padding-right: 32px;\n }\n\n &--sub-items-open {\n background-color: var(--spw-colors-support-grey-grey-100);\n }\n\n &__icon {\n display: inline-flex;\n align-items: center;\n justify-content: center;\n width: 20px;\n height: 20px;\n font-size: 14px;\n color: var(--spw-colors-support-grey-grey-700);\n }\n\n &__content {\n flex: 1;\n display: flex;\n align-items: center;\n justify-content: space-between;\n position: relative;\n }\n\n &__label {\n flex: 1;\n white-space: nowrap;\n overflow: hidden;\n text-overflow: ellipsis;\n }\n\n &__toggle {\n position: absolute;\n right: -24px;\n top: 50%;\n transform: translateY(-50%);\n width: 20px;\n height: 20px;\n display: inline-flex;\n align-items: center;\n justify-content: center;\n border-radius: 50%;\n cursor: pointer;\n transition:\n background-color 0.2s ease,\n transform 0.2s ease;\n\n &:hover {\n background-color: var(--spw-colors-support-grey-grey-300);\n }\n\n spw-icon {\n font-size: 12px;\n color: var(--spw-colors-support-grey-grey-900);\n transition: transform 0.2s ease;\n }\n\n &--open {\n spw-icon {\n transform: rotate(180deg);\n }\n }\n }\n\n &__sub-items {\n padding-left: 16px;\n margin-top: 4px;\n\n spw-dropdown-item {\n font-size: 13px;\n }\n }\n}\n","import { Component, Host, h, Prop, Element, State } from '@stencil/core';\n\n@Component({\n tag: 'spw-dropdown-item',\n styleUrl: 'spw-dropdown-item.scss',\n shadow: false,\n})\nexport class SpwDropdownItem {\n @Element() el: HTMLElement;\n\n /** Lien href pour l'item */\n @Prop() href?: string;\n /** Si true, l'item est désactivé */\n @Prop() disabled: boolean = false;\n /** Icône optionnelle à afficher */\n @Prop() icon?: string;\n /** Variante d'icône font-awesome */\n @Prop() iconVariant: 'fa-solid' | 'fa-brands' | 'fa-regular' = 'fa-regular';\n\n @State() hasSubItems: boolean = false;\n @State() subItemsOpen: boolean = false;\n\n private mutationObserver?: MutationObserver;\n\n componentDidLoad() {\n this.checkForSubItems();\n this.setupMutationObserver();\n\n setTimeout(() => {\n this.checkForSubItems();\n }, 0);\n }\n\n componentDidUpdate() {\n this.checkForSubItems();\n }\n\n disconnectedCallback() {\n if (this.mutationObserver) {\n this.mutationObserver.disconnect();\n }\n }\n\n private setupMutationObserver() {\n this.mutationObserver = new MutationObserver(() => {\n this.checkForSubItems();\n });\n\n this.mutationObserver.observe(this.el, {\n childList: true,\n subtree: true,\n });\n }\n\n private checkForSubItems() {\n const subItems = this.el.querySelector('[slot=\"sub-items\"]');\n const newHasSubItems = subItems !== null && (subItems.children.length > 0 || subItems.childNodes.length > 0);\n\n if (this.hasSubItems !== newHasSubItems) {\n this.hasSubItems = newHasSubItems;\n }\n }\n\n private handleToggleSubItems = (event: MouseEvent) => {\n event.preventDefault();\n event.stopPropagation();\n\n if (this.disabled) return;\n\n this.subItemsOpen = !this.subItemsOpen;\n };\n\n private handleItemClick = (event: MouseEvent) => {\n if (this.disabled) return;\n\n if (this.hasSubItems && !this.href) {\n event.preventDefault();\n event.stopPropagation();\n this.subItemsOpen = !this.subItemsOpen;\n }\n };\n\n private get classes() {\n return {\n 'spw-dropdown-item': true,\n 'spw-dropdown-item--disabled': this.disabled,\n 'spw-dropdown-item--has-sub-items': this.hasSubItems,\n 'spw-dropdown-item--sub-items-open': this.subItemsOpen,\n } as Record<string, boolean>;\n }\n\n render() {\n const Tag = this.href && !this.disabled ? 'a' : 'div';\n\n const toggleClasses = {\n 'spw-dropdown-item__toggle': true,\n 'spw-dropdown-item__toggle--open': this.subItemsOpen,\n } as Record<string, boolean>;\n\n return (\n <Host>\n <Tag class={this.classes} href={this.href} aria-disabled={this.disabled ? 'true' : undefined} onClick={this.handleItemClick}>\n {this.icon && (\n <div class=\"spw-dropdown-item__icon\">\n <spw-icon variant={this.iconVariant} icon={this.icon}></spw-icon>\n </div>\n )}\n\n <div class=\"spw-dropdown-item__content\">\n <div class=\"spw-dropdown-item__label\">\n <slot></slot>\n </div>\n\n {this.hasSubItems && (\n <div class={toggleClasses} onClick={this.handleToggleSubItems}>\n <spw-icon icon=\"fa-chevron-down\"></spw-icon>\n </div>\n )}\n </div>\n </Tag>\n\n {this.hasSubItems && (\n <div class=\"spw-dropdown-item__sub-items\" style={{ display: this.subItemsOpen ? 'block' : 'none' }}>\n <slot name=\"sub-items\"></slot>\n </div>\n )}\n </Host>\n );\n }\n}\n"],"names":["h","Host"],"mappings":"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"}
@@ -1,6 +1,6 @@
1
1
  'use strict';
2
2
 
3
- var index = require('./index-iVhYitTd.js');
3
+ var index = require('./index-ivINMH9O.js');
4
4
 
5
5
  const spwDropdownCss = "/*! normalize.css v8.0.1 | MIT License | github.com/necolas/normalize.css */html{-webkit-text-size-adjust:100%;line-height:1.3}h1,h2,h3,h4,h5,h6,li,p,ul{margin:0;padding:0}ul{list-style:none}:host{-webkit-text-size-adjust:100%;box-sizing:border-box;display:inline-block;font-size:100%;line-height:1}:host *,:host :after,:host :before{box-sizing:inherit;font-family:Nunito Sans}body{margin:0}main{display:block}h1{font-size:2em;margin:.67em 0}hr{box-sizing:content-box;height:0;overflow:visible}pre{font-family:monospace,monospace;font-size:1em}a{background-color:transparent}abbr[title]{border-bottom:none;text-decoration:underline;-webkit-text-decoration:underline dotted;text-decoration:underline dotted}b,strong{font-weight:bolder}code,kbd,samp{font-family:monospace,monospace;font-size:1em}small{font-size:80%}sub,sup{font-size:75%;line-height:0;position:relative;vertical-align:baseline}sub{bottom:-.25em}sup{top:-.5em}img{border-style:none}button,input,optgroup,select,textarea{font-family:inherit;font-size:100%;line-height:1.15;margin:0}button,input{overflow:visible}button,select{text-transform:none}[type=button],[type=reset],[type=submit],button{-webkit-appearance:button}[type=button]::-moz-focus-inner,[type=reset]::-moz-focus-inner,[type=submit]::-moz-focus-inner,button::-moz-focus-inner{border-style:none;padding:0}[type=button]:-moz-focusring,[type=reset]:-moz-focusring,[type=submit]:-moz-focusring,button:-moz-focusring{outline:1px dotted ButtonText}fieldset{padding:.35em .75em .625em}legend{box-sizing:border-box;color:inherit;display:table;max-width:100%;padding:0;white-space:normal}progress{vertical-align:baseline}textarea{overflow:auto}[type=checkbox],[type=radio]{box-sizing:border-box;padding:0}[type=number]::-webkit-inner-spin-button,[type=number]::-webkit-outer-spin-button{height:auto}[type=search]{-webkit-appearance:textfield;outline-offset:-2px}[type=search]::-webkit-search-decoration{-webkit-appearance:none}::-webkit-file-upload-button{-webkit-appearance:button;font:inherit}details{display:block}summary{display:list-item}[hidden],template{display:none}:root{--spw-ds-container-xl:1200px;--spw-ds-container-lg:1024px;--spw-ds-container-md:768px;--spw-ds-container-sm:640px}.spw-ds-container{margin-left:auto;margin-right:auto;padding-left:16px;padding-right:16px;width:100%}@media (min-width:460px){.spw-ds-container{max-width:var(--spw-ds-container-sm)}}@media (min-width:768px){.spw-ds-container{max-width:var(--spw-ds-container-md)}}@media (min-width:1024px){.spw-ds-container{max-width:var(--spw-ds-container-lg)}}@media (min-width:1350px){.spw-ds-container{max-width:var(--spw-ds-container-xl)}}";
6
6
 
@@ -12,7 +12,7 @@ const SpwDropdown = class {
12
12
  /** Active un padding interne */
13
13
  this.hasPadding = true;
14
14
  /** Largeur du dropdown (px) */
15
- this.contentWidth = 200;
15
+ this.contentWidth = 300;
16
16
  /** Contrôle externe du dropdown */
17
17
  this.open = false;
18
18
  this.isVisible = false;
@@ -1 +1 @@
1
- {"file":"spw-dropdown.entry.cjs.js","mappings":"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","names":["h"],"sources":["src/components/spw-dropdown/spw-dropdown.scss?tag=spw-dropdown&encapsulation=shadow","src/components/spw-dropdown/spw-dropdown.tsx"],"sourcesContent":[":host {\n display: inline-block;\n line-height: 1;\n}\n","import { Component, Prop, State, h, Element, Method, Watch } from '@stencil/core';\n\n@Component({\n tag: 'spw-dropdown',\n styleUrl: 'spw-dropdown.scss',\n shadow: true,\n})\nexport class SpwDropdown {\n /** Position du dropdown */\n @Prop() direction: 'top' | 'bottom' | 'left' | 'right' = 'bottom';\n\n /** Active un padding interne */\n @Prop() hasPadding: boolean = true;\n\n /** Largeur du dropdown (px) */\n @Prop() contentWidth: number = 200;\n\n /** Contrôle externe du dropdown */\n @Prop({ mutable: true, reflect: true }) open: boolean = false;\n\n @State() isVisible: boolean = false;\n\n @Element() host: HTMLElement;\n\n private dropdownEl: HTMLDivElement | null = null;\n private movedContentEl: HTMLElement | null = null;\n\n @Method()\n async close(): Promise<void> {\n this.open = false;\n this.hideDropdown();\n }\n\n @Watch('open')\n onOpenChange(newVal: boolean) {\n newVal ? this.showDropdown() : this.hideDropdown();\n }\n\n connectedCallback() {\n this.handleClickOutside = this.handleClickOutside.bind(this);\n this.handleScrollOrResize = this.handleScrollOrResize.bind(this);\n }\n\n componentDidLoad() {\n if (this.open) {\n this.showDropdown();\n }\n }\n\n disconnectedCallback() {\n this.removeListeners();\n }\n\n private addListeners() {\n document.addEventListener('click', this.handleClickOutside, true);\n window.addEventListener('scroll', this.handleScrollOrResize, true);\n window.addEventListener('resize', this.handleScrollOrResize);\n }\n\n private removeListeners() {\n document.removeEventListener('click', this.handleClickOutside, true);\n window.removeEventListener('scroll', this.handleScrollOrResize, true);\n window.removeEventListener('resize', this.handleScrollOrResize);\n }\n\n private handleClickOutside(event: MouseEvent) {\n if (!this.host.contains(event.target as Node) && !this.dropdownEl?.contains(event.target as Node)) {\n this.close();\n }\n }\n\n private handleScrollOrResize() {\n if (this.isVisible) {\n this.positionDropdown();\n }\n }\n\n private showDropdown = () => {\n if (this.isVisible) return;\n\n const slotContent = this.host.querySelector('[slot=\"dropdownContent\"]') as HTMLElement;\n if (!slotContent) return;\n\n this.isVisible = true;\n\n this.dropdownEl = document.createElement('div');\n this.dropdownEl.className = `spw-dropdown-fixed spw-dropdown-fixed--${this.direction}`;\n if (this.hasPadding) this.dropdownEl.classList.add('spw-dropdown-fixed--padded');\n\n this.dropdownEl.setAttribute('role', 'menu');\n this.dropdownEl.style.width = `${this.contentWidth || 200}px`;\n\n this.movedContentEl = slotContent;\n this.dropdownEl.appendChild(this.movedContentEl);\n\n document.body.appendChild(this.dropdownEl);\n\n requestAnimationFrame(() => {\n this.positionDropdown();\n this.addListeners();\n });\n };\n\n private hideDropdown = () => {\n if (!this.isVisible) return;\n\n this.isVisible = false;\n this.open = false;\n\n if (this.dropdownEl && this.movedContentEl) {\n this.host.appendChild(this.movedContentEl);\n }\n\n if (this.dropdownEl?.parentNode) {\n this.dropdownEl.parentNode.removeChild(this.dropdownEl);\n }\n\n this.dropdownEl = null;\n this.movedContentEl = null;\n\n this.removeListeners();\n };\n\n private positionDropdown() {\n if (!this.dropdownEl) return;\n\n const trigger = this.host.shadowRoot?.querySelector('.spw-dropdown__trigger');\n if (!trigger) return;\n\n const rect = trigger.getBoundingClientRect();\n const dropdown = this.dropdownEl;\n\n dropdown.style.visibility = 'hidden';\n dropdown.style.position = 'fixed';\n dropdown.style.display = 'flex';\n\n const dropdownRect = dropdown.getBoundingClientRect();\n\n let top = 0;\n let left = 0;\n\n switch (this.direction) {\n case 'top':\n top = rect.top - dropdownRect.height - 8;\n left = rect.left + (rect.width - dropdownRect.width) / 2;\n break;\n case 'bottom':\n top = rect.bottom + 8;\n left = rect.left + (rect.width - dropdownRect.width) / 2;\n break;\n case 'left':\n top = rect.top + (rect.height - dropdownRect.height) / 2;\n left = rect.left - dropdownRect.width - 8;\n break;\n case 'right':\n default:\n top = rect.top + (rect.height - dropdownRect.height) / 2;\n left = rect.right + 8;\n break;\n }\n\n dropdown.style.top = `${top}px`;\n dropdown.style.left = `${left}px`;\n dropdown.style.zIndex = '9999';\n dropdown.style.visibility = 'visible';\n }\n\n render() {\n return (\n <div class=\"spw-dropdown__trigger\" onClick={() => (this.open = !this.open)}>\n <slot></slot>\n </div>\n );\n }\n}\n"],"version":3}
1
+ {"file":"spw-dropdown.entry.cjs.js","mappings":"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","names":["h"],"sources":["src/components/spw-dropdown/spw-dropdown.scss?tag=spw-dropdown&encapsulation=shadow","src/components/spw-dropdown/spw-dropdown.tsx"],"sourcesContent":[":host {\n display: inline-block;\n line-height: 1;\n}\n","import { Component, Prop, State, h, Element, Method, Watch } from '@stencil/core';\n\n@Component({\n tag: 'spw-dropdown',\n styleUrl: 'spw-dropdown.scss',\n shadow: true,\n})\nexport class SpwDropdown {\n /** Position du dropdown */\n @Prop() direction: 'top' | 'bottom' | 'left' | 'right' = 'bottom';\n\n /** Active un padding interne */\n @Prop() hasPadding: boolean = true;\n\n /** Largeur du dropdown (px) */\n @Prop() contentWidth: number = 300;\n\n /** Contrôle externe du dropdown */\n @Prop({ mutable: true, reflect: true }) open: boolean = false;\n\n @State() isVisible: boolean = false;\n\n @Element() host: HTMLElement;\n\n private dropdownEl: HTMLDivElement | null = null;\n private movedContentEl: HTMLElement | null = null;\n\n @Method()\n async close(): Promise<void> {\n this.open = false;\n this.hideDropdown();\n }\n\n @Watch('open')\n onOpenChange(newVal: boolean) {\n newVal ? this.showDropdown() : this.hideDropdown();\n }\n\n connectedCallback() {\n this.handleClickOutside = this.handleClickOutside.bind(this);\n this.handleScrollOrResize = this.handleScrollOrResize.bind(this);\n }\n\n componentDidLoad() {\n if (this.open) {\n this.showDropdown();\n }\n }\n\n disconnectedCallback() {\n this.removeListeners();\n }\n\n private addListeners() {\n document.addEventListener('click', this.handleClickOutside, true);\n window.addEventListener('scroll', this.handleScrollOrResize, true);\n window.addEventListener('resize', this.handleScrollOrResize);\n }\n\n private removeListeners() {\n document.removeEventListener('click', this.handleClickOutside, true);\n window.removeEventListener('scroll', this.handleScrollOrResize, true);\n window.removeEventListener('resize', this.handleScrollOrResize);\n }\n\n private handleClickOutside(event: MouseEvent) {\n if (!this.host.contains(event.target as Node) && !this.dropdownEl?.contains(event.target as Node)) {\n this.close();\n }\n }\n\n private handleScrollOrResize() {\n if (this.isVisible) {\n this.positionDropdown();\n }\n }\n\n private showDropdown = () => {\n if (this.isVisible) return;\n\n const slotContent = this.host.querySelector('[slot=\"dropdownContent\"]') as HTMLElement;\n if (!slotContent) return;\n\n this.isVisible = true;\n\n this.dropdownEl = document.createElement('div');\n this.dropdownEl.className = `spw-dropdown-fixed spw-dropdown-fixed--${this.direction}`;\n if (this.hasPadding) this.dropdownEl.classList.add('spw-dropdown-fixed--padded');\n\n this.dropdownEl.setAttribute('role', 'menu');\n this.dropdownEl.style.width = `${this.contentWidth || 200}px`;\n\n this.movedContentEl = slotContent;\n this.dropdownEl.appendChild(this.movedContentEl);\n\n document.body.appendChild(this.dropdownEl);\n\n requestAnimationFrame(() => {\n this.positionDropdown();\n this.addListeners();\n });\n };\n\n private hideDropdown = () => {\n if (!this.isVisible) return;\n\n this.isVisible = false;\n this.open = false;\n\n if (this.dropdownEl && this.movedContentEl) {\n this.host.appendChild(this.movedContentEl);\n }\n\n if (this.dropdownEl?.parentNode) {\n this.dropdownEl.parentNode.removeChild(this.dropdownEl);\n }\n\n this.dropdownEl = null;\n this.movedContentEl = null;\n\n this.removeListeners();\n };\n\n private positionDropdown() {\n if (!this.dropdownEl) return;\n\n const trigger = this.host.shadowRoot?.querySelector('.spw-dropdown__trigger');\n if (!trigger) return;\n\n const rect = trigger.getBoundingClientRect();\n const dropdown = this.dropdownEl;\n\n dropdown.style.visibility = 'hidden';\n dropdown.style.position = 'fixed';\n dropdown.style.display = 'flex';\n\n const dropdownRect = dropdown.getBoundingClientRect();\n\n let top = 0;\n let left = 0;\n\n switch (this.direction) {\n case 'top':\n top = rect.top - dropdownRect.height - 8;\n left = rect.left + (rect.width - dropdownRect.width) / 2;\n break;\n case 'bottom':\n top = rect.bottom + 8;\n left = rect.left + (rect.width - dropdownRect.width) / 2;\n break;\n case 'left':\n top = rect.top + (rect.height - dropdownRect.height) / 2;\n left = rect.left - dropdownRect.width - 8;\n break;\n case 'right':\n default:\n top = rect.top + (rect.height - dropdownRect.height) / 2;\n left = rect.right + 8;\n break;\n }\n\n dropdown.style.top = `${top}px`;\n dropdown.style.left = `${left}px`;\n dropdown.style.zIndex = '9999';\n dropdown.style.visibility = 'visible';\n }\n\n render() {\n return (\n <div class=\"spw-dropdown__trigger\" onClick={() => (this.open = !this.open)}>\n <slot></slot>\n </div>\n );\n }\n}\n"],"version":3}
@@ -1 +1 @@
1
- {"version":3,"file":"spw-dropdown.entry.cjs.js","sources":["src/components/spw-dropdown/spw-dropdown.scss?tag=spw-dropdown&encapsulation=shadow","src/components/spw-dropdown/spw-dropdown.tsx"],"sourcesContent":[":host {\n display: inline-block;\n line-height: 1;\n}\n","import { Component, Prop, State, h, Element, Method, Watch } from '@stencil/core';\n\n@Component({\n tag: 'spw-dropdown',\n styleUrl: 'spw-dropdown.scss',\n shadow: true,\n})\nexport class SpwDropdown {\n /** Position du dropdown */\n @Prop() direction: 'top' | 'bottom' | 'left' | 'right' = 'bottom';\n\n /** Active un padding interne */\n @Prop() hasPadding: boolean = true;\n\n /** Largeur du dropdown (px) */\n @Prop() contentWidth: number = 200;\n\n /** Contrôle externe du dropdown */\n @Prop({ mutable: true, reflect: true }) open: boolean = false;\n\n @State() isVisible: boolean = false;\n\n @Element() host: HTMLElement;\n\n private dropdownEl: HTMLDivElement | null = null;\n private movedContentEl: HTMLElement | null = null;\n\n @Method()\n async close(): Promise<void> {\n this.open = false;\n this.hideDropdown();\n }\n\n @Watch('open')\n onOpenChange(newVal: boolean) {\n newVal ? this.showDropdown() : this.hideDropdown();\n }\n\n connectedCallback() {\n this.handleClickOutside = this.handleClickOutside.bind(this);\n this.handleScrollOrResize = this.handleScrollOrResize.bind(this);\n }\n\n componentDidLoad() {\n if (this.open) {\n this.showDropdown();\n }\n }\n\n disconnectedCallback() {\n this.removeListeners();\n }\n\n private addListeners() {\n document.addEventListener('click', this.handleClickOutside, true);\n window.addEventListener('scroll', this.handleScrollOrResize, true);\n window.addEventListener('resize', this.handleScrollOrResize);\n }\n\n private removeListeners() {\n document.removeEventListener('click', this.handleClickOutside, true);\n window.removeEventListener('scroll', this.handleScrollOrResize, true);\n window.removeEventListener('resize', this.handleScrollOrResize);\n }\n\n private handleClickOutside(event: MouseEvent) {\n if (!this.host.contains(event.target as Node) && !this.dropdownEl?.contains(event.target as Node)) {\n this.close();\n }\n }\n\n private handleScrollOrResize() {\n if (this.isVisible) {\n this.positionDropdown();\n }\n }\n\n private showDropdown = () => {\n if (this.isVisible) return;\n\n const slotContent = this.host.querySelector('[slot=\"dropdownContent\"]') as HTMLElement;\n if (!slotContent) return;\n\n this.isVisible = true;\n\n this.dropdownEl = document.createElement('div');\n this.dropdownEl.className = `spw-dropdown-fixed spw-dropdown-fixed--${this.direction}`;\n if (this.hasPadding) this.dropdownEl.classList.add('spw-dropdown-fixed--padded');\n\n this.dropdownEl.setAttribute('role', 'menu');\n this.dropdownEl.style.width = `${this.contentWidth || 200}px`;\n\n this.movedContentEl = slotContent;\n this.dropdownEl.appendChild(this.movedContentEl);\n\n document.body.appendChild(this.dropdownEl);\n\n requestAnimationFrame(() => {\n this.positionDropdown();\n this.addListeners();\n });\n };\n\n private hideDropdown = () => {\n if (!this.isVisible) return;\n\n this.isVisible = false;\n this.open = false;\n\n if (this.dropdownEl && this.movedContentEl) {\n this.host.appendChild(this.movedContentEl);\n }\n\n if (this.dropdownEl?.parentNode) {\n this.dropdownEl.parentNode.removeChild(this.dropdownEl);\n }\n\n this.dropdownEl = null;\n this.movedContentEl = null;\n\n this.removeListeners();\n };\n\n private positionDropdown() {\n if (!this.dropdownEl) return;\n\n const trigger = this.host.shadowRoot?.querySelector('.spw-dropdown__trigger');\n if (!trigger) return;\n\n const rect = trigger.getBoundingClientRect();\n const dropdown = this.dropdownEl;\n\n dropdown.style.visibility = 'hidden';\n dropdown.style.position = 'fixed';\n dropdown.style.display = 'flex';\n\n const dropdownRect = dropdown.getBoundingClientRect();\n\n let top = 0;\n let left = 0;\n\n switch (this.direction) {\n case 'top':\n top = rect.top - dropdownRect.height - 8;\n left = rect.left + (rect.width - dropdownRect.width) / 2;\n break;\n case 'bottom':\n top = rect.bottom + 8;\n left = rect.left + (rect.width - dropdownRect.width) / 2;\n break;\n case 'left':\n top = rect.top + (rect.height - dropdownRect.height) / 2;\n left = rect.left - dropdownRect.width - 8;\n break;\n case 'right':\n default:\n top = rect.top + (rect.height - dropdownRect.height) / 2;\n left = rect.right + 8;\n break;\n }\n\n dropdown.style.top = `${top}px`;\n dropdown.style.left = `${left}px`;\n dropdown.style.zIndex = '9999';\n dropdown.style.visibility = 'visible';\n }\n\n render() {\n return (\n <div class=\"spw-dropdown__trigger\" onClick={() => (this.open = !this.open)}>\n <slot></slot>\n </div>\n );\n }\n}\n"],"names":["h"],"mappings":"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"}
1
+ {"version":3,"file":"spw-dropdown.entry.cjs.js","sources":["src/components/spw-dropdown/spw-dropdown.scss?tag=spw-dropdown&encapsulation=shadow","src/components/spw-dropdown/spw-dropdown.tsx"],"sourcesContent":[":host {\n display: inline-block;\n line-height: 1;\n}\n","import { Component, Prop, State, h, Element, Method, Watch } from '@stencil/core';\n\n@Component({\n tag: 'spw-dropdown',\n styleUrl: 'spw-dropdown.scss',\n shadow: true,\n})\nexport class SpwDropdown {\n /** Position du dropdown */\n @Prop() direction: 'top' | 'bottom' | 'left' | 'right' = 'bottom';\n\n /** Active un padding interne */\n @Prop() hasPadding: boolean = true;\n\n /** Largeur du dropdown (px) */\n @Prop() contentWidth: number = 300;\n\n /** Contrôle externe du dropdown */\n @Prop({ mutable: true, reflect: true }) open: boolean = false;\n\n @State() isVisible: boolean = false;\n\n @Element() host: HTMLElement;\n\n private dropdownEl: HTMLDivElement | null = null;\n private movedContentEl: HTMLElement | null = null;\n\n @Method()\n async close(): Promise<void> {\n this.open = false;\n this.hideDropdown();\n }\n\n @Watch('open')\n onOpenChange(newVal: boolean) {\n newVal ? this.showDropdown() : this.hideDropdown();\n }\n\n connectedCallback() {\n this.handleClickOutside = this.handleClickOutside.bind(this);\n this.handleScrollOrResize = this.handleScrollOrResize.bind(this);\n }\n\n componentDidLoad() {\n if (this.open) {\n this.showDropdown();\n }\n }\n\n disconnectedCallback() {\n this.removeListeners();\n }\n\n private addListeners() {\n document.addEventListener('click', this.handleClickOutside, true);\n window.addEventListener('scroll', this.handleScrollOrResize, true);\n window.addEventListener('resize', this.handleScrollOrResize);\n }\n\n private removeListeners() {\n document.removeEventListener('click', this.handleClickOutside, true);\n window.removeEventListener('scroll', this.handleScrollOrResize, true);\n window.removeEventListener('resize', this.handleScrollOrResize);\n }\n\n private handleClickOutside(event: MouseEvent) {\n if (!this.host.contains(event.target as Node) && !this.dropdownEl?.contains(event.target as Node)) {\n this.close();\n }\n }\n\n private handleScrollOrResize() {\n if (this.isVisible) {\n this.positionDropdown();\n }\n }\n\n private showDropdown = () => {\n if (this.isVisible) return;\n\n const slotContent = this.host.querySelector('[slot=\"dropdownContent\"]') as HTMLElement;\n if (!slotContent) return;\n\n this.isVisible = true;\n\n this.dropdownEl = document.createElement('div');\n this.dropdownEl.className = `spw-dropdown-fixed spw-dropdown-fixed--${this.direction}`;\n if (this.hasPadding) this.dropdownEl.classList.add('spw-dropdown-fixed--padded');\n\n this.dropdownEl.setAttribute('role', 'menu');\n this.dropdownEl.style.width = `${this.contentWidth || 200}px`;\n\n this.movedContentEl = slotContent;\n this.dropdownEl.appendChild(this.movedContentEl);\n\n document.body.appendChild(this.dropdownEl);\n\n requestAnimationFrame(() => {\n this.positionDropdown();\n this.addListeners();\n });\n };\n\n private hideDropdown = () => {\n if (!this.isVisible) return;\n\n this.isVisible = false;\n this.open = false;\n\n if (this.dropdownEl && this.movedContentEl) {\n this.host.appendChild(this.movedContentEl);\n }\n\n if (this.dropdownEl?.parentNode) {\n this.dropdownEl.parentNode.removeChild(this.dropdownEl);\n }\n\n this.dropdownEl = null;\n this.movedContentEl = null;\n\n this.removeListeners();\n };\n\n private positionDropdown() {\n if (!this.dropdownEl) return;\n\n const trigger = this.host.shadowRoot?.querySelector('.spw-dropdown__trigger');\n if (!trigger) return;\n\n const rect = trigger.getBoundingClientRect();\n const dropdown = this.dropdownEl;\n\n dropdown.style.visibility = 'hidden';\n dropdown.style.position = 'fixed';\n dropdown.style.display = 'flex';\n\n const dropdownRect = dropdown.getBoundingClientRect();\n\n let top = 0;\n let left = 0;\n\n switch (this.direction) {\n case 'top':\n top = rect.top - dropdownRect.height - 8;\n left = rect.left + (rect.width - dropdownRect.width) / 2;\n break;\n case 'bottom':\n top = rect.bottom + 8;\n left = rect.left + (rect.width - dropdownRect.width) / 2;\n break;\n case 'left':\n top = rect.top + (rect.height - dropdownRect.height) / 2;\n left = rect.left - dropdownRect.width - 8;\n break;\n case 'right':\n default:\n top = rect.top + (rect.height - dropdownRect.height) / 2;\n left = rect.right + 8;\n break;\n }\n\n dropdown.style.top = `${top}px`;\n dropdown.style.left = `${left}px`;\n dropdown.style.zIndex = '9999';\n dropdown.style.visibility = 'visible';\n }\n\n render() {\n return (\n <div class=\"spw-dropdown__trigger\" onClick={() => (this.open = !this.open)}>\n <slot></slot>\n </div>\n );\n }\n}\n"],"names":["h"],"mappings":"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"}
@@ -1,6 +1,6 @@
1
1
  'use strict';
2
2
 
3
- var index = require('./index-iVhYitTd.js');
3
+ var index = require('./index-ivINMH9O.js');
4
4
 
5
5
  const spwFieldLabelCss = "/*! normalize.css v8.0.1 | MIT License | github.com/necolas/normalize.css */html{-webkit-text-size-adjust:100%;line-height:1.3}h1,h2,h3,h4,h5,h6,li,p,ul{margin:0;padding:0}ul{list-style:none}:host{-webkit-text-size-adjust:100%;box-sizing:border-box;display:block;font-size:100%;line-height:1.3}:host *,:host :after,:host :before{box-sizing:inherit;font-family:Nunito Sans}body{margin:0}main{display:block}h1{font-size:2em;margin:.67em 0}hr{box-sizing:content-box;height:0;overflow:visible}pre{font-family:monospace,monospace;font-size:1em}a{background-color:transparent}abbr[title]{border-bottom:none;text-decoration:underline;-webkit-text-decoration:underline dotted;text-decoration:underline dotted}b,strong{font-weight:bolder}code,kbd,samp{font-family:monospace,monospace;font-size:1em}small{font-size:80%}sub,sup{font-size:75%;line-height:0;position:relative;vertical-align:baseline}sub{bottom:-.25em}sup{top:-.5em}img{border-style:none}button,input,optgroup,select,textarea{font-family:inherit;font-size:100%;line-height:1.15;margin:0}button,input{overflow:visible}button,select{text-transform:none}[type=button],[type=reset],[type=submit],button{-webkit-appearance:button}[type=button]::-moz-focus-inner,[type=reset]::-moz-focus-inner,[type=submit]::-moz-focus-inner,button::-moz-focus-inner{border-style:none;padding:0}[type=button]:-moz-focusring,[type=reset]:-moz-focusring,[type=submit]:-moz-focusring,button:-moz-focusring{outline:1px dotted ButtonText}fieldset{padding:.35em .75em .625em}legend{box-sizing:border-box;color:inherit;display:table;max-width:100%;padding:0;white-space:normal}progress{vertical-align:baseline}textarea{overflow:auto}[type=checkbox],[type=radio]{box-sizing:border-box;padding:0}[type=number]::-webkit-inner-spin-button,[type=number]::-webkit-outer-spin-button{height:auto}[type=search]{-webkit-appearance:textfield;outline-offset:-2px}[type=search]::-webkit-search-decoration{-webkit-appearance:none}::-webkit-file-upload-button{-webkit-appearance:button;font:inherit}details{display:block}summary{display:list-item}[hidden],template{display:none}:root{--spw-ds-container-xl:1200px;--spw-ds-container-lg:1024px;--spw-ds-container-md:768px;--spw-ds-container-sm:640px}.spw-ds-container{margin-left:auto;margin-right:auto;padding-left:16px;padding-right:16px;width:100%}@media (min-width:460px){.spw-ds-container{max-width:var(--spw-ds-container-sm)}}@media (min-width:768px){.spw-ds-container{max-width:var(--spw-ds-container-md)}}@media (min-width:1024px){.spw-ds-container{max-width:var(--spw-ds-container-lg)}}@media (min-width:1350px){.spw-ds-container{max-width:var(--spw-ds-container-xl)}}.spw-field-label{color:var(--spw-color-themes-grey-grey-800);display:block;font-weight:600;margin-bottom:.5rem}.spw-field-label__required{color:var(--spw-ds-primary)}.spw-tw-mb-3{margin-bottom:.75rem}.-spw-tw-mt-1{margin-top:-.25rem}.spw-tw-mb-2{margin-bottom:.5rem}.spw-tw-mr-2{margin-right:.5rem}.spw-tw-mb-10{margin-bottom:2.5rem}.spw-tw-mb-6{margin-bottom:1.5rem}.spw-tw-ml-2{margin-left:.5rem}.spw-tw-mr-4{margin-right:1rem}.spw-tw-mt-12{margin-top:3rem}.spw-tw-italic{font-style:italic}";
6
6
 
@@ -20,7 +20,7 @@ const SpwFieldLabel = class {
20
20
  };
21
21
  }
22
22
  render() {
23
- return (index.h(index.Host, { key: 'e214b8c000da02c3a7eabb804d4b22d8eabf0017' }, index.h("label", { key: '8397370f89f285635897828815050265efe582ef', class: "spw-field-label", htmlFor: this.name, onClick: this.handleClick }, this.label, " ", this.required && index.h("span", { key: '3d4bc2af13e134cf19ac65f970a3a4240e9d137b', class: "spw-field-label__required" }, "*"))));
23
+ return (index.h(index.Host, { key: '258c881478963c45000168061a8c816bb565b087' }, index.h("label", { key: '316132012ed4a875c8e1a96d1a661bd9f57b0b5b', class: "spw-field-label", htmlFor: this.name, onClick: this.handleClick }, this.label, " ", this.required && index.h("span", { key: '0d1948dd64208307936b034b5d75fda146106c74', class: "spw-field-label__required" }, "*"))));
24
24
  }
25
25
  get el() { return index.getElement(this); }
26
26
  };
@@ -74,7 +74,7 @@ const SpwGroup = class {
74
74
  };
75
75
  }
76
76
  render() {
77
- return (index.h(index.Host, { key: '9731f79adb2295e094b35b61c273886d1fe8eebe' }, index.h("div", { key: '13741d449663ef6ab13e61812552c8b9b3aa2cbd', class: this.groupClasses }, this.label && index.h("spw-field-label", { key: 'f9b3876ed3537eb551ac3f16fd368a30a2e44926', class: "spw-tw-mb-3", label: this.label, name: this.name, required: this.required }), index.h("div", { key: 'c72569c4fb300caea6183cfae05f334875dfc09e', class: "spw-group__container" }, index.h("slot", { key: '44bb853320a59a8ce1295e0fdf06bd3c4df09c49', ref: el => (this.slotEl = el) })))));
77
+ return (index.h(index.Host, { key: 'dc2706bf3fcf14a4ce66ca752b3b711ef8dd5549' }, index.h("div", { key: '36de58106b119a68a29ae5422746437afc0c399d', class: this.groupClasses }, this.label && index.h("spw-field-label", { key: '4cf29052c6b891f2a1fcff4f7667a320a706841d', class: "spw-tw-mb-3", label: this.label, name: this.name, required: this.required }), index.h("div", { key: 'd771fd803484da3034d5297e04d166d874b56b0d', class: "spw-group__container" }, index.h("slot", { key: 'd16c70177f20cfb1f978486dd1e6e7a2bfc668d4', ref: el => (this.slotEl = el) })))));
78
78
  }
79
79
  get host() { return index.getElement(this); }
80
80
  };
@@ -101,7 +101,7 @@ const spwLinkCss = "/*! normalize.css v8.0.1 | MIT License | github.com/necolas/
101
101
  const SpwLink = class {
102
102
  constructor(hostRef) {
103
103
  index.registerInstance(this, hostRef);
104
- this.spwClick = index.createEvent(this, "spwClick");
104
+ this.spwClick = index.createEvent(this, "spwClick", 7);
105
105
  /** Attribut target (détermine où ouvrir le lien) */
106
106
  this.target = '_self';
107
107
  /** Position de l'icône à l'intérieur du lien (gauche ou droite) */
@@ -135,7 +135,7 @@ const SpwLink = class {
135
135
  };
136
136
  const iconClass = `spw-icon--${iconPosition}`;
137
137
  const iconElement = icon ? index.h("spw-icon", { class: iconClass, icon: icon }) : null;
138
- return (index.h("a", Object.assign({ key: 'e0f82245f511e930a70f4eb5a872ad73b86d30c5', href: disabled ? undefined : href, rel: rel, target: target, class: this.elementClass, onClick: this.onClick }, ariaAttributes), iconPosition === 'left' && iconElement, index.h("div", { key: '77eb530be7a5ed9de3ed2c4f19839061e70d64c1', class: "spw-link__inner" }, index.h("slot", { key: '6c803c3372e281aaf5205baa1b0d1441d200f7e5' })), iconPosition === 'right' && iconElement));
138
+ return (index.h("a", Object.assign({ key: '6b8b34ebb09aa98e0924f1de932e423baa048d37', href: disabled ? undefined : href, rel: rel, target: target, class: this.elementClass, onClick: this.onClick }, ariaAttributes), iconPosition === 'left' && iconElement, index.h("div", { key: 'ee0b12555f84eaf1d8cce884e658ed12276dbfba', class: "spw-link__inner" }, index.h("slot", { key: '7240f63b0d6ba01e8eeae7c7016f22916a6dc630' })), iconPosition === 'right' && iconElement));
139
139
  }
140
140
  get el() { return index.getElement(this); }
141
141
  };
@@ -172,7 +172,7 @@ const SpwSeparator = class {
172
172
  };
173
173
  }
174
174
  render() {
175
- return index.h("div", { key: '109c32f1b6daa299ac305a7cfd983164639f2464', class: this.elementClass, style: this.style });
175
+ return index.h("div", { key: '888d77fa5ca4a8030f263a30422e86068500cb29', class: this.elementClass, style: this.style });
176
176
  }
177
177
  };
178
178
  SpwSeparator.style = spwSeparatorCss;
@@ -235,7 +235,7 @@ const SpwThemeProvider = class {
235
235
  document.documentElement.setAttribute('data-theme', theme);
236
236
  }
237
237
  render() {
238
- return (index.h("main", { key: '6f7aca521c79251d53fe6a1f6be05b22ce24da4d', class: `spw-theme-${this.theme}` }, index.h("slot", { key: '2967c6e79bd74eff414de7180e57287d557ffac1' })));
238
+ return (index.h("main", { key: '5d50d6efac83371a0a7778ffe03db3921ea27bc0', class: `spw-theme-${this.theme}` }, index.h("slot", { key: '1e8e82d5368254187805aff59f0c33b0fc55bda8' })));
239
239
  }
240
240
  get el() { return index.getElement(this); }
241
241
  };
@@ -1,6 +1,6 @@
1
1
  'use strict';
2
2
 
3
- var index = require('./index-iVhYitTd.js');
3
+ var index = require('./index-ivINMH9O.js');
4
4
 
5
5
  const spwFieldMessageCss = "/*! normalize.css v8.0.1 | MIT License | github.com/necolas/normalize.css */html{-webkit-text-size-adjust:100%;line-height:1.3}h1,h2,h3,h4,h5,h6,li,p,ul{margin:0;padding:0}ul{list-style:none}:host{-webkit-text-size-adjust:100%;box-sizing:border-box;display:block;font-size:100%;line-height:1.3}:host *,:host :after,:host :before{box-sizing:inherit;font-family:Nunito Sans}body{margin:0}main{display:block}h1{font-size:2em;margin:.67em 0}hr{box-sizing:content-box;height:0;overflow:visible}pre{font-family:monospace,monospace;font-size:1em}a{background-color:transparent}abbr[title]{border-bottom:none;text-decoration:underline;-webkit-text-decoration:underline dotted;text-decoration:underline dotted}b,strong{font-weight:bolder}code,kbd,samp{font-family:monospace,monospace;font-size:1em}small{font-size:80%}sub,sup{font-size:75%;line-height:0;position:relative;vertical-align:baseline}sub{bottom:-.25em}sup{top:-.5em}img{border-style:none}button,input,optgroup,select,textarea{font-family:inherit;font-size:100%;line-height:1.15;margin:0}button,input{overflow:visible}button,select{text-transform:none}[type=button],[type=reset],[type=submit],button{-webkit-appearance:button}[type=button]::-moz-focus-inner,[type=reset]::-moz-focus-inner,[type=submit]::-moz-focus-inner,button::-moz-focus-inner{border-style:none;padding:0}[type=button]:-moz-focusring,[type=reset]:-moz-focusring,[type=submit]:-moz-focusring,button:-moz-focusring{outline:1px dotted ButtonText}fieldset{padding:.35em .75em .625em}legend{box-sizing:border-box;color:inherit;display:table;max-width:100%;padding:0;white-space:normal}progress{vertical-align:baseline}textarea{overflow:auto}[type=checkbox],[type=radio]{box-sizing:border-box;padding:0}[type=number]::-webkit-inner-spin-button,[type=number]::-webkit-outer-spin-button{height:auto}[type=search]{-webkit-appearance:textfield;outline-offset:-2px}[type=search]::-webkit-search-decoration{-webkit-appearance:none}::-webkit-file-upload-button{-webkit-appearance:button;font:inherit}details{display:block}summary{display:list-item}[hidden],template{display:none}:root{--spw-ds-container-xl:1200px;--spw-ds-container-lg:1024px;--spw-ds-container-md:768px;--spw-ds-container-sm:640px}.spw-ds-container{margin-left:auto;margin-right:auto;padding-left:16px;padding-right:16px;width:100%}@media (min-width:460px){.spw-ds-container{max-width:var(--spw-ds-container-sm)}}@media (min-width:768px){.spw-ds-container{max-width:var(--spw-ds-container-md)}}@media (min-width:1024px){.spw-ds-container{max-width:var(--spw-ds-container-lg)}}@media (min-width:1350px){.spw-ds-container{max-width:var(--spw-ds-container-xl)}}.spw-field-message{display:block;display:flex;gap:8px;margin-top:8px}.spw-field-message--error{color:var(--spw-color-states-error-error-300)}.spw-field-message--hint{color:var(--spw-colors-support-grey-grey-800)}.spw-field-message--success{color:var(--spw-color-states-success-success-500)}.spw-field-message--warning{color:var(--spw-color-themes-orange-orange-500)}.spw-field-message__icon{position:relative;top:1px}.spw-field-message__text{flex:1;font-size:14px;line-height:1.5}.-spw-tw-mt-1{margin-top:-.25rem}.spw-tw-mb-2{margin-bottom:.5rem}.spw-tw-mr-2{margin-right:.5rem}.spw-tw-mb-10{margin-bottom:2.5rem}.spw-tw-mb-6{margin-bottom:1.5rem}.spw-tw-ml-2{margin-left:.5rem}.spw-tw-mr-4{margin-right:1rem}.spw-tw-mt-12{margin-top:3rem}.spw-tw-italic{font-style:italic}";
6
6
 
@@ -31,7 +31,7 @@ const SpwFieldMessage = class {
31
31
  };
32
32
  }
33
33
  render() {
34
- return (index.h(index.Host, { key: '317bf98a34fad1abd03b2e85f5e11bca4a56a645' }, index.h("div", { key: 'ccf8948f8e4a222675f16ef3edb111167b1dac67', class: this.elementClass }, this.showIcon && (index.h("div", { key: '01e694d31e53b72968eed0e62d9a8484553b7493', class: "spw-field-message__icon" }, index.h("spw-icon", { key: 'a5bb727af018bd42f3d4c32b46ccd61ee4cb8174', icon: this.variantIcon }))), index.h("span", { key: '5555b7b8405ab026f43619591440997c2acffe33', class: "spw-field-message__text" }, index.h("slot", { key: 'f6781d62b64e910e7f8fb3ee32b0c2bad24a15c3' })))));
34
+ return (index.h(index.Host, { key: '95fada96ae0c655bb4c1d427ed5b9dc0e9057683' }, index.h("div", { key: 'bde1388b8e07c7832650f8063d49421b81220020', class: this.elementClass }, this.showIcon && (index.h("div", { key: '3d532d21bf20213f460702d7390a81bc385f408b', class: "spw-field-message__icon" }, index.h("spw-icon", { key: 'f76d215f5639258e38e008c4992fd252b89f0923', icon: this.variantIcon }))), index.h("span", { key: '07d7762df44f5f14d23a032bcc532fef68bd29e5', class: "spw-field-message__text" }, index.h("slot", { key: 'fe807df34d8a13624d43b6e9b4789065af22ca62' })))));
35
35
  }
36
36
  };
37
37
  SpwFieldMessage.style = spwFieldMessageCss;
@@ -1,14 +1,14 @@
1
1
  'use strict';
2
2
 
3
- var index = require('./index-iVhYitTd.js');
4
- var utils = require('./utils-CKYAw_Le.js');
3
+ var index = require('./index-ivINMH9O.js');
4
+ var utils = require('./utils-D_vNTY6w.js');
5
5
 
6
6
  const spwFileUploadCss = "/*! normalize.css v8.0.1 | MIT License | github.com/necolas/normalize.css */html{-webkit-text-size-adjust:100%;line-height:1.3}h1,h2,h3,h4,h5,h6,li,p,ul{margin:0;padding:0}ul{list-style:none}:host{-webkit-text-size-adjust:100%;box-sizing:border-box;display:block;font-size:100%;line-height:1.3}:host *,:host :after,:host :before{box-sizing:inherit;font-family:Nunito Sans}body{margin:0}main{display:block}h1{font-size:2em;margin:.67em 0}hr{box-sizing:content-box;height:0;overflow:visible}pre{font-family:monospace,monospace;font-size:1em}a{background-color:transparent}abbr[title]{border-bottom:none;text-decoration:underline;-webkit-text-decoration:underline dotted;text-decoration:underline dotted}b,strong{font-weight:bolder}code,kbd,samp{font-family:monospace,monospace;font-size:1em}small{font-size:80%}sub,sup{font-size:75%;line-height:0;position:relative;vertical-align:baseline}sub{bottom:-.25em}sup{top:-.5em}img{border-style:none}button,input,optgroup,select,textarea{font-family:inherit;font-size:100%;line-height:1.15;margin:0}button,input{overflow:visible}button,select{text-transform:none}[type=button],[type=reset],[type=submit],button{-webkit-appearance:button}[type=button]::-moz-focus-inner,[type=reset]::-moz-focus-inner,[type=submit]::-moz-focus-inner,button::-moz-focus-inner{border-style:none;padding:0}[type=button]:-moz-focusring,[type=reset]:-moz-focusring,[type=submit]:-moz-focusring,button:-moz-focusring{outline:1px dotted ButtonText}fieldset{padding:.35em .75em .625em}legend{box-sizing:border-box;color:inherit;display:table;max-width:100%;padding:0;white-space:normal}progress{vertical-align:baseline}textarea{overflow:auto}[type=checkbox],[type=radio]{box-sizing:border-box;padding:0}[type=number]::-webkit-inner-spin-button,[type=number]::-webkit-outer-spin-button{height:auto}[type=search]{-webkit-appearance:textfield;outline-offset:-2px}[type=search]::-webkit-search-decoration{-webkit-appearance:none}::-webkit-file-upload-button{-webkit-appearance:button;font:inherit}details{display:block}summary{display:list-item}[hidden],template{display:none}:root{--spw-ds-container-xl:1200px;--spw-ds-container-lg:1024px;--spw-ds-container-md:768px;--spw-ds-container-sm:640px}.spw-ds-container{margin-left:auto;margin-right:auto;padding-left:16px;padding-right:16px;width:100%}@media (min-width:460px){.spw-ds-container{max-width:var(--spw-ds-container-sm)}}@media (min-width:768px){.spw-ds-container{max-width:var(--spw-ds-container-md)}}@media (min-width:1024px){.spw-ds-container{max-width:var(--spw-ds-container-lg)}}@media (min-width:1350px){.spw-ds-container{max-width:var(--spw-ds-container-xl)}}.spw-file-upload{display:block;position:relative}.spw-file-upload__wrapper--error{background-color:#ffe6e6;border-color:#ff4d4d}.spw-file-upload__wrapper--dragging{background-color:#e0f7fa;border-color:#00acc1}.spw-file-upload spw-button{display:inline-block;margin-bottom:8px}.spw-file-upload__errors{color:var(--spw-colors-dark-themes-red-red-500);font-size:14px;font-weight:600}.spw-file-upload__errors li{margin-top:16px}.spw-file-upload__errors--warning{color:var(--spw-color-themes-grey-grey-800);font-weight:400}.spw-file-upload__hints{color:var(--spw-color-themes-grey-grey-600);font-size:14px;margin-top:16px}.spw-file-upload__dropzone{background:var(--spw-colors-dark-themes-blue-grey-blue-grey-50);border:1px dashed #333;border-radius:8px;color:#555;cursor:pointer;font-weight:700;padding:20px;text-align:center}.spw-file-upload__dropzone:not(.spw-file-upload--disabled):hover{outline:4px solid var(--spw-color-themes-grey-grey-300)}.spw-file-upload__dropzone:not(.spw-file-upload__wrapper--disabled):active,.spw-file-upload__dropzone:not(.spw-file-upload__wrapper--disabled):focus-visible,.spw-file-upload__dropzone:not(.spw-file-upload__wrapper--disabled):focus-within{outline:2px solid var(--spw-ds-focus)}.spw-file-upload__dropzone-link{color:var(--spw-ds-primary);text-decoration:underline}.spw-file-upload__dropzone-link:hover{text-decoration:none}.spw-file-upload__wrapper--disabled .spw-file-upload__dropzone-link{color:inherit;text-decoration:none}.spw-file-upload__wrapper--disabled .spw-file-upload__dropzone{background:var(--spw-color-themes-grey-grey-100);border-color:var(--spw-color-themes-grey-grey-300);color:var(--spw-color-themes-grey-grey-400);cursor:not-allowed;outline:none!important}.spw-file-upload--is-dragging .spw-file-upload__dropzone{background:var(--spw-colors-dark-themes-blue-grey-blue-grey-200)}.spw-file-upload__info-list{border-top:1px solid #eee;margin-top:16px}.spw-file-upload__info-list li{align-items:center;border-bottom:1px solid #eee;color:var(--spw-color-themes-grey-grey-900);display:flex;flex-wrap:wrap;font-size:14px;gap:8px;justify-content:space-between;padding:16px 8px}@media (min-width:768px){.spw-file-upload__info-list li{flex-wrap:nowrap;gap:16px}}.spw-file-upload__info-list-actions{display:flex;gap:8px}@media (min-width:768px){.spw-file-upload__info-list-actions{gap:16px}}.spw-file-upload__info-list-delete{color:inherit}.spw-file-upload__info-list-delete:hover{text-decoration:none}.spw-tw-mr-2{margin-right:.5rem}";
7
7
 
8
8
  const SpwFileUpload = class {
9
9
  constructor(hostRef) {
10
10
  index.registerInstance(this, hostRef);
11
- this.spwFileChange = index.createEvent(this, "spwFileChange");
11
+ this.spwFileChange = index.createEvent(this, "spwFileChange", 7);
12
12
  if (hostRef.$hostElement$["s-ei"]) {
13
13
  this.internals = hostRef.$hostElement$["s-ei"];
14
14
  }
@@ -152,6 +152,7 @@ const SpwFileUpload = class {
152
152
  this.selectedFiles = this.selectedFiles.filter((_, i) => i !== index);
153
153
  this.fileLimitErrors = [];
154
154
  this.updateFormValue();
155
+ this.spwFileChange.emit({ files: this.selectedFiles });
155
156
  }
156
157
  handleKeydown(event) {
157
158
  if ((event.key === ' ' || event.key === 'Enter') && !this.isMaxFilesReached) {
@@ -187,10 +188,10 @@ const SpwFileUpload = class {
187
188
  render() {
188
189
  const inputTextNoDrop = this.multiple ? 'Choisir vos fichiers...' : 'Choisir votre fichier...';
189
190
  const inputTextDrop = this.multiple ? 'Déposez vos fichiers ici' : 'Déposez votre fichier ici';
190
- return (index.h("div", { key: '905a44e832e6ccd19b72f2185cddf32499e35e31', class: this.elementClass, onDragOver: this.handleDragOver.bind(this), onDragLeave: this.handleDragLeave.bind(this), onDrop: this.handleDrop.bind(this) }, index.h("input", { key: 'ab7e977d7aa91483669b00a405436c47994984f1', type: "file", ref: el => (this.inputElement = el), onChange: this.handleFileChange.bind(this), name: this.name, multiple: this.multiple, accept: this.accept, style: { display: 'none' }, disabled: this.isMaxFilesReached }), this.enableDropZone ? (index.h("div", { tabindex: this.disabled || this.isMaxFilesReached ? -1 : 0, onKeyDown: this.handleKeydown.bind(this), onClick: () => !this.disabled && !this.isMaxFilesReached && this.inputElement.click(), class: "spw-file-upload__dropzone" }, inputTextDrop, " ou ", index.h("span", { class: "spw-file-upload__dropzone-link" }, "choisissez sur votre ordinateur..."))) : (index.h("spw-button", { variant: "secondary", onClick: () => !this.disabled && !this.isMaxFilesReached && this.inputElement.click(), disabled: this.disabled || this.isMaxFilesReached }, inputTextNoDrop)), index.h("div", { key: 'd0771d550e3686310adeae371503cb9970130e4f', class: "spw-file-upload__hints" }, this.hintsMessages.length > 0 && (index.h("ul", { key: '09f6a60bddfa09069f7181d0222fc925d72a11ea' }, this.hintsMessages.map((message, index$1) => (index.h("li", { key: index$1 }, message)))))), index.h("div", { key: 'e8ba3c083e0b132ea17bfdd8c54be97a828eb452', class: "spw-file-upload__info" }, this.selectedFiles.length > 0 ? (index.h("ul", { class: "spw-file-upload__info-list" }, this.selectedFiles.map((file, index$1) => (index.h("li", { key: index$1 }, index.h("span", { class: "spw-file-upload__info-list-name" }, file.name), index.h("div", { class: "spw-file-upload__info-list-actions" }, index.h("span", { class: "spw-tw-mr-2" }, utils.formatFileSize(file.size)), index.h("a", { class: "spw-file-upload__info-list-delete", href: "#", onClick: e => {
191
+ return (index.h("div", { key: 'd1729f2e8e132eaae9466fd3de9d3cce1f1ab495', class: this.elementClass, onDragOver: this.handleDragOver.bind(this), onDragLeave: this.handleDragLeave.bind(this), onDrop: this.handleDrop.bind(this) }, index.h("input", { key: '006a507254e955356d0665cc379795680ec97cc0', type: "file", ref: el => (this.inputElement = el), onChange: this.handleFileChange.bind(this), name: this.name, multiple: this.multiple, accept: this.accept, style: { display: 'none' }, disabled: this.isMaxFilesReached }), this.enableDropZone ? (index.h("div", { tabindex: this.disabled || this.isMaxFilesReached ? -1 : 0, onKeyDown: this.handleKeydown.bind(this), onClick: () => !this.disabled && !this.isMaxFilesReached && this.inputElement.click(), class: "spw-file-upload__dropzone" }, inputTextDrop, " ou ", index.h("span", { class: "spw-file-upload__dropzone-link" }, "choisissez sur votre ordinateur..."))) : (index.h("spw-button", { variant: "secondary", onClick: () => !this.disabled && !this.isMaxFilesReached && this.inputElement.click(), disabled: this.disabled || this.isMaxFilesReached }, inputTextNoDrop)), index.h("div", { key: 'ec66251b01f2e4371256ec1f438172f24bb99664', class: "spw-file-upload__hints" }, this.hintsMessages.length > 0 && (index.h("ul", { key: '7f38d26e4951f5617224cc543305d96b6b0a1a48' }, this.hintsMessages.map((message, index$1) => (index.h("li", { key: index$1 }, message)))))), index.h("div", { key: 'a7b0ababb16f32dce72bcd0e476fcd7fe7bff743', class: "spw-file-upload__info" }, this.selectedFiles.length > 0 ? (index.h("ul", { class: "spw-file-upload__info-list" }, this.selectedFiles.map((file, index$1) => (index.h("li", { key: index$1 }, index.h("span", { class: "spw-file-upload__info-list-name" }, file.name), index.h("div", { class: "spw-file-upload__info-list-actions" }, index.h("span", { class: "spw-tw-mr-2" }, utils.formatFileSize(file.size)), index.h("a", { class: "spw-file-upload__info-list-delete", href: "#", onClick: e => {
191
192
  e.preventDefault();
192
193
  this.removeFile(index$1);
193
- } }, "Supprimer"))))))) : (''), this.fileLimitErrors.length > 0 && (index.h("ul", { key: 'ac0e10ceafaf74b7a12045cc01c228c80acf6a91', class: `spw-file-upload__errors ${this.isMaxFilesReachedExact ? 'spw-file-upload__errors--warning' : ''}` }, this.fileLimitErrors.map((message, index$1) => (index.h("li", { key: index$1 }, index.h("spw-icon", { class: "spw-tw-mr-2", icon: this.isMaxFilesReachedExact ? 'fa-circle-exclamation' : 'fa-warning' }), message))))), this.fileTypeErrors.length > 0 && (index.h("ul", { key: '57cb8990cdb8212a7066869cd0a0671bdd7d3b42', class: "spw-file-upload__errors" }, this.fileTypeErrors.map((message, index$1) => (index.h("li", { key: index$1 }, index.h("spw-icon", { class: "spw-tw-mr-2", icon: "fa-warning" }), message))))))));
194
+ } }, "Supprimer"))))))) : (''), this.fileLimitErrors.length > 0 && (index.h("ul", { key: 'a00de4a895820fc4bf993fdf9bad95a84238398d', class: `spw-file-upload__errors ${this.isMaxFilesReachedExact ? 'spw-file-upload__errors--warning' : ''}` }, this.fileLimitErrors.map((message, index$1) => (index.h("li", { key: index$1 }, index.h("spw-icon", { class: "spw-tw-mr-2", icon: this.isMaxFilesReachedExact ? 'fa-circle-exclamation' : 'fa-warning' }), message))))), this.fileTypeErrors.length > 0 && (index.h("ul", { key: '6fe0f58fa4269cb953f3f2d74668a2d640fb408c', class: "spw-file-upload__errors" }, this.fileTypeErrors.map((message, index$1) => (index.h("li", { key: index$1 }, index.h("spw-icon", { class: "spw-tw-mr-2", icon: "fa-warning" }), message))))))));
194
195
  }
195
196
  static get formAssociated() { return true; }
196
197
  get el() { return index.getElement(this); }
@@ -1 +1 @@
1
- {"file":"spw-file-upload.entry.cjs.js","mappings":"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","names":["h","index","formatFileSize"],"sources":["src/components/spw-file-upload/spw-file-upload.scss?tag=spw-file-upload&encapsulation=shadow","src/components/spw-file-upload/spw-file-upload.tsx"],"sourcesContent":[":host {\n display: block;\n}\n\n.spw-file-upload {\n display: block;\n position: relative;\n\n &__wrapper {\n &--error {\n border-color: #ff4d4d;\n background-color: #ffe6e6;\n }\n\n &--dragging {\n background-color: #e0f7fa;\n border-color: #00acc1;\n }\n }\n\n spw-button {\n display: inline-block;\n margin-bottom: 8px;\n }\n\n &__errors {\n font-size: 14px;\n color: var(--spw-colors-dark-themes-red-red-500);\n font-weight: 600;\n li {\n margin-top: 16px;\n }\n &--warning {\n color: var(--spw-color-themes-grey-grey-800);\n font-weight: 400;\n }\n }\n\n &__hints {\n font-size: 14px;\n color: var(--spw-color-themes-grey-grey-600);\n margin-top: 16px;\n }\n}\n\n.spw-file-upload__dropzone {\n cursor: pointer;\n color: #555;\n background: var(--spw-colors-dark-themes-blue-grey-blue-grey-50);\n padding: 20px;\n border-radius: 8px;\n border: 1px dashed #333;\n font-weight: bold;\n text-align: center;\n\n &:not(.spw-file-upload--disabled):hover {\n outline: 4px solid var(--spw-color-themes-grey-grey-300);\n }\n\n &:not(.spw-file-upload__wrapper--disabled):focus-visible,\n &:not(.spw-file-upload__wrapper--disabled):active,\n &:not(.spw-file-upload__wrapper--disabled):focus-within {\n outline: 2px solid var(--spw-ds-focus);\n }\n\n &-link {\n color: var(--spw-ds-primary);\n text-decoration: underline;\n &:hover {\n text-decoration: none;\n }\n .spw-file-upload__wrapper--disabled & {\n color: inherit;\n text-decoration: none;\n }\n }\n\n .spw-file-upload__wrapper--disabled & {\n cursor: not-allowed;\n background: var(--spw-color-themes-grey-grey-100);\n color: var(--spw-color-themes-grey-grey-400);\n border-color: var(--spw-color-themes-grey-grey-300);\n outline: none !important;\n }\n\n .spw-file-upload--is-dragging & {\n background: var(--spw-colors-dark-themes-blue-grey-blue-grey-200);\n }\n}\n\n.spw-file-upload__info {\n &-list {\n margin-top: 16px;\n border-top: 1px solid #eee;\n\n li {\n display: flex;\n flex-wrap: wrap;\n gap: 8px;\n justify-content: space-between;\n align-items: center;\n padding: 16px 8px;\n border-bottom: 1px solid #eee;\n color: var(--spw-color-themes-grey-grey-900);\n font-size: 14px;\n\n @include breakpoint(md) {\n flex-wrap: nowrap;\n gap: 16px;\n }\n }\n\n &-actions {\n display: flex;\n gap: 8px;\n @include breakpoint(md) {\n gap: 16px;\n }\n }\n\n &-delete {\n color: inherit;\n &:hover {\n text-decoration: none;\n }\n }\n }\n}\n","import { Component, h, Prop, Element, State, Event, EventEmitter, Method, AttachInternals } from '@stencil/core';\nimport { formatFileSize } from '@utils/utils';\n\n@Component({\n tag: 'spw-file-upload',\n styleUrl: 'spw-file-upload.scss',\n shadow: true,\n formAssociated: true,\n})\nexport class SpwFileUpload {\n private inputElement: HTMLInputElement;\n\n @Element() el: HTMLSpwFileUploadElement;\n\n /** Indique si le champ est désactivé, rendant le téléversement de fichiers non disponible */\n @Prop() disabled: boolean = false;\n /** Indique s'il y a une erreur visuelle associée au composant de téléversement de fichiers */\n @Prop() error: boolean = false;\n /** Nom de l'élément utilisé dans les formulaires pour associer la valeur des fichiers */\n @Prop() name: string;\n /** Valeur actuelle sélectionnée, utilisée pour les formulaires */\n @Prop() value: string;\n /** Active ou désactive la zone de dépôt pour le glisser-déposer de fichiers */\n @Prop() enableDropZone: boolean = false;\n /** Permet de téléverser plusieurs fichiers si vrai */\n @Prop() multiple: boolean = false;\n /** Types de fichiers acceptés, spécifiés sous forme de chaîne de types MIME */\n @Prop() accept: string = '';\n /** Taille maximale autorisée pour chaque fichier, en Mo */\n @Prop() maxFileSize: number = 100;\n /** Nombre maximal de fichiers pouvant être téléversés */\n @Prop() maxFiles: number = Infinity;\n\n @State() internalValue: string;\n @State() selectedFiles: File[] = [];\n @State() fileTypeErrors: string[] = [];\n @State() fileLimitErrors: string[] = [];\n @State() isDragging: boolean = false;\n @State() isMaxFilesReachedExact: boolean = false;\n\n @AttachInternals() internals: ElementInternals;\n\n /** Événement émis lorsque la sélection de fichiers change */\n @Event({ bubbles: true, composed: true }) spwFileChange: EventEmitter<{ files: File[] }>;\n\n componentWillLoad() {\n this.internalValue = this.value;\n this.maxFileSize = this.maxFileSize * 1024 * 1024;\n }\n\n componentWillUpdate() {\n if (this.value !== this.internalValue) {\n this.internalValue = this.value;\n }\n }\n\n get isMaxFilesReached(): boolean {\n return this.selectedFiles.length >= this.maxFiles;\n }\n\n private handleFileChange(event: Event) {\n const input = event.target as HTMLInputElement;\n const files = input.files ? Array.from(input.files) : [];\n this.processFiles(files);\n }\n\n private processFiles(files: File[]) {\n this.fileTypeErrors = [];\n this.fileLimitErrors = [];\n this.isMaxFilesReachedExact = false;\n\n if (!this.multiple) {\n this.selectedFiles = [];\n files = files.slice(0, 1);\n }\n\n const validFiles = files.filter(file => {\n const isFileAccepted = this.isFileAccepted(file);\n const isFileSizeValid = this.isFileSizeValid(file);\n\n if (!isFileAccepted && !isFileSizeValid) {\n this.fileTypeErrors.push(`${file.name} n’a pas été pris en compte car le format n’est pas autorisé et la limite de poids est dépassée.`);\n return false;\n } else if (!isFileAccepted) {\n this.fileTypeErrors.push(`${file.name} n'a pas été pris en compte car le format n'est pas autorisé.`);\n return false;\n } else if (!isFileSizeValid) {\n this.fileTypeErrors.push(`${file.name} n'a pas été pris en compte car il dépasse la taille maximale autorisée.`);\n return false;\n }\n\n return true;\n });\n\n if (this.selectedFiles.length + validFiles.length >= this.maxFiles) {\n const allowedFiles = this.maxFiles - this.selectedFiles.length;\n\n if (this.selectedFiles.length + validFiles.length === this.maxFiles) {\n this.isMaxFilesReachedExact = true;\n this.fileLimitErrors.push('Vous avez atteint la limite autorisée de fichiers.');\n } else {\n validFiles.splice(allowedFiles);\n const maxFilesText = this.maxFiles > 1 ? 'fichiers' : 'fichier';\n this.fileLimitErrors.push(`Vous ne pouvez pas télécharger plus de ${this.maxFiles} ${maxFilesText}.`);\n }\n }\n\n this.selectedFiles = [...this.selectedFiles, ...validFiles];\n\n this.spwFileChange.emit({ files: this.selectedFiles });\n this.updateFormValue();\n }\n\n private isFileAccepted(file: File): boolean {\n if (!this.accept) return true;\n const acceptedTypes = this.accept.split(',').map(type => type.trim());\n return acceptedTypes.includes(file.type) || acceptedTypes.some(type => file.name.endsWith(type));\n }\n\n private isFileSizeValid(file: File): boolean {\n return file.size <= this.maxFileSize;\n }\n\n private updateFormValue() {\n if (this.selectedFiles.length > 0) {\n const formData = new FormData();\n this.selectedFiles.forEach((file, index) => {\n formData.append(`${this.name}[${index}]`, file);\n });\n this.internalValue = formData.toString();\n this.internals.setFormValue(formData);\n } else {\n this.internalValue = '';\n this.internals.setFormValue(null);\n }\n }\n\n /** Réinitialise le champ de téléchargement de fichiers */\n @Method()\n async resetInput() {\n this.inputElement.value = '';\n this.selectedFiles = [];\n this.fileLimitErrors = [];\n this.fileTypeErrors = [];\n this.updateFormValue();\n }\n\n formResetCallback() {\n this.resetInput();\n }\n\n private handleDragOver(event: DragEvent) {\n event.preventDefault();\n if (!this.disabled && this.enableDropZone && !this.isMaxFilesReached) {\n this.isDragging = true;\n }\n }\n\n private handleDragLeave() {\n if (!this.disabled && this.enableDropZone) {\n this.isDragging = false;\n }\n }\n\n private handleDrop(event: DragEvent) {\n event.preventDefault();\n if (!this.disabled && this.enableDropZone && !this.isMaxFilesReached) {\n this.isDragging = false;\n const files = event.dataTransfer?.files ? Array.from(event.dataTransfer.files) : [];\n this.processFiles(files);\n }\n }\n\n private removeFile(index: number) {\n this.selectedFiles = this.selectedFiles.filter((_, i) => i !== index);\n this.fileLimitErrors = [];\n this.updateFormValue();\n }\n\n private handleKeydown(event) {\n if ((event.key === ' ' || event.key === 'Enter') && !this.isMaxFilesReached) {\n event.preventDefault();\n !this.disabled && this.inputElement.click();\n }\n }\n\n private get elementClass(): { [className: string]: boolean } {\n return {\n 'spw-file-upload__wrapper': true,\n 'spw-file-upload__wrapper--disabled': this.disabled || this.isMaxFilesReached,\n 'spw-file-upload__wrapper--error': this.error,\n 'spw-file-upload--has-dropzone': this.enableDropZone,\n 'spw-file-upload--is-dragging': this.isDragging,\n };\n }\n\n private get hintsMessages(): string[] {\n const maxSizeInMB = this.maxFileSize / (1024 * 1024);\n const acceptedFormats = this.accept ? this.accept : 'tous les formats';\n const messages = [];\n let message = `Taille maximale par fichier : ${maxSizeInMB} Mo`;\n\n if (this.multiple && this.maxFiles !== Infinity) {\n const maxFilesText = this.maxFiles > 1 ? 'fichiers' : 'fichier';\n message += ` - ${this.maxFiles} ${maxFilesText} maximum.`;\n } else {\n message += '.';\n }\n\n messages.push(message);\n messages.push(`Formats autorisés : ${acceptedFormats}.`);\n\n return messages;\n }\n\n render() {\n const inputTextNoDrop = this.multiple ? 'Choisir vos fichiers...' : 'Choisir votre fichier...';\n const inputTextDrop = this.multiple ? 'Déposez vos fichiers ici' : 'Déposez votre fichier ici';\n\n return (\n <div class={this.elementClass} onDragOver={this.handleDragOver.bind(this)} onDragLeave={this.handleDragLeave.bind(this)} onDrop={this.handleDrop.bind(this)}>\n <input\n type=\"file\"\n ref={el => (this.inputElement = el)}\n onChange={this.handleFileChange.bind(this)}\n name={this.name}\n multiple={this.multiple}\n accept={this.accept}\n style={{ display: 'none' }}\n disabled={this.isMaxFilesReached}\n />\n {this.enableDropZone ? (\n <div\n tabindex={this.disabled || this.isMaxFilesReached ? -1 : 0}\n onKeyDown={this.handleKeydown.bind(this)}\n onClick={() => !this.disabled && !this.isMaxFilesReached && this.inputElement.click()}\n class=\"spw-file-upload__dropzone\"\n >\n {inputTextDrop} ou <span class=\"spw-file-upload__dropzone-link\">choisissez sur votre ordinateur...</span>\n </div>\n ) : (\n <spw-button variant=\"secondary\" onClick={() => !this.disabled && !this.isMaxFilesReached && this.inputElement.click()} disabled={this.disabled || this.isMaxFilesReached}>\n {inputTextNoDrop}\n </spw-button>\n )}\n <div class=\"spw-file-upload__hints\">\n {this.hintsMessages.length > 0 && (\n <ul>\n {this.hintsMessages.map((message, index) => (\n <li key={index}>{message}</li>\n ))}\n </ul>\n )}\n </div>\n <div class=\"spw-file-upload__info\">\n {this.selectedFiles.length > 0 ? (\n <ul class=\"spw-file-upload__info-list\">\n {this.selectedFiles.map((file, index) => (\n <li key={index}>\n <span class=\"spw-file-upload__info-list-name\">{file.name}</span>\n <div class=\"spw-file-upload__info-list-actions\">\n <span class=\"spw-tw-mr-2\">{formatFileSize(file.size)}</span>\n <a\n class=\"spw-file-upload__info-list-delete\"\n href=\"#\"\n onClick={e => {\n e.preventDefault();\n this.removeFile(index);\n }}\n >\n Supprimer\n </a>\n </div>\n </li>\n ))}\n </ul>\n ) : (\n ''\n )}\n {this.fileLimitErrors.length > 0 && (\n <ul class={`spw-file-upload__errors ${this.isMaxFilesReachedExact ? 'spw-file-upload__errors--warning' : ''}`}>\n {this.fileLimitErrors.map((message, index) => (\n <li key={index}>\n <spw-icon class=\"spw-tw-mr-2\" icon={this.isMaxFilesReachedExact ? 'fa-circle-exclamation' : 'fa-warning'}></spw-icon>\n {message}\n </li>\n ))}\n </ul>\n )}\n {this.fileTypeErrors.length > 0 && (\n <ul class=\"spw-file-upload__errors\">\n {this.fileTypeErrors.map((message, index) => (\n <li key={index}>\n <spw-icon class=\"spw-tw-mr-2\" icon=\"fa-warning\"></spw-icon>\n {message}\n </li>\n ))}\n </ul>\n )}\n </div>\n </div>\n );\n }\n}\n"],"version":3}
1
+ {"file":"spw-file-upload.entry.cjs.js","mappings":"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","names":["h","index","formatFileSize"],"sources":["src/components/spw-file-upload/spw-file-upload.scss?tag=spw-file-upload&encapsulation=shadow","src/components/spw-file-upload/spw-file-upload.tsx"],"sourcesContent":[":host {\n display: block;\n}\n\n.spw-file-upload {\n display: block;\n position: relative;\n\n &__wrapper {\n &--error {\n border-color: #ff4d4d;\n background-color: #ffe6e6;\n }\n\n &--dragging {\n background-color: #e0f7fa;\n border-color: #00acc1;\n }\n }\n\n spw-button {\n display: inline-block;\n margin-bottom: 8px;\n }\n\n &__errors {\n font-size: 14px;\n color: var(--spw-colors-dark-themes-red-red-500);\n font-weight: 600;\n li {\n margin-top: 16px;\n }\n &--warning {\n color: var(--spw-color-themes-grey-grey-800);\n font-weight: 400;\n }\n }\n\n &__hints {\n font-size: 14px;\n color: var(--spw-color-themes-grey-grey-600);\n margin-top: 16px;\n }\n}\n\n.spw-file-upload__dropzone {\n cursor: pointer;\n color: #555;\n background: var(--spw-colors-dark-themes-blue-grey-blue-grey-50);\n padding: 20px;\n border-radius: 8px;\n border: 1px dashed #333;\n font-weight: bold;\n text-align: center;\n\n &:not(.spw-file-upload--disabled):hover {\n outline: 4px solid var(--spw-color-themes-grey-grey-300);\n }\n\n &:not(.spw-file-upload__wrapper--disabled):focus-visible,\n &:not(.spw-file-upload__wrapper--disabled):active,\n &:not(.spw-file-upload__wrapper--disabled):focus-within {\n outline: 2px solid var(--spw-ds-focus);\n }\n\n &-link {\n color: var(--spw-ds-primary);\n text-decoration: underline;\n &:hover {\n text-decoration: none;\n }\n .spw-file-upload__wrapper--disabled & {\n color: inherit;\n text-decoration: none;\n }\n }\n\n .spw-file-upload__wrapper--disabled & {\n cursor: not-allowed;\n background: var(--spw-color-themes-grey-grey-100);\n color: var(--spw-color-themes-grey-grey-400);\n border-color: var(--spw-color-themes-grey-grey-300);\n outline: none !important;\n }\n\n .spw-file-upload--is-dragging & {\n background: var(--spw-colors-dark-themes-blue-grey-blue-grey-200);\n }\n}\n\n.spw-file-upload__info {\n &-list {\n margin-top: 16px;\n border-top: 1px solid #eee;\n\n li {\n display: flex;\n flex-wrap: wrap;\n gap: 8px;\n justify-content: space-between;\n align-items: center;\n padding: 16px 8px;\n border-bottom: 1px solid #eee;\n color: var(--spw-color-themes-grey-grey-900);\n font-size: 14px;\n\n @include breakpoint(md) {\n flex-wrap: nowrap;\n gap: 16px;\n }\n }\n\n &-actions {\n display: flex;\n gap: 8px;\n @include breakpoint(md) {\n gap: 16px;\n }\n }\n\n &-delete {\n color: inherit;\n &:hover {\n text-decoration: none;\n }\n }\n }\n}\n","import { Component, h, Prop, Element, State, Event, EventEmitter, Method, AttachInternals } from '@stencil/core';\nimport { formatFileSize } from '@utils/utils';\n\n@Component({\n tag: 'spw-file-upload',\n styleUrl: 'spw-file-upload.scss',\n shadow: true,\n formAssociated: true,\n})\nexport class SpwFileUpload {\n private inputElement: HTMLInputElement;\n\n @Element() el: HTMLSpwFileUploadElement;\n\n /** Indique si le champ est désactivé, rendant le téléversement de fichiers non disponible */\n @Prop() disabled: boolean = false;\n /** Indique s'il y a une erreur visuelle associée au composant de téléversement de fichiers */\n @Prop() error: boolean = false;\n /** Nom de l'élément utilisé dans les formulaires pour associer la valeur des fichiers */\n @Prop() name: string;\n /** Valeur actuelle sélectionnée, utilisée pour les formulaires */\n @Prop() value: string;\n /** Active ou désactive la zone de dépôt pour le glisser-déposer de fichiers */\n @Prop() enableDropZone: boolean = false;\n /** Permet de téléverser plusieurs fichiers si vrai */\n @Prop() multiple: boolean = false;\n /** Types de fichiers acceptés, spécifiés sous forme de chaîne de types MIME */\n @Prop() accept: string = '';\n /** Taille maximale autorisée pour chaque fichier, en Mo */\n @Prop() maxFileSize: number = 100;\n /** Nombre maximal de fichiers pouvant être téléversés */\n @Prop() maxFiles: number = Infinity;\n\n @State() internalValue: string;\n @State() selectedFiles: File[] = [];\n @State() fileTypeErrors: string[] = [];\n @State() fileLimitErrors: string[] = [];\n @State() isDragging: boolean = false;\n @State() isMaxFilesReachedExact: boolean = false;\n\n @AttachInternals() internals: ElementInternals;\n\n /** Événement émis lorsque la sélection de fichiers change */\n @Event({ bubbles: true, composed: true }) spwFileChange: EventEmitter<{ files: File[] }>;\n\n componentWillLoad() {\n this.internalValue = this.value;\n this.maxFileSize = this.maxFileSize * 1024 * 1024;\n }\n\n componentWillUpdate() {\n if (this.value !== this.internalValue) {\n this.internalValue = this.value;\n }\n }\n\n get isMaxFilesReached(): boolean {\n return this.selectedFiles.length >= this.maxFiles;\n }\n\n private handleFileChange(event: Event) {\n const input = event.target as HTMLInputElement;\n const files = input.files ? Array.from(input.files) : [];\n this.processFiles(files);\n }\n\n private processFiles(files: File[]) {\n this.fileTypeErrors = [];\n this.fileLimitErrors = [];\n this.isMaxFilesReachedExact = false;\n\n if (!this.multiple) {\n this.selectedFiles = [];\n files = files.slice(0, 1);\n }\n\n const validFiles = files.filter(file => {\n const isFileAccepted = this.isFileAccepted(file);\n const isFileSizeValid = this.isFileSizeValid(file);\n\n if (!isFileAccepted && !isFileSizeValid) {\n this.fileTypeErrors.push(`${file.name} n’a pas été pris en compte car le format n’est pas autorisé et la limite de poids est dépassée.`);\n return false;\n } else if (!isFileAccepted) {\n this.fileTypeErrors.push(`${file.name} n'a pas été pris en compte car le format n'est pas autorisé.`);\n return false;\n } else if (!isFileSizeValid) {\n this.fileTypeErrors.push(`${file.name} n'a pas été pris en compte car il dépasse la taille maximale autorisée.`);\n return false;\n }\n\n return true;\n });\n\n if (this.selectedFiles.length + validFiles.length >= this.maxFiles) {\n const allowedFiles = this.maxFiles - this.selectedFiles.length;\n\n if (this.selectedFiles.length + validFiles.length === this.maxFiles) {\n this.isMaxFilesReachedExact = true;\n this.fileLimitErrors.push('Vous avez atteint la limite autorisée de fichiers.');\n } else {\n validFiles.splice(allowedFiles);\n const maxFilesText = this.maxFiles > 1 ? 'fichiers' : 'fichier';\n this.fileLimitErrors.push(`Vous ne pouvez pas télécharger plus de ${this.maxFiles} ${maxFilesText}.`);\n }\n }\n\n this.selectedFiles = [...this.selectedFiles, ...validFiles];\n\n this.spwFileChange.emit({ files: this.selectedFiles });\n this.updateFormValue();\n }\n\n private isFileAccepted(file: File): boolean {\n if (!this.accept) return true;\n const acceptedTypes = this.accept.split(',').map(type => type.trim());\n return acceptedTypes.includes(file.type) || acceptedTypes.some(type => file.name.endsWith(type));\n }\n\n private isFileSizeValid(file: File): boolean {\n return file.size <= this.maxFileSize;\n }\n\n private updateFormValue() {\n if (this.selectedFiles.length > 0) {\n const formData = new FormData();\n this.selectedFiles.forEach((file, index) => {\n formData.append(`${this.name}[${index}]`, file);\n });\n this.internalValue = formData.toString();\n this.internals.setFormValue(formData);\n } else {\n this.internalValue = '';\n this.internals.setFormValue(null);\n }\n }\n\n /** Réinitialise le champ de téléchargement de fichiers */\n @Method()\n async resetInput() {\n this.inputElement.value = '';\n this.selectedFiles = [];\n this.fileLimitErrors = [];\n this.fileTypeErrors = [];\n this.updateFormValue();\n }\n\n formResetCallback() {\n this.resetInput();\n }\n\n private handleDragOver(event: DragEvent) {\n event.preventDefault();\n if (!this.disabled && this.enableDropZone && !this.isMaxFilesReached) {\n this.isDragging = true;\n }\n }\n\n private handleDragLeave() {\n if (!this.disabled && this.enableDropZone) {\n this.isDragging = false;\n }\n }\n\n private handleDrop(event: DragEvent) {\n event.preventDefault();\n if (!this.disabled && this.enableDropZone && !this.isMaxFilesReached) {\n this.isDragging = false;\n const files = event.dataTransfer?.files ? Array.from(event.dataTransfer.files) : [];\n this.processFiles(files);\n }\n }\n\n private removeFile(index: number) {\n this.selectedFiles = this.selectedFiles.filter((_, i) => i !== index);\n this.fileLimitErrors = [];\n this.updateFormValue();\n this.spwFileChange.emit({ files: this.selectedFiles });\n }\n\n private handleKeydown(event) {\n if ((event.key === ' ' || event.key === 'Enter') && !this.isMaxFilesReached) {\n event.preventDefault();\n !this.disabled && this.inputElement.click();\n }\n }\n\n private get elementClass(): { [className: string]: boolean } {\n return {\n 'spw-file-upload__wrapper': true,\n 'spw-file-upload__wrapper--disabled': this.disabled || this.isMaxFilesReached,\n 'spw-file-upload__wrapper--error': this.error,\n 'spw-file-upload--has-dropzone': this.enableDropZone,\n 'spw-file-upload--is-dragging': this.isDragging,\n };\n }\n\n private get hintsMessages(): string[] {\n const maxSizeInMB = this.maxFileSize / (1024 * 1024);\n const acceptedFormats = this.accept ? this.accept : 'tous les formats';\n const messages = [];\n let message = `Taille maximale par fichier : ${maxSizeInMB} Mo`;\n\n if (this.multiple && this.maxFiles !== Infinity) {\n const maxFilesText = this.maxFiles > 1 ? 'fichiers' : 'fichier';\n message += ` - ${this.maxFiles} ${maxFilesText} maximum.`;\n } else {\n message += '.';\n }\n\n messages.push(message);\n messages.push(`Formats autorisés : ${acceptedFormats}.`);\n\n return messages;\n }\n\n render() {\n const inputTextNoDrop = this.multiple ? 'Choisir vos fichiers...' : 'Choisir votre fichier...';\n const inputTextDrop = this.multiple ? 'Déposez vos fichiers ici' : 'Déposez votre fichier ici';\n\n return (\n <div class={this.elementClass} onDragOver={this.handleDragOver.bind(this)} onDragLeave={this.handleDragLeave.bind(this)} onDrop={this.handleDrop.bind(this)}>\n <input\n type=\"file\"\n ref={el => (this.inputElement = el)}\n onChange={this.handleFileChange.bind(this)}\n name={this.name}\n multiple={this.multiple}\n accept={this.accept}\n style={{ display: 'none' }}\n disabled={this.isMaxFilesReached}\n />\n {this.enableDropZone ? (\n <div\n tabindex={this.disabled || this.isMaxFilesReached ? -1 : 0}\n onKeyDown={this.handleKeydown.bind(this)}\n onClick={() => !this.disabled && !this.isMaxFilesReached && this.inputElement.click()}\n class=\"spw-file-upload__dropzone\"\n >\n {inputTextDrop} ou <span class=\"spw-file-upload__dropzone-link\">choisissez sur votre ordinateur...</span>\n </div>\n ) : (\n <spw-button variant=\"secondary\" onClick={() => !this.disabled && !this.isMaxFilesReached && this.inputElement.click()} disabled={this.disabled || this.isMaxFilesReached}>\n {inputTextNoDrop}\n </spw-button>\n )}\n <div class=\"spw-file-upload__hints\">\n {this.hintsMessages.length > 0 && (\n <ul>\n {this.hintsMessages.map((message, index) => (\n <li key={index}>{message}</li>\n ))}\n </ul>\n )}\n </div>\n <div class=\"spw-file-upload__info\">\n {this.selectedFiles.length > 0 ? (\n <ul class=\"spw-file-upload__info-list\">\n {this.selectedFiles.map((file, index) => (\n <li key={index}>\n <span class=\"spw-file-upload__info-list-name\">{file.name}</span>\n <div class=\"spw-file-upload__info-list-actions\">\n <span class=\"spw-tw-mr-2\">{formatFileSize(file.size)}</span>\n <a\n class=\"spw-file-upload__info-list-delete\"\n href=\"#\"\n onClick={e => {\n e.preventDefault();\n this.removeFile(index);\n }}\n >\n Supprimer\n </a>\n </div>\n </li>\n ))}\n </ul>\n ) : (\n ''\n )}\n {this.fileLimitErrors.length > 0 && (\n <ul class={`spw-file-upload__errors ${this.isMaxFilesReachedExact ? 'spw-file-upload__errors--warning' : ''}`}>\n {this.fileLimitErrors.map((message, index) => (\n <li key={index}>\n <spw-icon class=\"spw-tw-mr-2\" icon={this.isMaxFilesReachedExact ? 'fa-circle-exclamation' : 'fa-warning'}></spw-icon>\n {message}\n </li>\n ))}\n </ul>\n )}\n {this.fileTypeErrors.length > 0 && (\n <ul class=\"spw-file-upload__errors\">\n {this.fileTypeErrors.map((message, index) => (\n <li key={index}>\n <spw-icon class=\"spw-tw-mr-2\" icon=\"fa-warning\"></spw-icon>\n {message}\n </li>\n ))}\n </ul>\n )}\n </div>\n </div>\n );\n }\n}\n"],"version":3}