@spw-ds/spw-stencil-library 1.2.2 → 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 (789) 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 +4 -4
  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 +3 -3
  11. package/dist/cjs/spw-card-content.cjs.entry.js.map +1 -1
  12. package/dist/cjs/spw-card-content.entry.cjs.js.map +1 -1
  13. package/dist/cjs/spw-card-excerpt.cjs.entry.js +2 -2
  14. package/dist/cjs/spw-card-excerpt.cjs.entry.js.map +1 -1
  15. package/dist/cjs/spw-card-excerpt.entry.cjs.js.map +1 -1
  16. package/dist/cjs/spw-card-image.cjs.entry.js +2 -2
  17. package/dist/cjs/spw-card-image.cjs.entry.js.map +1 -1
  18. package/dist/cjs/spw-card-image.entry.cjs.js.map +1 -1
  19. package/dist/cjs/spw-card-subtag-item.cjs.entry.js +1 -1
  20. package/dist/cjs/spw-card-subtags.cjs.entry.js +1 -1
  21. package/dist/cjs/spw-card-title.cjs.entry.js +2 -2
  22. package/dist/cjs/spw-card-title.cjs.entry.js.map +1 -1
  23. package/dist/cjs/spw-card-title.entry.cjs.js.map +1 -1
  24. package/dist/cjs/spw-card.cjs.entry.js +40 -10
  25. package/dist/cjs/spw-card.cjs.entry.js.map +1 -1
  26. package/dist/cjs/spw-card.entry.cjs.js.map +1 -1
  27. package/dist/cjs/spw-checkbox.cjs.entry.js +3 -3
  28. package/dist/cjs/spw-checkbox.cjs.entry.js.map +1 -1
  29. package/dist/cjs/spw-checkbox.entry.cjs.js.map +1 -1
  30. package/dist/cjs/spw-cookies.cjs.entry.js +1 -1
  31. package/dist/cjs/spw-custom-select.cjs.entry.js +23 -5
  32. package/dist/cjs/spw-custom-select.cjs.entry.js.map +1 -1
  33. package/dist/cjs/spw-custom-select.entry.cjs.js.map +1 -1
  34. package/dist/cjs/spw-date-picker.cjs.entry.js +195 -34
  35. package/dist/cjs/spw-date-picker.cjs.entry.js.map +1 -1
  36. package/dist/cjs/spw-date-picker.entry.cjs.js.map +1 -1
  37. package/dist/cjs/spw-dropdown-container.cjs.entry.js +20 -0
  38. package/dist/cjs/spw-dropdown-container.cjs.entry.js.map +1 -0
  39. package/dist/cjs/spw-dropdown-container.entry.cjs.js.map +1 -0
  40. package/dist/cjs/spw-dropdown-item.cjs.entry.js +87 -0
  41. package/dist/cjs/spw-dropdown-item.cjs.entry.js.map +1 -0
  42. package/dist/cjs/spw-dropdown-item.entry.cjs.js.map +1 -0
  43. package/dist/cjs/spw-dropdown.cjs.entry.js +2 -2
  44. package/dist/cjs/spw-dropdown.cjs.entry.js.map +1 -1
  45. package/dist/cjs/spw-dropdown.entry.cjs.js.map +1 -1
  46. package/dist/cjs/spw-field-label_6.cjs.entry.js +7 -7
  47. package/dist/cjs/spw-field-message.cjs.entry.js +2 -2
  48. package/dist/cjs/spw-file-upload.cjs.entry.js +6 -5
  49. package/dist/cjs/spw-file-upload.cjs.entry.js.map +1 -1
  50. package/dist/cjs/spw-file-upload.entry.cjs.js.map +1 -1
  51. package/dist/cjs/spw-footer-bottom.cjs.entry.js +2 -2
  52. package/dist/cjs/spw-footer-content-col.cjs.entry.js +2 -2
  53. package/dist/cjs/spw-footer-content.cjs.entry.js +2 -2
  54. package/dist/cjs/spw-footer-link.cjs.entry.js +2 -2
  55. package/dist/cjs/spw-footer.cjs.entry.js +2 -2
  56. package/dist/cjs/spw-header-lang-item.cjs.entry.js +2 -2
  57. package/dist/cjs/spw-header-lang.cjs.entry.js +2 -2
  58. package/dist/cjs/spw-header-navigation-dropdown.cjs.entry.js +2 -2
  59. package/dist/cjs/spw-header-navigation-item.cjs.entry.js +3 -3
  60. package/dist/cjs/spw-header-navigation.cjs.entry.js +2 -2
  61. package/dist/cjs/spw-header-persona-item.cjs.entry.js +2 -2
  62. package/dist/cjs/spw-header-persona.cjs.entry.js +4 -2
  63. package/dist/cjs/spw-header-persona.cjs.entry.js.map +1 -1
  64. package/dist/cjs/spw-header-persona.entry.cjs.js.map +1 -1
  65. package/dist/cjs/spw-header.cjs.entry.js +21 -3
  66. package/dist/cjs/spw-header.cjs.entry.js.map +1 -1
  67. package/dist/cjs/spw-header.entry.cjs.js.map +1 -1
  68. package/dist/cjs/spw-hero.cjs.entry.js +17 -3
  69. package/dist/cjs/spw-hero.cjs.entry.js.map +1 -1
  70. package/dist/cjs/spw-hero.entry.cjs.js.map +1 -1
  71. package/dist/cjs/spw-illustration.cjs.entry.js +1 -1
  72. package/dist/cjs/spw-iodda.cjs.entry.js +2 -2
  73. package/dist/cjs/spw-list-description.cjs.entry.js +2 -2
  74. package/dist/cjs/spw-list-item.cjs.entry.js +7 -3
  75. package/dist/cjs/spw-list-item.cjs.entry.js.map +1 -1
  76. package/dist/cjs/spw-list-item.entry.cjs.js.map +1 -1
  77. package/dist/cjs/spw-list-title.cjs.entry.js +3 -3
  78. package/dist/cjs/spw-list-title.cjs.entry.js.map +1 -1
  79. package/dist/cjs/spw-list-title.entry.cjs.js.map +1 -1
  80. package/dist/cjs/spw-list.cjs.entry.js +21 -2
  81. package/dist/cjs/spw-list.cjs.entry.js.map +1 -1
  82. package/dist/cjs/spw-list.entry.cjs.js.map +1 -1
  83. package/dist/cjs/spw-message.cjs.entry.js +1 -1
  84. package/dist/cjs/spw-modal.cjs.entry.js +12 -5
  85. package/dist/cjs/spw-modal.cjs.entry.js.map +1 -1
  86. package/dist/cjs/spw-modal.entry.cjs.js.map +1 -1
  87. package/dist/cjs/spw-mosaic-item.cjs.entry.js +2 -2
  88. package/dist/cjs/spw-mosaic.cjs.entry.js +2 -2
  89. package/dist/cjs/spw-pagination.cjs.entry.js +8 -8
  90. package/dist/cjs/spw-radio.cjs.entry.js +3 -3
  91. package/dist/cjs/spw-search-field.cjs.entry.js +3 -3
  92. package/dist/cjs/spw-select.cjs.entry.js +13 -3
  93. package/dist/cjs/spw-select.cjs.entry.js.map +1 -1
  94. package/dist/cjs/spw-select.entry.cjs.js.map +1 -1
  95. package/dist/cjs/spw-sidebar-navigation-dropdown.cjs.entry.js +2 -2
  96. package/dist/cjs/spw-sidebar-navigation-item.cjs.entry.js +85 -7
  97. package/dist/cjs/spw-sidebar-navigation-item.cjs.entry.js.map +1 -1
  98. package/dist/cjs/spw-sidebar-navigation-item.entry.cjs.js.map +1 -1
  99. package/dist/cjs/spw-sidebar-navigation-separator.cjs.entry.js +2 -2
  100. package/dist/cjs/spw-sidebar.cjs.entry.js +10 -2
  101. package/dist/cjs/spw-sidebar.cjs.entry.js.map +1 -1
  102. package/dist/cjs/spw-sidebar.entry.cjs.js.map +1 -1
  103. package/dist/cjs/spw-skeleton.cjs.entry.js +5 -3
  104. package/dist/cjs/spw-skeleton.cjs.entry.js.map +1 -1
  105. package/dist/cjs/spw-skeleton.entry.cjs.js.map +1 -1
  106. package/dist/cjs/spw-socials.cjs.entry.js +2 -2
  107. package/dist/cjs/spw-stencil-library.cjs.js +2 -2
  108. package/dist/cjs/spw-table-body.cjs.entry.js +2 -2
  109. package/dist/cjs/spw-table-cell.cjs.entry.js +33 -3
  110. package/dist/cjs/spw-table-cell.cjs.entry.js.map +1 -1
  111. package/dist/cjs/spw-table-cell.entry.cjs.js.map +1 -1
  112. package/dist/cjs/spw-table-footer.cjs.entry.js +3 -3
  113. package/dist/cjs/spw-table-footer.cjs.entry.js.map +1 -1
  114. package/dist/cjs/spw-table-footer.entry.cjs.js.map +1 -1
  115. package/dist/cjs/spw-table-head.cjs.entry.js +2 -2
  116. package/dist/cjs/spw-table-header.cjs.entry.js +4 -4
  117. package/dist/cjs/spw-table-row.cjs.entry.js +2 -2
  118. package/dist/cjs/spw-table.cjs.entry.js +47 -7
  119. package/dist/cjs/spw-table.cjs.entry.js.map +1 -1
  120. package/dist/cjs/spw-table.entry.cjs.js.map +1 -1
  121. package/dist/cjs/spw-tabs-content.cjs.entry.js +1 -1
  122. package/dist/cjs/spw-tabs-navigation-item.cjs.entry.js +4 -4
  123. package/dist/cjs/spw-tabs-navigation-item.cjs.entry.js.map +1 -1
  124. package/dist/cjs/spw-tabs-navigation-item.entry.cjs.js.map +1 -1
  125. package/dist/cjs/spw-tabs-navigation.cjs.entry.js +2 -2
  126. package/dist/cjs/spw-tabs.cjs.entry.js +6 -4
  127. package/dist/cjs/spw-tabs.cjs.entry.js.map +1 -1
  128. package/dist/cjs/spw-tabs.entry.cjs.js.map +1 -1
  129. package/dist/cjs/spw-tag.cjs.entry.js +2 -2
  130. package/dist/cjs/spw-text-field.cjs.entry.js +3 -3
  131. package/dist/cjs/spw-textarea.cjs.entry.js +3 -3
  132. package/dist/cjs/spw-tile-description.cjs.entry.js +2 -2
  133. package/dist/cjs/spw-tile-title.cjs.entry.js +3 -3
  134. package/dist/cjs/spw-tile-title.cjs.entry.js.map +1 -1
  135. package/dist/cjs/spw-tile-title.entry.cjs.js.map +1 -1
  136. package/dist/cjs/spw-tile.cjs.entry.js +2 -2
  137. package/dist/cjs/spw-tooltip.cjs.entry.js +2 -2
  138. package/dist/cjs/spw-topbar.cjs.entry.js +2 -2
  139. package/dist/cjs/spw-wizard-item.cjs.entry.js +64 -0
  140. package/dist/cjs/spw-wizard-item.cjs.entry.js.map +1 -0
  141. package/dist/cjs/spw-wizard-item.entry.cjs.js.map +1 -0
  142. package/dist/cjs/spw-wizard.cjs.entry.js +90 -0
  143. package/dist/cjs/spw-wizard.cjs.entry.js.map +1 -0
  144. package/dist/cjs/spw-wizard.entry.cjs.js.map +1 -0
  145. package/dist/cjs/{utils-CKYAw_Le.js → utils-D_vNTY6w.js} +3 -3
  146. package/dist/cjs/{utils-CKYAw_Le.js.map → utils-D_vNTY6w.js.map} +1 -1
  147. package/dist/collection/collection-manifest.json +5 -1
  148. package/dist/collection/components/spw-accordion/spw-accordion-item/spw-accordion-item.css +1 -1
  149. package/dist/collection/components/spw-accordion/spw-accordion-title/spw-accordion-title.css +1 -1
  150. package/dist/collection/components/spw-card/spw-card-content/spw-card-content.css +1 -1
  151. package/dist/collection/components/spw-card/spw-card-excerpt/spw-card-excerpt.css +1 -1
  152. package/dist/collection/components/spw-card/spw-card-image/spw-card-image.css +1 -1
  153. package/dist/collection/components/spw-card/spw-card-title/spw-card-title.css +1 -1
  154. package/dist/collection/components/spw-card/spw-card.css +1 -1
  155. package/dist/collection/components/spw-card/spw-card.js +38 -8
  156. package/dist/collection/components/spw-card/spw-card.js.map +1 -1
  157. package/dist/collection/components/spw-checkbox/spw-checkbox.css +1 -1
  158. package/dist/collection/components/spw-custom-select/spw-custom-select.js +42 -3
  159. package/dist/collection/components/spw-custom-select/spw-custom-select.js.map +1 -1
  160. package/dist/collection/components/spw-date-picker/spw-date-picker.css +1 -1
  161. package/dist/collection/components/spw-date-picker/spw-date-picker.js +240 -29
  162. package/dist/collection/components/spw-date-picker/spw-date-picker.js.map +1 -1
  163. package/dist/collection/components/spw-dropdown/spw-dropdown-container/spw-dropdown-container.css +2 -0
  164. package/dist/collection/components/spw-dropdown/spw-dropdown-container/spw-dropdown-container.js +19 -0
  165. package/dist/collection/components/spw-dropdown/spw-dropdown-container/spw-dropdown-container.js.map +1 -0
  166. package/dist/collection/components/spw-dropdown/spw-dropdown-item/spw-dropdown-item.css +2 -0
  167. package/dist/collection/components/spw-dropdown/spw-dropdown-item/spw-dropdown-item.js +175 -0
  168. package/dist/collection/components/spw-dropdown/spw-dropdown-item/spw-dropdown-item.js.map +1 -0
  169. package/dist/collection/components/spw-dropdown/spw-dropdown.js +2 -2
  170. package/dist/collection/components/spw-dropdown/spw-dropdown.js.map +1 -1
  171. package/dist/collection/components/spw-field-label/spw-field-label.js +1 -1
  172. package/dist/collection/components/spw-field-message/spw-field-message.js +1 -1
  173. package/dist/collection/components/spw-file-upload/spw-file-upload.js +3 -2
  174. package/dist/collection/components/spw-file-upload/spw-file-upload.js.map +1 -1
  175. package/dist/collection/components/spw-footer/spw-footer-bottom/spw-footer-bottom.js +1 -1
  176. package/dist/collection/components/spw-footer/spw-footer-content/spw-footer-content.js +1 -1
  177. package/dist/collection/components/spw-footer/spw-footer-content-col/spw-footer-content-col.js +1 -1
  178. package/dist/collection/components/spw-footer/spw-footer-link/spw-footer-link.js +1 -1
  179. package/dist/collection/components/spw-footer/spw-footer.js +1 -1
  180. package/dist/collection/components/spw-group/spw-group.js +1 -1
  181. package/dist/collection/components/spw-header/spw-header-lang/spw-header-lang.js +1 -1
  182. package/dist/collection/components/spw-header/spw-header-lang-item/spw-header-lang-item.js +1 -1
  183. package/dist/collection/components/spw-header/spw-header-navigation/spw-header-navigation.js +1 -1
  184. package/dist/collection/components/spw-header/spw-header-navigation-dropdown/spw-header-navigation-dropdown.js +1 -1
  185. package/dist/collection/components/spw-header/spw-header-navigation-item/spw-header-navigation-item.js +1 -1
  186. package/dist/collection/components/spw-header/spw-header-persona/spw-header-persona.js +27 -1
  187. package/dist/collection/components/spw-header/spw-header-persona/spw-header-persona.js.map +1 -1
  188. package/dist/collection/components/spw-header/spw-header-persona-item/spw-header-persona-item.js +1 -1
  189. package/dist/collection/components/spw-header/spw-header.css +1 -1
  190. package/dist/collection/components/spw-header/spw-header.js +199 -1
  191. package/dist/collection/components/spw-header/spw-header.js.map +1 -1
  192. package/dist/collection/components/spw-hero/spw-hero.css +1 -1
  193. package/dist/collection/components/spw-hero/spw-hero.js +54 -1
  194. package/dist/collection/components/spw-hero/spw-hero.js.map +1 -1
  195. package/dist/collection/components/spw-iodda/spw-iodda.js +1 -1
  196. package/dist/collection/components/spw-link/spw-link.js +1 -1
  197. package/dist/collection/components/spw-list/spw-list-description/spw-list-description.js +1 -1
  198. package/dist/collection/components/spw-list/spw-list-item/spw-list-item.css +1 -1
  199. package/dist/collection/components/spw-list/spw-list-item/spw-list-item.js +25 -1
  200. package/dist/collection/components/spw-list/spw-list-item/spw-list-item.js.map +1 -1
  201. package/dist/collection/components/spw-list/spw-list-title/spw-list-title.css +1 -1
  202. package/dist/collection/components/spw-list/spw-list-title/spw-list-title.js +1 -1
  203. package/dist/collection/components/spw-list/spw-list.js +49 -1
  204. package/dist/collection/components/spw-list/spw-list.js.map +1 -1
  205. package/dist/collection/components/spw-loading/spw-loading.js +1 -1
  206. package/dist/collection/components/spw-modal/spw-modal.css +1 -1
  207. package/dist/collection/components/spw-modal/spw-modal.js +8 -1
  208. package/dist/collection/components/spw-modal/spw-modal.js.map +1 -1
  209. package/dist/collection/components/spw-mosaic/spw-mosaic-item/spw-mosaic-item.js +1 -1
  210. package/dist/collection/components/spw-mosaic/spw-mosaic.js +1 -1
  211. package/dist/collection/components/spw-pagination/spw-pagination.js +6 -6
  212. package/dist/collection/components/spw-radio/spw-radio.js +1 -1
  213. package/dist/collection/components/spw-search-field/spw-search-field.js +2 -2
  214. package/dist/collection/components/spw-select/spw-select.js +32 -1
  215. package/dist/collection/components/spw-select/spw-select.js.map +1 -1
  216. package/dist/collection/components/spw-separator/spw-separator.js +1 -1
  217. package/dist/collection/components/spw-sidebar/spw-sidebar-navigation-dropdown/spw-sidebar-navigation-dropdown.js +1 -1
  218. package/dist/collection/components/spw-sidebar/spw-sidebar-navigation-item/spw-sidebar-navigation-item.css +1 -1
  219. package/dist/collection/components/spw-sidebar/spw-sidebar-navigation-item/spw-sidebar-navigation-item.js +105 -6
  220. package/dist/collection/components/spw-sidebar/spw-sidebar-navigation-item/spw-sidebar-navigation-item.js.map +1 -1
  221. package/dist/collection/components/spw-sidebar/spw-sidebar-navigation-separator/spw-sidebar-navigation-separator.js +1 -1
  222. package/dist/collection/components/spw-sidebar/spw-sidebar.js +9 -1
  223. package/dist/collection/components/spw-sidebar/spw-sidebar.js.map +1 -1
  224. package/dist/collection/components/spw-skeleton/spw-skeleton.js +4 -2
  225. package/dist/collection/components/spw-skeleton/spw-skeleton.js.map +1 -1
  226. package/dist/collection/components/spw-socials/spw-socials.js +1 -1
  227. package/dist/collection/components/spw-table/spw-table-body/spw-table-body.js +1 -1
  228. package/dist/collection/components/spw-table/spw-table-cell/spw-table-cell.css +1 -1
  229. package/dist/collection/components/spw-table/spw-table-cell/spw-table-cell.js +56 -1
  230. package/dist/collection/components/spw-table/spw-table-cell/spw-table-cell.js.map +1 -1
  231. package/dist/collection/components/spw-table/spw-table-footer/spw-table-footer.css +1 -1
  232. package/dist/collection/components/spw-table/spw-table-footer/spw-table-footer.js +1 -1
  233. package/dist/collection/components/spw-table/spw-table-head/spw-table-head.js +1 -1
  234. package/dist/collection/components/spw-table/spw-table-header/spw-table-header.js +2 -2
  235. package/dist/collection/components/spw-table/spw-table-row/spw-table-row.js +1 -1
  236. package/dist/collection/components/spw-table/spw-table.css +1 -1
  237. package/dist/collection/components/spw-table/spw-table.js +110 -9
  238. package/dist/collection/components/spw-table/spw-table.js.map +1 -1
  239. package/dist/collection/components/spw-tabs/spw-tabs-navigation/spw-tabs-navigation.js +1 -1
  240. package/dist/collection/components/spw-tabs/spw-tabs-navigation-item/spw-tabs-navigation-item.css +1 -1
  241. package/dist/collection/components/spw-tabs/spw-tabs-navigation-item/spw-tabs-navigation-item.js +1 -1
  242. package/dist/collection/components/spw-tabs/spw-tabs.js +6 -4
  243. package/dist/collection/components/spw-tabs/spw-tabs.js.map +1 -1
  244. package/dist/collection/components/spw-tag/spw-tag.js +1 -1
  245. package/dist/collection/components/spw-text-field/spw-text-field.js +1 -1
  246. package/dist/collection/components/spw-textarea/spw-textarea.js +1 -1
  247. package/dist/collection/components/spw-theme-provider/spw-theme-provider.js +1 -1
  248. package/dist/collection/components/spw-tile/spw-tile-description/spw-tile-description.js +1 -1
  249. package/dist/collection/components/spw-tile/spw-tile-title/spw-tile-title.css +1 -1
  250. package/dist/collection/components/spw-tile/spw-tile-title/spw-tile-title.js +1 -1
  251. package/dist/collection/components/spw-tile/spw-tile.js +1 -1
  252. package/dist/collection/components/spw-tooltip/spw-tooltip.js +1 -1
  253. package/dist/collection/components/spw-topbar/spw-topbar.js +1 -1
  254. package/dist/collection/components/spw-wizard/spw-wizard-item/spw-wizard-item.css +2 -0
  255. package/dist/collection/components/spw-wizard/spw-wizard-item/spw-wizard-item.js +339 -0
  256. package/dist/collection/components/spw-wizard/spw-wizard-item/spw-wizard-item.js.map +1 -0
  257. package/dist/collection/components/spw-wizard/spw-wizard.css +2 -0
  258. package/dist/collection/components/spw-wizard/spw-wizard.js +192 -0
  259. package/dist/collection/components/spw-wizard/spw-wizard.js.map +1 -0
  260. package/dist/collection/stories/components/spw-date-picker/spw-date-picker.stories.js +46 -1
  261. package/dist/collection/stories/components/spw-date-picker/spw-date-picker.stories.js.map +1 -1
  262. package/dist/collection/stories/organisms/spw-header/spw-header.stories.js +1 -1
  263. package/dist/collection/stories/organisms/spw-header/spw-header.stories.js.map +1 -1
  264. package/dist/collection/stories/organisms/spw-table/spw-table.stories.js +119 -0
  265. package/dist/collection/stories/organisms/spw-table/spw-table.stories.js.map +1 -1
  266. package/dist/collection/stories/organisms/spw-wizard/spw-wizard.stories.js +208 -0
  267. package/dist/collection/stories/organisms/spw-wizard/spw-wizard.stories.js.map +1 -0
  268. package/dist/collection/utils/utils.js +1 -1
  269. package/dist/collection/utils/utils.js.map +1 -1
  270. package/dist/components/index.js +3 -3
  271. package/dist/components/index.js.map +1 -1
  272. package/dist/components/{p-BvWTgY8c.js → p-AjhBdYbk.js} +6 -6
  273. package/dist/components/{p-BvWTgY8c.js.map → p-AjhBdYbk.js.map} +1 -1
  274. package/dist/components/{p-zpG0udTn.js → p-BBi01mKM.js} +3 -3
  275. package/dist/components/{p-zpG0udTn.js.map → p-BBi01mKM.js.map} +1 -1
  276. package/dist/components/{p-BQKQ0k0G.js → p-Bvpi6byK.js} +3 -3
  277. package/dist/components/{p-BQKQ0k0G.js.map → p-Bvpi6byK.js.map} +1 -1
  278. package/dist/components/{p-BsulPKjc.js → p-CNNUoO2J.js} +4 -4
  279. package/dist/components/{p-BsulPKjc.js.map → p-CNNUoO2J.js.map} +1 -1
  280. package/dist/components/{p-8jCY8rtJ.js → p-CVuBJlFL.js} +3 -3
  281. package/dist/components/{p-8jCY8rtJ.js.map → p-CVuBJlFL.js.map} +1 -1
  282. package/dist/components/{p-z27d6ASx.js → p-D4PsQ_SH.js} +4 -4
  283. package/dist/components/p-D4PsQ_SH.js.map +1 -0
  284. package/dist/components/p-DHBpMBYT.js +129 -0
  285. package/dist/components/p-DHBpMBYT.js.map +1 -0
  286. package/dist/components/{p-DPUqdUk8.js → p-J5AA2xQI.js} +3 -3
  287. package/dist/components/{p-DPUqdUk8.js.map → p-J5AA2xQI.js.map} +1 -1
  288. package/dist/components/{p-5qcE_Ljw.js → p-_sdYD0eS.js} +6 -6
  289. package/dist/components/{p-5qcE_Ljw.js.map → p-_sdYD0eS.js.map} +1 -1
  290. package/dist/components/{p-BbuJ0hsQ.js → p-c0hJPgjJ.js} +3 -3
  291. package/dist/components/p-c0hJPgjJ.js.map +1 -0
  292. package/dist/components/{p-CMFyBNvH.js → p-du-Bai6S.js} +12 -12
  293. package/dist/components/{p-CMFyBNvH.js.map → p-du-Bai6S.js.map} +1 -1
  294. package/dist/components/{p-BF73GiQU.js → p-qgvllwX6.js} +3 -3
  295. package/dist/components/{p-BF73GiQU.js.map → p-qgvllwX6.js.map} +1 -1
  296. package/dist/components/{p-BowHA3gk.js → p-t1vZcpqC.js} +3 -3
  297. package/dist/components/{p-BowHA3gk.js.map → p-t1vZcpqC.js.map} +1 -1
  298. package/dist/components/spw-accordion-item.js +1 -1
  299. package/dist/components/spw-accordion-title.js +1 -1
  300. package/dist/components/spw-breadcrumb-item.js +1 -1
  301. package/dist/components/spw-button.js +1 -1
  302. package/dist/components/spw-card-content.js +2 -2
  303. package/dist/components/spw-card-content.js.map +1 -1
  304. package/dist/components/spw-card-excerpt.js +1 -1
  305. package/dist/components/spw-card-excerpt.js.map +1 -1
  306. package/dist/components/spw-card-image.js +1 -1
  307. package/dist/components/spw-card-image.js.map +1 -1
  308. package/dist/components/spw-card-title.js +1 -1
  309. package/dist/components/spw-card-title.js.map +1 -1
  310. package/dist/components/spw-card.js +39 -9
  311. package/dist/components/spw-card.js.map +1 -1
  312. package/dist/components/spw-checkbox.js +1 -1
  313. package/dist/components/spw-cookies.js +5 -5
  314. package/dist/components/spw-custom-select.js +27 -8
  315. package/dist/components/spw-custom-select.js.map +1 -1
  316. package/dist/components/spw-date-picker.js +203 -38
  317. package/dist/components/spw-date-picker.js.map +1 -1
  318. package/dist/components/spw-dropdown-container.d.ts +11 -0
  319. package/dist/components/spw-dropdown-container.js +36 -0
  320. package/dist/components/spw-dropdown-container.js.map +1 -0
  321. package/dist/components/spw-dropdown-item.d.ts +11 -0
  322. package/dist/components/spw-dropdown-item.js +115 -0
  323. package/dist/components/spw-dropdown-item.js.map +1 -0
  324. package/dist/components/spw-dropdown.js +1 -1
  325. package/dist/components/spw-dropdown.js.map +1 -1
  326. package/dist/components/spw-field-label.js +1 -1
  327. package/dist/components/spw-field-message.js +1 -1
  328. package/dist/components/spw-file-upload.js +7 -6
  329. package/dist/components/spw-file-upload.js.map +1 -1
  330. package/dist/components/spw-footer-bottom.js +1 -1
  331. package/dist/components/spw-footer-content-col.js +1 -1
  332. package/dist/components/spw-footer-content.js +1 -1
  333. package/dist/components/spw-footer-link.js +1 -1
  334. package/dist/components/spw-footer.js +1 -1
  335. package/dist/components/spw-group.js +2 -2
  336. package/dist/components/spw-header-lang-item.js +1 -1
  337. package/dist/components/spw-header-lang.js +3 -3
  338. package/dist/components/spw-header-navigation-dropdown.js +1 -1
  339. package/dist/components/spw-header-navigation-item.js +2 -2
  340. package/dist/components/spw-header-navigation.js +1 -1
  341. package/dist/components/spw-header-persona-item.js +1 -1
  342. package/dist/components/spw-header-persona.js +4 -1
  343. package/dist/components/spw-header-persona.js.map +1 -1
  344. package/dist/components/spw-header.js +31 -4
  345. package/dist/components/spw-header.js.map +1 -1
  346. package/dist/components/spw-hero.js +25 -3
  347. package/dist/components/spw-hero.js.map +1 -1
  348. package/dist/components/spw-iodda.js +6 -6
  349. package/dist/components/spw-link.js +1 -1
  350. package/dist/components/spw-list-description.js +1 -1
  351. package/dist/components/spw-list-item.js +8 -3
  352. package/dist/components/spw-list-item.js.map +1 -1
  353. package/dist/components/spw-list-title.js +2 -2
  354. package/dist/components/spw-list-title.js.map +1 -1
  355. package/dist/components/spw-list.js +23 -3
  356. package/dist/components/spw-list.js.map +1 -1
  357. package/dist/components/spw-loading.js +1 -1
  358. package/dist/components/spw-message.js +1 -1
  359. package/dist/components/spw-modal.js +11 -4
  360. package/dist/components/spw-modal.js.map +1 -1
  361. package/dist/components/spw-mosaic-item.js +1 -1
  362. package/dist/components/spw-mosaic.js +1 -1
  363. package/dist/components/spw-pagination.js +1 -1
  364. package/dist/components/spw-radio.js +2 -2
  365. package/dist/components/spw-search-field.js +5 -5
  366. package/dist/components/spw-select.js +16 -5
  367. package/dist/components/spw-select.js.map +1 -1
  368. package/dist/components/spw-separator.js +1 -1
  369. package/dist/components/spw-sidebar-navigation-dropdown.js +1 -1
  370. package/dist/components/spw-sidebar-navigation-item.js +88 -8
  371. package/dist/components/spw-sidebar-navigation-item.js.map +1 -1
  372. package/dist/components/spw-sidebar-navigation-separator.js +2 -2
  373. package/dist/components/spw-sidebar.js +9 -1
  374. package/dist/components/spw-sidebar.js.map +1 -1
  375. package/dist/components/spw-skeleton.js +4 -2
  376. package/dist/components/spw-skeleton.js.map +1 -1
  377. package/dist/components/spw-socials.js +1 -1
  378. package/dist/components/spw-table-body.js +1 -1
  379. package/dist/components/spw-table-cell.js +35 -3
  380. package/dist/components/spw-table-cell.js.map +1 -1
  381. package/dist/components/spw-table-footer.js +2 -2
  382. package/dist/components/spw-table-footer.js.map +1 -1
  383. package/dist/components/spw-table-head.js +1 -1
  384. package/dist/components/spw-table-header.js +4 -4
  385. package/dist/components/spw-table-row.js +1 -1
  386. package/dist/components/spw-table.js +52 -8
  387. package/dist/components/spw-table.js.map +1 -1
  388. package/dist/components/spw-tabs-navigation-item.js +4 -4
  389. package/dist/components/spw-tabs-navigation-item.js.map +1 -1
  390. package/dist/components/spw-tabs-navigation.js +1 -1
  391. package/dist/components/spw-tabs.js +5 -3
  392. package/dist/components/spw-tabs.js.map +1 -1
  393. package/dist/components/spw-tag.js +1 -1
  394. package/dist/components/spw-text-field.js +1 -1
  395. package/dist/components/spw-textarea.js +4 -4
  396. package/dist/components/spw-theme-provider.js +1 -1
  397. package/dist/components/spw-tile-description.js +1 -1
  398. package/dist/components/spw-tile-title.js +2 -2
  399. package/dist/components/spw-tile-title.js.map +1 -1
  400. package/dist/components/spw-tile.js +1 -1
  401. package/dist/components/spw-tooltip.js +1 -1
  402. package/dist/components/spw-topbar.js +1 -1
  403. package/dist/components/spw-wizard-item.d.ts +11 -0
  404. package/dist/components/spw-wizard-item.js +100 -0
  405. package/dist/components/spw-wizard-item.js.map +1 -0
  406. package/dist/components/spw-wizard.d.ts +11 -0
  407. package/dist/components/spw-wizard.js +110 -0
  408. package/dist/components/spw-wizard.js.map +1 -0
  409. package/dist/components_json.json +1320 -29
  410. package/dist/esm/{index-BYM_CUUH.js → index-CvfVJV8a.js} +5 -5
  411. package/dist/esm/{index-BYM_CUUH.js.map → index-CvfVJV8a.js.map} +1 -1
  412. package/dist/esm/loader.js +3 -3
  413. package/dist/esm/spw-accordion.spw-accordion-content.spw-accordion-item.spw-accordion-title.entry.js.map +1 -1
  414. package/dist/esm/spw-accordion_4.entry.js +4 -4
  415. package/dist/esm/spw-accordion_4.entry.js.map +1 -1
  416. package/dist/esm/spw-breadcrumb-item.entry.js +1 -1
  417. package/dist/esm/spw-breadcrumb.entry.js +1 -1
  418. package/dist/esm/spw-button_2.entry.js +5 -5
  419. package/dist/esm/spw-card-content.entry.js +3 -3
  420. package/dist/esm/spw-card-content.entry.js.map +1 -1
  421. package/dist/esm/spw-card-excerpt.entry.js +2 -2
  422. package/dist/esm/spw-card-excerpt.entry.js.map +1 -1
  423. package/dist/esm/spw-card-image.entry.js +2 -2
  424. package/dist/esm/spw-card-image.entry.js.map +1 -1
  425. package/dist/esm/spw-card-subtag-item.entry.js +1 -1
  426. package/dist/esm/spw-card-subtags.entry.js +1 -1
  427. package/dist/esm/spw-card-title.entry.js +2 -2
  428. package/dist/esm/spw-card-title.entry.js.map +1 -1
  429. package/dist/esm/spw-card.entry.js +40 -10
  430. package/dist/esm/spw-card.entry.js.map +1 -1
  431. package/dist/esm/spw-checkbox.entry.js +3 -3
  432. package/dist/esm/spw-checkbox.entry.js.map +1 -1
  433. package/dist/esm/spw-cookies.entry.js +1 -1
  434. package/dist/esm/spw-custom-select.entry.js +23 -5
  435. package/dist/esm/spw-custom-select.entry.js.map +1 -1
  436. package/dist/esm/spw-date-picker.entry.js +195 -34
  437. package/dist/esm/spw-date-picker.entry.js.map +1 -1
  438. package/dist/esm/spw-dropdown-container.entry.js +18 -0
  439. package/dist/esm/spw-dropdown-container.entry.js.map +1 -0
  440. package/dist/esm/spw-dropdown-item.entry.js +85 -0
  441. package/dist/esm/spw-dropdown-item.entry.js.map +1 -0
  442. package/dist/esm/spw-dropdown.entry.js +2 -2
  443. package/dist/esm/spw-dropdown.entry.js.map +1 -1
  444. package/dist/esm/spw-field-label_6.entry.js +7 -7
  445. package/dist/esm/spw-field-message.entry.js +2 -2
  446. package/dist/esm/spw-file-upload.entry.js +6 -5
  447. package/dist/esm/spw-file-upload.entry.js.map +1 -1
  448. package/dist/esm/spw-footer-bottom.entry.js +2 -2
  449. package/dist/esm/spw-footer-content-col.entry.js +2 -2
  450. package/dist/esm/spw-footer-content.entry.js +2 -2
  451. package/dist/esm/spw-footer-link.entry.js +2 -2
  452. package/dist/esm/spw-footer.entry.js +2 -2
  453. package/dist/esm/spw-header-lang-item.entry.js +2 -2
  454. package/dist/esm/spw-header-lang.entry.js +2 -2
  455. package/dist/esm/spw-header-navigation-dropdown.entry.js +2 -2
  456. package/dist/esm/spw-header-navigation-item.entry.js +3 -3
  457. package/dist/esm/spw-header-navigation.entry.js +2 -2
  458. package/dist/esm/spw-header-persona-item.entry.js +2 -2
  459. package/dist/esm/spw-header-persona.entry.js +4 -2
  460. package/dist/esm/spw-header-persona.entry.js.map +1 -1
  461. package/dist/esm/spw-header.entry.js +21 -3
  462. package/dist/esm/spw-header.entry.js.map +1 -1
  463. package/dist/esm/spw-hero.entry.js +17 -3
  464. package/dist/esm/spw-hero.entry.js.map +1 -1
  465. package/dist/esm/spw-illustration.entry.js +1 -1
  466. package/dist/esm/spw-iodda.entry.js +2 -2
  467. package/dist/esm/spw-list-description.entry.js +2 -2
  468. package/dist/esm/spw-list-item.entry.js +7 -3
  469. package/dist/esm/spw-list-item.entry.js.map +1 -1
  470. package/dist/esm/spw-list-title.entry.js +3 -3
  471. package/dist/esm/spw-list-title.entry.js.map +1 -1
  472. package/dist/esm/spw-list.entry.js +21 -2
  473. package/dist/esm/spw-list.entry.js.map +1 -1
  474. package/dist/esm/spw-message.entry.js +1 -1
  475. package/dist/esm/spw-modal.entry.js +12 -5
  476. package/dist/esm/spw-modal.entry.js.map +1 -1
  477. package/dist/esm/spw-mosaic-item.entry.js +2 -2
  478. package/dist/esm/spw-mosaic.entry.js +2 -2
  479. package/dist/esm/spw-pagination.entry.js +8 -8
  480. package/dist/esm/spw-radio.entry.js +3 -3
  481. package/dist/esm/spw-search-field.entry.js +3 -3
  482. package/dist/esm/spw-select.entry.js +13 -3
  483. package/dist/esm/spw-select.entry.js.map +1 -1
  484. package/dist/esm/spw-sidebar-navigation-dropdown.entry.js +2 -2
  485. package/dist/esm/spw-sidebar-navigation-item.entry.js +85 -7
  486. package/dist/esm/spw-sidebar-navigation-item.entry.js.map +1 -1
  487. package/dist/esm/spw-sidebar-navigation-separator.entry.js +2 -2
  488. package/dist/esm/spw-sidebar.entry.js +10 -2
  489. package/dist/esm/spw-sidebar.entry.js.map +1 -1
  490. package/dist/esm/spw-skeleton.entry.js +5 -3
  491. package/dist/esm/spw-skeleton.entry.js.map +1 -1
  492. package/dist/esm/spw-socials.entry.js +2 -2
  493. package/dist/esm/spw-stencil-library.js +3 -3
  494. package/dist/esm/spw-table-body.entry.js +2 -2
  495. package/dist/esm/spw-table-cell.entry.js +33 -3
  496. package/dist/esm/spw-table-cell.entry.js.map +1 -1
  497. package/dist/esm/spw-table-footer.entry.js +3 -3
  498. package/dist/esm/spw-table-footer.entry.js.map +1 -1
  499. package/dist/esm/spw-table-head.entry.js +2 -2
  500. package/dist/esm/spw-table-header.entry.js +4 -4
  501. package/dist/esm/spw-table-row.entry.js +2 -2
  502. package/dist/esm/spw-table.entry.js +47 -7
  503. package/dist/esm/spw-table.entry.js.map +1 -1
  504. package/dist/esm/spw-tabs-content.entry.js +1 -1
  505. package/dist/esm/spw-tabs-navigation-item.entry.js +4 -4
  506. package/dist/esm/spw-tabs-navigation-item.entry.js.map +1 -1
  507. package/dist/esm/spw-tabs-navigation.entry.js +2 -2
  508. package/dist/esm/spw-tabs.entry.js +6 -4
  509. package/dist/esm/spw-tabs.entry.js.map +1 -1
  510. package/dist/esm/spw-tag.entry.js +2 -2
  511. package/dist/esm/spw-text-field.entry.js +3 -3
  512. package/dist/esm/spw-textarea.entry.js +3 -3
  513. package/dist/esm/spw-tile-description.entry.js +2 -2
  514. package/dist/esm/spw-tile-title.entry.js +3 -3
  515. package/dist/esm/spw-tile-title.entry.js.map +1 -1
  516. package/dist/esm/spw-tile.entry.js +2 -2
  517. package/dist/esm/spw-tooltip.entry.js +2 -2
  518. package/dist/esm/spw-topbar.entry.js +2 -2
  519. package/dist/esm/spw-wizard-item.entry.js +62 -0
  520. package/dist/esm/spw-wizard-item.entry.js.map +1 -0
  521. package/dist/esm/spw-wizard.entry.js +88 -0
  522. package/dist/esm/spw-wizard.entry.js.map +1 -0
  523. package/dist/esm/{utils-zpG0udTn.js → utils-BBi01mKM.js} +3 -3
  524. package/dist/esm/{utils-zpG0udTn.js.map → utils-BBi01mKM.js.map} +1 -1
  525. package/dist/spw-stencil-library/p-000f04a1.entry.js +2 -0
  526. package/dist/spw-stencil-library/p-000f04a1.entry.js.map +1 -0
  527. package/dist/spw-stencil-library/{p-1e07197c.entry.js → p-06cb6865.entry.js} +2 -2
  528. package/dist/spw-stencil-library/{p-52c51ac5.entry.js → p-06ec3521.entry.js} +2 -2
  529. package/dist/spw-stencil-library/{p-e1a459eb.entry.js → p-0baeea00.entry.js} +2 -2
  530. package/dist/spw-stencil-library/p-0e1ec1e6.entry.js +2 -0
  531. package/dist/spw-stencil-library/p-0e1ec1e6.entry.js.map +1 -0
  532. package/dist/spw-stencil-library/{p-a093ab2f.entry.js → p-2113f2f6.entry.js} +2 -2
  533. package/dist/spw-stencil-library/{p-aa364a44.entry.js → p-22f972ca.entry.js} +2 -2
  534. package/dist/spw-stencil-library/{p-96fac544.entry.js → p-25329033.entry.js} +2 -2
  535. package/dist/spw-stencil-library/p-25329033.entry.js.map +1 -0
  536. package/dist/spw-stencil-library/{p-ad5f01e4.entry.js → p-2abc48ed.entry.js} +2 -2
  537. package/dist/spw-stencil-library/{p-3ab472db.entry.js → p-2b011668.entry.js} +2 -2
  538. package/dist/spw-stencil-library/{p-0e310e7a.entry.js → p-2c28684f.entry.js} +2 -2
  539. package/dist/spw-stencil-library/{p-0e310e7a.entry.js.map → p-2c28684f.entry.js.map} +1 -1
  540. package/dist/spw-stencil-library/{p-49be45a2.entry.js → p-2c79bd06.entry.js} +2 -2
  541. package/dist/spw-stencil-library/{p-49be45a2.entry.js.map → p-2c79bd06.entry.js.map} +1 -1
  542. package/dist/spw-stencil-library/{p-b0dc1073.entry.js → p-2cfb78fb.entry.js} +2 -2
  543. package/dist/spw-stencil-library/{p-af49292e.entry.js → p-2d974226.entry.js} +2 -2
  544. package/dist/spw-stencil-library/{p-274ce2d2.entry.js → p-300b4bdb.entry.js} +2 -2
  545. package/dist/spw-stencil-library/{p-274ce2d2.entry.js.map → p-300b4bdb.entry.js.map} +1 -1
  546. package/dist/spw-stencil-library/{p-57851ceb.entry.js → p-31793077.entry.js} +2 -2
  547. package/dist/spw-stencil-library/p-31793077.entry.js.map +1 -0
  548. package/dist/spw-stencil-library/{p-68f9c5bf.entry.js → p-32fd509b.entry.js} +2 -2
  549. package/dist/spw-stencil-library/p-32fd509b.entry.js.map +1 -0
  550. package/dist/spw-stencil-library/p-438f1793.entry.js +2 -0
  551. package/dist/spw-stencil-library/p-438f1793.entry.js.map +1 -0
  552. package/dist/spw-stencil-library/{p-991d5382.entry.js → p-451a9785.entry.js} +2 -2
  553. package/dist/spw-stencil-library/{p-be3b1d65.entry.js → p-45d99a2b.entry.js} +2 -2
  554. package/dist/spw-stencil-library/{p-3cfcf070.entry.js → p-46567994.entry.js} +2 -2
  555. package/dist/spw-stencil-library/{p-44124a37.entry.js → p-48417d99.entry.js} +2 -2
  556. package/dist/spw-stencil-library/{p-3240c1a4.entry.js → p-488c2d88.entry.js} +2 -2
  557. package/dist/spw-stencil-library/{p-e5c9fb8e.entry.js → p-4c21a696.entry.js} +2 -2
  558. package/dist/spw-stencil-library/{p-08d78730.entry.js → p-4e1774df.entry.js} +2 -2
  559. package/dist/spw-stencil-library/{p-d8078491.entry.js → p-512a2787.entry.js} +2 -2
  560. package/dist/spw-stencil-library/p-572188ac.entry.js +2 -0
  561. package/dist/spw-stencil-library/p-572188ac.entry.js.map +1 -0
  562. package/dist/spw-stencil-library/{p-328fb48c.entry.js → p-5a1b3ad1.entry.js} +3 -3
  563. package/dist/spw-stencil-library/{p-c838e17b.entry.js → p-5e34ea9d.entry.js} +2 -2
  564. package/dist/spw-stencil-library/{p-35ef6489.entry.js → p-5f873b56.entry.js} +2 -2
  565. package/dist/spw-stencil-library/p-5f873b56.entry.js.map +1 -0
  566. package/dist/spw-stencil-library/{p-cff5a7e4.entry.js → p-5fde9dae.entry.js} +2 -2
  567. package/dist/spw-stencil-library/{p-2c8e65e5.entry.js → p-63d1c97f.entry.js} +2 -2
  568. package/dist/spw-stencil-library/{p-2dff657f.entry.js → p-6e74b1b0.entry.js} +2 -2
  569. package/dist/spw-stencil-library/p-6ea811f3.entry.js +2 -0
  570. package/dist/spw-stencil-library/p-6ea811f3.entry.js.map +1 -0
  571. package/dist/spw-stencil-library/p-6ed76337.entry.js +2 -0
  572. package/dist/spw-stencil-library/p-6ed76337.entry.js.map +1 -0
  573. package/dist/spw-stencil-library/{p-6d08bcc3.entry.js → p-76e11724.entry.js} +2 -2
  574. package/dist/spw-stencil-library/p-76e11724.entry.js.map +1 -0
  575. package/dist/spw-stencil-library/p-823b60ae.entry.js +2 -0
  576. package/dist/spw-stencil-library/p-823b60ae.entry.js.map +1 -0
  577. package/dist/spw-stencil-library/{p-b726755c.entry.js → p-86bdf571.entry.js} +2 -2
  578. package/dist/spw-stencil-library/p-8c287e51.entry.js +2 -0
  579. package/dist/spw-stencil-library/p-8c287e51.entry.js.map +1 -0
  580. package/dist/spw-stencil-library/{p-07cadb86.entry.js → p-8cfb4646.entry.js} +2 -2
  581. package/dist/spw-stencil-library/p-8cfb4646.entry.js.map +1 -0
  582. package/dist/spw-stencil-library/p-9b63ccca.entry.js +2 -0
  583. package/dist/spw-stencil-library/p-9b63ccca.entry.js.map +1 -0
  584. package/dist/spw-stencil-library/{p-573393ab.entry.js → p-9d984204.entry.js} +2 -2
  585. package/dist/spw-stencil-library/p-9d984204.entry.js.map +1 -0
  586. package/dist/spw-stencil-library/{p-4e7df891.entry.js → p-9e12973d.entry.js} +2 -2
  587. package/dist/spw-stencil-library/{p-zpG0udTn.js → p-BBi01mKM.js} +2 -2
  588. package/dist/spw-stencil-library/{p-zpG0udTn.js.map → p-BBi01mKM.js.map} +1 -1
  589. package/dist/spw-stencil-library/p-CvfVJV8a.js +3 -0
  590. package/dist/spw-stencil-library/{p-BYM_CUUH.js.map → p-CvfVJV8a.js.map} +1 -1
  591. package/dist/spw-stencil-library/p-a25ad9f2.entry.js +2 -0
  592. package/dist/spw-stencil-library/p-a25ad9f2.entry.js.map +1 -0
  593. package/dist/spw-stencil-library/{p-4526bef6.entry.js → p-a31a30f3.entry.js} +2 -2
  594. package/dist/spw-stencil-library/p-a31a30f3.entry.js.map +1 -0
  595. package/dist/spw-stencil-library/p-a61253c2.entry.js +2 -0
  596. package/dist/spw-stencil-library/p-a61253c2.entry.js.map +1 -0
  597. package/dist/spw-stencil-library/{p-8d94697c.entry.js → p-a840f2ca.entry.js} +2 -2
  598. package/dist/spw-stencil-library/{p-228a413d.entry.js → p-b0e3875a.entry.js} +2 -2
  599. package/dist/spw-stencil-library/p-b0e3875a.entry.js.map +1 -0
  600. package/dist/spw-stencil-library/{p-b45534d4.entry.js → p-b1bb413f.entry.js} +2 -2
  601. package/dist/spw-stencil-library/p-b1de48f3.entry.js +2 -0
  602. package/dist/spw-stencil-library/p-b1de48f3.entry.js.map +1 -0
  603. package/dist/spw-stencil-library/{p-c7fecad8.entry.js → p-b6a56ec7.entry.js} +2 -2
  604. package/dist/spw-stencil-library/{p-c7fecad8.entry.js.map → p-b6a56ec7.entry.js.map} +1 -1
  605. package/dist/spw-stencil-library/{p-75159246.entry.js → p-bb225503.entry.js} +2 -2
  606. package/dist/spw-stencil-library/p-bff5424c.entry.js +2 -0
  607. package/dist/spw-stencil-library/p-bff5424c.entry.js.map +1 -0
  608. package/dist/spw-stencil-library/{p-cf508941.entry.js → p-c314e59f.entry.js} +2 -2
  609. package/dist/spw-stencil-library/p-c3985590.entry.js +2 -0
  610. package/dist/spw-stencil-library/p-c3985590.entry.js.map +1 -0
  611. package/dist/spw-stencil-library/{p-e1c4d94e.entry.js → p-cbf8aea1.entry.js} +2 -2
  612. package/dist/spw-stencil-library/p-ce72bca4.entry.js +2 -0
  613. package/dist/spw-stencil-library/p-ce72bca4.entry.js.map +1 -0
  614. package/dist/spw-stencil-library/{p-b0ca9615.entry.js → p-d03b1644.entry.js} +2 -2
  615. package/dist/spw-stencil-library/p-d115a739.entry.js +2 -0
  616. package/dist/spw-stencil-library/{p-b64a003c.entry.js.map → p-d115a739.entry.js.map} +1 -1
  617. package/dist/spw-stencil-library/p-d2258e0a.entry.js +2 -0
  618. package/dist/spw-stencil-library/p-d2258e0a.entry.js.map +1 -0
  619. package/dist/spw-stencil-library/p-d384f832.entry.js +2 -0
  620. package/dist/spw-stencil-library/p-d384f832.entry.js.map +1 -0
  621. package/dist/spw-stencil-library/p-d8ba3e5c.entry.js +2 -0
  622. package/dist/spw-stencil-library/p-d8ba3e5c.entry.js.map +1 -0
  623. package/dist/spw-stencil-library/p-e0c31c21.entry.js +2 -0
  624. package/dist/spw-stencil-library/p-e0c31c21.entry.js.map +1 -0
  625. package/dist/spw-stencil-library/{p-5426464a.entry.js → p-e3485695.entry.js} +2 -2
  626. package/dist/spw-stencil-library/{p-ae905af5.entry.js → p-e4b4f2b3.entry.js} +2 -2
  627. package/dist/spw-stencil-library/{p-93a5f755.entry.js → p-e4d193cd.entry.js} +2 -2
  628. package/dist/spw-stencil-library/{p-158e7952.entry.js → p-e936741c.entry.js} +2 -2
  629. package/dist/spw-stencil-library/{p-74d118ec.entry.js → p-ecec4588.entry.js} +2 -2
  630. package/dist/spw-stencil-library/{p-74d118ec.entry.js.map → p-ecec4588.entry.js.map} +1 -1
  631. package/dist/spw-stencil-library/{p-98ee79d6.entry.js → p-f154589d.entry.js} +2 -2
  632. package/dist/spw-stencil-library/{p-98ee79d6.entry.js.map → p-f154589d.entry.js.map} +1 -1
  633. package/dist/spw-stencil-library/{p-ca672774.entry.js → p-f28bf2be.entry.js} +2 -2
  634. package/dist/spw-stencil-library/{p-ca672774.entry.js.map → p-f28bf2be.entry.js.map} +1 -1
  635. package/dist/spw-stencil-library/p-f5caed11.entry.js +2 -0
  636. package/dist/spw-stencil-library/p-f5caed11.entry.js.map +1 -0
  637. package/dist/spw-stencil-library/{p-a2b3dd47.entry.js → p-f70ed5c3.entry.js} +2 -2
  638. package/dist/spw-stencil-library/{p-a27ed650.entry.js → p-f7760a47.entry.js} +2 -2
  639. package/dist/spw-stencil-library/{p-a27ed650.entry.js.map → p-f7760a47.entry.js.map} +1 -1
  640. package/dist/spw-stencil-library/p-f8ad31d4.entry.js +2 -0
  641. package/dist/spw-stencil-library/{p-03f1a257.entry.js.map → p-f8ad31d4.entry.js.map} +1 -1
  642. package/dist/spw-stencil-library/{p-c1a30fb7.entry.js → p-fa52aa2c.entry.js} +2 -2
  643. package/dist/spw-stencil-library/p-fa52aa2c.entry.js.map +1 -0
  644. package/dist/spw-stencil-library/{p-f2008faa.entry.js → p-fc6af4d8.entry.js} +2 -2
  645. package/dist/spw-stencil-library/spw-accordion.spw-accordion-content.spw-accordion-item.spw-accordion-title.entry.esm.js.map +1 -1
  646. package/dist/spw-stencil-library/spw-card-content.entry.esm.js.map +1 -1
  647. package/dist/spw-stencil-library/spw-card-excerpt.entry.esm.js.map +1 -1
  648. package/dist/spw-stencil-library/spw-card-image.entry.esm.js.map +1 -1
  649. package/dist/spw-stencil-library/spw-card-title.entry.esm.js.map +1 -1
  650. package/dist/spw-stencil-library/spw-card.entry.esm.js.map +1 -1
  651. package/dist/spw-stencil-library/spw-checkbox.entry.esm.js.map +1 -1
  652. package/dist/spw-stencil-library/spw-custom-select.entry.esm.js.map +1 -1
  653. package/dist/spw-stencil-library/spw-date-picker.entry.esm.js.map +1 -1
  654. package/dist/spw-stencil-library/spw-dropdown-container.entry.esm.js.map +1 -0
  655. package/dist/spw-stencil-library/spw-dropdown-item.entry.esm.js.map +1 -0
  656. package/dist/spw-stencil-library/spw-dropdown.entry.esm.js.map +1 -1
  657. package/dist/spw-stencil-library/spw-file-upload.entry.esm.js.map +1 -1
  658. package/dist/spw-stencil-library/spw-header-persona.entry.esm.js.map +1 -1
  659. package/dist/spw-stencil-library/spw-header.entry.esm.js.map +1 -1
  660. package/dist/spw-stencil-library/spw-hero.entry.esm.js.map +1 -1
  661. package/dist/spw-stencil-library/spw-list-item.entry.esm.js.map +1 -1
  662. package/dist/spw-stencil-library/spw-list-title.entry.esm.js.map +1 -1
  663. package/dist/spw-stencil-library/spw-list.entry.esm.js.map +1 -1
  664. package/dist/spw-stencil-library/spw-modal.entry.esm.js.map +1 -1
  665. package/dist/spw-stencil-library/spw-select.entry.esm.js.map +1 -1
  666. package/dist/spw-stencil-library/spw-sidebar-navigation-item.entry.esm.js.map +1 -1
  667. package/dist/spw-stencil-library/spw-sidebar.entry.esm.js.map +1 -1
  668. package/dist/spw-stencil-library/spw-skeleton.entry.esm.js.map +1 -1
  669. package/dist/spw-stencil-library/spw-stencil-library.css +1 -1
  670. package/dist/spw-stencil-library/spw-stencil-library.esm.js +1 -1
  671. package/dist/spw-stencil-library/spw-table-cell.entry.esm.js.map +1 -1
  672. package/dist/spw-stencil-library/spw-table-footer.entry.esm.js.map +1 -1
  673. package/dist/spw-stencil-library/spw-table.entry.esm.js.map +1 -1
  674. package/dist/spw-stencil-library/spw-tabs-navigation-item.entry.esm.js.map +1 -1
  675. package/dist/spw-stencil-library/spw-tabs.entry.esm.js.map +1 -1
  676. package/dist/spw-stencil-library/spw-tile-title.entry.esm.js.map +1 -1
  677. package/dist/spw-stencil-library/spw-wizard-item.entry.esm.js.map +1 -0
  678. package/dist/spw-stencil-library/spw-wizard.entry.esm.js.map +1 -0
  679. package/dist/stats.json +4027 -1154
  680. package/dist/types/components/spw-card/spw-card.d.ts +5 -0
  681. package/dist/types/components/spw-custom-select/spw-custom-select.d.ts +2 -0
  682. package/dist/types/components/spw-date-picker/spw-date-picker.d.ts +7 -0
  683. package/dist/types/components/spw-dropdown/spw-dropdown-container/spw-dropdown-container.d.ts +3 -0
  684. package/dist/types/components/spw-dropdown/spw-dropdown-item/spw-dropdown-item.d.ts +23 -0
  685. package/dist/types/components/spw-header/spw-header-persona/spw-header-persona.d.ts +2 -0
  686. package/dist/types/components/spw-header/spw-header.d.ts +18 -0
  687. package/dist/types/components/spw-hero/spw-hero.d.ts +6 -0
  688. package/dist/types/components/spw-list/spw-list-item/spw-list-item.d.ts +2 -0
  689. package/dist/types/components/spw-list/spw-list.d.ts +6 -0
  690. package/dist/types/components/spw-modal/spw-modal.d.ts +1 -0
  691. package/dist/types/components/spw-select/spw-select.d.ts +1 -0
  692. package/dist/types/components/spw-sidebar/spw-sidebar-navigation-item/spw-sidebar-navigation-item.d.ts +8 -0
  693. package/dist/types/components/spw-sidebar/spw-sidebar.d.ts +1 -0
  694. package/dist/types/components/spw-table/spw-table-cell/spw-table-cell.d.ts +9 -0
  695. package/dist/types/components/spw-table/spw-table.d.ts +11 -1
  696. package/dist/types/components/spw-wizard/spw-wizard-item/spw-wizard-item.d.ts +35 -0
  697. package/dist/types/components/spw-wizard/spw-wizard.d.ts +19 -0
  698. package/dist/types/components.d.ts +408 -0
  699. package/dist/types/stories/components/spw-date-picker/spw-date-picker.stories.d.ts +2 -0
  700. package/dist/types/stories/organisms/spw-table/spw-table.stories.d.ts +1 -0
  701. package/dist/types/stories/organisms/spw-wizard/spw-wizard.stories.d.ts +8 -0
  702. package/hydrate/index.js +932 -174
  703. package/hydrate/index.mjs +932 -174
  704. package/package.json +1 -1
  705. package/dist/components/p-BbuJ0hsQ.js.map +0 -1
  706. package/dist/components/p-Cf-dIWNi.js +0 -129
  707. package/dist/components/p-Cf-dIWNi.js.map +0 -1
  708. package/dist/components/p-z27d6ASx.js.map +0 -1
  709. package/dist/spw-stencil-library/p-03f1a257.entry.js +0 -2
  710. package/dist/spw-stencil-library/p-07cadb86.entry.js.map +0 -1
  711. package/dist/spw-stencil-library/p-10269c11.entry.js +0 -2
  712. package/dist/spw-stencil-library/p-10269c11.entry.js.map +0 -1
  713. package/dist/spw-stencil-library/p-1e725439.entry.js +0 -2
  714. package/dist/spw-stencil-library/p-1e725439.entry.js.map +0 -1
  715. package/dist/spw-stencil-library/p-228a413d.entry.js.map +0 -1
  716. package/dist/spw-stencil-library/p-2e9756c4.entry.js +0 -2
  717. package/dist/spw-stencil-library/p-2e9756c4.entry.js.map +0 -1
  718. package/dist/spw-stencil-library/p-34dc26ba.entry.js +0 -2
  719. package/dist/spw-stencil-library/p-34dc26ba.entry.js.map +0 -1
  720. package/dist/spw-stencil-library/p-35ef6489.entry.js.map +0 -1
  721. package/dist/spw-stencil-library/p-4526bef6.entry.js.map +0 -1
  722. package/dist/spw-stencil-library/p-4fa98537.entry.js +0 -2
  723. package/dist/spw-stencil-library/p-4fa98537.entry.js.map +0 -1
  724. package/dist/spw-stencil-library/p-573393ab.entry.js.map +0 -1
  725. package/dist/spw-stencil-library/p-57851ceb.entry.js.map +0 -1
  726. package/dist/spw-stencil-library/p-57d83f8b.entry.js +0 -2
  727. package/dist/spw-stencil-library/p-57d83f8b.entry.js.map +0 -1
  728. package/dist/spw-stencil-library/p-5cb1344b.entry.js +0 -2
  729. package/dist/spw-stencil-library/p-5cb1344b.entry.js.map +0 -1
  730. package/dist/spw-stencil-library/p-68f9c5bf.entry.js.map +0 -1
  731. package/dist/spw-stencil-library/p-6b291009.entry.js +0 -2
  732. package/dist/spw-stencil-library/p-6b291009.entry.js.map +0 -1
  733. package/dist/spw-stencil-library/p-6d08bcc3.entry.js.map +0 -1
  734. package/dist/spw-stencil-library/p-6ee69164.entry.js +0 -2
  735. package/dist/spw-stencil-library/p-6ee69164.entry.js.map +0 -1
  736. package/dist/spw-stencil-library/p-73db3953.entry.js +0 -2
  737. package/dist/spw-stencil-library/p-73db3953.entry.js.map +0 -1
  738. package/dist/spw-stencil-library/p-7e30e4c2.entry.js +0 -2
  739. package/dist/spw-stencil-library/p-7e30e4c2.entry.js.map +0 -1
  740. package/dist/spw-stencil-library/p-96fac544.entry.js.map +0 -1
  741. package/dist/spw-stencil-library/p-BYM_CUUH.js +0 -3
  742. package/dist/spw-stencil-library/p-aaffdc4f.entry.js +0 -2
  743. package/dist/spw-stencil-library/p-aaffdc4f.entry.js.map +0 -1
  744. package/dist/spw-stencil-library/p-b64a003c.entry.js +0 -2
  745. package/dist/spw-stencil-library/p-bf14b880.entry.js +0 -2
  746. package/dist/spw-stencil-library/p-bf14b880.entry.js.map +0 -1
  747. package/dist/spw-stencil-library/p-bf43d61c.entry.js +0 -2
  748. package/dist/spw-stencil-library/p-bf43d61c.entry.js.map +0 -1
  749. package/dist/spw-stencil-library/p-c1a30fb7.entry.js.map +0 -1
  750. package/dist/spw-stencil-library/p-d3d4755a.entry.js +0 -2
  751. package/dist/spw-stencil-library/p-d3d4755a.entry.js.map +0 -1
  752. package/dist/spw-stencil-library/p-f1d04cc1.entry.js +0 -2
  753. package/dist/spw-stencil-library/p-f1d04cc1.entry.js.map +0 -1
  754. /package/dist/spw-stencil-library/{p-1e07197c.entry.js.map → p-06cb6865.entry.js.map} +0 -0
  755. /package/dist/spw-stencil-library/{p-52c51ac5.entry.js.map → p-06ec3521.entry.js.map} +0 -0
  756. /package/dist/spw-stencil-library/{p-e1a459eb.entry.js.map → p-0baeea00.entry.js.map} +0 -0
  757. /package/dist/spw-stencil-library/{p-a093ab2f.entry.js.map → p-2113f2f6.entry.js.map} +0 -0
  758. /package/dist/spw-stencil-library/{p-aa364a44.entry.js.map → p-22f972ca.entry.js.map} +0 -0
  759. /package/dist/spw-stencil-library/{p-ad5f01e4.entry.js.map → p-2abc48ed.entry.js.map} +0 -0
  760. /package/dist/spw-stencil-library/{p-3ab472db.entry.js.map → p-2b011668.entry.js.map} +0 -0
  761. /package/dist/spw-stencil-library/{p-b0dc1073.entry.js.map → p-2cfb78fb.entry.js.map} +0 -0
  762. /package/dist/spw-stencil-library/{p-af49292e.entry.js.map → p-2d974226.entry.js.map} +0 -0
  763. /package/dist/spw-stencil-library/{p-991d5382.entry.js.map → p-451a9785.entry.js.map} +0 -0
  764. /package/dist/spw-stencil-library/{p-be3b1d65.entry.js.map → p-45d99a2b.entry.js.map} +0 -0
  765. /package/dist/spw-stencil-library/{p-3cfcf070.entry.js.map → p-46567994.entry.js.map} +0 -0
  766. /package/dist/spw-stencil-library/{p-44124a37.entry.js.map → p-48417d99.entry.js.map} +0 -0
  767. /package/dist/spw-stencil-library/{p-3240c1a4.entry.js.map → p-488c2d88.entry.js.map} +0 -0
  768. /package/dist/spw-stencil-library/{p-e5c9fb8e.entry.js.map → p-4c21a696.entry.js.map} +0 -0
  769. /package/dist/spw-stencil-library/{p-08d78730.entry.js.map → p-4e1774df.entry.js.map} +0 -0
  770. /package/dist/spw-stencil-library/{p-d8078491.entry.js.map → p-512a2787.entry.js.map} +0 -0
  771. /package/dist/spw-stencil-library/{p-328fb48c.entry.js.map → p-5a1b3ad1.entry.js.map} +0 -0
  772. /package/dist/spw-stencil-library/{p-c838e17b.entry.js.map → p-5e34ea9d.entry.js.map} +0 -0
  773. /package/dist/spw-stencil-library/{p-cff5a7e4.entry.js.map → p-5fde9dae.entry.js.map} +0 -0
  774. /package/dist/spw-stencil-library/{p-2c8e65e5.entry.js.map → p-63d1c97f.entry.js.map} +0 -0
  775. /package/dist/spw-stencil-library/{p-2dff657f.entry.js.map → p-6e74b1b0.entry.js.map} +0 -0
  776. /package/dist/spw-stencil-library/{p-b726755c.entry.js.map → p-86bdf571.entry.js.map} +0 -0
  777. /package/dist/spw-stencil-library/{p-4e7df891.entry.js.map → p-9e12973d.entry.js.map} +0 -0
  778. /package/dist/spw-stencil-library/{p-8d94697c.entry.js.map → p-a840f2ca.entry.js.map} +0 -0
  779. /package/dist/spw-stencil-library/{p-b45534d4.entry.js.map → p-b1bb413f.entry.js.map} +0 -0
  780. /package/dist/spw-stencil-library/{p-75159246.entry.js.map → p-bb225503.entry.js.map} +0 -0
  781. /package/dist/spw-stencil-library/{p-cf508941.entry.js.map → p-c314e59f.entry.js.map} +0 -0
  782. /package/dist/spw-stencil-library/{p-e1c4d94e.entry.js.map → p-cbf8aea1.entry.js.map} +0 -0
  783. /package/dist/spw-stencil-library/{p-b0ca9615.entry.js.map → p-d03b1644.entry.js.map} +0 -0
  784. /package/dist/spw-stencil-library/{p-5426464a.entry.js.map → p-e3485695.entry.js.map} +0 -0
  785. /package/dist/spw-stencil-library/{p-ae905af5.entry.js.map → p-e4b4f2b3.entry.js.map} +0 -0
  786. /package/dist/spw-stencil-library/{p-93a5f755.entry.js.map → p-e4d193cd.entry.js.map} +0 -0
  787. /package/dist/spw-stencil-library/{p-158e7952.entry.js.map → p-e936741c.entry.js.map} +0 -0
  788. /package/dist/spw-stencil-library/{p-a2b3dd47.entry.js.map → p-f70ed5c3.entry.js.map} +0 -0
  789. /package/dist/spw-stencil-library/{p-f2008faa.entry.js.map → p-fc6af4d8.entry.js.map} +0 -0
@@ -1 +1 @@
1
- {"version":3,"file":"spw-modal.entry.esm.js","sources":["src/utils/focus-trap.ts","src/utils/animation.ts","src/components/spw-modal/spw-modal.scss?tag=spw-modal&encapsulation=shadow","src/components/spw-modal/spw-modal.tsx"],"sourcesContent":["/**\n * Copy/pasted from https://github.com/andreasbm/focus-trap\n */\n\n/**\n * Traverses the slots of the open shadowroots and returns all children matching the query.\n * We need to traverse each child-depth one at a time because if an element should be skipped\n * (for example because it is hidden) we need to skip all of it's children. If we use querySelectorAll(\"*\")\n * the information of whether the children is within a hidden parent is lost.\n * @param {ShadowRoot | HTMLElement} root\n * @param skipNode\n * @param isMatch\n * @param {number} maxDepth\n * @param {number} depth\n * @returns {HTMLElement[]}\n */\nexport function queryShadowRoot(\n root: ShadowRoot | HTMLElement,\n skipNode: ($elem: HTMLElement) => boolean,\n isMatch: ($elem: HTMLElement) => boolean,\n maxDepth: number = 20,\n depth: number = 0,\n): HTMLElement[] {\n const matches: HTMLElement[] = [];\n\n // If the depth is above the max depth, abort the searching here.\n if (depth >= maxDepth) {\n return matches;\n }\n\n // Traverses a slot element\n const traverseSlot = ($slot: HTMLSlotElement) => {\n // Only check nodes that are of the type Node.ELEMENT_NODE\n // Read more here https://developer.mozilla.org/en-US/docs/Web/API/Node/nodeType\n const assignedNodes = $slot.assignedNodes().filter(node => node.nodeType === 1);\n if (assignedNodes.length > 0) {\n const $slotParent = assignedNodes[0].parentElement!;\n return queryShadowRoot($slotParent, skipNode, isMatch, maxDepth, depth + 1);\n }\n\n return [];\n };\n\n // Go through each child and continue the traversing if necessary\n // Even though the typing says that children can't be undefined, Edge 15 sometimes gives an undefined value.\n // Therefore we fallback to an empty array if it is undefined.\n const children = Array.from(root.children || []) as HTMLElement[];\n for (const $child of children) {\n // Check if the element and its descendants should be skipped\n if (skipNode($child)) {\n // console.log('-- SKIP', $child);\n continue;\n }\n\n // console.log('$child', $child);\n\n // If the element matches we always add it\n if (isMatch($child)) {\n matches.push($child);\n }\n\n if ($child.shadowRoot != null) {\n // If the element has a shadow root we need to traverse it\n matches.push(...queryShadowRoot($child.shadowRoot, skipNode, isMatch, maxDepth, depth + 1));\n } else if ($child.tagName === 'SLOT') {\n // If the child is a slot we need to traverse each assigned node\n matches.push(...traverseSlot($child as HTMLSlotElement));\n } else {\n // Traverse the children of the element\n matches.push(...queryShadowRoot($child, skipNode, isMatch, maxDepth, depth + 1));\n }\n }\n\n return matches;\n}\n\n/**\n * Returns whether the element is hidden.\n * @param $elem\n */\nexport function isHidden($elem: HTMLElement): boolean {\n return (\n $elem.hasAttribute('hidden') ||\n ($elem.hasAttribute('aria-hidden') && $elem.getAttribute('aria-hidden') !== 'false') ||\n // A quick and dirty way to check whether the element is hidden.\n // For a more fine-grained check we could use \"window.getComputedStyle\" but we don't because of bad performance.\n // If the element has visibility set to \"hidden\" or \"collapse\", display set to \"none\" or opacity set to \"0\" through CSS\n // we won't be able to catch it here. We accept it due to the huge performance benefits.\n $elem.style.display === `none` ||\n $elem.style.opacity === `0` ||\n $elem.style.visibility === `hidden` ||\n $elem.style.visibility === `collapse`\n );\n\n // If offsetParent is null we can assume that the element is hidden\n // https://stackoverflow.com/questions/306305/what-would-make-offsetparent-null\n // || $elem.offsetParent == null;\n}\n\n/**\n * Returns whether the element is disabled.\n * @param $elem\n */\nexport function isDisabled($elem: HTMLElement): boolean {\n return $elem.hasAttribute('disabled') || ($elem.hasAttribute('aria-disabled') && $elem.getAttribute('aria-disabled') !== 'false');\n}\n\n/**\n * Determines whether an element is focusable.\n * Read more here: https://stackoverflow.com/questions/1599660/which-html-elements-can-receive-focus/1600194#1600194\n * Or here: https://stackoverflow.com/questions/18261595/how-to-check-if-a-dom-element-is-focusable\n * @param $elem\n */\nexport function isFocusable($elem: HTMLElement): boolean {\n // Discard elements that are removed from the tab order.\n if ($elem.getAttribute('tabindex') === '-1' || isHidden($elem) || isDisabled($elem)) {\n return false;\n }\n\n return (\n // At this point we know that the element can have focus (eg. won't be -1) if the tabindex attribute exists\n $elem.hasAttribute('tabindex') ||\n // Anchor tags or area tags with a href set\n (($elem instanceof HTMLAnchorElement || $elem instanceof HTMLAreaElement) && $elem.hasAttribute('href')) ||\n // Form elements which are not disabled\n $elem instanceof HTMLButtonElement ||\n $elem instanceof HTMLInputElement ||\n $elem instanceof HTMLTextAreaElement ||\n $elem instanceof HTMLSelectElement ||\n // IFrames\n $elem instanceof HTMLIFrameElement\n );\n}\n","export function animationTo(element: HTMLElement, keyframes: Keyframe | Keyframe[], options?: KeyframeAnimationOptions) {\n const animated = element.animate(keyframes, { ...options, fill: 'both' });\n animated.addEventListener('finish', () => {\n // @ts-ignore\n animated.commitStyles();\n animated.cancel();\n });\n\n return animated;\n}\n\nconst keyframeDefaults = {\n easing: 'cubic-bezier(0.390, 0.575, 0.565, 1.000)',\n};\n\nexport const KEYFRAMES = {\n fadeIn: [\n {\n offset: 0,\n ...keyframeDefaults,\n opacity: 0,\n },\n {\n offset: 1,\n ...keyframeDefaults,\n opacity: 1,\n },\n ],\n fadeOut: [\n {\n offset: 0,\n ...keyframeDefaults,\n opacity: 1,\n },\n {\n offset: 1,\n ...keyframeDefaults,\n opacity: 0,\n },\n ],\n};\n",":host {\n display: contents;\n}\n\n.spw-modal {\n display: none;\n justify-content: center;\n align-items: center;\n position: fixed;\n top: 0;\n left: 0;\n width: 100%;\n height: 100%;\n z-index: 1060;\n overflow-y: auto;\n\n &--opened {\n display: flex;\n }\n}\n\n.spw-modal__overlay {\n position: absolute;\n top: 0;\n left: 0;\n width: 100%;\n height: 100%;\n background: black;\n opacity: 0.7;\n z-index: 0;\n}\n\n.spw-modal__content-container {\n position: absolute;\n display: flex;\n justify-content: center;\n width: 90%;\n background-color: #fff;\n box-shadow: var(--spw-effect-elevation-6);\n overflow: hidden;\n box-sizing: border-box;\n align-items: stretch;\n border-radius: var(--spw-spacings-border-radius-lg);\n\n &--small {\n max-width: 480px;\n }\n\n &--medium {\n max-width: 600px;\n }\n\n &--large {\n max-width: 768px;\n }\n\n &--fluid {\n max-width: 100%;\n }\n}\n\n.spw-modal__content {\n display: flex;\n flex-direction: column;\n border: 1px solid var(--spw-color-themes-grey-grey-300);\n width: 100%;\n max-height: 90vh;\n overflow-y: auto;\n\n .spw-modal--sticky-buttons & {\n overflow-y: visible;\n }\n}\n\n.spw-modal__icon-container {\n display: flex;\n align-items: center;\n justify-content: center;\n width: 32px;\n background-color: #fff;\n align-self: stretch;\n}\n\n.spw-modal__header {\n display: flex;\n justify-content: space-between;\n align-items: center;\n padding: 24px;\n padding-bottom: 0;\n margin-top: 6px;\n margin-bottom: 12px;\n box-sizing: border-box;\n border-radius: 1px 1px 0px 0px;\n color: var(--spw-colors-support-grey-grey-900);\n}\n\n.spw-modal__caption {\n overflow: hidden;\n white-space: pre-wrap;\n word-wrap: break-word;\n}\n\n.spw-modal__header h2 {\n margin: 0;\n font-size: 18px;\n color: var(--spw-colors-support-grey-grey-900);\n}\n\n.spw-modal__header button {\n background: none;\n border: none;\n font-size: 1.5em;\n padding: 0;\n cursor: pointer;\n}\n\n.spw-modal__close-button {\n position: absolute;\n top: 12px;\n right: 12px;\n cursor: pointer;\n font-size: 21px;\n &:hover {\n opacity: 0.7;\n }\n}\n\n.spw-modal__body {\n padding: 0 24px;\n margin-bottom: 12px;\n box-sizing: border-box;\n flex: 1;\n font-size: 16px;\n color: var(--spw-colors-support-grey-grey-700);\n\n .spw-modal--sticky-buttons & {\n overflow-y: auto;\n }\n}\n\n.spw-modal__buttons {\n ::slotted([slot='buttons']) {\n padding: 24px;\n padding-top: 12px;\n }\n}\n\n.spw-modal__footer--buttons-present ::slotted(*) {\n display: flex;\n justify-content: flex-end;\n gap: 12px;\n padding: 24px;\n padding-top: 8px;\n\n .spw-modal__content-container--small & {\n flex-direction: column;\n gap: 8px;\n }\n\n .spw-modal__content-container--medium & {\n display: grid;\n grid-template-columns: repeat(2, minmax(0, 1fr));\n }\n}\n\n.spw-modal__border {\n display: flex;\n align-items: center;\n justify-content: center;\n width: 100%;\n font-size: 1.5em;\n flex-grow: 1;\n}\n","import { Component, Prop, Element, State, Event, Host, EventEmitter, h, Watch, Method } from '@stencil/core';\nimport { queryShadowRoot, isHidden, isFocusable } from '@utils/focus-trap';\nimport { animationTo, KEYFRAMES } from '@utils/animation';\n\ntype CloseEventTrigger = 'CLOSE_BUTTON' | 'ESCAPE_KEY' | 'BACKDROP' | 'PROGRAMMATIC';\n\nexport interface BeforeCloseEventDetail {\n trigger: CloseEventTrigger;\n}\n\n@Component({\n tag: 'spw-modal',\n styleUrl: 'spw-modal.scss',\n shadow: true,\n})\nexport class SpwModal {\n /** Indique si la modal est ouverte ou fermée, mutable et reflétée dans le DOM */\n @Prop({ reflect: true, mutable: true }) opened?: boolean = false;\n\n @State() showModal: boolean = this.opened || false;\n\n /** Titre de la modal */\n @Prop() caption: string = 'Titre de la modal';\n /** Indique si la fermeture de la modal est possible en cliquant sur l'overlay */\n @Prop() closeOnOverlayClick: boolean = true;\n /** Rend les boutons en bas de la modal \"collants\" (toujours visibles) si vrai */\n @Prop() stickyButtons: boolean = false;\n /** Événement déclenché lors de l'ouverture de la modal */\n @Event() spwModalOpen: EventEmitter;\n /** Événement déclenché lors de la fermeture de la modal */\n @Event() spwModalClose: EventEmitter;\n /** Définit la taille de la modal : 'small', 'medium', 'large' ou 'fluid' */\n @Prop() size: 'small' | 'medium' | 'large' | 'fluid' = 'small';\n /** Icône d'alerte à afficher dans la modal */\n @Prop() alertIcon: string = '';\n\n @Element() hostElement: HTMLSpwModalElement;\n\n @State() slotButtonsPresent: boolean = false;\n\n /** Indique si le bouton de fermeture est visible */\n @Prop() showCloseButton: boolean = true;\n\n private modalContainer: HTMLElement;\n private focusableElements: HTMLElement[] = [];\n private closeButton: HTMLSpwIconElement;\n\n /**\n * Méthode publique pour fermer la modal programmatiquement\n * @returns Promise qui se résout quand la modal est fermée\n */\n @Method()\n async closeModal(): Promise<void> {\n this.doBeforeClose('PROGRAMMATIC');\n }\n\n /**\n * Méthode publique pour ouvrir la modal programmatiquement\n * @returns Promise qui se résout quand la modal est ouverte\n */\n @Method()\n async openModal(): Promise<void> {\n this.opened = true;\n }\n\n componentDidLoad() {\n this.focusableElements = queryShadowRoot(this.hostElement.shadowRoot, el => isHidden(el) || el.matches('[data-focus-trap-edge]'), isFocusable);\n window.addEventListener('click', this.handleClick, { capture: true });\n window.addEventListener('click', this.handleClose, { capture: true });\n window.addEventListener('keydown', this.handleKeypress);\n }\n\n disconnectedCallback() {\n window.removeEventListener('click', this.handleClick);\n window.removeEventListener('click', this.handleClose);\n window.removeEventListener('keydown', this.handleKeypress);\n }\n\n private handleClick = (event: MouseEvent) => {\n const path = event.composedPath() as HTMLElement[];\n const trigger = path.find(el => el instanceof HTMLElement && el.hasAttribute?.('data-modal-trigger')) as HTMLElement | undefined;\n\n if (trigger) {\n const modalId = trigger.getAttribute('data-modal-trigger');\n if (modalId === this.hostElement.id) {\n this.opened = true;\n }\n }\n };\n\n private handleClose = (event: MouseEvent) => {\n const path = event.composedPath() as HTMLElement[];\n const trigger = path.find(el => el instanceof HTMLElement && el.hasAttribute?.('data-modal-close')) as HTMLElement | undefined;\n\n if (trigger) {\n const modalId = trigger.getAttribute('data-modal-close');\n if (modalId === this.hostElement.id) {\n this.opened = false;\n }\n }\n };\n\n private getFirstFocusableElement(): HTMLElement | null {\n return this.focusableElements[0];\n }\n\n private getLastFocusableElement(): HTMLElement | null {\n return this.focusableElements[this.focusableElements.length - 1];\n }\n\n private handleTopFocus = () => {\n this.attemptFocus(this.getLastFocusableElement());\n };\n\n private handleBottomFocus = () => {\n this.attemptFocus(this.getFirstFocusableElement());\n };\n\n private attemptFocus(element: HTMLElement | null) {\n if (element == null) {\n setTimeout(() => {\n this.closeButton.focus();\n });\n return;\n }\n\n setTimeout(() => {\n element.focus();\n }, 0);\n }\n\n private open() {\n this.showModal = true;\n try {\n const anim = animationTo(this.modalContainer, KEYFRAMES.fadeIn, {\n duration: 200,\n });\n anim.addEventListener('finish', () => {\n setTimeout(() => {\n this.getLastFocusableElement()?.focus();\n this.getLastFocusableElement()?.blur();\n }, 0);\n\n this.spwModalOpen.emit();\n });\n } catch (err) {\n this.spwModalOpen.emit();\n }\n }\n\n private close() {\n try {\n const anim = animationTo(this.modalContainer, KEYFRAMES.fadeOut, {\n duration: 200,\n });\n anim.addEventListener('finish', () => {\n this.showModal = false;\n this.spwModalClose.emit();\n });\n } catch (err) {\n this.showModal = false;\n this.spwModalClose.emit();\n }\n }\n\n private handleKeypress = (event: KeyboardEvent) => {\n if (this.showModal && event.key === 'Escape') {\n this.doBeforeClose('ESCAPE_KEY');\n }\n };\n\n private doBeforeClose(trigger: CloseEventTrigger) {\n const triggers = [];\n triggers.push(trigger);\n const prevented = triggers.some(event => event.defaultPrevented);\n if (!prevented) {\n this.opened = false;\n }\n }\n\n @Watch('opened')\n openedChanged(newValue: boolean) {\n newValue === true ? this.open() : this.close();\n }\n\n private handleOverlayClick() {\n if (this.closeOnOverlayClick) {\n this.doBeforeClose('BACKDROP');\n }\n }\n\n private get elementClass(): { [className: string]: boolean } {\n return {\n 'spw-modal': true,\n 'spw-modal--opened': this.showModal,\n 'spw-modal--sticky-buttons': this.stickyButtons,\n };\n }\n\n render() {\n return (\n <Host>\n <div ref={el => (this.modalContainer = el)} class={this.elementClass}>\n <div class=\"spw-modal__overlay\" onClick={() => this.handleOverlayClick()}></div>\n <div data-focus-trap-edge onFocus={this.handleTopFocus} tabindex=\"0\"></div>\n <div class={`spw-modal__content-container spw-modal__content-container--${this.size}`} role=\"dialog\" aria-modal=\"true\" aria-label={this.caption}>\n <div class=\"spw-modal__content\">\n <div class=\"spw-modal__header\">\n <h2 class=\"spw-modal__caption\">{this.caption}</h2>\n {this.showCloseButton && (\n <spw-icon class=\"spw-modal__close-button\" ref={el => (this.closeButton = el)} icon=\"fa-xmark\" onClick={() => this.doBeforeClose('CLOSE_BUTTON')}></spw-icon>\n )}\n </div>\n <div class=\"spw-modal__body\">\n <slot name=\"content\" />\n </div>\n <div class=\"spw-modal__buttons\">\n <slot name=\"buttons\"></slot>\n </div>\n </div>\n </div>\n <div data-focus-trap-edge onFocus={this.handleBottomFocus} tabindex=\"0\"></div>\n </div>\n </Host>\n );\n }\n}\n"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"spw-modal.entry.esm.js","sources":["src/utils/focus-trap.ts","src/utils/animation.ts","src/components/spw-modal/spw-modal.scss?tag=spw-modal&encapsulation=shadow","src/components/spw-modal/spw-modal.tsx"],"sourcesContent":["/**\n * Copy/pasted from https://github.com/andreasbm/focus-trap\n */\n\n/**\n * Traverses the slots of the open shadowroots and returns all children matching the query.\n * We need to traverse each child-depth one at a time because if an element should be skipped\n * (for example because it is hidden) we need to skip all of it's children. If we use querySelectorAll(\"*\")\n * the information of whether the children is within a hidden parent is lost.\n * @param {ShadowRoot | HTMLElement} root\n * @param skipNode\n * @param isMatch\n * @param {number} maxDepth\n * @param {number} depth\n * @returns {HTMLElement[]}\n */\nexport function queryShadowRoot(\n root: ShadowRoot | HTMLElement,\n skipNode: ($elem: HTMLElement) => boolean,\n isMatch: ($elem: HTMLElement) => boolean,\n maxDepth: number = 20,\n depth: number = 0,\n): HTMLElement[] {\n const matches: HTMLElement[] = [];\n\n // If the depth is above the max depth, abort the searching here.\n if (depth >= maxDepth) {\n return matches;\n }\n\n // Traverses a slot element\n const traverseSlot = ($slot: HTMLSlotElement) => {\n // Only check nodes that are of the type Node.ELEMENT_NODE\n // Read more here https://developer.mozilla.org/en-US/docs/Web/API/Node/nodeType\n const assignedNodes = $slot.assignedNodes().filter(node => node.nodeType === 1);\n if (assignedNodes.length > 0) {\n const $slotParent = assignedNodes[0].parentElement!;\n return queryShadowRoot($slotParent, skipNode, isMatch, maxDepth, depth + 1);\n }\n\n return [];\n };\n\n // Go through each child and continue the traversing if necessary\n // Even though the typing says that children can't be undefined, Edge 15 sometimes gives an undefined value.\n // Therefore we fallback to an empty array if it is undefined.\n const children = Array.from(root.children || []) as HTMLElement[];\n for (const $child of children) {\n // Check if the element and its descendants should be skipped\n if (skipNode($child)) {\n // console.log('-- SKIP', $child);\n continue;\n }\n\n // console.log('$child', $child);\n\n // If the element matches we always add it\n if (isMatch($child)) {\n matches.push($child);\n }\n\n if ($child.shadowRoot != null) {\n // If the element has a shadow root we need to traverse it\n matches.push(...queryShadowRoot($child.shadowRoot, skipNode, isMatch, maxDepth, depth + 1));\n } else if ($child.tagName === 'SLOT') {\n // If the child is a slot we need to traverse each assigned node\n matches.push(...traverseSlot($child as HTMLSlotElement));\n } else {\n // Traverse the children of the element\n matches.push(...queryShadowRoot($child, skipNode, isMatch, maxDepth, depth + 1));\n }\n }\n\n return matches;\n}\n\n/**\n * Returns whether the element is hidden.\n * @param $elem\n */\nexport function isHidden($elem: HTMLElement): boolean {\n return (\n $elem.hasAttribute('hidden') ||\n ($elem.hasAttribute('aria-hidden') && $elem.getAttribute('aria-hidden') !== 'false') ||\n // A quick and dirty way to check whether the element is hidden.\n // For a more fine-grained check we could use \"window.getComputedStyle\" but we don't because of bad performance.\n // If the element has visibility set to \"hidden\" or \"collapse\", display set to \"none\" or opacity set to \"0\" through CSS\n // we won't be able to catch it here. We accept it due to the huge performance benefits.\n $elem.style.display === `none` ||\n $elem.style.opacity === `0` ||\n $elem.style.visibility === `hidden` ||\n $elem.style.visibility === `collapse`\n );\n\n // If offsetParent is null we can assume that the element is hidden\n // https://stackoverflow.com/questions/306305/what-would-make-offsetparent-null\n // || $elem.offsetParent == null;\n}\n\n/**\n * Returns whether the element is disabled.\n * @param $elem\n */\nexport function isDisabled($elem: HTMLElement): boolean {\n return $elem.hasAttribute('disabled') || ($elem.hasAttribute('aria-disabled') && $elem.getAttribute('aria-disabled') !== 'false');\n}\n\n/**\n * Determines whether an element is focusable.\n * Read more here: https://stackoverflow.com/questions/1599660/which-html-elements-can-receive-focus/1600194#1600194\n * Or here: https://stackoverflow.com/questions/18261595/how-to-check-if-a-dom-element-is-focusable\n * @param $elem\n */\nexport function isFocusable($elem: HTMLElement): boolean {\n // Discard elements that are removed from the tab order.\n if ($elem.getAttribute('tabindex') === '-1' || isHidden($elem) || isDisabled($elem)) {\n return false;\n }\n\n return (\n // At this point we know that the element can have focus (eg. won't be -1) if the tabindex attribute exists\n $elem.hasAttribute('tabindex') ||\n // Anchor tags or area tags with a href set\n (($elem instanceof HTMLAnchorElement || $elem instanceof HTMLAreaElement) && $elem.hasAttribute('href')) ||\n // Form elements which are not disabled\n $elem instanceof HTMLButtonElement ||\n $elem instanceof HTMLInputElement ||\n $elem instanceof HTMLTextAreaElement ||\n $elem instanceof HTMLSelectElement ||\n // IFrames\n $elem instanceof HTMLIFrameElement\n );\n}\n","export function animationTo(element: HTMLElement, keyframes: Keyframe | Keyframe[], options?: KeyframeAnimationOptions) {\n const animated = element.animate(keyframes, { ...options, fill: 'both' });\n animated.addEventListener('finish', () => {\n // @ts-ignore\n animated.commitStyles();\n animated.cancel();\n });\n\n return animated;\n}\n\nconst keyframeDefaults = {\n easing: 'cubic-bezier(0.390, 0.575, 0.565, 1.000)',\n};\n\nexport const KEYFRAMES = {\n fadeIn: [\n {\n offset: 0,\n ...keyframeDefaults,\n opacity: 0,\n },\n {\n offset: 1,\n ...keyframeDefaults,\n opacity: 1,\n },\n ],\n fadeOut: [\n {\n offset: 0,\n ...keyframeDefaults,\n opacity: 1,\n },\n {\n offset: 1,\n ...keyframeDefaults,\n opacity: 0,\n },\n ],\n};\n",":host {\n display: contents;\n}\n\n.spw-modal {\n display: none;\n justify-content: center;\n align-items: center;\n position: fixed;\n top: 0;\n left: 0;\n width: 100%;\n height: 100%;\n z-index: 1060;\n overflow-y: auto;\n\n &--opened {\n display: flex;\n }\n}\n\n.spw-modal__overlay {\n position: absolute;\n top: 0;\n left: 0;\n width: 100%;\n height: 100%;\n background: black;\n opacity: 0.7;\n z-index: 0;\n}\n\n.spw-modal__content-container {\n position: absolute;\n display: flex;\n justify-content: center;\n width: 90%;\n background-color: #fff;\n box-shadow: var(--spw-effect-elevation-6);\n overflow: hidden;\n box-sizing: border-box;\n align-items: stretch;\n border-radius: var(--spw-spacings-border-radius-lg);\n\n &--small {\n max-width: 480px;\n }\n\n &--medium {\n max-width: 600px;\n }\n\n &--large {\n max-width: 768px;\n }\n\n &--fluid {\n max-width: 100%;\n }\n}\n\n.spw-modal__content {\n display: flex;\n flex-direction: column;\n border: 1px solid var(--spw-color-themes-grey-grey-300);\n width: 100%;\n max-height: 90vh;\n overflow-y: auto;\n\n .spw-modal--sticky-buttons & {\n overflow-y: visible;\n }\n}\n\n.spw-modal__icon-container {\n display: flex;\n align-items: center;\n justify-content: center;\n width: 32px;\n background-color: #fff;\n align-self: stretch;\n}\n\n.spw-modal__header {\n display: flex;\n justify-content: space-between;\n align-items: center;\n padding: 24px;\n padding-bottom: 0;\n margin-top: 6px;\n margin-bottom: 12px;\n box-sizing: border-box;\n border-radius: 1px 1px 0px 0px;\n color: var(--spw-colors-support-grey-grey-900);\n}\n\n.spw-modal__caption {\n overflow: hidden;\n white-space: pre-wrap;\n word-wrap: break-word;\n}\n\n.spw-modal__header h2 {\n margin: 0;\n font-size: 18px;\n color: var(--spw-colors-support-grey-grey-900);\n}\n\n.spw-modal__header button {\n background: none;\n border: none;\n font-size: 1.5em;\n padding: 0;\n cursor: pointer;\n}\n\n.spw-modal__close-button {\n position: absolute;\n top: 12px;\n right: 12px;\n cursor: pointer;\n font-size: 21px;\n &:hover {\n opacity: 0.7;\n }\n}\n\n.spw-modal__body {\n padding: 0 24px;\n margin-bottom: 12px;\n box-sizing: border-box;\n flex: 1;\n font-size: 16px;\n color: var(--spw-colors-support-grey-grey-700);\n\n .spw-modal--sticky-buttons & {\n overflow-y: auto;\n }\n}\n\n.spw-modal__buttons {\n padding-top: 12px;\n ::slotted([slot='buttons']) {\n padding: 24px;\n padding-top: 0;\n }\n}\n\n.spw-modal__footer--buttons-present ::slotted(*) {\n display: flex;\n justify-content: flex-end;\n gap: 12px;\n padding: 24px;\n padding-top: 8px;\n\n .spw-modal__content-container--small & {\n flex-direction: column;\n gap: 8px;\n }\n\n .spw-modal__content-container--medium & {\n display: grid;\n grid-template-columns: repeat(2, minmax(0, 1fr));\n }\n}\n\n.spw-modal__border {\n display: flex;\n align-items: center;\n justify-content: center;\n width: 100%;\n font-size: 1.5em;\n flex-grow: 1;\n}\n","import { Component, Prop, Element, State, Event, Host, EventEmitter, h, Watch, Method } from '@stencil/core';\nimport { queryShadowRoot, isHidden, isFocusable } from '@utils/focus-trap';\nimport { animationTo, KEYFRAMES } from '@utils/animation';\n\ntype CloseEventTrigger = 'CLOSE_BUTTON' | 'ESCAPE_KEY' | 'BACKDROP' | 'PROGRAMMATIC';\n\nexport interface BeforeCloseEventDetail {\n trigger: CloseEventTrigger;\n}\n\n@Component({\n tag: 'spw-modal',\n styleUrl: 'spw-modal.scss',\n shadow: true,\n})\nexport class SpwModal {\n /** Indique si la modal est ouverte ou fermée, mutable et reflétée dans le DOM */\n @Prop({ reflect: true, mutable: true }) opened?: boolean = false;\n\n @State() showModal: boolean = this.opened || false;\n\n /** Titre de la modal */\n @Prop() caption: string = 'Titre de la modal';\n /** Indique si la fermeture de la modal est possible en cliquant sur l'overlay */\n @Prop() closeOnOverlayClick: boolean = true;\n /** Rend les boutons en bas de la modal \"collants\" (toujours visibles) si vrai */\n @Prop() stickyButtons: boolean = false;\n /** Événement déclenché lors de l'ouverture de la modal */\n @Event() spwModalOpen: EventEmitter;\n /** Événement déclenché lors de la fermeture de la modal */\n @Event() spwModalClose: EventEmitter;\n /** Définit la taille de la modal : 'small', 'medium', 'large' ou 'fluid' */\n @Prop() size: 'small' | 'medium' | 'large' | 'fluid' = 'small';\n /** Icône d'alerte à afficher dans la modal */\n @Prop() alertIcon: string = '';\n\n @Element() hostElement: HTMLSpwModalElement;\n\n @State() slotButtonsPresent: boolean = false;\n\n /** Indique si le bouton de fermeture est visible */\n @Prop() showCloseButton: boolean = true;\n\n private modalContainer: HTMLElement;\n private focusableElements: HTMLElement[] = [];\n private closeButton: HTMLSpwIconElement;\n\n /**\n * Méthode publique pour fermer la modal programmatiquement\n * @returns Promise qui se résout quand la modal est fermée\n */\n @Method()\n async closeModal(): Promise<void> {\n this.doBeforeClose('PROGRAMMATIC');\n }\n\n /**\n * Méthode publique pour ouvrir la modal programmatiquement\n * @returns Promise qui se résout quand la modal est ouverte\n */\n @Method()\n async openModal(): Promise<void> {\n this.opened = true;\n }\n\n componentDidLoad() {\n this.focusableElements = queryShadowRoot(this.hostElement.shadowRoot, el => isHidden(el) || el.matches('[data-focus-trap-edge]'), isFocusable);\n window.addEventListener('click', this.handleClick, { capture: true });\n window.addEventListener('click', this.handleClose, { capture: true });\n window.addEventListener('keydown', this.handleKeypress);\n }\n\n disconnectedCallback() {\n window.removeEventListener('click', this.handleClick);\n window.removeEventListener('click', this.handleClose);\n window.removeEventListener('keydown', this.handleKeypress);\n }\n\n private handleClick = (event: MouseEvent) => {\n const path = event.composedPath() as HTMLElement[];\n const trigger = path.find(el => el instanceof HTMLElement && el.hasAttribute?.('data-modal-trigger')) as HTMLElement | undefined;\n\n if (trigger) {\n const modalId = trigger.getAttribute('data-modal-trigger');\n if (modalId === this.hostElement.id) {\n this.opened = true;\n }\n }\n };\n\n private handleClose = (event: MouseEvent) => {\n const path = event.composedPath() as HTMLElement[];\n const trigger = path.find(el => el instanceof HTMLElement && el.hasAttribute?.('data-modal-close')) as HTMLElement | undefined;\n\n if (trigger) {\n const modalId = trigger.getAttribute('data-modal-close');\n if (modalId === this.hostElement.id) {\n this.opened = false;\n }\n }\n };\n\n private getFirstFocusableElement(): HTMLElement | null {\n return this.focusableElements[0];\n }\n\n private getLastFocusableElement(): HTMLElement | null {\n return this.focusableElements[this.focusableElements.length - 1];\n }\n\n private handleTopFocus = () => {\n this.attemptFocus(this.getLastFocusableElement());\n };\n\n private handleBottomFocus = () => {\n this.attemptFocus(this.getFirstFocusableElement());\n };\n\n private attemptFocus(element: HTMLElement | null) {\n if (element == null) {\n setTimeout(() => {\n this.closeButton.focus();\n });\n return;\n }\n\n setTimeout(() => {\n element.focus();\n }, 0);\n }\n\n private open() {\n this.showModal = true;\n try {\n const anim = animationTo(this.modalContainer, KEYFRAMES.fadeIn, {\n duration: 200,\n });\n anim.addEventListener('finish', () => {\n setTimeout(() => {\n this.getLastFocusableElement()?.focus();\n this.getLastFocusableElement()?.blur();\n }, 0);\n\n this.spwModalOpen.emit();\n });\n } catch (err) {\n this.spwModalOpen.emit();\n }\n }\n\n private close() {\n this.stopAllVideos();\n try {\n const anim = animationTo(this.modalContainer, KEYFRAMES.fadeOut, {\n duration: 200,\n });\n anim.addEventListener('finish', () => {\n this.showModal = false;\n this.spwModalClose.emit();\n });\n } catch (err) {\n this.showModal = false;\n this.spwModalClose.emit();\n }\n }\n\n private stopAllVideos() {\n const iframes = this.hostElement.querySelectorAll('iframe');\n iframes.forEach(iframe => {\n iframe.src = iframe.src;\n });\n }\n\n private handleKeypress = (event: KeyboardEvent) => {\n if (this.showModal && event.key === 'Escape') {\n this.doBeforeClose('ESCAPE_KEY');\n }\n };\n\n private doBeforeClose(trigger: CloseEventTrigger) {\n const triggers = [];\n triggers.push(trigger);\n const prevented = triggers.some(event => event.defaultPrevented);\n if (!prevented) {\n this.opened = false;\n }\n }\n\n @Watch('opened')\n openedChanged(newValue: boolean) {\n newValue === true ? this.open() : this.close();\n }\n\n private handleOverlayClick() {\n if (this.closeOnOverlayClick) {\n this.doBeforeClose('BACKDROP');\n }\n }\n\n private get elementClass(): { [className: string]: boolean } {\n return {\n 'spw-modal': true,\n 'spw-modal--opened': this.showModal,\n 'spw-modal--sticky-buttons': this.stickyButtons,\n };\n }\n\n render() {\n return (\n <Host>\n <div ref={el => (this.modalContainer = el)} class={this.elementClass}>\n <div class=\"spw-modal__overlay\" onClick={() => this.handleOverlayClick()}></div>\n <div data-focus-trap-edge onFocus={this.handleTopFocus} tabindex=\"0\"></div>\n <div class={`spw-modal__content-container spw-modal__content-container--${this.size}`} role=\"dialog\" aria-modal=\"true\" aria-label={this.caption}>\n <div class=\"spw-modal__content\">\n <div class=\"spw-modal__header\">\n <h2 class=\"spw-modal__caption\">{this.caption}</h2>\n {this.showCloseButton && (\n <spw-icon class=\"spw-modal__close-button\" ref={el => (this.closeButton = el)} icon=\"fa-xmark\" onClick={() => this.doBeforeClose('CLOSE_BUTTON')}></spw-icon>\n )}\n </div>\n <div class=\"spw-modal__body\">\n <slot name=\"content\" />\n </div>\n <div class=\"spw-modal__buttons\">\n <slot name=\"buttons\"></slot>\n </div>\n </div>\n </div>\n <div data-focus-trap-edge onFocus={this.handleBottomFocus} tabindex=\"0\"></div>\n </div>\n </Host>\n );\n }\n}\n"],"names":[],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"spw-select.entry.esm.js","sources":["src/components/spw-select/spw-select.scss?tag=spw-select&encapsulation=shadow","src/components/spw-select/spw-select.tsx"],"sourcesContent":[":host {\n display: block;\n}\n\n.spw-select {\n position: relative;\n &__container {\n position: relative;\n }\n &__arrow {\n position: absolute;\n top: 50%;\n transform: translateY(-50%);\n right: 12px;\n pointer-events: none;\n color: var(--spw-color-themes-grey-grey-600);\n font-size: 16px;\n }\n &__trigger {\n width: 100%;\n height: 40px;\n border-radius: 4px;\n border: 1px solid var(--spw-color-themes-grey-grey-800);\n background-color: #fff;\n font-size: 16px;\n color: var(--spw-color-themes-grey-grey-800);\n position: relative;\n padding: 0;\n margin: 0;\n appearance: none;\n padding: 0 12px;\n padding-right: 40px;\n\n &:hover {\n outline: 4px solid var(--spw-color-themes-grey-grey-300);\n }\n\n &:focus-visible {\n outline: 3px solid white;\n outline-offset: 0;\n box-shadow: 0 0 0 6px black;\n }\n\n &::after {\n content: '\\f078';\n font-family: var(--spw-ds-font-icons-solid);\n font-weight: 900;\n font-size: 14px;\n color: var(--spw-color-themes-grey-grey-800);\n position: absolute;\n right: 10px;\n top: 50%;\n transform: translateY(-50%);\n pointer-events: none;\n }\n\n .spw-select--is-error & {\n border-color: var(--spw-colors-states-error-error-300);\n }\n\n .spw-select--large & {\n height: 60px;\n padding: 0 24px;\n font-size: 18px;\n }\n\n .spw-select--disabled & {\n border-color: var(--spw-color-themes-grey-grey-400);\n background: var(--spw-color-themes-grey-grey-100);\n color: var(--spw-color-themes-grey-grey-500);\n cursor: not-allowed;\n &::placeholder {\n color: var(--spw-color-themes-grey-grey-500);\n }\n &:hover,\n &:focus,\n &:focus-visible {\n outline: none;\n }\n }\n }\n}\n","import { AttachInternals, Host, Component, Prop, State, Event, EventEmitter, h, Element, Watch } from '@stencil/core';\n\nexport interface SelectItem {\n label: string;\n value: string | number;\n}\n\n@Component({\n tag: 'spw-select',\n styleUrl: 'spw-select.scss',\n formAssociated: true,\n shadow: true,\n})\nexport class SpwSelect {\n @Element() el: HTMLSpwSelectElement;\n\n /** Emet un event si la valeur change */\n @Event() valueChanged: EventEmitter<string | number>;\n @State() internalValue: string | number;\n\n /** Valeur sélectionnée actuelle, mutable et reflétée dans le DOM */\n @Prop({ mutable: true, reflect: true }) value: string | number;\n /** Label associé au champ de sélection */\n @Prop() label: string = '';\n /** Texte du placeholder à afficher lorsque rien n'est sélectionné */\n @Prop() placeholder: string = 'Sélectionner une option';\n /** Indique si le champ de sélection est désactivé */\n @Prop() disabled: boolean;\n /** Nom de l'élément utilisé dans les formulaires pour associer la valeur sélectionnée */\n @Prop() name: string;\n /** Indique si la sélection est obligatoire dans le formulaire */\n @Prop() required: boolean = false;\n /** Taille du champ de sélection : 'large' ou 'medium' */\n @Prop() size: 'large' | 'medium' = 'medium';\n /** Texte d'assistance affiché sous le champ de sélection */\n @Prop() assistiveText?: string;\n /** Message d'erreur à afficher sous le champ de sélection */\n @Prop() error?: string = '';\n /** Message d'indication (hint) à afficher sous le champ de sélection */\n @Prop() hint?: string = '';\n /** Message de succès à afficher sous le champ de sélection */\n @Prop() success?: string = '';\n /** Message de warning à afficher sous le champ */\n @Prop() warning?: string = '';\n /** Affiche une icône d'erreur si vrai */\n @Prop() showErrorIcon?: boolean = true;\n /** Affiche une icône d'indication si vrai */\n @Prop() showHintIcon?: boolean = true;\n /** Affiche une icône de succès si vrai */\n @Prop() showSuccessIcon?: boolean = true;\n /** Affiche une icône de warning si vrai */\n @Prop() showWarningIcon?: boolean = true;\n /** Liste d'items dynamiques pour générer les options (array d'objects avec label + value) */\n @Prop() items?: SelectItem[];\n /** Propriété à utiliser comme label des options */\n @Prop() itemLabel?: string;\n /** Propriété à utiliser comme valeur des options */\n @Prop() itemValue?: string;\n\n private selectElement!: HTMLSelectElement;\n private defaultValue: string | number | null = null;\n\n @AttachInternals() internals: ElementInternals;\n\n @Watch('items')\n handleItemsChange() {\n if (this.selectElement) {\n this.syncDynamicOptions();\n }\n }\n\n componentWillLoad() {\n this.defaultValue = this.value ?? this.getInitialSelectedValue();\n this.internalValue = this.value || this.getInitialSelectedValue();\n }\n\n componentDidLoad() {\n this.internals.setFormValue(this.getFormValue());\n if (!this.items) {\n this.moveOptionsToLightDom();\n } else {\n this.syncDynamicOptions();\n }\n }\n\n formResetCallback() {\n this.setValue(this.defaultValue ?? '');\n }\n\n private setValue(val: string | number) {\n this.internalValue = val;\n this.value = val;\n\n if (this.selectElement) {\n this.selectElement.value = String(val);\n }\n\n this.internals.setFormValue(this.getFormValue());\n this.valueChanged.emit(this.internalValue);\n }\n\n private getFormValue(): string | null {\n return this.internalValue ? String(this.internalValue) : null;\n }\n\n private getInitialSelectedValue(): string | number | null {\n if (this.items && this.items.length > 0) {\n return null;\n }\n const assignedNodes = Array.from(this.el.querySelectorAll('option')) as HTMLOptionElement[];\n for (const option of assignedNodes) {\n if (option.hasAttribute('selected')) {\n return option.getAttribute('value');\n }\n }\n return null;\n }\n\n private handleSelectChange(event: Event) {\n const select = event.target as HTMLSelectElement;\n this.internalValue = select.value;\n this.value = this.internalValue;\n this.internals.setFormValue(this.getFormValue());\n this.valueChanged.emit(this.internalValue);\n }\n\n private moveOptionsToLightDom() {\n const slot = this.el.shadowRoot.querySelector('slot');\n if (slot) {\n const assignedNodes = slot.assignedNodes({ flatten: true }) as HTMLElement[];\n assignedNodes.forEach(node => {\n if (node.nodeName === 'OPTION' || node.nodeName === 'OPTGROUP') {\n this.selectElement.appendChild(node);\n }\n });\n }\n }\n\n private syncDynamicOptions() {\n while (this.selectElement.options.length > 1) {\n this.selectElement.remove(1);\n }\n\n if (this.items && this.items.length > 0) {\n this.items.forEach(item => {\n const option = document.createElement('option');\n const value = this.itemValue ? item[this.itemValue] : item;\n const label = this.itemLabel ? item[this.itemLabel] : item;\n option.value = String(value);\n option.textContent = String(label);\n this.selectElement.appendChild(option);\n });\n }\n\n if (this.selectElement.value !== String(this.internalValue || '')) {\n this.selectElement.value = String(this.internalValue || '');\n }\n }\n\n private renderErrorMessage() {\n if (this.error) {\n return (\n <spw-field-message variant=\"error\" showIcon={this.showErrorIcon}>\n {this.error}\n </spw-field-message>\n );\n }\n }\n\n private renderHintMessage() {\n if (this.hint) {\n return (\n <spw-field-message variant=\"hint\" showIcon={this.showHintIcon}>\n {this.hint}\n </spw-field-message>\n );\n }\n }\n\n private renderSuccessMessage() {\n if (this.success) {\n return (\n <spw-field-message variant=\"success\" showIcon={this.showSuccessIcon}>\n {this.success}\n </spw-field-message>\n );\n }\n }\n\n private renderWarningMessage() {\n if (this.warning) {\n return (\n <spw-field-message variant=\"warning\" showIcon={this.showWarningIcon}>\n {this.warning}\n </spw-field-message>\n );\n }\n }\n\n private get elementClass(): { [className: string]: boolean } {\n return {\n 'spw-select': true,\n [`spw-select--${this.size}`]: true,\n 'spw-select--disabled': this.disabled,\n 'spw-select--is-error': !!this.error,\n };\n }\n\n render() {\n return (\n <Host>\n <div class={this.elementClass}>\n {this.label && <spw-field-label label={this.label} name={this.name} required={this.required}></spw-field-label>}\n {this.assistiveText && (\n <spw-field-message class=\"spw-tw-mb-2 -spw-tw-mt-1\" variant=\"hint\" showIcon={false}>\n {this.assistiveText}\n </spw-field-message>\n )}\n <div class=\"spw-select__container\">\n <select\n id={this.name}\n class=\"spw-select__trigger\"\n onChange={event => this.handleSelectChange(event)}\n disabled={this.disabled}\n ref={el => (this.selectElement = el as HTMLSelectElement)}\n tabindex={this.disabled ? -1 : 0}\n >\n <option value=\"\" disabled selected={!this.internalValue}>\n {this.placeholder}\n </option>\n </select>\n <spw-icon class=\"spw-select__arrow\" icon=\"fa-chevron-down\"></spw-icon>\n </div>\n {!this.items && <slot />}\n </div>\n {this.renderErrorMessage()}\n {this.renderHintMessage()}\n {this.renderSuccessMessage()}\n {this.renderWarningMessage()}\n </Host>\n );\n }\n}\n"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"spw-select.entry.esm.js","sources":["src/components/spw-select/spw-select.scss?tag=spw-select&encapsulation=shadow","src/components/spw-select/spw-select.tsx"],"sourcesContent":[":host {\n display: block;\n}\n\n.spw-select {\n position: relative;\n &__container {\n position: relative;\n }\n &__arrow {\n position: absolute;\n top: 50%;\n transform: translateY(-50%);\n right: 12px;\n pointer-events: none;\n color: var(--spw-color-themes-grey-grey-600);\n font-size: 16px;\n }\n &__trigger {\n width: 100%;\n height: 40px;\n border-radius: 4px;\n border: 1px solid var(--spw-color-themes-grey-grey-800);\n background-color: #fff;\n font-size: 16px;\n color: var(--spw-color-themes-grey-grey-800);\n position: relative;\n padding: 0;\n margin: 0;\n appearance: none;\n padding: 0 12px;\n padding-right: 40px;\n\n &:hover {\n outline: 4px solid var(--spw-color-themes-grey-grey-300);\n }\n\n &:focus-visible {\n outline: 3px solid white;\n outline-offset: 0;\n box-shadow: 0 0 0 6px black;\n }\n\n &::after {\n content: '\\f078';\n font-family: var(--spw-ds-font-icons-solid);\n font-weight: 900;\n font-size: 14px;\n color: var(--spw-color-themes-grey-grey-800);\n position: absolute;\n right: 10px;\n top: 50%;\n transform: translateY(-50%);\n pointer-events: none;\n }\n\n .spw-select--is-error & {\n border-color: var(--spw-colors-states-error-error-300);\n }\n\n .spw-select--large & {\n height: 60px;\n padding: 0 24px;\n font-size: 18px;\n }\n\n .spw-select--disabled & {\n border-color: var(--spw-color-themes-grey-grey-400);\n background: var(--spw-color-themes-grey-grey-100);\n color: var(--spw-color-themes-grey-grey-500);\n cursor: not-allowed;\n &::placeholder {\n color: var(--spw-color-themes-grey-grey-500);\n }\n &:hover,\n &:focus,\n &:focus-visible {\n outline: none;\n }\n }\n }\n}\n","import { AttachInternals, Host, Component, Method, Prop, State, Event, EventEmitter, h, Element, Watch } from '@stencil/core';\n\nexport interface SelectItem {\n label: string;\n value: string | number;\n}\n\n@Component({\n tag: 'spw-select',\n styleUrl: 'spw-select.scss',\n formAssociated: true,\n shadow: true,\n})\nexport class SpwSelect {\n @Element() el: HTMLSpwSelectElement;\n\n /** Emet un event si la valeur change */\n @Event() valueChanged: EventEmitter<string | number>;\n @State() internalValue: string | number;\n\n /** Valeur sélectionnée actuelle, mutable et reflétée dans le DOM */\n @Prop({ mutable: true, reflect: true }) value: string | number;\n /** Label associé au champ de sélection */\n @Prop() label: string = '';\n /** Texte du placeholder à afficher lorsque rien n'est sélectionné */\n @Prop() placeholder: string = 'Sélectionner une option';\n /** Indique si le champ de sélection est désactivé */\n @Prop() disabled: boolean;\n /** Nom de l'élément utilisé dans les formulaires pour associer la valeur sélectionnée */\n @Prop() name: string;\n /** Indique si la sélection est obligatoire dans le formulaire */\n @Prop() required: boolean = false;\n /** Taille du champ de sélection : 'large' ou 'medium' */\n @Prop() size: 'large' | 'medium' = 'medium';\n /** Texte d'assistance affiché sous le champ de sélection */\n @Prop() assistiveText?: string;\n /** Message d'erreur à afficher sous le champ de sélection */\n @Prop() error?: string = '';\n /** Message d'indication (hint) à afficher sous le champ de sélection */\n @Prop() hint?: string = '';\n /** Message de succès à afficher sous le champ de sélection */\n @Prop() success?: string = '';\n /** Message de warning à afficher sous le champ */\n @Prop() warning?: string = '';\n /** Affiche une icône d'erreur si vrai */\n @Prop() showErrorIcon?: boolean = true;\n /** Affiche une icône d'indication si vrai */\n @Prop() showHintIcon?: boolean = true;\n /** Affiche une icône de succès si vrai */\n @Prop() showSuccessIcon?: boolean = true;\n /** Affiche une icône de warning si vrai */\n @Prop() showWarningIcon?: boolean = true;\n /** Liste d'items dynamiques pour générer les options (array d'objects avec label + value) */\n @Prop() items?: SelectItem[];\n /** Propriété à utiliser comme label des options */\n @Prop() itemLabel?: string;\n /** Propriété à utiliser comme valeur des options */\n @Prop() itemValue?: string;\n\n private selectElement!: HTMLSelectElement;\n private defaultValue: string | number | null = null;\n\n @AttachInternals() internals: ElementInternals;\n\n @Watch('items')\n handleItemsChange() {\n if (this.selectElement) {\n this.syncDynamicOptions();\n }\n }\n\n @Method()\n async resetSelect() {\n this.internalValue = '';\n this.value = '';\n if (this.selectElement) {\n this.selectElement.value = '';\n }\n this.internals.setFormValue('');\n this.valueChanged.emit('');\n }\n\n componentWillLoad() {\n this.defaultValue = this.value ?? this.getInitialSelectedValue();\n this.internalValue = this.value || this.getInitialSelectedValue();\n }\n\n componentDidLoad() {\n this.internals.setFormValue(this.getFormValue());\n if (!this.items) {\n this.moveOptionsToLightDom();\n } else {\n this.syncDynamicOptions();\n }\n }\n\n formResetCallback() {\n this.setValue(this.defaultValue ?? '');\n this.resetSelect();\n }\n\n private setValue(val: string | number) {\n this.internalValue = val;\n this.value = val;\n\n if (this.selectElement) {\n this.selectElement.value = String(val);\n }\n\n this.internals.setFormValue(this.getFormValue());\n this.valueChanged.emit(this.internalValue);\n }\n\n private getFormValue(): string | null {\n return this.internalValue ? String(this.internalValue) : null;\n }\n\n private getInitialSelectedValue(): string | number | null {\n if (this.items && this.items.length > 0) {\n return null;\n }\n const assignedNodes = Array.from(this.el.querySelectorAll('option')) as HTMLOptionElement[];\n for (const option of assignedNodes) {\n if (option.hasAttribute('selected')) {\n return option.getAttribute('value');\n }\n }\n return null;\n }\n\n private handleSelectChange(event: Event) {\n const select = event.target as HTMLSelectElement;\n this.internalValue = select.value;\n this.value = this.internalValue;\n this.internals.setFormValue(this.getFormValue());\n this.valueChanged.emit(this.internalValue);\n }\n\n private moveOptionsToLightDom() {\n const slot = this.el.shadowRoot.querySelector('slot');\n if (slot) {\n const assignedNodes = slot.assignedNodes({ flatten: true }) as HTMLElement[];\n assignedNodes.forEach(node => {\n if (node.nodeName === 'OPTION' || node.nodeName === 'OPTGROUP') {\n this.selectElement.appendChild(node);\n }\n });\n }\n }\n\n private syncDynamicOptions() {\n while (this.selectElement.options.length > 1) {\n this.selectElement.remove(1);\n }\n\n if (this.items && this.items.length > 0) {\n this.items.forEach(item => {\n const option = document.createElement('option');\n const value = this.itemValue ? item[this.itemValue] : item;\n const label = this.itemLabel ? item[this.itemLabel] : item;\n option.value = String(value);\n option.textContent = String(label);\n this.selectElement.appendChild(option);\n });\n }\n\n if (this.selectElement.value !== String(this.internalValue || '')) {\n this.selectElement.value = String(this.internalValue || '');\n }\n }\n\n private renderErrorMessage() {\n if (this.error) {\n return (\n <spw-field-message variant=\"error\" showIcon={this.showErrorIcon}>\n {this.error}\n </spw-field-message>\n );\n }\n }\n\n private renderHintMessage() {\n if (this.hint) {\n return (\n <spw-field-message variant=\"hint\" showIcon={this.showHintIcon}>\n {this.hint}\n </spw-field-message>\n );\n }\n }\n\n private renderSuccessMessage() {\n if (this.success) {\n return (\n <spw-field-message variant=\"success\" showIcon={this.showSuccessIcon}>\n {this.success}\n </spw-field-message>\n );\n }\n }\n\n private renderWarningMessage() {\n if (this.warning) {\n return (\n <spw-field-message variant=\"warning\" showIcon={this.showWarningIcon}>\n {this.warning}\n </spw-field-message>\n );\n }\n }\n\n private get elementClass(): { [className: string]: boolean } {\n return {\n 'spw-select': true,\n [`spw-select--${this.size}`]: true,\n 'spw-select--disabled': this.disabled,\n 'spw-select--is-error': !!this.error,\n };\n }\n\n render() {\n return (\n <Host>\n <div class={this.elementClass}>\n {this.label && <spw-field-label label={this.label} name={this.name} required={this.required}></spw-field-label>}\n {this.assistiveText && (\n <spw-field-message class=\"spw-tw-mb-2 -spw-tw-mt-1\" variant=\"hint\" showIcon={false}>\n {this.assistiveText}\n </spw-field-message>\n )}\n <div class=\"spw-select__container\">\n <select\n id={this.name}\n class=\"spw-select__trigger\"\n onChange={event => this.handleSelectChange(event)}\n disabled={this.disabled}\n ref={el => (this.selectElement = el as HTMLSelectElement)}\n tabindex={this.disabled ? -1 : 0}\n >\n <option value=\"\" disabled selected={!this.internalValue}>\n {this.placeholder}\n </option>\n </select>\n <spw-icon class=\"spw-select__arrow\" icon=\"fa-chevron-down\"></spw-icon>\n </div>\n {!this.items && <slot />}\n </div>\n {this.renderErrorMessage()}\n {this.renderHintMessage()}\n {this.renderSuccessMessage()}\n {this.renderWarningMessage()}\n </Host>\n );\n }\n}\n"],"names":[],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"spw-sidebar-navigation-item.entry.esm.js","sources":["src/components/spw-sidebar/spw-sidebar-navigation-item/spw-sidebar-navigation-item.scss?tag=spw-sidebar-navigation-item","src/components/spw-sidebar/spw-sidebar-navigation-item/spw-sidebar-navigation-item.tsx"],"sourcesContent":[":host {\n display: block;\n}\n\n.spw-sidebar-navigation-item {\n cursor: pointer;\n position: relative;\n display: flex;\n align-items: start;\n color: inherit;\n text-decoration: none;\n padding-right: 16px;\n font-size: 16px;\n width: var(--spw-ds-bo-sidebar-expanded-width);\n color: var(--spw-colors-support-grey-grey-900);\n transition: all 0.2s ease;\n margin: 8px 0;\n .spw-sidebar-navigation-dropdown & {\n width: auto;\n margin: 0;\n }\n &:hover {\n color: var(--spw-colors-support-grey-grey-900);\n }\n &--active,\n &--active:hover {\n .spw-sidebar-navigation-item__icon {\n color: var(--spw-ds-primary);\n }\n }\n &--disabled {\n cursor: not-allowed;\n opacity: 0.3;\n }\n spw-sidebar-navigation-dropdown & {\n padding-right: 0;\n }\n spw-tooltip {\n line-height: 1;\n }\n &__bubble {\n position: absolute;\n top: 0;\n left: 32px;\n display: inline-flex;\n align-items: center;\n justify-content: center;\n z-index: 12;\n width: 20px;\n height: 20px;\n font-size: 10px;\n line-height: 1;\n border: 3px solid white;\n border-radius: 50%;\n background-color: var(--spw-ds-primary);\n color: white;\n }\n &__icon {\n position: relative;\n min-width: var(--spw-ds-bo-sidebar-width);\n width: var(--spw-ds-bo-sidebar-width);\n padding: 12px 0;\n border-radius: 50%;\n display: inline-flex;\n align-items: center;\n justify-content: center;\n font-weight: 600;\n font-size: 18px;\n .--expanded & {\n position: static;\n }\n &:before {\n content: '';\n position: absolute;\n top: 50%;\n left: 50%;\n width: 0;\n height: 0;\n border-radius: 50%;\n transform: translate(-50%, -50%);\n transition: all 0.2s ease;\n .spw-sidebar-navigation-item:not(.spw-sidebar-navigation-item--disabled):hover & {\n width: 40px;\n height: 40px;\n background-color: var(--spw-colors-support-grey-grey-200);\n .--expanded & {\n width: calc(100% - 16px);\n height: 100%;\n }\n }\n .spw-sidebar-navigation-item--dropdown-opened &,\n .spw-sidebar-navigation-item--dropdown-opened:hover & {\n width: 0;\n height: 0;\n background-color: var(--spw-colors-support-grey-grey-100) !important;\n .--expanded & {\n width: calc(100% - 16px);\n height: 100%;\n }\n }\n .--expanded & {\n transition: background-color 0.2s ease;\n border-radius: 4px;\n }\n }\n spw-icon {\n position: relative;\n z-index: 2;\n }\n }\n &__content {\n padding: 12px 0;\n flex: 1;\n z-index: 2;\n max-width: calc(var(--spw-ds-bo-sidebar-expanded-width) - var(--spw-ds-bo-sidebar-width) - 12px);\n .spw-sidebar-navigation-dropdown & {\n max-width: 100%;\n padding: 8px;\n }\n &-label {\n white-space: nowrap;\n overflow: hidden;\n display: block;\n text-overflow: ellipsis;\n .--expanded & {\n white-space: normal;\n overflow: visible;\n text-overflow: none;\n }\n .spw-sidebar-navigation-dropdown & {\n font-size: 14px;\n }\n }\n }\n &__dropdown-toggle {\n position: absolute;\n right: 16px;\n top: 10px;\n width: 24px;\n height: 24px;\n display: inline-flex;\n align-items: center;\n justify-content: center;\n border-radius: 50%;\n cursor: pointer;\n z-index: 10;\n transition: background-color 0.2s ease;\n\n .spw-sidebar-navigation-dropdown & {\n right: 8px;\n top: 5px;\n }\n\n &:hover {\n background-color: var(--spw-colors-support-grey-grey-300);\n .spw-sidebar-navigation-dropdown & {\n background-color: var(--spw-colors-support-grey-grey-400);\n }\n }\n\n spw-icon {\n font-size: 14px;\n position: relative;\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 spw-sidebar-navigation-dropdown {\n .--collapsed & {\n display: none;\n }\n }\n}\n\n.spw-sidebar-navigation-item--dropdown-opened > .spw-sidebar-navigation-item__content > .spw-sidebar-navigation-item__content-label {\n font-weight: bold;\n}\n\n.spw-sidebar-navigation-item--has-dropdown > .spw-sidebar-navigation-item__content > .spw-sidebar-navigation-item__content-label {\n padding-right: 32px;\n}\n\n.spw-sidebar-navigation-item .spw-sidebar-navigation-item--dropdown-opened > .spw-sidebar-navigation-item__content {\n background: white;\n border-radius: 4px;\n}\n\n.spw-sidebar-navigation-dropdown .spw-sidebar-navigation-item {\n border-radius: 4px;\n &:hover {\n background-color: var(--spw-colors-support-grey-grey-300);\n }\n}\n","import { Component, h, Prop, Element, State } from '@stencil/core';\n\n@Component({\n tag: 'spw-sidebar-navigation-item',\n styleUrl: 'spw-sidebar-navigation-item.scss',\n shadow: false,\n})\nexport class SpwSidebarNavigationItem {\n @Element() el: HTMLElement;\n\n /** A appliquer sur spw-sidebar-navigation-item, permet de définir un href sur l'élément */\n @Prop() href?: string;\n /** A appliquer sur spw-sidebar-navigation-item, permet de définir une référence font-awesome sur l'élément */\n @Prop() icon?: string;\n /** A appliquer sur spw-sidebar-navigation-item, permet de mettre en évidence un état actif */\n @Prop() active: boolean = false;\n /** A appliquer sur spw-sidebar-navigation-item, permet de définir si l'élément est disabled ou non */\n @Prop() disabled: boolean = false;\n /** A appliquer sur spw-sidebar-navigation-item, permet d'afficher une bulle de notification avec un nombre */\n @Prop() bubble?: string;\n /** A appliquer sur spw-sidebar-navigation-item, permet de définir un tooltip au hover */\n @Prop() tooltipTitle?: string;\n /** A appliquer sur spw-sidebar-navigation-item, permet de choisir la variante d'icônes font-awesome */\n @Prop() iconVariant: 'fa-solid' | 'fa-brands' | 'fa-regular' = 'fa-regular';\n\n @State() hasDropdown: boolean = false;\n @State() dropdownOpen: boolean = false;\n @State() navExpanded: boolean = false;\n\n private mutationObserver?: MutationObserver;\n private bodyClassObserver?: MutationObserver;\n\n componentDidLoad() {\n this.checkForDropdown();\n this.setupMutationObserver();\n this.checkNavExpanded();\n this.setupBodyClassObserver();\n }\n\n componentDidUpdate() {\n this.checkForDropdown();\n }\n\n disconnectedCallback() {\n if (this.mutationObserver) {\n this.mutationObserver.disconnect();\n }\n if (this.bodyClassObserver) {\n this.bodyClassObserver.disconnect();\n }\n }\n\n private setupMutationObserver() {\n this.mutationObserver = new MutationObserver(() => {\n this.checkForDropdown();\n });\n\n this.mutationObserver.observe(this.el, {\n childList: true,\n subtree: true,\n attributes: true,\n attributeFilter: ['open'],\n });\n }\n\n private checkForDropdown() {\n const dropdown = this.el.querySelector('spw-sidebar-navigation-dropdown') as any;\n this.hasDropdown = dropdown !== null;\n\n if (dropdown) {\n this.dropdownOpen = !!dropdown.open || dropdown.hasAttribute?.('open');\n } else {\n this.dropdownOpen = false;\n }\n }\n\n private checkNavExpanded = () => {\n this.navExpanded = document.body.classList.contains('spw-sidebar-expanded');\n };\n\n private setupBodyClassObserver() {\n this.bodyClassObserver = new MutationObserver(() => {\n this.checkNavExpanded();\n });\n this.bodyClassObserver.observe(document.body, {\n attributes: true,\n attributeFilter: ['class'],\n });\n }\n\n private get classes() {\n return {\n 'spw-sidebar-navigation-item': true,\n 'spw-sidebar-navigation-item--active': this.active,\n 'spw-sidebar-navigation-item--disabled': this.disabled,\n 'spw-sidebar-navigation-item--has-dropdown': this.hasDropdown,\n 'spw-sidebar-navigation-item--dropdown-opened': this.dropdownOpen,\n } as Record<string, boolean>;\n }\n\n private handleDropdownToggle = (event: MouseEvent) => {\n event.preventDefault();\n event.stopPropagation();\n\n if (this.disabled) return;\n\n const dropdown = this.el.querySelector('spw-sidebar-navigation-dropdown') as any;\n\n if (dropdown) {\n dropdown.open = !dropdown.open;\n if (dropdown.open) {\n dropdown.setAttribute?.('open', '');\n } else {\n dropdown.removeAttribute?.('open');\n }\n this.dropdownOpen = dropdown.open;\n }\n };\n\n render() {\n const Tag = this.href && !this.disabled ? 'a' : 'div';\n\n const iconContent = <spw-icon variant={this.iconVariant} icon={this.icon}></spw-icon>;\n\n const iconDiv = (\n <div class=\"spw-sidebar-navigation-item__icon\">\n {this.bubble && <span class=\"spw-sidebar-navigation-item__bubble\">{this.bubble}</span>}\n {iconContent}\n </div>\n );\n\n const iconWithBubble = this.tooltipTitle ? (\n <spw-tooltip cursor={this.disabled ? 'disabled' : 'pointer'} tooltip-title={this.tooltipTitle} direction=\"right\" visible={!this.navExpanded}>\n {iconDiv}\n </spw-tooltip>\n ) : (\n iconDiv\n );\n\n const toggleClasses = {\n 'spw-sidebar-navigation-item__dropdown-toggle': true,\n 'spw-sidebar-navigation-item__dropdown-toggle--open': this.dropdownOpen,\n } as Record<string, boolean>;\n\n return (\n <Tag class={this.classes} href={this.href} aria-disabled={this.disabled ? 'true' : undefined} tabIndex={this.disabled ? -1 : 0}>\n {this.icon && iconWithBubble}\n\n <div class=\"spw-sidebar-navigation-item__content\">\n <div class=\"spw-sidebar-navigation-item__content-label\">\n <slot></slot>\n </div>\n\n {this.hasDropdown && (\n <div class={toggleClasses} onClick={this.handleDropdownToggle} tabIndex={this.disabled ? -1 : 0}>\n <spw-icon icon=\"fa-chevron-down\"></spw-icon>\n </div>\n )}\n\n <slot name=\"dropdown\"></slot>\n </div>\n </Tag>\n );\n }\n}\n"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"spw-sidebar-navigation-item.entry.esm.js","sources":["src/components/spw-sidebar/spw-sidebar-navigation-item/spw-sidebar-navigation-item.scss?tag=spw-sidebar-navigation-item","src/components/spw-sidebar/spw-sidebar-navigation-item/spw-sidebar-navigation-item.tsx"],"sourcesContent":[":host {\n display: block;\n}\n\n.spw-sidebar-navigation-item {\n cursor: pointer;\n position: relative;\n display: flex;\n align-items: start;\n color: inherit;\n text-decoration: none;\n padding-right: 16px;\n font-size: 16px;\n width: var(--spw-ds-bo-sidebar-expanded-width);\n color: var(--spw-colors-support-grey-grey-900);\n transition: all 0.2s ease;\n margin: 8px 0;\n .spw-sidebar-navigation-dropdown & {\n width: auto;\n margin: 0;\n }\n &:hover {\n color: var(--spw-colors-support-grey-grey-900);\n }\n &--active,\n &--active:hover {\n .spw-sidebar-navigation-item__icon {\n color: var(--spw-ds-primary);\n }\n }\n &--disabled {\n cursor: not-allowed;\n opacity: 0.3;\n }\n spw-sidebar-navigation-dropdown & {\n padding-right: 0;\n }\n spw-tooltip {\n line-height: 1;\n }\n &__bubble {\n position: absolute;\n top: 0;\n left: 32px;\n display: inline-flex;\n align-items: center;\n justify-content: center;\n z-index: 12;\n width: 20px;\n height: 20px;\n font-size: 10px;\n line-height: 1;\n border: 3px solid white;\n border-radius: 50%;\n background-color: var(--spw-ds-primary);\n color: white;\n }\n &__icon {\n position: relative;\n min-width: var(--spw-ds-bo-sidebar-width);\n width: var(--spw-ds-bo-sidebar-width);\n padding: 12px 0;\n border-radius: 50%;\n display: inline-flex;\n align-items: center;\n justify-content: center;\n font-weight: 600;\n font-size: 18px;\n .--expanded & {\n position: static;\n }\n &:before {\n content: '';\n position: absolute;\n top: 50%;\n left: 50%;\n width: 0;\n height: 0;\n border-radius: 50%;\n transform: translate(-50%, -50%);\n transition: all 0.2s ease;\n .spw-sidebar-navigation-item:not(.spw-sidebar-navigation-item--disabled):hover & {\n width: 40px;\n height: 40px;\n background-color: var(--spw-colors-support-grey-grey-200);\n .--expanded & {\n width: calc(100% - 16px);\n height: 100%;\n }\n }\n .spw-sidebar-navigation-item--dropdown-opened &,\n .spw-sidebar-navigation-item--dropdown-opened:hover & {\n width: 0;\n height: 0;\n background-color: var(--spw-colors-support-grey-grey-100) !important;\n .--expanded & {\n width: calc(100% - 16px);\n height: 100%;\n }\n }\n .--expanded & {\n transition: background-color 0.2s ease;\n border-radius: 4px;\n }\n }\n spw-icon {\n position: relative;\n z-index: 2;\n }\n }\n &__content {\n padding: 12px 0;\n flex: 1;\n z-index: 2;\n max-width: calc(var(--spw-ds-bo-sidebar-expanded-width) - var(--spw-ds-bo-sidebar-width) - 12px);\n .spw-sidebar-navigation-dropdown & {\n max-width: 100%;\n padding: 8px;\n }\n &-label {\n white-space: nowrap;\n overflow: hidden;\n display: block;\n text-overflow: ellipsis;\n .--expanded & {\n white-space: normal;\n overflow: visible;\n text-overflow: none;\n }\n .spw-sidebar-navigation-dropdown & {\n font-size: 14px;\n }\n }\n }\n &__dropdown-toggle {\n position: absolute;\n right: 16px;\n top: 10px;\n width: 24px;\n height: 24px;\n display: inline-flex;\n align-items: center;\n justify-content: center;\n border-radius: 50%;\n cursor: pointer;\n z-index: 10;\n transition: background-color 0.2s ease;\n\n .spw-sidebar-navigation-dropdown & {\n right: 8px;\n top: 5px;\n }\n\n &:hover {\n background-color: var(--spw-colors-support-grey-grey-300);\n .spw-sidebar-navigation-dropdown & {\n background-color: var(--spw-colors-support-grey-grey-400);\n }\n }\n\n spw-icon {\n font-size: 14px;\n position: relative;\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 spw-sidebar-navigation-dropdown {\n .--collapsed & {\n display: none;\n }\n }\n}\n\n.spw-sidebar-navigation-item--dropdown-opened > .spw-sidebar-navigation-item__content > .spw-sidebar-navigation-item__content-label {\n font-weight: bold;\n}\n\n.spw-sidebar-navigation-item--has-dropdown > .spw-sidebar-navigation-item__content > .spw-sidebar-navigation-item__content-label {\n padding-right: 32px;\n}\n\n.spw-sidebar-navigation-item .spw-sidebar-navigation-item--dropdown-opened > .spw-sidebar-navigation-item__content {\n background: white;\n border-radius: 4px;\n}\n\n.spw-sidebar-navigation-dropdown .spw-sidebar-navigation-item {\n border-radius: 4px;\n &:hover {\n background-color: var(--spw-colors-support-grey-grey-300);\n }\n &.spw-sidebar-navigation-item--active {\n > .spw-sidebar-navigation-item__content > .spw-sidebar-navigation-item__content-label {\n color: var(--spw-ds-primary);\n font-weight: bold;\n }\n }\n}\n","import { Component, h, Prop, Element, State } from '@stencil/core';\n\n@Component({\n tag: 'spw-sidebar-navigation-item',\n styleUrl: 'spw-sidebar-navigation-item.scss',\n shadow: false,\n})\nexport class SpwSidebarNavigationItem {\n @Element() el: HTMLElement;\n\n /** A appliquer sur spw-sidebar-navigation-item, permet de définir un href sur l'élément */\n @Prop() href?: string;\n /** A appliquer sur spw-sidebar-navigation-item, permet de définir une référence font-awesome sur l'élément */\n @Prop() icon?: string;\n /** A appliquer sur spw-sidebar-navigation-item, permet de mettre en évidence un état actif */\n @Prop() active: boolean = false;\n /** A appliquer sur spw-sidebar-navigation-item, permet de définir si l'élément est disabled ou non */\n @Prop() disabled: boolean = false;\n /** A appliquer sur spw-sidebar-navigation-item, permet d'afficher une bulle de notification avec un nombre */\n @Prop() bubble?: string;\n /** A appliquer sur spw-sidebar-navigation-item, permet de définir un tooltip au hover */\n @Prop() tooltipTitle?: string;\n /** A appliquer sur spw-sidebar-navigation-item, permet de choisir la variante d'icônes font-awesome */\n @Prop() iconVariant: 'fa-solid' | 'fa-brands' | 'fa-regular' = 'fa-regular';\n /** A appliquer sur spw-sidebar-navigation-item, si true, le clic sur l'item entier ouvre le dropdown (utile quand il n'y a pas de page physique) */\n @Prop() openOnClick: boolean = false;\n\n @State() hasDropdown: boolean = false;\n @State() dropdownOpen: boolean = false;\n @State() navExpanded: boolean = false;\n @State() hasActiveChild: boolean = false;\n\n private mutationObserver?: MutationObserver;\n private bodyClassObserver?: MutationObserver;\n\n componentDidLoad() {\n this.checkForDropdown();\n this.setupMutationObserver();\n this.checkNavExpanded();\n this.setupBodyClassObserver();\n this.propagateActiveStateToParents();\n }\n\n componentDidUpdate() {\n this.checkForDropdown();\n }\n\n disconnectedCallback() {\n if (this.mutationObserver) {\n this.mutationObserver.disconnect();\n }\n if (this.bodyClassObserver) {\n this.bodyClassObserver.disconnect();\n }\n }\n\n private setupMutationObserver() {\n this.mutationObserver = new MutationObserver(() => {\n this.checkForDropdown();\n });\n\n this.mutationObserver.observe(this.el, {\n childList: true,\n subtree: true,\n attributes: true,\n attributeFilter: ['open'],\n });\n }\n\n private checkForDropdown() {\n const dropdown = this.el.querySelector('spw-sidebar-navigation-dropdown') as any;\n this.hasDropdown = dropdown !== null;\n\n if (dropdown) {\n this.dropdownOpen = !!dropdown.open || dropdown.hasAttribute?.('open');\n } else {\n this.dropdownOpen = false;\n }\n }\n\n private checkNavExpanded = () => {\n this.navExpanded = document.body.classList.contains('spw-sidebar-expanded');\n };\n\n private setupBodyClassObserver() {\n this.bodyClassObserver = new MutationObserver(() => {\n this.checkNavExpanded();\n });\n this.bodyClassObserver.observe(document.body, {\n attributes: true,\n attributeFilter: ['class'],\n });\n }\n\n private propagateActiveStateToParents() {\n if (this.active) {\n this.activateParentItems();\n }\n\n const childItems = this.el.querySelectorAll('spw-sidebar-navigation-item');\n const hasActiveDescendant = Array.from(childItems).some((child: any) => child.active === true || child.getAttribute('active') === 'true');\n\n if (hasActiveDescendant) {\n this.hasActiveChild = true;\n this.openDropdown();\n }\n }\n\n private activateParentItems() {\n let parent = this.el.parentElement;\n\n while (parent) {\n const parentItem = parent.closest('spw-sidebar-navigation-item');\n\n if (parentItem && parentItem !== this.el) {\n (parentItem as any).hasActiveChild = true;\n\n const dropdown = parentItem.querySelector(':scope > spw-sidebar-navigation-dropdown') as any;\n if (dropdown) {\n dropdown.open = true;\n dropdown.setAttribute('open', '');\n }\n\n parent = parentItem.parentElement;\n } else {\n break;\n }\n }\n }\n\n private get classes() {\n return {\n 'spw-sidebar-navigation-item': true,\n 'spw-sidebar-navigation-item--active': this.active || this.hasActiveChild,\n 'spw-sidebar-navigation-item--disabled': this.disabled,\n 'spw-sidebar-navigation-item--has-dropdown': this.hasDropdown,\n 'spw-sidebar-navigation-item--dropdown-opened': this.dropdownOpen,\n } as Record<string, boolean>;\n }\n\n private handleDropdownToggle = (event: MouseEvent) => {\n event.preventDefault();\n event.stopPropagation();\n\n if (this.disabled) return;\n\n const dropdown = this.el.querySelector('spw-sidebar-navigation-dropdown') as any;\n\n if (dropdown) {\n dropdown.open = !dropdown.open;\n if (dropdown.open) {\n dropdown.setAttribute?.('open', '');\n } else {\n dropdown.removeAttribute?.('open');\n }\n this.dropdownOpen = dropdown.open;\n }\n };\n\n private handleItemClick = (event: MouseEvent) => {\n if (this.disabled) return;\n\n if (this.openOnClick && this.hasDropdown) {\n const clickedElement = event.target as HTMLElement;\n const isChildNavigationItem = clickedElement.closest('spw-sidebar-navigation-item') !== this.el;\n\n if (isChildNavigationItem) {\n return;\n }\n\n event.preventDefault();\n event.stopPropagation();\n\n if (!this.navExpanded) {\n document.body.classList.add('spw-sidebar-expanded');\n setTimeout(() => {\n this.openDropdown();\n }, 300);\n } else {\n this.toggleDropdown();\n }\n }\n };\n\n private openDropdown = () => {\n const dropdown = this.el.querySelector('spw-sidebar-navigation-dropdown') as any;\n if (dropdown) {\n dropdown.open = true;\n dropdown.setAttribute?.('open', '');\n this.dropdownOpen = true;\n }\n };\n\n private toggleDropdown = () => {\n const dropdown = this.el.querySelector('spw-sidebar-navigation-dropdown') as any;\n if (dropdown) {\n dropdown.open = !dropdown.open;\n if (dropdown.open) {\n dropdown.setAttribute?.('open', '');\n } else {\n dropdown.removeAttribute?.('open');\n }\n this.dropdownOpen = dropdown.open;\n }\n };\n\n render() {\n const Tag = this.href && !this.disabled && !this.openOnClick ? 'a' : 'div';\n\n const iconContent = <spw-icon variant={this.iconVariant} icon={this.icon}></spw-icon>;\n\n const iconDiv = (\n <div class=\"spw-sidebar-navigation-item__icon\">\n {this.bubble && <span class=\"spw-sidebar-navigation-item__bubble\">{this.bubble}</span>}\n {iconContent}\n </div>\n );\n\n const iconWithBubble = this.tooltipTitle ? (\n <spw-tooltip cursor={this.disabled ? 'disabled' : 'pointer'} tooltip-title={this.tooltipTitle} direction=\"right\" visible={!this.navExpanded}>\n {iconDiv}\n </spw-tooltip>\n ) : (\n iconDiv\n );\n\n const toggleClasses = {\n 'spw-sidebar-navigation-item__dropdown-toggle': true,\n 'spw-sidebar-navigation-item__dropdown-toggle--open': this.dropdownOpen,\n } as Record<string, boolean>;\n\n return (\n <Tag\n class={this.classes}\n href={this.openOnClick ? undefined : this.href}\n aria-disabled={this.disabled ? 'true' : undefined}\n tabIndex={this.disabled ? -1 : 0}\n onClick={this.openOnClick ? this.handleItemClick : undefined}\n >\n {this.icon && iconWithBubble}\n\n <div class=\"spw-sidebar-navigation-item__content\">\n <div class=\"spw-sidebar-navigation-item__content-label\">\n <slot></slot>\n </div>\n\n {this.hasDropdown && (\n <div class={toggleClasses} onClick={this.handleDropdownToggle} tabIndex={this.disabled ? -1 : 0}>\n <spw-icon icon=\"fa-chevron-down\"></spw-icon>\n </div>\n )}\n\n <slot name=\"dropdown\"></slot>\n </div>\n </Tag>\n );\n }\n}\n"],"names":[],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"spw-sidebar.entry.esm.js","sources":["src/components/spw-sidebar/spw-sidebar.scss?tag=spw-sidebar&encapsulation=shadow","src/components/spw-sidebar/spw-sidebar.tsx"],"sourcesContent":[":host {\n display: block;\n height: 100%;\n}\n\n.spw-sidebar {\n height: 100%;\n width: var(--spw-ds-bo-sidebar-width);\n transition: width 0.2s ease;\n display: flex;\n flex-direction: column;\n background: white;\n border-right: 1px solid var(--spw-colors-support-grey-grey-300);\n position: fixed;\n top: 0;\n left: 0;\n\n &--with-topbar {\n top: var(--spw-ds-bo-topbar-height);\n height: calc(100% - var(--spw-ds-bo-topbar-height));\n }\n\n &__toggle {\n position: absolute;\n right: 0;\n top: 67px;\n flex-basis: auto;\n width: 20px;\n padding: 6px 0;\n display: inline-flex;\n align-items: center;\n justify-content: center;\n border-radius: 6px;\n box-shadow: var(--spw-effect-elevation-6);\n border: 1px solid var(--spw-colors-support-grey-grey-300);\n cursor: pointer;\n font-size: 13px;\n z-index: 20;\n transform: translateX(50%);\n background: white;\n line-height: 1;\n spw-icon {\n position: relative;\n transition: transform 0.15s 0.2s ease;\n .spw-sidebar--expanded & {\n transform: rotate(180deg);\n }\n }\n }\n\n &__content {\n overflow: hidden;\n flex: 1 1 auto;\n overflow-y: auto;\n padding: 16px 0;\n display: flex;\n flex-direction: column;\n justify-content: space-between;\n @include scrollbars(var(--spw-color-themes-grey-grey-400), var(--spw-ds-white));\n }\n\n &--expanded {\n width: var(--spw-ds-bo-sidebar-expanded-width);\n }\n\n &--collapsed {\n width: var(--spw-ds-bo-sidebar-width);\n }\n\n &__resize-border {\n display: none;\n position: absolute;\n top: 0;\n right: 0;\n width: 10px;\n height: 100%;\n transform: translateX(50%);\n cursor: col-resize;\n align-items: center;\n justify-content: center;\n background: transparent;\n z-index: 10;\n }\n}\n","import { Component, h, Host, Element, Prop, State } from '@stencil/core';\n\n@Component({\n tag: 'spw-sidebar',\n styleUrl: 'spw-sidebar.scss',\n shadow: true,\n})\nexport class SpwSidebar {\n @Element() el!: HTMLElement;\n\n /** Si true, la sidebar est dépliée par défaut */\n @Prop() defaultExpanded: boolean = false;\n\n @State() expanded: boolean;\n @State() hasTopbar: boolean = false;\n\n private readonly BODY_CLASS = 'spw-sidebar-expanded';\n private observer: MutationObserver;\n\n componentWillLoad() {\n this.expanded = this.defaultExpanded;\n if (this.expanded) {\n document.body.classList.add(this.BODY_CLASS);\n }\n\n this.checkTopbarClass();\n this.observeBodyClassChanges();\n }\n\n disconnectedCallback() {\n document.body.classList.remove(this.BODY_CLASS);\n this.observer?.disconnect();\n }\n\n private toggleSidebar = () => {\n this.expanded = !this.expanded;\n document.body.classList.toggle(this.BODY_CLASS, this.expanded);\n };\n\n private checkTopbarClass = () => {\n this.hasTopbar = document.body.classList.contains('has-topbar');\n };\n\n private observeBodyClassChanges() {\n this.observer = new MutationObserver(() => {\n this.checkTopbarClass();\n });\n\n this.observer.observe(document.body, {\n attributes: true,\n attributeFilter: ['class'],\n });\n }\n\n private get hostClass() {\n return {\n '--expanded': this.expanded,\n '--collapsed': !this.expanded,\n };\n }\n\n private get elementClass() {\n return {\n 'spw-sidebar': true,\n 'spw-sidebar--expanded': this.expanded,\n 'spw-sidebar--collapsed': !this.expanded,\n 'spw-sidebar--with-topbar': this.hasTopbar,\n };\n }\n\n render() {\n return (\n <Host class={this.hostClass}>\n <div class={this.elementClass}>\n <span class=\"spw-sidebar__toggle\" onClick={this.toggleSidebar} aria-expanded={this.expanded.toString()}>\n <spw-icon icon=\"fa-chevron-right\"></spw-icon>\n </span>\n <div class=\"spw-sidebar__content\">\n <slot name=\"navigation-top\"></slot>\n <slot name=\"navigation-bottom\"></slot>\n </div>\n <div class=\"spw-sidebar__resize-border\" onClick={this.toggleSidebar}></div>\n </div>\n </Host>\n );\n }\n}\n"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"spw-sidebar.entry.esm.js","sources":["src/components/spw-sidebar/spw-sidebar.scss?tag=spw-sidebar&encapsulation=shadow","src/components/spw-sidebar/spw-sidebar.tsx"],"sourcesContent":[":host {\n display: block;\n height: 100%;\n}\n\n.spw-sidebar {\n height: 100%;\n width: var(--spw-ds-bo-sidebar-width);\n transition: width 0.2s ease;\n display: flex;\n flex-direction: column;\n background: white;\n border-right: 1px solid var(--spw-colors-support-grey-grey-300);\n position: fixed;\n top: 0;\n left: 0;\n\n &--with-topbar {\n top: var(--spw-ds-bo-topbar-height);\n height: calc(100% - var(--spw-ds-bo-topbar-height));\n }\n\n &__toggle {\n position: absolute;\n right: 0;\n top: 67px;\n flex-basis: auto;\n width: 20px;\n padding: 6px 0;\n display: inline-flex;\n align-items: center;\n justify-content: center;\n border-radius: 6px;\n box-shadow: var(--spw-effect-elevation-6);\n border: 1px solid var(--spw-colors-support-grey-grey-300);\n cursor: pointer;\n font-size: 13px;\n z-index: 20;\n transform: translateX(50%);\n background: white;\n line-height: 1;\n spw-icon {\n position: relative;\n transition: transform 0.15s 0.2s ease;\n .spw-sidebar--expanded & {\n transform: rotate(180deg);\n }\n }\n }\n\n &__content {\n overflow: hidden;\n flex: 1 1 auto;\n overflow-y: auto;\n padding: 16px 0;\n display: flex;\n flex-direction: column;\n justify-content: space-between;\n @include scrollbars(var(--spw-color-themes-grey-grey-400), var(--spw-ds-white));\n }\n\n &--expanded {\n width: var(--spw-ds-bo-sidebar-expanded-width);\n }\n\n &--collapsed {\n width: var(--spw-ds-bo-sidebar-width);\n }\n\n &__resize-border {\n display: none;\n position: absolute;\n top: 0;\n right: 0;\n width: 10px;\n height: 100%;\n transform: translateX(50%);\n cursor: col-resize;\n align-items: center;\n justify-content: center;\n background: transparent;\n z-index: 10;\n }\n}\n","import { Component, h, Host, Element, Prop, State } from '@stencil/core';\n\n@Component({\n tag: 'spw-sidebar',\n styleUrl: 'spw-sidebar.scss',\n shadow: true,\n})\nexport class SpwSidebar {\n @Element() el!: HTMLElement;\n\n /** Si true, la sidebar est dépliée par défaut */\n @Prop() defaultExpanded: boolean = false;\n\n @State() expanded: boolean;\n @State() hasTopbar: boolean = false;\n\n private readonly BODY_CLASS = 'spw-sidebar-expanded';\n private observer: MutationObserver;\n\n componentWillLoad() {\n this.expanded = this.defaultExpanded;\n if (this.expanded) {\n document.body.classList.add(this.BODY_CLASS);\n }\n\n this.checkTopbarClass();\n this.observeBodyClassChanges();\n }\n\n disconnectedCallback() {\n document.body.classList.remove(this.BODY_CLASS);\n this.observer?.disconnect();\n }\n\n private toggleSidebar = () => {\n this.expanded = !this.expanded;\n document.body.classList.toggle(this.BODY_CLASS, this.expanded);\n };\n\n private checkTopbarClass = () => {\n this.hasTopbar = document.body.classList.contains('has-topbar');\n };\n\n private checkExpandedState = () => {\n // Synchronise l'état interne avec la classe body\n const bodyHasExpandedClass = document.body.classList.contains(this.BODY_CLASS);\n if (this.expanded !== bodyHasExpandedClass) {\n this.expanded = bodyHasExpandedClass;\n }\n };\n\n private observeBodyClassChanges() {\n this.observer = new MutationObserver(() => {\n this.checkTopbarClass();\n this.checkExpandedState();\n });\n\n this.observer.observe(document.body, {\n attributes: true,\n attributeFilter: ['class'],\n });\n }\n\n private get hostClass() {\n return {\n '--expanded': this.expanded,\n '--collapsed': !this.expanded,\n };\n }\n\n private get elementClass() {\n return {\n 'spw-sidebar': true,\n 'spw-sidebar--expanded': this.expanded,\n 'spw-sidebar--collapsed': !this.expanded,\n 'spw-sidebar--with-topbar': this.hasTopbar,\n };\n }\n\n render() {\n return (\n <Host class={this.hostClass}>\n <div class={this.elementClass}>\n <span class=\"spw-sidebar__toggle\" onClick={this.toggleSidebar} aria-expanded={this.expanded.toString()}>\n <spw-icon icon=\"fa-chevron-right\"></spw-icon>\n </span>\n <div class=\"spw-sidebar__content\">\n <slot name=\"navigation-top\"></slot>\n <slot name=\"navigation-bottom\"></slot>\n </div>\n <div class=\"spw-sidebar__resize-border\" onClick={this.toggleSidebar}></div>\n </div>\n </Host>\n );\n }\n}\n"],"names":[],"mappings":";;AAAA,MAAM,aAAa,GAAG,4zIAA4zI;;MCOr0I,UAAU,GAAA,MAAA;AALvB,IAAA,WAAA,CAAA,OAAA,EAAA;;;AASU,QAAA,IAAe,CAAA,eAAA,GAAY,KAAK;AAG/B,QAAA,IAAS,CAAA,SAAA,GAAY,KAAK;AAElB,QAAA,IAAU,CAAA,UAAA,GAAG,sBAAsB;AAkB5C,QAAA,IAAa,CAAA,aAAA,GAAG,MAAK;AAC3B,YAAA,IAAI,CAAC,QAAQ,GAAG,CAAC,IAAI,CAAC,QAAQ;AAC9B,YAAA,QAAQ,CAAC,IAAI,CAAC,SAAS,CAAC,MAAM,CAAC,IAAI,CAAC,UAAU,EAAE,IAAI,CAAC,QAAQ,CAAC;AAChE,SAAC;AAEO,QAAA,IAAgB,CAAA,gBAAA,GAAG,MAAK;AAC9B,YAAA,IAAI,CAAC,SAAS,GAAG,QAAQ,CAAC,IAAI,CAAC,SAAS,CAAC,QAAQ,CAAC,YAAY,CAAC;AACjE,SAAC;AAEO,QAAA,IAAkB,CAAA,kBAAA,GAAG,MAAK;;AAEhC,YAAA,MAAM,oBAAoB,GAAG,QAAQ,CAAC,IAAI,CAAC,SAAS,CAAC,QAAQ,CAAC,IAAI,CAAC,UAAU,CAAC;AAC9E,YAAA,IAAI,IAAI,CAAC,QAAQ,KAAK,oBAAoB,EAAE;AAC1C,gBAAA,IAAI,CAAC,QAAQ,GAAG,oBAAoB;;AAExC,SAAC;AA8CF;IA5EC,iBAAiB,GAAA;AACf,QAAA,IAAI,CAAC,QAAQ,GAAG,IAAI,CAAC,eAAe;AACpC,QAAA,IAAI,IAAI,CAAC,QAAQ,EAAE;YACjB,QAAQ,CAAC,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC,IAAI,CAAC,UAAU,CAAC;;QAG9C,IAAI,CAAC,gBAAgB,EAAE;QACvB,IAAI,CAAC,uBAAuB,EAAE;;IAGhC,oBAAoB,GAAA;;QAClB,QAAQ,CAAC,IAAI,CAAC,SAAS,CAAC,MAAM,CAAC,IAAI,CAAC,UAAU,CAAC;QAC/C,CAAA,EAAA,GAAA,IAAI,CAAC,QAAQ,MAAE,IAAA,IAAA,EAAA,KAAA,MAAA,GAAA,MAAA,GAAA,EAAA,CAAA,UAAU,EAAE;;IAoBrB,uBAAuB,GAAA;AAC7B,QAAA,IAAI,CAAC,QAAQ,GAAG,IAAI,gBAAgB,CAAC,MAAK;YACxC,IAAI,CAAC,gBAAgB,EAAE;YACvB,IAAI,CAAC,kBAAkB,EAAE;AAC3B,SAAC,CAAC;QAEF,IAAI,CAAC,QAAQ,CAAC,OAAO,CAAC,QAAQ,CAAC,IAAI,EAAE;AACnC,YAAA,UAAU,EAAE,IAAI;YAChB,eAAe,EAAE,CAAC,OAAO,CAAC;AAC3B,SAAA,CAAC;;AAGJ,IAAA,IAAY,SAAS,GAAA;QACnB,OAAO;YACL,YAAY,EAAE,IAAI,CAAC,QAAQ;AAC3B,YAAA,aAAa,EAAE,CAAC,IAAI,CAAC,QAAQ;SAC9B;;AAGH,IAAA,IAAY,YAAY,GAAA;QACtB,OAAO;AACL,YAAA,aAAa,EAAE,IAAI;YACnB,uBAAuB,EAAE,IAAI,CAAC,QAAQ;AACtC,YAAA,wBAAwB,EAAE,CAAC,IAAI,CAAC,QAAQ;YACxC,0BAA0B,EAAE,IAAI,CAAC,SAAS;SAC3C;;IAGH,MAAM,GAAA;AACJ,QAAA,QACE,EAAC,IAAI,EAAA,EAAA,GAAA,EAAA,0CAAA,EAAC,KAAK,EAAE,IAAI,CAAC,SAAS,EAAA,EACzB,CAAA,CAAA,KAAA,EAAA,EAAA,GAAA,EAAA,0CAAA,EAAK,KAAK,EAAE,IAAI,CAAC,YAAY,EAAA,EAC3B,CAAA,CAAA,MAAA,EAAA,EAAA,GAAA,EAAA,0CAAA,EAAM,KAAK,EAAC,qBAAqB,EAAC,OAAO,EAAE,IAAI,CAAC,aAAa,mBAAiB,IAAI,CAAC,QAAQ,CAAC,QAAQ,EAAE,EAAA,EACpG,CAAA,CAAA,UAAA,EAAA,EAAA,GAAA,EAAA,0CAAA,EAAU,IAAI,EAAC,kBAAkB,EAAA,CAAY,CACxC,EACP,CAAK,CAAA,KAAA,EAAA,EAAA,GAAA,EAAA,0CAAA,EAAA,KAAK,EAAC,sBAAsB,EAAA,EAC/B,CAAM,CAAA,MAAA,EAAA,EAAA,GAAA,EAAA,0CAAA,EAAA,IAAI,EAAC,gBAAgB,EAAQ,CAAA,EACnC,CAAA,CAAA,MAAA,EAAA,EAAA,GAAA,EAAA,0CAAA,EAAM,IAAI,EAAC,mBAAmB,EAAA,CAAQ,CAClC,EACN,CAAA,CAAA,KAAA,EAAA,EAAA,GAAA,EAAA,0CAAA,EAAK,KAAK,EAAC,4BAA4B,EAAC,OAAO,EAAE,IAAI,CAAC,aAAa,EAAA,CAAQ,CACvE,CACD;;;;;;;;"}
@@ -1 +1 @@
1
- {"version":3,"file":"spw-skeleton.entry.esm.js","sources":["src/components/spw-skeleton/spw-skeleton.scss?tag=spw-skeleton&encapsulation=shadow","src/components/spw-skeleton/spw-skeleton.tsx"],"sourcesContent":[":host {\n display: block;\n}\n\n%animation {\n background: linear-gradient(90deg, white 0%, var(--spw-color-themes-grey-grey-300) 50%, white 100%);\n background-size: 200% 100%;\n animation: shimmer 5s infinite linear;\n}\n\n.spw-skeleton {\n display: flex;\n flex-direction: column;\n gap: 1rem;\n\n &__line {\n height: 1rem;\n width: 100%;\n border-radius: 4px;\n @extend %animation;\n }\n\n &__line--even {\n width: 85%;\n }\n\n &__line--last {\n width: 50% !important;\n }\n\n &__buttons {\n display: flex;\n align-items: center;\n justify-content: center;\n margin-top: 24px;\n gap: 24px;\n }\n\n &__button {\n width: 200px;\n height: 40px;\n border-radius: 40px;\n @extend %animation;\n }\n\n &__article {\n &-image {\n margin-bottom: 24px;\n border-radius: 8px;\n height: 170px;\n @extend %animation;\n }\n }\n\n &__text {\n &-block {\n margin: 24px 0;\n border-radius: 4px;\n height: 60px;\n @extend %animation;\n }\n }\n}\n\n@keyframes shimmer {\n 0% {\n background-position: 200% 0;\n }\n 100% {\n background-position: -200% 0;\n }\n}\n","import { Component, Prop, Host, h } from '@stencil/core';\n\n@Component({\n tag: 'spw-skeleton',\n styleUrl: 'spw-skeleton.scss',\n shadow: true,\n})\nexport class SpwSkeleton {\n /** Nombre de répétitions du skeleton (uniquement valable pour la variante lines) */\n @Prop() blocks: number = 1;\n\n /** Type de skeleton à afficher */\n @Prop() variant: 'lines' | 'text' | 'article' | 'layout' = 'lines';\n\n private renderLines() {\n return Array.from({ length: this.blocks }, (_, index) => {\n const isLast = index === this.blocks - 1;\n const isEven = index % 2 === 1;\n const isOdd = index % 2 === 0;\n\n return (\n <div\n class={{\n 'spw-skeleton__line': true,\n 'spw-skeleton__line--last': isLast,\n 'spw-skeleton__line--even': !isLast && isEven,\n 'spw-skeleton__line--odd': !isLast && isOdd,\n }}\n ></div>\n );\n });\n }\n\n private renderText() {\n return (\n <div class=\"spw-skeleton__text\">\n <spw-skeleton variant=\"lines\" blocks={5}></spw-skeleton>\n <div class=\"spw-skeleton__text-block\"></div>\n <spw-skeleton variant=\"lines\" blocks={2}></spw-skeleton>\n </div>\n );\n }\n\n private renderArticle() {\n return (\n <div class=\"spw-skeleton__article\">\n <div class=\"spw-skeleton__article-image\"></div>\n <spw-skeleton variant=\"lines\" blocks={7}></spw-skeleton>\n </div>\n );\n }\n\n private renderTextButtons() {\n return (\n <div class=\"spw-skeleton__text-buttons\">\n <spw-skeleton variant=\"lines\" blocks={3}></spw-skeleton>\n <div class=\"spw-skeleton__buttons\">\n <div class=\"spw-skeleton__button\"></div>\n <div class=\"spw-skeleton__button\"></div>\n </div>\n </div>\n );\n }\n\n private renderVariant() {\n switch (this.variant) {\n case 'text':\n return this.renderText();\n case 'article':\n return this.renderArticle();\n case 'layout':\n return this.renderTextButtons();\n case 'lines':\n default:\n return this.renderLines();\n }\n }\n\n render() {\n return (\n <Host>\n <div class=\"spw-skeleton\">\n {this.renderVariant()}\n <slot></slot>\n </div>\n </Host>\n );\n }\n}\n"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"spw-skeleton.entry.esm.js","sources":["src/components/spw-skeleton/spw-skeleton.scss?tag=spw-skeleton&encapsulation=shadow","src/components/spw-skeleton/spw-skeleton.tsx"],"sourcesContent":[":host {\n display: block;\n}\n\n%animation {\n background: linear-gradient(90deg, white 0%, var(--spw-color-themes-grey-grey-300) 50%, white 100%);\n background-size: 200% 100%;\n animation: shimmer 5s infinite linear;\n}\n\n.spw-skeleton {\n display: flex;\n flex-direction: column;\n gap: 1rem;\n\n &__line {\n height: 1rem;\n width: 100%;\n border-radius: 4px;\n @extend %animation;\n }\n\n &__line--even {\n width: 85%;\n }\n\n &__line--last {\n width: 50% !important;\n }\n\n &__buttons {\n display: flex;\n align-items: center;\n justify-content: center;\n margin-top: 24px;\n gap: 24px;\n }\n\n &__button {\n width: 200px;\n height: 40px;\n border-radius: 40px;\n @extend %animation;\n }\n\n &__article {\n &-image {\n margin-bottom: 24px;\n border-radius: 8px;\n height: 170px;\n @extend %animation;\n }\n }\n\n &__text {\n &-block {\n margin: 24px 0;\n border-radius: 4px;\n height: 60px;\n @extend %animation;\n }\n }\n}\n\n@keyframes shimmer {\n 0% {\n background-position: 200% 0;\n }\n 100% {\n background-position: -200% 0;\n }\n}\n","import { Component, Prop, Host, h } from '@stencil/core';\n\n@Component({\n tag: 'spw-skeleton',\n styleUrl: 'spw-skeleton.scss',\n shadow: true,\n})\nexport class SpwSkeleton {\n /** Nombre de répétitions du skeleton (uniquement valable pour la variante lines) */\n @Prop() blocks: number = 1;\n\n /** Type de skeleton à afficher */\n @Prop() variant: 'lines' | 'text' | 'article' | 'layout' = 'lines';\n\n private renderLines() {\n return Array.from({ length: this.blocks }, (_, index) => {\n const isLast = index === this.blocks - 1;\n const isEven = index % 2 === 1;\n const isOdd = index % 2 === 0;\n const isOnly = this.blocks === 1;\n\n return (\n <div\n class={{\n 'spw-skeleton__line': true,\n 'spw-skeleton__line--only': isOnly,\n 'spw-skeleton__line--last': !isOnly && isLast,\n 'spw-skeleton__line--even': !isLast && isEven,\n 'spw-skeleton__line--odd': !isLast && isOdd,\n }}\n ></div>\n );\n });\n }\n\n private renderText() {\n return (\n <div class=\"spw-skeleton__text\">\n <spw-skeleton variant=\"lines\" blocks={5}></spw-skeleton>\n <div class=\"spw-skeleton__text-block\"></div>\n <spw-skeleton variant=\"lines\" blocks={2}></spw-skeleton>\n </div>\n );\n }\n\n private renderArticle() {\n return (\n <div class=\"spw-skeleton__article\">\n <div class=\"spw-skeleton__article-image\"></div>\n <spw-skeleton variant=\"lines\" blocks={7}></spw-skeleton>\n </div>\n );\n }\n\n private renderTextButtons() {\n return (\n <div class=\"spw-skeleton__text-buttons\">\n <spw-skeleton variant=\"lines\" blocks={3}></spw-skeleton>\n <div class=\"spw-skeleton__buttons\">\n <div class=\"spw-skeleton__button\"></div>\n <div class=\"spw-skeleton__button\"></div>\n </div>\n </div>\n );\n }\n\n private renderVariant() {\n switch (this.variant) {\n case 'text':\n return this.renderText();\n case 'article':\n return this.renderArticle();\n case 'layout':\n return this.renderTextButtons();\n case 'lines':\n default:\n return this.renderLines();\n }\n }\n\n render() {\n return (\n <Host>\n <div class=\"spw-skeleton\">\n {this.renderVariant()}\n <slot></slot>\n </div>\n </Host>\n );\n }\n}\n"],"names":[],"mappings":"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"}