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

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 (212) hide show
  1. package/dist/cjs/loader.cjs.js +1 -1
  2. package/dist/cjs/spw-button.spw-loading.entry.cjs.js.map +1 -1
  3. package/dist/cjs/spw-button_2.cjs.entry.js +1 -1
  4. package/dist/cjs/spw-button_2.cjs.entry.js.map +1 -1
  5. package/dist/cjs/spw-custom-select.cjs.entry.js +43 -7
  6. package/dist/cjs/spw-custom-select.cjs.entry.js.map +1 -1
  7. package/dist/cjs/spw-custom-select.entry.cjs.js.map +1 -1
  8. package/dist/cjs/spw-date-picker.cjs.entry.js +48 -28
  9. package/dist/cjs/spw-date-picker.cjs.entry.js.map +1 -1
  10. package/dist/cjs/spw-date-picker.entry.cjs.js.map +1 -1
  11. package/dist/cjs/spw-field-label.spw-group.spw-icon.spw-link.spw-separator.spw-theme-provider.entry.cjs.js.map +1 -1
  12. package/dist/cjs/spw-field-label_6.cjs.entry.js +1 -1
  13. package/dist/cjs/spw-field-label_6.cjs.entry.js.map +1 -1
  14. package/dist/cjs/spw-pagination.cjs.entry.js +26 -16
  15. package/dist/cjs/spw-pagination.cjs.entry.js.map +1 -1
  16. package/dist/cjs/spw-pagination.entry.cjs.js.map +1 -1
  17. package/dist/cjs/spw-search-field.cjs.entry.js +12 -2
  18. package/dist/cjs/spw-search-field.cjs.entry.js.map +1 -1
  19. package/dist/cjs/spw-search-field.entry.cjs.js.map +1 -1
  20. package/dist/cjs/spw-select.cjs.entry.js +3 -1
  21. package/dist/cjs/spw-select.cjs.entry.js.map +1 -1
  22. package/dist/cjs/spw-select.entry.cjs.js.map +1 -1
  23. package/dist/cjs/spw-stencil-library.cjs.js +1 -1
  24. package/dist/cjs/spw-table-cell.cjs.entry.js +23 -2
  25. package/dist/cjs/spw-table-cell.cjs.entry.js.map +1 -1
  26. package/dist/cjs/spw-table-cell.entry.cjs.js.map +1 -1
  27. package/dist/cjs/spw-table-footer.cjs.entry.js +1 -1
  28. package/dist/cjs/spw-table-footer.cjs.entry.js.map +1 -1
  29. package/dist/cjs/spw-table-footer.entry.cjs.js.map +1 -1
  30. package/dist/cjs/spw-table-header.cjs.entry.js +33 -3
  31. package/dist/cjs/spw-table-header.cjs.entry.js.map +1 -1
  32. package/dist/cjs/spw-table-header.entry.cjs.js.map +1 -1
  33. package/dist/cjs/spw-table-row.cjs.entry.js +34 -2
  34. package/dist/cjs/spw-table-row.cjs.entry.js.map +1 -1
  35. package/dist/cjs/spw-table-row.entry.cjs.js.map +1 -1
  36. package/dist/cjs/spw-table.cjs.entry.js +26 -3
  37. package/dist/cjs/spw-table.cjs.entry.js.map +1 -1
  38. package/dist/cjs/spw-table.entry.cjs.js.map +1 -1
  39. package/dist/cjs/utils-D_vNTY6w.js.map +1 -1
  40. package/dist/collection/components/spw-button/spw-button.css +1 -1
  41. package/dist/collection/components/spw-custom-select/spw-custom-select.css +1 -1
  42. package/dist/collection/components/spw-custom-select/spw-custom-select.js +42 -6
  43. package/dist/collection/components/spw-custom-select/spw-custom-select.js.map +1 -1
  44. package/dist/collection/components/spw-date-picker/spw-date-picker.js +48 -28
  45. package/dist/collection/components/spw-date-picker/spw-date-picker.js.map +1 -1
  46. package/dist/collection/components/spw-link/spw-link.css +1 -1
  47. package/dist/collection/components/spw-pagination/spw-pagination.css +1 -1
  48. package/dist/collection/components/spw-pagination/spw-pagination.js +54 -13
  49. package/dist/collection/components/spw-pagination/spw-pagination.js.map +1 -1
  50. package/dist/collection/components/spw-search-field/spw-search-field.js +50 -2
  51. package/dist/collection/components/spw-search-field/spw-search-field.js.map +1 -1
  52. package/dist/collection/components/spw-select/spw-select.js +3 -1
  53. package/dist/collection/components/spw-select/spw-select.js.map +1 -1
  54. package/dist/collection/components/spw-table/spw-table-cell/spw-table-cell.css +1 -1
  55. package/dist/collection/components/spw-table/spw-table-cell/spw-table-cell.js +82 -1
  56. package/dist/collection/components/spw-table/spw-table-cell/spw-table-cell.js.map +1 -1
  57. package/dist/collection/components/spw-table/spw-table-footer/spw-table-footer.css +1 -1
  58. package/dist/collection/components/spw-table/spw-table-header/spw-table-header.css +1 -1
  59. package/dist/collection/components/spw-table/spw-table-header/spw-table-header.js +92 -2
  60. package/dist/collection/components/spw-table/spw-table-header/spw-table-header.js.map +1 -1
  61. package/dist/collection/components/spw-table/spw-table-row/spw-table-row.css +1 -1
  62. package/dist/collection/components/spw-table/spw-table-row/spw-table-row.js +66 -1
  63. package/dist/collection/components/spw-table/spw-table-row/spw-table-row.js.map +1 -1
  64. package/dist/collection/components/spw-table/spw-table.js +27 -2
  65. package/dist/collection/components/spw-table/spw-table.js.map +1 -1
  66. package/dist/collection/stories/organisms/spw-footer/spw-footer.stories.js +1 -1
  67. package/dist/collection/stories/organisms/spw-footer/spw-footer.stories.js.map +1 -1
  68. package/dist/collection/utils/utils.js +47 -48
  69. package/dist/collection/utils/utils.js.map +1 -1
  70. package/dist/components/{p-du-Bai6S.js → p-B2toBmC2.js} +32 -21
  71. package/dist/components/p-B2toBmC2.js.map +1 -0
  72. package/dist/components/p-BBi01mKM.js.map +1 -1
  73. package/dist/components/{p-AjhBdYbk.js → p-DjyPtAVX.js} +3 -3
  74. package/dist/components/p-DjyPtAVX.js.map +1 -0
  75. package/dist/components/{p-CNNUoO2J.js → p-qROlK2WR.js} +3 -3
  76. package/dist/components/p-qROlK2WR.js.map +1 -0
  77. package/dist/components/spw-breadcrumb-item.js +1 -1
  78. package/dist/components/spw-button.js +1 -1
  79. package/dist/components/spw-cookies.js +1 -1
  80. package/dist/components/spw-custom-select.js +43 -7
  81. package/dist/components/spw-custom-select.js.map +1 -1
  82. package/dist/components/spw-date-picker.js +48 -28
  83. package/dist/components/spw-date-picker.js.map +1 -1
  84. package/dist/components/spw-file-upload.js +1 -1
  85. package/dist/components/spw-header-lang.js +1 -1
  86. package/dist/components/spw-header.js +1 -1
  87. package/dist/components/spw-iodda.js +1 -1
  88. package/dist/components/spw-link.js +1 -1
  89. package/dist/components/spw-message.js +1 -1
  90. package/dist/components/spw-pagination.js +1 -1
  91. package/dist/components/spw-search-field.js +15 -4
  92. package/dist/components/spw-search-field.js.map +1 -1
  93. package/dist/components/spw-select.js +3 -1
  94. package/dist/components/spw-select.js.map +1 -1
  95. package/dist/components/spw-table-cell.js +26 -2
  96. package/dist/components/spw-table-cell.js.map +1 -1
  97. package/dist/components/spw-table-footer.js +1 -1
  98. package/dist/components/spw-table-footer.js.map +1 -1
  99. package/dist/components/spw-table-header.js +37 -4
  100. package/dist/components/spw-table-header.js.map +1 -1
  101. package/dist/components/spw-table-row.js +39 -3
  102. package/dist/components/spw-table-row.js.map +1 -1
  103. package/dist/components/spw-table.js +28 -4
  104. package/dist/components/spw-table.js.map +1 -1
  105. package/dist/components_json.json +268 -12
  106. package/dist/components_vscode.json +3088 -0
  107. package/dist/esm/loader.js +1 -1
  108. package/dist/esm/spw-button.spw-loading.entry.js.map +1 -1
  109. package/dist/esm/spw-button_2.entry.js +1 -1
  110. package/dist/esm/spw-button_2.entry.js.map +1 -1
  111. package/dist/esm/spw-custom-select.entry.js +43 -7
  112. package/dist/esm/spw-custom-select.entry.js.map +1 -1
  113. package/dist/esm/spw-date-picker.entry.js +48 -28
  114. package/dist/esm/spw-date-picker.entry.js.map +1 -1
  115. package/dist/esm/spw-field-label.spw-group.spw-icon.spw-link.spw-separator.spw-theme-provider.entry.js.map +1 -1
  116. package/dist/esm/spw-field-label_6.entry.js +1 -1
  117. package/dist/esm/spw-field-label_6.entry.js.map +1 -1
  118. package/dist/esm/spw-pagination.entry.js +26 -16
  119. package/dist/esm/spw-pagination.entry.js.map +1 -1
  120. package/dist/esm/spw-search-field.entry.js +13 -3
  121. package/dist/esm/spw-search-field.entry.js.map +1 -1
  122. package/dist/esm/spw-select.entry.js +3 -1
  123. package/dist/esm/spw-select.entry.js.map +1 -1
  124. package/dist/esm/spw-stencil-library.js +1 -1
  125. package/dist/esm/spw-table-cell.entry.js +23 -2
  126. package/dist/esm/spw-table-cell.entry.js.map +1 -1
  127. package/dist/esm/spw-table-footer.entry.js +1 -1
  128. package/dist/esm/spw-table-footer.entry.js.map +1 -1
  129. package/dist/esm/spw-table-header.entry.js +33 -3
  130. package/dist/esm/spw-table-header.entry.js.map +1 -1
  131. package/dist/esm/spw-table-row.entry.js +35 -3
  132. package/dist/esm/spw-table-row.entry.js.map +1 -1
  133. package/dist/esm/spw-table.entry.js +26 -3
  134. package/dist/esm/spw-table.entry.js.map +1 -1
  135. package/dist/esm/utils-BBi01mKM.js.map +1 -1
  136. package/dist/spw-stencil-library/p-0f69442e.entry.js +2 -0
  137. package/dist/spw-stencil-library/p-0f69442e.entry.js.map +1 -0
  138. package/dist/spw-stencil-library/p-14722019.entry.js +2 -0
  139. package/dist/spw-stencil-library/p-14722019.entry.js.map +1 -0
  140. package/dist/spw-stencil-library/{p-b1de48f3.entry.js → p-152525de.entry.js} +2 -2
  141. package/dist/spw-stencil-library/p-152525de.entry.js.map +1 -0
  142. package/dist/spw-stencil-library/p-2ad00dfc.entry.js +2 -0
  143. package/dist/spw-stencil-library/p-2ad00dfc.entry.js.map +1 -0
  144. package/dist/spw-stencil-library/p-4a273848.entry.js +2 -0
  145. package/dist/spw-stencil-library/p-4a273848.entry.js.map +1 -0
  146. package/dist/spw-stencil-library/{p-31793077.entry.js → p-5632f307.entry.js} +2 -2
  147. package/dist/spw-stencil-library/p-5632f307.entry.js.map +1 -0
  148. package/dist/spw-stencil-library/p-5e43e2ed.entry.js +2 -0
  149. package/dist/spw-stencil-library/p-5e43e2ed.entry.js.map +1 -0
  150. package/dist/spw-stencil-library/p-92583499.entry.js +2 -0
  151. package/dist/spw-stencil-library/p-92583499.entry.js.map +1 -0
  152. package/dist/spw-stencil-library/p-9d760073.entry.js +2 -0
  153. package/dist/spw-stencil-library/p-9d760073.entry.js.map +1 -0
  154. package/dist/spw-stencil-library/p-9e8a779e.entry.js +2 -0
  155. package/dist/spw-stencil-library/p-9e8a779e.entry.js.map +1 -0
  156. package/dist/spw-stencil-library/p-BBi01mKM.js.map +1 -1
  157. package/dist/spw-stencil-library/p-c4e4cfd4.entry.js +2 -0
  158. package/dist/spw-stencil-library/p-c4e4cfd4.entry.js.map +1 -0
  159. package/dist/spw-stencil-library/{p-f7760a47.entry.js → p-fcc5884a.entry.js} +2 -2
  160. package/dist/spw-stencil-library/p-fcc5884a.entry.js.map +1 -0
  161. package/dist/spw-stencil-library/spw-button.spw-loading.entry.esm.js.map +1 -1
  162. package/dist/spw-stencil-library/spw-custom-select.entry.esm.js.map +1 -1
  163. package/dist/spw-stencil-library/spw-date-picker.entry.esm.js.map +1 -1
  164. package/dist/spw-stencil-library/spw-field-label.spw-group.spw-icon.spw-link.spw-separator.spw-theme-provider.entry.esm.js.map +1 -1
  165. package/dist/spw-stencil-library/spw-pagination.entry.esm.js.map +1 -1
  166. package/dist/spw-stencil-library/spw-search-field.entry.esm.js.map +1 -1
  167. package/dist/spw-stencil-library/spw-select.entry.esm.js.map +1 -1
  168. package/dist/spw-stencil-library/spw-stencil-library.esm.js +1 -1
  169. package/dist/spw-stencil-library/spw-table-cell.entry.esm.js.map +1 -1
  170. package/dist/spw-stencil-library/spw-table-footer.entry.esm.js.map +1 -1
  171. package/dist/spw-stencil-library/spw-table-header.entry.esm.js.map +1 -1
  172. package/dist/spw-stencil-library/spw-table-row.entry.esm.js.map +1 -1
  173. package/dist/spw-stencil-library/spw-table.entry.esm.js.map +1 -1
  174. package/dist/stats.json +611 -150
  175. package/dist/types/components/spw-custom-select/spw-custom-select.d.ts +3 -0
  176. package/dist/types/components/spw-date-picker/spw-date-picker.d.ts +1 -0
  177. package/dist/types/components/spw-pagination/spw-pagination.d.ts +4 -1
  178. package/dist/types/components/spw-search-field/spw-search-field.d.ts +5 -0
  179. package/dist/types/components/spw-select/spw-select.d.ts +1 -0
  180. package/dist/types/components/spw-table/spw-table-cell/spw-table-cell.d.ts +6 -0
  181. package/dist/types/components/spw-table/spw-table-header/spw-table-header.d.ts +6 -0
  182. package/dist/types/components/spw-table/spw-table-row/spw-table-row.d.ts +8 -0
  183. package/dist/types/components/spw-table/spw-table.d.ts +2 -0
  184. package/dist/types/components.d.ts +83 -0
  185. package/dist/types/utils/utils.d.ts +2 -1
  186. package/hydrate/index.js +265 -72
  187. package/hydrate/index.mjs +265 -72
  188. package/package.json +1 -1
  189. package/dist/components/p-AjhBdYbk.js.map +0 -1
  190. package/dist/components/p-CNNUoO2J.js.map +0 -1
  191. package/dist/components/p-du-Bai6S.js.map +0 -1
  192. package/dist/spw-stencil-library/p-22f972ca.entry.js +0 -2
  193. package/dist/spw-stencil-library/p-22f972ca.entry.js.map +0 -1
  194. package/dist/spw-stencil-library/p-2c28684f.entry.js +0 -2
  195. package/dist/spw-stencil-library/p-2c28684f.entry.js.map +0 -1
  196. package/dist/spw-stencil-library/p-31793077.entry.js.map +0 -1
  197. package/dist/spw-stencil-library/p-4c21a696.entry.js +0 -2
  198. package/dist/spw-stencil-library/p-4c21a696.entry.js.map +0 -1
  199. package/dist/spw-stencil-library/p-572188ac.entry.js +0 -2
  200. package/dist/spw-stencil-library/p-572188ac.entry.js.map +0 -1
  201. package/dist/spw-stencil-library/p-823b60ae.entry.js +0 -2
  202. package/dist/spw-stencil-library/p-823b60ae.entry.js.map +0 -1
  203. package/dist/spw-stencil-library/p-b1de48f3.entry.js.map +0 -1
  204. package/dist/spw-stencil-library/p-d115a739.entry.js +0 -2
  205. package/dist/spw-stencil-library/p-d115a739.entry.js.map +0 -1
  206. package/dist/spw-stencil-library/p-d2258e0a.entry.js +0 -2
  207. package/dist/spw-stencil-library/p-d2258e0a.entry.js.map +0 -1
  208. package/dist/spw-stencil-library/p-ecec4588.entry.js +0 -2
  209. package/dist/spw-stencil-library/p-ecec4588.entry.js.map +0 -1
  210. package/dist/spw-stencil-library/p-f5caed11.entry.js +0 -2
  211. package/dist/spw-stencil-library/p-f5caed11.entry.js.map +0 -1
  212. package/dist/spw-stencil-library/p-f7760a47.entry.js.map +0 -1
@@ -1,6 +1,6 @@
1
1
  import { r as registerInstance, c as createEvent, h } from './index-CvfVJV8a.js';
2
2
 
3
- const spwTableHeaderCss = "/*! normalize.css v8.0.1 | MIT License | github.com/necolas/normalize.css */html{-webkit-text-size-adjust:100%;line-height:1.3}h1,h2,h3,h4,h5,h6,li,p,ul{margin:0;padding:0}ul{list-style:none}:host{-webkit-text-size-adjust:100%;box-sizing:border-box;display:contents;font-size:100%;line-height:1.3}:host *,:host :after,:host :before{box-sizing:inherit;font-family:Nunito Sans}body{margin:0}main{display:block}h1{font-size:2em;margin:.67em 0}hr{box-sizing:content-box;height:0;overflow:visible}pre{font-family:monospace,monospace;font-size:1em}a{background-color:transparent}abbr[title]{border-bottom:none;text-decoration:underline;-webkit-text-decoration:underline dotted;text-decoration:underline dotted}b,strong{font-weight:bolder}code,kbd,samp{font-family:monospace,monospace;font-size:1em}small{font-size:80%}sub,sup{font-size:75%;line-height:0;position:relative;vertical-align:baseline}sub{bottom:-.25em}sup{top:-.5em}img{border-style:none}button,input,optgroup,select,textarea{font-family:inherit;font-size:100%;line-height:1.15;margin:0}button,input{overflow:visible}button,select{text-transform:none}[type=button],[type=reset],[type=submit],button{-webkit-appearance:button}[type=button]::-moz-focus-inner,[type=reset]::-moz-focus-inner,[type=submit]::-moz-focus-inner,button::-moz-focus-inner{border-style:none;padding:0}[type=button]:-moz-focusring,[type=reset]:-moz-focusring,[type=submit]:-moz-focusring,button:-moz-focusring{outline:1px dotted ButtonText}fieldset{padding:.35em .75em .625em}legend{box-sizing:border-box;color:inherit;display:table;max-width:100%;padding:0;white-space:normal}progress{vertical-align:baseline}textarea{overflow:auto}[type=checkbox],[type=radio]{box-sizing:border-box;padding:0}[type=number]::-webkit-inner-spin-button,[type=number]::-webkit-outer-spin-button{height:auto}[type=search]{-webkit-appearance:textfield;outline-offset:-2px}[type=search]::-webkit-search-decoration{-webkit-appearance:none}::-webkit-file-upload-button{-webkit-appearance:button;font:inherit}details{display:block}summary{display:list-item}[hidden],template{display:none}:root{--spw-ds-container-xl:1200px;--spw-ds-container-lg:1024px;--spw-ds-container-md:768px;--spw-ds-container-sm:640px}.spw-ds-container{margin-left:auto;margin-right:auto;padding-left:16px;padding-right:16px;width:100%}@media (min-width:460px){.spw-ds-container{max-width:var(--spw-ds-container-sm)}}@media (min-width:768px){.spw-ds-container{max-width:var(--spw-ds-container-md)}}@media (min-width:1024px){.spw-ds-container{max-width:var(--spw-ds-container-lg)}}@media (min-width:1350px){.spw-ds-container{max-width:var(--spw-ds-container-xl)}}.spw-table-header{background:var(--spw-color-themes-grey-grey-200);background-clip:padding-box;border:1px solid var(--spw-color-themes-grey-grey-300);border-bottom:none!important;border-top:none!important;box-shadow:inset 0 1px 0 var(--spw-color-themes-grey-grey-300),inset 0 -1px 0 var(--spw-color-themes-grey-grey-300);color:var(--spw-color-themes-grey-grey-800);font-size:14px;font-weight:700;text-align:left;transition:all .2s linear;white-space:nowrap}:host-context(.spw-table--is-sticky) .spw-table-header{position:sticky;top:0;z-index:20}.spw-table-header--text-align-left{text-align:left}.spw-table-header--text-align-center{text-align:center}.spw-table-header--text-align-right{text-align:right}.spw-table-header--vertical-align-top{vertical-align:top}.spw-table-header--vertical-align-bottom{vertical-align:bottom}.spw-table-header--vertical-align-middle{vertical-align:middle}.spw-table-header--has-tooltip .spw-table-header__content{align-items:center;display:flex;gap:16px;justify-content:space-between}.spw-table-header--has-tooltip .spw-table-header__content spw-icon{color:var(--spw-color-themes-grey-grey-500)}.spw-table-header--has-tooltip .spw-table-header__content spw-icon:hover{color:var(--spw-color-themes-grey-grey-900)}.spw-table-header--sortable{cursor:pointer;-webkit-user-select:none;-moz-user-select:none;user-select:none}.spw-table-header--sortable:hover{background:var(--spw-color-themes-grey-grey-300)}.spw-table-header--sortable .spw-table-header__content{align-items:center;display:flex;gap:16px;justify-content:space-between}.spw-table-header--sortable .spw-table-header__content spw-icon{color:var(--spw-color-themes-grey-grey-500)}.spw-table-header--sortable .spw-table-header__content spw-icon:hover,.spw-table-header--sortable .spw-table-header__content--is-sorted .spw-table-header__sort-icon{color:var(--spw-color-themes-grey-grey-900)}.spw-table-header__sort-icons{display:flex;gap:0}.spw-table-header--padding-small{padding:8px}.spw-table-header--padding-medium{padding:16px}.spw-table-header__icons{align-items:center;color:var(--spw-color-themes-grey-grey-500);display:flex;gap:8px}.spw-table-header ::slotted(spw-checkbox){--spw-ds-checkbox-checked-color:#000}";
3
+ const spwTableHeaderCss = "/*! normalize.css v8.0.1 | MIT License | github.com/necolas/normalize.css */html{-webkit-text-size-adjust:100%;line-height:1.3}h1,h2,h3,h4,h5,h6,li,p,ul{margin:0;padding:0}ul{list-style:none}:host{-webkit-text-size-adjust:100%;box-sizing:border-box;display:contents;font-size:100%;line-height:1.3}:host *,:host :after,:host :before{box-sizing:inherit;font-family:Nunito Sans}body{margin:0}main{display:block}h1{font-size:2em;margin:.67em 0}hr{box-sizing:content-box;height:0;overflow:visible}pre{font-family:monospace,monospace;font-size:1em}a{background-color:transparent}abbr[title]{border-bottom:none;text-decoration:underline;-webkit-text-decoration:underline dotted;text-decoration:underline dotted}b,strong{font-weight:bolder}code,kbd,samp{font-family:monospace,monospace;font-size:1em}small{font-size:80%}sub,sup{font-size:75%;line-height:0;position:relative;vertical-align:baseline}sub{bottom:-.25em}sup{top:-.5em}img{border-style:none}button,input,optgroup,select,textarea{font-family:inherit;font-size:100%;line-height:1.15;margin:0}button,input{overflow:visible}button,select{text-transform:none}[type=button],[type=reset],[type=submit],button{-webkit-appearance:button}[type=button]::-moz-focus-inner,[type=reset]::-moz-focus-inner,[type=submit]::-moz-focus-inner,button::-moz-focus-inner{border-style:none;padding:0}[type=button]:-moz-focusring,[type=reset]:-moz-focusring,[type=submit]:-moz-focusring,button:-moz-focusring{outline:1px dotted ButtonText}fieldset{padding:.35em .75em .625em}legend{box-sizing:border-box;color:inherit;display:table;max-width:100%;padding:0;white-space:normal}progress{vertical-align:baseline}textarea{overflow:auto}[type=checkbox],[type=radio]{box-sizing:border-box;padding:0}[type=number]::-webkit-inner-spin-button,[type=number]::-webkit-outer-spin-button{height:auto}[type=search]{-webkit-appearance:textfield;outline-offset:-2px}[type=search]::-webkit-search-decoration{-webkit-appearance:none}::-webkit-file-upload-button{-webkit-appearance:button;font:inherit}details{display:block}summary{display:list-item}[hidden],template{display:none}:root{--spw-ds-container-xl:1200px;--spw-ds-container-lg:1024px;--spw-ds-container-md:768px;--spw-ds-container-sm:640px}.spw-ds-container{margin-left:auto;margin-right:auto;padding-left:16px;padding-right:16px;width:100%}@media (min-width:460px){.spw-ds-container{max-width:var(--spw-ds-container-sm)}}@media (min-width:768px){.spw-ds-container{max-width:var(--spw-ds-container-md)}}@media (min-width:1024px){.spw-ds-container{max-width:var(--spw-ds-container-lg)}}@media (min-width:1350px){.spw-ds-container{max-width:var(--spw-ds-container-xl)}}:host(.--is-sticky) .spw-table-header{position:sticky;top:0;z-index:50}.spw-table-header{background:var(--spw-color-themes-grey-grey-200);background-clip:padding-box;border:1px solid var(--spw-color-themes-grey-grey-300);border-bottom:none!important;border-top:none!important;box-shadow:inset 0 1px 0 var(--spw-color-themes-grey-grey-300),inset 0 -1px 0 var(--spw-color-themes-grey-grey-300);color:var(--spw-color-themes-grey-grey-800);font-size:14px;font-weight:700;text-align:left;transition:all .2s linear;white-space:nowrap}.spw-table-header--text-align-left{text-align:left}.spw-table-header--text-align-center{text-align:center}.spw-table-header--text-align-right{text-align:right}.spw-table-header--vertical-align-top{vertical-align:top}.spw-table-header--vertical-align-bottom{vertical-align:bottom}.spw-table-header--vertical-align-middle{vertical-align:middle}.spw-table-header--has-tooltip .spw-table-header__content{align-items:center;display:flex;gap:16px;justify-content:space-between}.spw-table-header--has-tooltip .spw-table-header__content spw-icon{color:var(--spw-color-themes-grey-grey-500)}.spw-table-header--has-tooltip .spw-table-header__content spw-icon:hover{color:var(--spw-color-themes-grey-grey-900)}.spw-table-header--sortable{cursor:pointer;-webkit-user-select:none;-moz-user-select:none;user-select:none}.spw-table-header--sortable:hover{background:var(--spw-color-themes-grey-grey-300)}.spw-table-header--sortable .spw-table-header__content{align-items:center;display:flex;gap:16px;justify-content:space-between}.spw-table-header--sortable .spw-table-header__content spw-icon{color:var(--spw-color-themes-grey-grey-500)}.spw-table-header--sortable .spw-table-header__content spw-icon:hover,.spw-table-header--sortable .spw-table-header__content--is-sorted .spw-table-header__sort-icon{color:var(--spw-color-themes-grey-grey-900)}.spw-table-header__sort-icons{display:flex;gap:0}.spw-table-header--padding-small{padding:8px}.spw-table-header--padding-medium{padding:16px}.spw-table-header__icons{align-items:center;color:var(--spw-color-themes-grey-grey-500);display:flex;gap:8px}.spw-table-header ::slotted(spw-checkbox){--spw-ds-checkbox-checked-color:#000}.spw-table-header--sticky{background-color:var(--spw-color-themes-grey-grey-200);position:sticky}.spw-table-header--sticky:after{bottom:-1px;content:\"\";pointer-events:none;position:absolute;top:0;transition:opacity .2s;width:8px}.spw-table-header--sticky-start:after{box-shadow:inset 8px 0 8px -8px rgba(0,0,0,.15);right:-8px}.spw-table-header--sticky-end:after{box-shadow:inset -8px 0 8px -8px rgba(0,0,0,.15);left:-8px}";
4
4
 
5
5
  const SpwTableHeader = class {
6
6
  constructor(hostRef) {
@@ -18,6 +18,12 @@ const SpwTableHeader = class {
18
18
  this.sortable = false;
19
19
  /** Définit si la colonne est triée ou non (à appliquer sur spw-table-header) */
20
20
  this.isSorted = false;
21
+ /** Rend la cellule sticky lors du défilement horizontal (à appliquer sur spw-table-header ou spw-table-cell) */
22
+ this.sticky = false;
23
+ /** Position du sticky : 'start' (left: 0) ou 'end' (right: 0) (à appliquer sur spw-table-header ou spw-table-cell) */
24
+ this.stickyPosition = 'start';
25
+ /** Décalage en pixels pour le sticky (utile pour empiler plusieurs colonnes sticky) (à appliquer sur spw-table-header ou spw-table-cell) */
26
+ this.stickyOffset = 0;
21
27
  this.handleClick = (event) => {
22
28
  if (event.target.closest('[slot="filters"]')) {
23
29
  event.stopPropagation();
@@ -37,13 +43,37 @@ const SpwTableHeader = class {
37
43
  [`spw-table-header--padding-${this.padding}`]: true,
38
44
  [`spw-table-header--text-align-${this.textAlign}`]: true,
39
45
  [`spw-table-header--vertical-align-${this.verticalAlign}`]: true,
46
+ 'spw-table-header--sticky': this.sticky,
47
+ [`spw-table-header--sticky-${this.stickyPosition}`]: this.sticky,
40
48
  };
41
49
  }
42
50
  render() {
43
- return (h("th", { key: 'f6b876e9a0abd09b83ac0fb6d4ed56069db623b2', "aria-sort": this.isSorted ? this.sortDirection : 'none', onClick: this.handleClick, class: this.elementClass, colSpan: this.colspan, headers: this.headers, part: "cell", rowSpan: this.rowspan }, h("div", { key: '59bc5d894c9693eb3fc3bccd050dac2b79c505ee', class: {
51
+ const attrs = {
52
+ 'aria-sort': this.isSorted ? this.sortDirection : 'none',
53
+ 'onClick': this.handleClick,
54
+ 'class': this.elementClass,
55
+ 'colSpan': this.colspan,
56
+ 'headers': this.headers,
57
+ 'part': 'cell',
58
+ 'rowSpan': this.rowspan,
59
+ };
60
+ if (this.sticky) {
61
+ const stickyStyles = {
62
+ position: 'sticky',
63
+ zIndex: '60',
64
+ };
65
+ if (this.stickyPosition === 'start') {
66
+ stickyStyles.left = `${this.stickyOffset}px`;
67
+ }
68
+ else {
69
+ stickyStyles.right = `${this.stickyOffset}px`;
70
+ }
71
+ attrs.style = stickyStyles;
72
+ }
73
+ return (h("th", Object.assign({ key: '72a54f9eb43f87e80da3bfe45a6eb848cf11e09f' }, attrs), h("div", { key: '06111c36e9fa869e263dfb1bc64fa023acf42538', class: {
44
74
  'spw-table-header__content': true,
45
75
  'spw-table-header__content--is-sorted': this.isSorted,
46
- } }, h("slot", { key: '3e37a6205e94db70faa13e6f362ef66e191b24c7' }), h("div", { key: '671ddc146285bc6b717b904180559d16636bca64', class: "spw-table-header__icons" }, h("slot", { key: '448450b9a1c7dd13e54e707de3dc4e230a4787f8', name: "filters" }), (this.tooltipTitle || this.tooltipText) && (h("spw-tooltip", { key: 'c516faefd3239efc3e3c8c35e98d0713afe86848', "tooltip-title": this.tooltipTitle, "tooltip-text": this.tooltipText }, h("spw-icon", { key: 'ced1ef2406a68e6b1ce5da441ba5376063930ec3', variant: "fa-regular", icon: "fa-circle-question" }))), this.sortable && (h("spw-icon", { key: '89022b197525a6b6e2a0ccda404798f1e9b13a6a', class: "spw-table-header__sort-icon", icon: this.isSorted ? (this.sortDirection === 'asc' ? 'fa-arrow-up-short-wide' : 'fa-arrow-down-wide-short') : 'fa-arrow-up-arrow-down' }))))));
76
+ } }, h("slot", { key: '16439694bfaf17d5f1371ffd817f16ba7bc4ecdc' }), h("div", { key: '4b8cf5f4de063c8aa9c2ea8b653d9a35b1ae64b0', class: "spw-table-header__icons" }, h("slot", { key: 'd9816f83f71672ebda6b27b705142666e376ec7a', name: "filters" }), (this.tooltipTitle || this.tooltipText) && (h("spw-tooltip", { key: 'a8c4e3d4a555806faef984533696c393173b7ad7', "tooltip-title": this.tooltipTitle, "tooltip-text": this.tooltipText }, h("spw-icon", { key: '92a361a5400a2cb09c3ccf68a713897076e019b6', variant: "fa-regular", icon: "fa-circle-question" }))), this.sortable && (h("spw-icon", { key: 'db44bf3aa7be154edecf0281f3335edf0896eb01', class: "spw-table-header__sort-icon", icon: this.isSorted ? (this.sortDirection === 'asc' ? 'fa-arrow-up-short-wide' : 'fa-arrow-down-wide-short') : 'fa-arrow-up-arrow-down' }))))));
47
77
  }
48
78
  };
49
79
  SpwTableHeader.style = spwTableHeaderCss;
@@ -1 +1 @@
1
- {"version":3,"file":"spw-table-header.entry.js","sources":["src/components/spw-table/spw-table-header/spw-table-header.scss?tag=spw-table-header&encapsulation=shadow","src/components/spw-table/spw-table-header/spw-table-header.tsx"],"sourcesContent":[":host {\n display: contents;\n}\n\n.spw-table-header {\n border: 1px solid var(--spw-color-themes-grey-grey-300);\n color: var(--spw-color-themes-grey-grey-800);\n font-size: 14px;\n text-align: left;\n font-weight: 700;\n transition: all 0.2s linear;\n background: var(--spw-color-themes-grey-grey-200);\n white-space: nowrap;\n border-top: none !important;\n border-bottom: none !important;\n box-shadow:\n inset 0 1px 0 var(--spw-color-themes-grey-grey-300),\n inset 0 -1px 0 var(--spw-color-themes-grey-grey-300);\n\n background-clip: padding-box;\n\n :host-context(.spw-table--is-sticky) & {\n position: sticky;\n top: 0;\n z-index: 20;\n }\n\n &--text-align-left {\n text-align: left;\n }\n &--text-align-center {\n text-align: center;\n }\n &--text-align-right {\n text-align: right;\n }\n &--vertical-align-top {\n vertical-align: top;\n }\n &--vertical-align-bottom {\n vertical-align: bottom;\n }\n &--vertical-align-middle {\n vertical-align: middle;\n }\n\n &--has-tooltip {\n .spw-table-header__content {\n display: flex;\n gap: 16px;\n justify-content: space-between;\n align-items: center;\n spw-icon {\n color: var(--spw-color-themes-grey-grey-500);\n &:hover {\n color: var(--spw-color-themes-grey-grey-900);\n }\n }\n }\n }\n &--sortable {\n user-select: none;\n cursor: pointer;\n &:hover {\n background: var(--spw-color-themes-grey-grey-300);\n }\n .spw-table-header__content {\n display: flex;\n gap: 16px;\n justify-content: space-between;\n align-items: center;\n spw-icon {\n color: var(--spw-color-themes-grey-grey-500);\n &:hover {\n color: var(--spw-color-themes-grey-grey-900);\n }\n }\n &--is-sorted {\n .spw-table-header__sort-icon {\n color: var(--spw-color-themes-grey-grey-900);\n }\n }\n }\n }\n &__sort-icons {\n display: flex;\n gap: 0;\n }\n &--padding-small {\n padding: 8px;\n }\n &--padding-medium {\n padding: 16px;\n }\n &__icons {\n display: flex;\n gap: 8px;\n align-items: center;\n color: var(--spw-color-themes-grey-grey-500);\n }\n ::slotted(spw-checkbox) {\n --spw-ds-checkbox-checked-color: #000;\n }\n}\n","import { Component, Prop, Event, EventEmitter, h } from '@stencil/core';\n\n@Component({\n tag: 'spw-table-header',\n styleUrl: 'spw-table-header.scss',\n shadow: true,\n})\nexport class SpwTableHeader {\n /** Définit un colspan pour la cellule (à appliquer sur spw-table-cell ou spw-table-header) */\n @Prop() colspan?: HTMLTableCellElement['colSpan'];\n /** Définit un header relationnel pour la cellule, à des fins d'accessibilité (à appliquer sur spw-table-cell ou spw-table-header) */\n @Prop() headers?: HTMLTableCellElement['headers'];\n /** Définit un rowspan pour la cellule (à appliquer sur spw-table-cell ou spw-table-header) */\n @Prop() rowspan?: HTMLTableCellElement['rowSpan'];\n /** Définit un style visuel qui met en avant la cellule (à appliquer sur spw-table-cell ou spw-table-header) */\n @Prop() isHighlighted?: boolean = false;\n /** Définit un alignement de texte pour la cellule (à appliquer sur spw-table-cell ou spw-table-header) */\n @Prop() textAlign?: 'center' | 'left' | 'right' = 'left';\n /** Définit un alignement vertical pour la cellule (à appliquer sur spw-table-cell ou spw-table-header) */\n @Prop() verticalAlign?: 'top' | 'bottom' | 'middle' = 'top';\n /** Définit le padding pour la cellule (à appliquer sur spw-table-cell ou spw-table-header) */\n @Prop() padding?: 'small' | 'medium' = 'medium';\n /** Définit id pour la colonne (en cas de tri) (à appliquer sur spw-table-header) */\n @Prop() columnId: string;\n /** Définit si la colonne est triable (à appliquer sur spw-table-header) */\n @Prop() sortable?: boolean = false;\n /** Définit la direction pour le tri sur la colonne (ascendant ou descendant) (à appliquer sur spw-table-header) */\n @Prop() sortDirection?: 'asc' | 'desc';\n /** Définit si la colonne est triée ou non (à appliquer sur spw-table-header) */\n @Prop() isSorted?: boolean = false;\n /** Définit un titre pour le tooltip (à appliquer sur spw-table-header) */\n @Prop() tooltipTitle?: string;\n /** Définit un contenu pour le tooltip (à appliquer sur spw-table-header) */\n @Prop() tooltipText?: string;\n\n @Event() spwHeaderClick: EventEmitter<string>;\n\n private handleClick = (event: MouseEvent) => {\n if ((event.target as HTMLElement).closest('[slot=\"filters\"]')) {\n event.stopPropagation();\n return;\n }\n if (this.sortable) {\n this.spwHeaderClick.emit(this.columnId);\n }\n };\n\n private get elementClass(): { [className: string]: boolean } {\n return {\n 'spw-table-header': true,\n 'spw-table-header--sortable': this.sortable,\n 'spw-table-header--is-sorted': this.isSorted,\n 'spw-table-header--has-tooltip': !!(this.tooltipTitle || this.tooltipText),\n [`spw-table-header--padding-${this.padding}`]: true,\n [`spw-table-header--text-align-${this.textAlign}`]: true,\n [`spw-table-header--vertical-align-${this.verticalAlign}`]: true,\n };\n }\n\n render() {\n return (\n <th\n aria-sort={this.isSorted ? this.sortDirection : 'none'}\n onClick={this.handleClick}\n class={this.elementClass}\n colSpan={this.colspan}\n headers={this.headers}\n part=\"cell\"\n rowSpan={this.rowspan}\n >\n <div\n class={{\n 'spw-table-header__content': true,\n 'spw-table-header__content--is-sorted': this.isSorted,\n }}\n >\n <slot />\n <div class=\"spw-table-header__icons\">\n <slot name=\"filters\"></slot>\n {(this.tooltipTitle || this.tooltipText) && (\n <spw-tooltip tooltip-title={this.tooltipTitle} tooltip-text={this.tooltipText}>\n <spw-icon variant=\"fa-regular\" icon=\"fa-circle-question\"></spw-icon>\n </spw-tooltip>\n )}\n {this.sortable && (\n <spw-icon\n class=\"spw-table-header__sort-icon\"\n icon={this.isSorted ? (this.sortDirection === 'asc' ? 'fa-arrow-up-short-wide' : 'fa-arrow-down-wide-short') : 'fa-arrow-up-arrow-down'}\n ></spw-icon>\n )}\n </div>\n </div>\n </th>\n );\n }\n}\n"],"names":[],"mappings":";;AAAA,MAAM,iBAAiB,GAAG,6uJAA6uJ;;MCO1vJ,cAAc,GAAA,MAAA;AAL3B,IAAA,WAAA,CAAA,OAAA,EAAA;;;;AAaU,QAAA,IAAa,CAAA,aAAA,GAAa,KAAK;;AAE/B,QAAA,IAAS,CAAA,SAAA,GAAiC,MAAM;;AAEhD,QAAA,IAAa,CAAA,aAAA,GAAiC,KAAK;;AAEnD,QAAA,IAAO,CAAA,OAAA,GAAwB,QAAQ;;AAIvC,QAAA,IAAQ,CAAA,QAAA,GAAa,KAAK;;AAI1B,QAAA,IAAQ,CAAA,QAAA,GAAa,KAAK;AAQ1B,QAAA,IAAA,CAAA,WAAW,GAAG,CAAC,KAAiB,KAAI;YAC1C,IAAK,KAAK,CAAC,MAAsB,CAAC,OAAO,CAAC,kBAAkB,CAAC,EAAE;gBAC7D,KAAK,CAAC,eAAe,EAAE;gBACvB;;AAEF,YAAA,IAAI,IAAI,CAAC,QAAQ,EAAE;gBACjB,IAAI,CAAC,cAAc,CAAC,IAAI,CAAC,IAAI,CAAC,QAAQ,CAAC;;AAE3C,SAAC;AAkDF;AAhDC,IAAA,IAAY,YAAY,GAAA;QACtB,OAAO;AACL,YAAA,kBAAkB,EAAE,IAAI;YACxB,4BAA4B,EAAE,IAAI,CAAC,QAAQ;YAC3C,6BAA6B,EAAE,IAAI,CAAC,QAAQ;YAC5C,+BAA+B,EAAE,CAAC,EAAE,IAAI,CAAC,YAAY,IAAI,IAAI,CAAC,WAAW,CAAC;AAC1E,YAAA,CAAC,6BAA6B,IAAI,CAAC,OAAO,CAAE,CAAA,GAAG,IAAI;AACnD,YAAA,CAAC,gCAAgC,IAAI,CAAC,SAAS,CAAE,CAAA,GAAG,IAAI;AACxD,YAAA,CAAC,oCAAoC,IAAI,CAAC,aAAa,CAAE,CAAA,GAAG,IAAI;SACjE;;IAGH,MAAM,GAAA;AACJ,QAAA,QACE,wEACa,IAAI,CAAC,QAAQ,GAAG,IAAI,CAAC,aAAa,GAAG,MAAM,EACtD,OAAO,EAAE,IAAI,CAAC,WAAW,EACzB,KAAK,EAAE,IAAI,CAAC,YAAY,EACxB,OAAO,EAAE,IAAI,CAAC,OAAO,EACrB,OAAO,EAAE,IAAI,CAAC,OAAO,EACrB,IAAI,EAAC,MAAM,EACX,OAAO,EAAE,IAAI,CAAC,OAAO,EAAA,EAErB,CAAA,CAAA,KAAA,EAAA,EAAA,GAAA,EAAA,0CAAA,EACE,KAAK,EAAE;AACL,gBAAA,2BAA2B,EAAE,IAAI;gBACjC,sCAAsC,EAAE,IAAI,CAAC,QAAQ;AACtD,aAAA,EAAA,EAED,CAAQ,CAAA,MAAA,EAAA,EAAA,GAAA,EAAA,0CAAA,EAAA,CAAA,EACR,CAAK,CAAA,KAAA,EAAA,EAAA,GAAA,EAAA,0CAAA,EAAA,KAAK,EAAC,yBAAyB,EAAA,EAClC,CAAM,CAAA,MAAA,EAAA,EAAA,GAAA,EAAA,0CAAA,EAAA,IAAI,EAAC,SAAS,EAAQ,CAAA,EAC3B,CAAC,IAAI,CAAC,YAAY,IAAI,IAAI,CAAC,WAAW,MACrC,qFAA4B,IAAI,CAAC,YAAY,EAAgB,cAAA,EAAA,IAAI,CAAC,WAAW,EAAA,EAC3E,CAAU,CAAA,UAAA,EAAA,EAAA,GAAA,EAAA,0CAAA,EAAA,OAAO,EAAC,YAAY,EAAC,IAAI,EAAC,oBAAoB,EAAY,CAAA,CACxD,CACf,EACA,IAAI,CAAC,QAAQ,KACZ,CACE,CAAA,UAAA,EAAA,EAAA,GAAA,EAAA,0CAAA,EAAA,KAAK,EAAC,6BAA6B,EACnC,IAAI,EAAE,IAAI,CAAC,QAAQ,IAAI,IAAI,CAAC,aAAa,KAAK,KAAK,GAAG,wBAAwB,GAAG,0BAA0B,IAAI,wBAAwB,EAC7H,CAAA,CACb,CACG,CACF,CACH;;;;;;;"}
1
+ {"version":3,"file":"spw-table-header.entry.js","sources":["src/components/spw-table/spw-table-header/spw-table-header.scss?tag=spw-table-header&encapsulation=shadow","src/components/spw-table/spw-table-header/spw-table-header.tsx"],"sourcesContent":[":host {\n display: contents;\n}\n\n:host(.--is-sticky) {\n .spw-table-header {\n position: sticky;\n top: 0;\n z-index: 50;\n }\n}\n\n.spw-table-header {\n border: 1px solid var(--spw-color-themes-grey-grey-300);\n color: var(--spw-color-themes-grey-grey-800);\n font-size: 14px;\n text-align: left;\n font-weight: 700;\n transition: all 0.2s linear;\n background: var(--spw-color-themes-grey-grey-200);\n white-space: nowrap;\n border-top: none !important;\n border-bottom: none !important;\n box-shadow:\n inset 0 1px 0 var(--spw-color-themes-grey-grey-300),\n inset 0 -1px 0 var(--spw-color-themes-grey-grey-300);\n\n background-clip: padding-box;\n\n &--text-align-left {\n text-align: left;\n }\n &--text-align-center {\n text-align: center;\n }\n &--text-align-right {\n text-align: right;\n }\n &--vertical-align-top {\n vertical-align: top;\n }\n &--vertical-align-bottom {\n vertical-align: bottom;\n }\n &--vertical-align-middle {\n vertical-align: middle;\n }\n\n &--has-tooltip {\n .spw-table-header__content {\n display: flex;\n gap: 16px;\n justify-content: space-between;\n align-items: center;\n spw-icon {\n color: var(--spw-color-themes-grey-grey-500);\n &:hover {\n color: var(--spw-color-themes-grey-grey-900);\n }\n }\n }\n }\n &--sortable {\n user-select: none;\n cursor: pointer;\n &:hover {\n background: var(--spw-color-themes-grey-grey-300);\n }\n .spw-table-header__content {\n display: flex;\n gap: 16px;\n justify-content: space-between;\n align-items: center;\n spw-icon {\n color: var(--spw-color-themes-grey-grey-500);\n &:hover {\n color: var(--spw-color-themes-grey-grey-900);\n }\n }\n &--is-sorted {\n .spw-table-header__sort-icon {\n color: var(--spw-color-themes-grey-grey-900);\n }\n }\n }\n }\n &__sort-icons {\n display: flex;\n gap: 0;\n }\n &--padding-small {\n padding: 8px;\n }\n &--padding-medium {\n padding: 16px;\n }\n &__icons {\n display: flex;\n gap: 8px;\n align-items: center;\n color: var(--spw-color-themes-grey-grey-500);\n }\n ::slotted(spw-checkbox) {\n --spw-ds-checkbox-checked-color: #000;\n }\n\n &--sticky {\n position: sticky;\n background-color: var(--spw-color-themes-grey-grey-200);\n\n &::after {\n content: '';\n position: absolute;\n top: 0;\n bottom: -1px;\n width: 8px;\n pointer-events: none;\n transition: opacity 0.2s;\n }\n\n &-start::after {\n right: -8px;\n box-shadow: inset 8px 0 8px -8px rgba(0, 0, 0, 0.15);\n }\n\n &-end::after {\n left: -8px;\n box-shadow: inset -8px 0 8px -8px rgba(0, 0, 0, 0.15);\n }\n }\n}\n","import { Component, Prop, Event, EventEmitter, h } from '@stencil/core';\n\n@Component({\n tag: 'spw-table-header',\n styleUrl: 'spw-table-header.scss',\n shadow: true,\n})\nexport class SpwTableHeader {\n /** Définit un colspan pour la cellule (à appliquer sur spw-table-cell ou spw-table-header) */\n @Prop() colspan?: HTMLTableCellElement['colSpan'];\n /** Définit un header relationnel pour la cellule, à des fins d'accessibilité (à appliquer sur spw-table-cell ou spw-table-header) */\n @Prop() headers?: HTMLTableCellElement['headers'];\n /** Définit un rowspan pour la cellule (à appliquer sur spw-table-cell ou spw-table-header) */\n @Prop() rowspan?: HTMLTableCellElement['rowSpan'];\n /** Définit un style visuel qui met en avant la cellule (à appliquer sur spw-table-cell ou spw-table-header) */\n @Prop() isHighlighted?: boolean = false;\n /** Définit un alignement de texte pour la cellule (à appliquer sur spw-table-cell ou spw-table-header) */\n @Prop() textAlign?: 'center' | 'left' | 'right' = 'left';\n /** Définit un alignement vertical pour la cellule (à appliquer sur spw-table-cell ou spw-table-header) */\n @Prop() verticalAlign?: 'top' | 'bottom' | 'middle' = 'top';\n /** Définit le padding pour la cellule (à appliquer sur spw-table-cell ou spw-table-header) */\n @Prop() padding?: 'small' | 'medium' = 'medium';\n /** Définit id pour la colonne (en cas de tri) (à appliquer sur spw-table-header) */\n @Prop() columnId: string;\n /** Définit si la colonne est triable (à appliquer sur spw-table-header) */\n @Prop() sortable?: boolean = false;\n /** Définit la direction pour le tri sur la colonne (ascendant ou descendant) (à appliquer sur spw-table-header) */\n @Prop() sortDirection?: 'asc' | 'desc';\n /** Définit si la colonne est triée ou non (à appliquer sur spw-table-header) */\n @Prop() isSorted?: boolean = false;\n /** Définit un titre pour le tooltip (à appliquer sur spw-table-header) */\n @Prop() tooltipTitle?: string;\n /** Définit un contenu pour le tooltip (à appliquer sur spw-table-header) */\n @Prop() tooltipText?: string;\n /** Rend la cellule sticky lors du défilement horizontal (à appliquer sur spw-table-header ou spw-table-cell) */\n @Prop() sticky?: boolean = false;\n /** Position du sticky : 'start' (left: 0) ou 'end' (right: 0) (à appliquer sur spw-table-header ou spw-table-cell) */\n @Prop() stickyPosition?: 'start' | 'end' = 'start';\n /** Décalage en pixels pour le sticky (utile pour empiler plusieurs colonnes sticky) (à appliquer sur spw-table-header ou spw-table-cell) */\n @Prop() stickyOffset?: number = 0;\n\n @Event() spwHeaderClick: EventEmitter<string>;\n\n private handleClick = (event: MouseEvent) => {\n if ((event.target as HTMLElement).closest('[slot=\"filters\"]')) {\n event.stopPropagation();\n return;\n }\n if (this.sortable) {\n this.spwHeaderClick.emit(this.columnId);\n }\n };\n\n private get elementClass(): { [className: string]: boolean } {\n return {\n 'spw-table-header': true,\n 'spw-table-header--sortable': this.sortable,\n 'spw-table-header--is-sorted': this.isSorted,\n 'spw-table-header--has-tooltip': !!(this.tooltipTitle || this.tooltipText),\n [`spw-table-header--padding-${this.padding}`]: true,\n [`spw-table-header--text-align-${this.textAlign}`]: true,\n [`spw-table-header--vertical-align-${this.verticalAlign}`]: true,\n 'spw-table-header--sticky': this.sticky,\n [`spw-table-header--sticky-${this.stickyPosition}`]: this.sticky,\n };\n }\n\n render() {\n const attrs: { [key: string]: any } = {\n 'aria-sort': this.isSorted ? this.sortDirection : 'none',\n 'onClick': this.handleClick,\n 'class': this.elementClass,\n 'colSpan': this.colspan,\n 'headers': this.headers,\n 'part': 'cell',\n 'rowSpan': this.rowspan,\n };\n\n if (this.sticky) {\n const stickyStyles: { [key: string]: string } = {\n position: 'sticky',\n zIndex: '60',\n };\n\n if (this.stickyPosition === 'start') {\n stickyStyles.left = `${this.stickyOffset}px`;\n } else {\n stickyStyles.right = `${this.stickyOffset}px`;\n }\n\n attrs.style = stickyStyles;\n }\n\n return (\n <th {...attrs}>\n <div\n class={{\n 'spw-table-header__content': true,\n 'spw-table-header__content--is-sorted': this.isSorted,\n }}\n >\n <slot />\n <div class=\"spw-table-header__icons\">\n <slot name=\"filters\"></slot>\n {(this.tooltipTitle || this.tooltipText) && (\n <spw-tooltip tooltip-title={this.tooltipTitle} tooltip-text={this.tooltipText}>\n <spw-icon variant=\"fa-regular\" icon=\"fa-circle-question\"></spw-icon>\n </spw-tooltip>\n )}\n {this.sortable && (\n <spw-icon\n class=\"spw-table-header__sort-icon\"\n icon={this.isSorted ? (this.sortDirection === 'asc' ? 'fa-arrow-up-short-wide' : 'fa-arrow-down-wide-short') : 'fa-arrow-up-arrow-down'}\n ></spw-icon>\n )}\n </div>\n </div>\n </th>\n );\n }\n}\n"],"names":[],"mappings":"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"}
@@ -1,6 +1,6 @@
1
- import { r as registerInstance, h, H as Host } from './index-CvfVJV8a.js';
1
+ import { r as registerInstance, h, H as Host, g as getElement } from './index-CvfVJV8a.js';
2
2
 
3
- const spwTableRowCss = "/*! normalize.css v8.0.1 | MIT License | github.com/necolas/normalize.css */html{-webkit-text-size-adjust:100%;line-height:1.3}h1,h2,h3,h4,h5,h6,li,p,ul{margin:0;padding:0}ul{list-style:none}:host{-webkit-text-size-adjust:100%;box-sizing:border-box;display:contents;font-size:100%;line-height:1.3}:host *,:host :after,:host :before{box-sizing:inherit;font-family:Nunito Sans}body{margin:0}main{display:block}h1{font-size:2em;margin:.67em 0}hr{box-sizing:content-box;height:0;overflow:visible}pre{font-family:monospace,monospace;font-size:1em}a{background-color:transparent}abbr[title]{border-bottom:none;text-decoration:underline;-webkit-text-decoration:underline dotted;text-decoration:underline dotted}b,strong{font-weight:bolder}code,kbd,samp{font-family:monospace,monospace;font-size:1em}small{font-size:80%}sub,sup{font-size:75%;line-height:0;position:relative;vertical-align:baseline}sub{bottom:-.25em}sup{top:-.5em}img{border-style:none}button,input,optgroup,select,textarea{font-family:inherit;font-size:100%;line-height:1.15;margin:0}button,input{overflow:visible}button,select{text-transform:none}[type=button],[type=reset],[type=submit],button{-webkit-appearance:button}[type=button]::-moz-focus-inner,[type=reset]::-moz-focus-inner,[type=submit]::-moz-focus-inner,button::-moz-focus-inner{border-style:none;padding:0}[type=button]:-moz-focusring,[type=reset]:-moz-focusring,[type=submit]:-moz-focusring,button:-moz-focusring{outline:1px dotted ButtonText}fieldset{padding:.35em .75em .625em}legend{box-sizing:border-box;color:inherit;display:table;max-width:100%;padding:0;white-space:normal}progress{vertical-align:baseline}textarea{overflow:auto}[type=checkbox],[type=radio]{box-sizing:border-box;padding:0}[type=number]::-webkit-inner-spin-button,[type=number]::-webkit-outer-spin-button{height:auto}[type=search]{-webkit-appearance:textfield;outline-offset:-2px}[type=search]::-webkit-search-decoration{-webkit-appearance:none}::-webkit-file-upload-button{-webkit-appearance:button;font:inherit}details{display:block}summary{display:list-item}[hidden],template{display:none}:root{--spw-ds-container-xl:1200px;--spw-ds-container-lg:1024px;--spw-ds-container-md:768px;--spw-ds-container-sm:640px}.spw-ds-container{margin-left:auto;margin-right:auto;padding-left:16px;padding-right:16px;width:100%}@media (min-width:460px){.spw-ds-container{max-width:var(--spw-ds-container-sm)}}@media (min-width:768px){.spw-ds-container{max-width:var(--spw-ds-container-md)}}@media (min-width:1024px){.spw-ds-container{max-width:var(--spw-ds-container-lg)}}@media (min-width:1350px){.spw-ds-container{max-width:var(--spw-ds-container-xl)}}:host([data-row-style=odd]) .spw-table-row{background-color:var(--spw-color-themes-grey-grey-50)}.spw-table-row{position:relative}.spw-table-row--disabled{cursor:not-allowed;opacity:.3;pointer-events:none}.spw-table-row--selected{background-color:var(--spw-color-themes-blue-blue-50);box-shadow:inset 3px 0 0 var(--spw-color-themes-blue-blue-500)}";
3
+ const spwTableRowCss = "/*! normalize.css v8.0.1 | MIT License | github.com/necolas/normalize.css */html{-webkit-text-size-adjust:100%;line-height:1.3}h1,h2,h3,h4,h5,h6,li,p,ul{margin:0;padding:0}ul{list-style:none}:host{-webkit-text-size-adjust:100%;box-sizing:border-box;display:contents;font-size:100%;line-height:1.3}:host *,:host :after,:host :before{box-sizing:inherit;font-family:Nunito Sans}body{margin:0}main{display:block}h1{font-size:2em;margin:.67em 0}hr{box-sizing:content-box;height:0;overflow:visible}pre{font-family:monospace,monospace;font-size:1em}a{background-color:transparent}abbr[title]{border-bottom:none;text-decoration:underline;-webkit-text-decoration:underline dotted;text-decoration:underline dotted}b,strong{font-weight:bolder}code,kbd,samp{font-family:monospace,monospace;font-size:1em}small{font-size:80%}sub,sup{font-size:75%;line-height:0;position:relative;vertical-align:baseline}sub{bottom:-.25em}sup{top:-.5em}img{border-style:none}button,input,optgroup,select,textarea{font-family:inherit;font-size:100%;line-height:1.15;margin:0}button,input{overflow:visible}button,select{text-transform:none}[type=button],[type=reset],[type=submit],button{-webkit-appearance:button}[type=button]::-moz-focus-inner,[type=reset]::-moz-focus-inner,[type=submit]::-moz-focus-inner,button::-moz-focus-inner{border-style:none;padding:0}[type=button]:-moz-focusring,[type=reset]:-moz-focusring,[type=submit]:-moz-focusring,button:-moz-focusring{outline:1px dotted ButtonText}fieldset{padding:.35em .75em .625em}legend{box-sizing:border-box;color:inherit;display:table;max-width:100%;padding:0;white-space:normal}progress{vertical-align:baseline}textarea{overflow:auto}[type=checkbox],[type=radio]{box-sizing:border-box;padding:0}[type=number]::-webkit-inner-spin-button,[type=number]::-webkit-outer-spin-button{height:auto}[type=search]{-webkit-appearance:textfield;outline-offset:-2px}[type=search]::-webkit-search-decoration{-webkit-appearance:none}::-webkit-file-upload-button{-webkit-appearance:button;font:inherit}details{display:block}summary{display:list-item}[hidden],template{display:none}:root{--spw-ds-container-xl:1200px;--spw-ds-container-lg:1024px;--spw-ds-container-md:768px;--spw-ds-container-sm:640px}.spw-ds-container{margin-left:auto;margin-right:auto;padding-left:16px;padding-right:16px;width:100%}@media (min-width:460px){.spw-ds-container{max-width:var(--spw-ds-container-sm)}}@media (min-width:768px){.spw-ds-container{max-width:var(--spw-ds-container-md)}}@media (min-width:1024px){.spw-ds-container{max-width:var(--spw-ds-container-lg)}}@media (min-width:1350px){.spw-ds-container{max-width:var(--spw-ds-container-xl)}}:host([data-row-style=odd]) .spw-table-row{background-color:var(--spw-color-themes-grey-grey-50)}.spw-table-row{position:relative}.spw-table-row--disabled{background:#fff}.spw-table-row--selected{background-color:var(--spw-color-themes-blue-blue-50);box-shadow:inset 3px 0 0 var(--spw-color-themes-blue-blue-500)}";
4
4
 
5
5
  const SpwTableRow = class {
6
6
  constructor(hostRef) {
@@ -8,6 +8,33 @@ const SpwTableRow = class {
8
8
  /** Permet de changer le state du spw-table-row */
9
9
  this.state = 'default';
10
10
  }
11
+ componentDidLoad() {
12
+ this.applyPropsToChildren();
13
+ }
14
+ slotChanged() {
15
+ this.applyPropsToChildren();
16
+ }
17
+ onStateChange() {
18
+ this.applyPropsToChildren();
19
+ }
20
+ onPaddingChange() {
21
+ this.applyPropsToChildren();
22
+ }
23
+ applyPropsToChildren() {
24
+ requestAnimationFrame(() => {
25
+ const cells = this.el.querySelectorAll('spw-table-cell, spw-table-header');
26
+ const stateClass = `--${this.state}`;
27
+ cells.forEach(cell => {
28
+ cell.classList.remove('--default', '--selected', '--disabled');
29
+ if (this.state !== 'default') {
30
+ cell.classList.add(stateClass);
31
+ }
32
+ if (this.padding && !cell.hasAttribute('padding')) {
33
+ cell.padding = this.padding;
34
+ }
35
+ });
36
+ });
37
+ }
11
38
  get elementClass() {
12
39
  return {
13
40
  'spw-table-row': true,
@@ -15,8 +42,13 @@ const SpwTableRow = class {
15
42
  };
16
43
  }
17
44
  render() {
18
- return (h(Host, { key: '8bb4a99a8b04cc7ace91667f02b19728c297f9a0', part: "row" }, h("tr", { key: '6e97f682648e12ef2f570cce380259e8d45a7f7c', class: this.elementClass, part: "row" }, h("slot", { key: 'b1abbcd9b1c6f2a39cb2e6c4284f5aff22310dde' }))));
45
+ return (h(Host, { key: 'a92e7619db6ca66332e5680add2f4f074ddb5db5', part: "row" }, h("tr", { key: '198d8027ea3cd377444f476e0c77d35de50c22c2', class: this.elementClass, part: "row" }, h("slot", { key: '667fb895983eff3077f36da1ac0d31756c8dd691' }))));
19
46
  }
47
+ get el() { return getElement(this); }
48
+ static get watchers() { return {
49
+ "state": ["onStateChange"],
50
+ "padding": ["onPaddingChange"]
51
+ }; }
20
52
  };
21
53
  SpwTableRow.style = spwTableRowCss;
22
54
 
@@ -1 +1 @@
1
- {"version":3,"file":"spw-table-row.entry.js","sources":["src/components/spw-table/spw-table-row/spw-table-row.scss?tag=spw-table-row&encapsulation=shadow","src/components/spw-table/spw-table-row/spw-table-row.tsx"],"sourcesContent":[":host {\n display: contents;\n}\n\n:host([data-row-style='odd']) {\n .spw-table-row {\n background-color: var(--spw-color-themes-grey-grey-50);\n }\n}\n\n.spw-table-row {\n position: relative;\n &--disabled {\n opacity: 0.3;\n pointer-events: none;\n cursor: not-allowed;\n }\n &--selected {\n background-color: var(--spw-color-themes-blue-blue-50);\n box-shadow: inset 3px 0 0 var(--spw-color-themes-blue-blue-500);\n }\n}\n","import { Component, Host, Prop, h } from '@stencil/core';\n\n@Component({\n tag: 'spw-table-row',\n styleUrl: 'spw-table-row.scss',\n shadow: true,\n})\nexport class SpwTableRow {\n /** Permet de changer le state du spw-table-row */\n @Prop() state?: 'default' | 'selected' | 'disabled' = 'default';\n\n private get elementClass(): { [className: string]: boolean } {\n return {\n 'spw-table-row': true,\n [`spw-table-row--${this.state}`]: true,\n };\n }\n\n render() {\n return (\n <Host part=\"row\">\n <tr class={this.elementClass} part=\"row\">\n <slot />\n </tr>\n </Host>\n );\n }\n}\n"],"names":[],"mappings":";;AAAA,MAAM,cAAc,GAAG,06FAA06F;;MCOp7F,WAAW,GAAA,MAAA;AALxB,IAAA,WAAA,CAAA,OAAA,EAAA;;;AAOU,QAAA,IAAK,CAAA,KAAA,GAAyC,SAAS;AAkBhE;AAhBC,IAAA,IAAY,YAAY,GAAA;QACtB,OAAO;AACL,YAAA,eAAe,EAAE,IAAI;AACrB,YAAA,CAAC,kBAAkB,IAAI,CAAC,KAAK,CAAE,CAAA,GAAG,IAAI;SACvC;;IAGH,MAAM,GAAA;QACJ,QACE,CAAC,CAAA,IAAI,EAAC,EAAA,GAAA,EAAA,0CAAA,EAAA,IAAI,EAAC,KAAK,EAAA,EACd,CAAI,CAAA,IAAA,EAAA,EAAA,GAAA,EAAA,0CAAA,EAAA,KAAK,EAAE,IAAI,CAAC,YAAY,EAAE,IAAI,EAAC,KAAK,EAAA,EACtC,CAAQ,CAAA,MAAA,EAAA,EAAA,GAAA,EAAA,0CAAA,EAAA,CAAA,CACL,CACA;;;;;;;"}
1
+ {"version":3,"file":"spw-table-row.entry.js","sources":["src/components/spw-table/spw-table-row/spw-table-row.scss?tag=spw-table-row&encapsulation=shadow","src/components/spw-table/spw-table-row/spw-table-row.tsx"],"sourcesContent":[":host {\n display: contents;\n}\n\n:host([data-row-style='odd']) {\n .spw-table-row {\n background-color: var(--spw-color-themes-grey-grey-50);\n }\n}\n\n.spw-table-row {\n position: relative;\n\n &--disabled {\n background: white;\n }\n &--selected {\n background-color: var(--spw-color-themes-blue-blue-50);\n box-shadow: inset 3px 0 0 var(--spw-color-themes-blue-blue-500);\n }\n}\n","import { Component, Host, Prop, Element, Listen, Watch, h } from '@stencil/core';\n\n@Component({\n tag: 'spw-table-row',\n styleUrl: 'spw-table-row.scss',\n shadow: true,\n})\nexport class SpwTableRow {\n @Element() el: HTMLSpwTableRowElement;\n\n /** Permet de changer le state du spw-table-row */\n @Prop() state?: 'default' | 'selected' | 'disabled' = 'default';\n /** Définit le padding pour toutes les cellules de la row */\n @Prop() padding?: 'small' | 'medium';\n\n componentDidLoad() {\n this.applyPropsToChildren();\n }\n\n @Listen('slotchange')\n slotChanged() {\n this.applyPropsToChildren();\n }\n\n @Watch('state')\n onStateChange() {\n this.applyPropsToChildren();\n }\n\n @Watch('padding')\n onPaddingChange() {\n this.applyPropsToChildren();\n }\n\n private applyPropsToChildren() {\n requestAnimationFrame(() => {\n const cells = this.el.querySelectorAll('spw-table-cell, spw-table-header');\n const stateClass = `--${this.state}`;\n\n cells.forEach(cell => {\n cell.classList.remove('--default', '--selected', '--disabled');\n if (this.state !== 'default') {\n cell.classList.add(stateClass);\n }\n\n if (this.padding && !cell.hasAttribute('padding')) {\n (cell as any).padding = this.padding;\n }\n });\n });\n }\n\n private get elementClass(): { [className: string]: boolean } {\n return {\n 'spw-table-row': true,\n [`spw-table-row--${this.state}`]: true,\n };\n }\n\n render() {\n return (\n <Host part=\"row\">\n <tr class={this.elementClass} part=\"row\">\n <slot />\n </tr>\n </Host>\n );\n }\n}\n"],"names":[],"mappings":";;AAAA,MAAM,cAAc,GAAG,w4FAAw4F;;MCOl5F,WAAW,GAAA,MAAA;AALxB,IAAA,WAAA,CAAA,OAAA,EAAA;;;AASU,QAAA,IAAK,CAAA,KAAA,GAAyC,SAAS;AAyDhE;IArDC,gBAAgB,GAAA;QACd,IAAI,CAAC,oBAAoB,EAAE;;IAI7B,WAAW,GAAA;QACT,IAAI,CAAC,oBAAoB,EAAE;;IAI7B,aAAa,GAAA;QACX,IAAI,CAAC,oBAAoB,EAAE;;IAI7B,eAAe,GAAA;QACb,IAAI,CAAC,oBAAoB,EAAE;;IAGrB,oBAAoB,GAAA;QAC1B,qBAAqB,CAAC,MAAK;YACzB,MAAM,KAAK,GAAG,IAAI,CAAC,EAAE,CAAC,gBAAgB,CAAC,kCAAkC,CAAC;AAC1E,YAAA,MAAM,UAAU,GAAG,CAAA,EAAA,EAAK,IAAI,CAAC,KAAK,EAAE;AAEpC,YAAA,KAAK,CAAC,OAAO,CAAC,IAAI,IAAG;gBACnB,IAAI,CAAC,SAAS,CAAC,MAAM,CAAC,WAAW,EAAE,YAAY,EAAE,YAAY,CAAC;AAC9D,gBAAA,IAAI,IAAI,CAAC,KAAK,KAAK,SAAS,EAAE;AAC5B,oBAAA,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC,UAAU,CAAC;;AAGhC,gBAAA,IAAI,IAAI,CAAC,OAAO,IAAI,CAAC,IAAI,CAAC,YAAY,CAAC,SAAS,CAAC,EAAE;AAChD,oBAAA,IAAY,CAAC,OAAO,GAAG,IAAI,CAAC,OAAO;;AAExC,aAAC,CAAC;AACJ,SAAC,CAAC;;AAGJ,IAAA,IAAY,YAAY,GAAA;QACtB,OAAO;AACL,YAAA,eAAe,EAAE,IAAI;AACrB,YAAA,CAAC,kBAAkB,IAAI,CAAC,KAAK,CAAE,CAAA,GAAG,IAAI;SACvC;;IAGH,MAAM,GAAA;QACJ,QACE,CAAC,CAAA,IAAI,EAAC,EAAA,GAAA,EAAA,0CAAA,EAAA,IAAI,EAAC,KAAK,EAAA,EACd,CAAI,CAAA,IAAA,EAAA,EAAA,GAAA,EAAA,0CAAA,EAAA,KAAK,EAAE,IAAI,CAAC,YAAY,EAAE,IAAI,EAAC,KAAK,EAAA,EACtC,CAAQ,CAAA,MAAA,EAAA,EAAA,GAAA,EAAA,0CAAA,EAAA,CAAA,CACL,CACA;;;;;;;;;;;;"}
@@ -23,14 +23,19 @@ const SpwTable = class {
23
23
  this.updateHeadersSortState(newSort);
24
24
  }
25
25
  }
26
+ onIsStickyChange() {
27
+ this.applyStickyToChildren();
28
+ }
26
29
  componentDidLoad() {
27
30
  var _a;
28
31
  this.updateZebra();
32
+ this.applyStickyToChildren();
29
33
  const slot = (_a = this.el.shadowRoot) === null || _a === void 0 ? void 0 : _a.querySelector('slot');
30
34
  if (slot) {
31
35
  slot.addEventListener('slotchange', () => {
32
36
  this.setupHeaderCheckboxListener();
33
37
  this.updateMasterCheckboxState();
38
+ this.applyStickyToChildren();
34
39
  });
35
40
  }
36
41
  this.setupHeaderCheckboxListener();
@@ -223,6 +228,23 @@ const SpwTable = class {
223
228
  }
224
229
  }
225
230
  }
231
+ applyStickyToChildren() {
232
+ requestAnimationFrame(() => {
233
+ const stickyClass = '--is-sticky';
234
+ const headers = this.el.querySelectorAll('spw-table-header');
235
+ const cells = this.el.querySelectorAll('spw-table-cell');
236
+ const footer = this.el.querySelector('spw-table-footer');
237
+ if (this.isSticky) {
238
+ headers.forEach(header => header.classList.add(stickyClass));
239
+ footer === null || footer === void 0 ? void 0 : footer.classList.add(stickyClass);
240
+ }
241
+ else {
242
+ headers.forEach(header => header.classList.remove(stickyClass));
243
+ cells.forEach(cell => cell.classList.remove(stickyClass));
244
+ footer === null || footer === void 0 ? void 0 : footer.classList.remove(stickyClass);
245
+ }
246
+ });
247
+ }
226
248
  sortRows(columnId, direction) {
227
249
  var _a;
228
250
  const body = (_a = this.el.shadowRoot
@@ -273,14 +295,15 @@ const SpwTable = class {
273
295
  };
274
296
  }
275
297
  render() {
276
- return (h(Host, { key: '1742538080b1ac32644a8d00b9a25779e72ee08e', style: {
298
+ return (h(Host, { key: '7cc259ed7e17128348ebd7a6757d48b2d0114e0a', style: {
277
299
  '--spw-table-max-height': this.formatSize(this.maxHeight),
278
300
  '--spw-table-min-width': this.formatSize(this.minWidth),
279
- } }, h("div", { key: '7d15c468ce94b645b2a8f040617b88151df1b615', class: "spw-table-container" }, h("table", { key: 'bc98737e0850bfedc5b3a83b4d8c3e5c33a30256', part: "table", class: this.elementClass, role: "table", "aria-label": this.accAriaLabel }, h("slot", { key: 'b075fc150e453269afbc585dea5304c6e795517d' })))));
301
+ } }, h("div", { key: 'b5dac474e57841c60312f92045859a1ff0d741c7', class: "spw-table-container" }, h("table", { key: '67790f5adbd07b77c80be97b03406ca6d8296d13', part: "table", class: this.elementClass, role: "table", "aria-label": this.accAriaLabel }, h("slot", { key: '208be3ca21332261306114673e756ca47bc0582d' })))));
280
302
  }
281
303
  get el() { return getElement(this); }
282
304
  static get watchers() { return {
283
- "currentSort": ["onCurrentSortChange"]
305
+ "currentSort": ["onCurrentSortChange"],
306
+ "isSticky": ["onIsStickyChange"]
284
307
  }; }
285
308
  };
286
309
  SpwTable.style = spwTableCss;
@@ -1 +1 @@
1
- {"version":3,"file":"spw-table.entry.js","sources":["src/components/spw-table/spw-table.scss?tag=spw-table&encapsulation=shadow","src/components/spw-table/spw-table.tsx"],"sourcesContent":[":host {\n display: block;\n position: relative;\n}\n\n%highlight {\n font-weight: 700;\n background: var(--spw-color-themes-grey-grey-100);\n}\n\n.spw-table-container {\n width: 100%;\n overflow-x: auto;\n overflow-y: auto;\n max-height: var(--spw-table-max-height);\n border-radius: 4px;\n outline: 1px solid var(--spw-color-themes-grey-grey-300);\n outline-offset: -1px;\n position: relative;\n @include scrollbars(var(--spw-color-themes-grey-grey-400), var(--spw-ds-white));\n}\n\n.spw-table {\n width: 100%;\n border-collapse: collapse;\n min-width: var(--spw-table-min-width);\n border-radius: 4px;\n position: relative;\n &--layout-fixed {\n table-layout: fixed;\n }\n &--layout-auto {\n table-layout: auto;\n }\n}\n","import { Component, Element, Event, Listen, EventEmitter, Host, Prop, Watch, h } from '@stencil/core';\n\nexport interface SortEvent {\n column: string;\n direction: 'asc' | 'desc';\n}\n\n@Component({\n tag: 'spw-table',\n styleUrl: 'spw-table.scss',\n shadow: true,\n})\nexport class SpwTable {\n @Element() el: HTMLSpwTableElement;\n\n /** Propriété pour l'aria-label, à des fins d'accessibilité */\n @Prop() accAriaLabel?: string;\n /** Si le header du tableau doit être sticky ou non */\n @Prop() isSticky?: boolean = false;\n /** Si défini, apparition d'une scrollbar verticale et max-height */\n @Prop() maxHeight?: string;\n /** Si défini, apparition d'une scrollbar horizontale et max-width */\n @Prop() minWidth?: string = '600';\n /** Permet de définir le table-layout (auto ou fixed) */\n @Prop() tableLayout?: 'auto' | 'fixed' = 'auto';\n /** Définit un background de couleur différent une ligne sur 2 */\n @Prop() isZebra?: boolean = false;\n /** Désactive le tri natif pour permettre l'utilisation d'une fonction de tri personnalisée */\n @Prop() disableSort?: boolean = false;\n /** État du tri actuel (colonne et direction). Peut être défini de l'extérieur pour un tri personnalisé */\n @Prop({ mutable: true }) currentSort?: SortEvent;\n\n @Event() spwSort: EventEmitter<SortEvent>;\n\n private mutationObserver?: MutationObserver;\n\n @Watch('currentSort')\n onCurrentSortChange(newSort: SortEvent | undefined) {\n if (newSort) {\n this.updateHeadersSortState(newSort);\n }\n }\n\n componentDidLoad() {\n this.updateZebra();\n const slot = this.el.shadowRoot?.querySelector('slot');\n if (slot) {\n slot.addEventListener('slotchange', () => {\n this.setupHeaderCheckboxListener();\n this.updateMasterCheckboxState();\n });\n }\n this.setupHeaderCheckboxListener();\n this.setupBodyCheckboxListener();\n this.setupTableBodyObserver();\n setTimeout(() => {\n this.updateMasterCheckboxState();\n }, 0);\n }\n\n disconnectedCallback() {\n if (this.mutationObserver) {\n this.mutationObserver.disconnect();\n }\n }\n\n private setupTableBodyObserver() {\n const body = Array.from(this.el.children).find(el => el.tagName.toLowerCase() === 'spw-table-body');\n if (!body) return;\n\n this.mutationObserver = new MutationObserver(() => {\n this.setupBodyCheckboxListener();\n setTimeout(() => {\n this.updateMasterCheckboxState();\n }, 0);\n });\n\n this.mutationObserver.observe(body, {\n childList: true,\n subtree: true,\n attributes: true,\n attributeFilter: ['checked', 'disabled'],\n });\n }\n\n private getMasterCheckboxColumnIndex(): number | null {\n const slot = this.el.shadowRoot?.querySelector('slot');\n if (!slot) return null;\n\n const assignedElements = slot.assignedElements({ flatten: true }) as HTMLElement[];\n const head = assignedElements.find(el => el.tagName.toLowerCase() === 'spw-table-head');\n if (!head) return null;\n\n const headerRow = head.querySelector('spw-table-row');\n if (!headerRow) return null;\n\n const headerCells = Array.from(headerRow.querySelectorAll('spw-table-header'));\n\n for (let i = 0; i < headerCells.length; i++) {\n if (headerCells[i].querySelector('spw-checkbox')) {\n return i;\n }\n }\n\n return null;\n }\n\n private isCheckboxDisabled(checkbox: any): boolean {\n return checkbox?.disabled === true || checkbox?.getAttribute('disabled') === 'true' || checkbox?.getAttribute('disabled') === '';\n }\n\n private updateMasterCheckboxState() {\n const columnIndex = this.getMasterCheckboxColumnIndex();\n if (columnIndex === null) return;\n\n const slot = this.el.shadowRoot?.querySelector('slot');\n const assignedElements = slot?.assignedElements({ flatten: true }) as HTMLElement[] | undefined;\n if (!assignedElements) return;\n\n const head = assignedElements.find(el => el.tagName.toLowerCase() === 'spw-table-head');\n const body = assignedElements.find(el => el.tagName.toLowerCase() === 'spw-table-body');\n if (!head || !body) return;\n\n const headerRow = head.querySelector('spw-table-row');\n const headerCell = headerRow?.querySelectorAll('spw-table-header')[columnIndex];\n const masterCheckbox = headerCell?.querySelector('spw-checkbox') as any;\n\n const rows = body.querySelectorAll('spw-table-row');\n const checkboxData = Array.from(rows).map(row => {\n const cell = row.querySelectorAll('spw-table-cell')[columnIndex];\n const cb = cell?.querySelector('spw-checkbox') as any;\n return {\n checked: cb?.checked === true || cb?.getAttribute('checked') === 'true',\n disabled: this.isCheckboxDisabled(cb),\n };\n });\n\n const enabledCheckboxes = checkboxData.filter(item => !item.disabled);\n\n if (enabledCheckboxes.length === 0) return;\n\n const allChecked = enabledCheckboxes.every(item => item.checked);\n const noneChecked = enabledCheckboxes.every(item => !item.checked);\n\n if (!masterCheckbox) return;\n\n if (allChecked) {\n masterCheckbox.checked = true;\n masterCheckbox.setAttribute('checked', 'true');\n masterCheckbox.setAttribute('icon', 'fa-check');\n } else if (noneChecked) {\n masterCheckbox.checked = false;\n masterCheckbox.setAttribute('checked', 'false');\n masterCheckbox.setAttribute('icon', 'fa-check');\n } else {\n masterCheckbox.checked = true;\n masterCheckbox.setAttribute('checked', 'true');\n masterCheckbox.setAttribute('icon', 'fa-minus');\n }\n }\n\n private setupHeaderCheckboxListener() {\n const assignedElements = this.el.shadowRoot?.querySelector('slot')?.assignedElements({ flatten: true }) as HTMLElement[] | undefined;\n\n if (!assignedElements) return;\n\n const head = assignedElements.find(el => el.tagName.toLowerCase() === 'spw-table-head');\n if (!head) return;\n\n const headerRows = head.querySelectorAll('spw-table-row');\n\n headerRows.forEach(row => {\n const checkboxes = row.querySelectorAll('spw-checkbox');\n checkboxes.forEach(cb => {\n cb.addEventListener('spwChange', (event: CustomEvent<boolean>) => {\n this.toggleAllRowCheckboxes(event.detail);\n });\n });\n });\n }\n\n private checkboxChangeHandler = () => this.updateMasterCheckboxState();\n\n private setupBodyCheckboxListener() {\n const body = Array.from(this.el.children).find(el => el.tagName.toLowerCase() === 'spw-table-body');\n if (!body) return;\n\n const rows = body.querySelectorAll('spw-table-row');\n rows.forEach(row => {\n const checkboxes = row.querySelectorAll('spw-checkbox');\n checkboxes.forEach(cb => {\n cb.removeEventListener('spwChange', this.checkboxChangeHandler);\n cb.addEventListener('spwChange', this.checkboxChangeHandler);\n });\n });\n }\n\n private toggleAllRowCheckboxes(checked: boolean) {\n const columnIndex = this.getMasterCheckboxColumnIndex();\n if (columnIndex === null) return;\n\n const slot = this.el.shadowRoot?.querySelector('slot');\n const assignedElements = slot?.assignedElements({ flatten: true }) as HTMLElement[] | undefined;\n if (!assignedElements) return;\n\n const body = assignedElements.find(el => el.tagName.toLowerCase() === 'spw-table-body');\n if (!body) return;\n\n const rows = body.querySelectorAll('spw-table-row');\n\n rows.forEach(row => {\n const cells = Array.from(row.querySelectorAll('spw-table-cell'));\n const targetCell = cells[columnIndex];\n const checkbox = targetCell?.querySelector('spw-checkbox') as any;\n\n if (checkbox && !this.isCheckboxDisabled(checkbox)) {\n checkbox.checked = checked;\n checkbox.setAttribute('checked', checked.toString());\n }\n });\n\n setTimeout(() => {\n this.updateMasterCheckboxState();\n }, 0);\n }\n\n @Listen('spwHeaderClick')\n handleHeaderClick(event: CustomEvent<string>) {\n const columnId = event.detail;\n const current = this.currentSort;\n\n const newSort: SortEvent = {\n column: columnId,\n direction: current?.column === columnId && current.direction === 'asc' ? 'desc' : 'asc',\n };\n\n this.currentSort = newSort;\n this.spwSort.emit(newSort);\n\n if (!this.disableSort) {\n this.sortRows(newSort.column, newSort.direction);\n }\n\n this.updateHeadersSortState(newSort);\n this.updateZebra();\n }\n\n private updateZebra() {\n const slot = this.el.shadowRoot.querySelector('slot');\n if (!slot) return;\n\n const assignedElements = slot.assignedElements({ flatten: true });\n const body = assignedElements.find(el => el.tagName.toLowerCase() === 'spw-table-body') as any;\n\n if (body) {\n if (this.isZebra) {\n body.setAttribute('is-zebra', 'true');\n } else {\n body.removeAttribute('is-zebra');\n }\n\n if (typeof body.updateZebraStyles === 'function') {\n body.updateZebraStyles();\n }\n }\n }\n\n private sortRows(columnId: string, direction: 'asc' | 'desc') {\n const body = this.el.shadowRoot\n .querySelector('slot')\n ?.assignedElements()\n .find(el => el.tagName.toLowerCase() === 'spw-table-body');\n if (!body) return;\n\n const rows = Array.from(body.querySelectorAll('spw-table-row'));\n\n const columnIndex = Array.from(this.el.querySelectorAll('spw-table-header')).findIndex((header: any) => header.columnId === columnId);\n if (columnIndex === -1) return;\n\n rows.sort((a: any, b: any) => {\n const aCell = a.querySelectorAll('spw-table-cell')[columnIndex];\n const bCell = b.querySelectorAll('spw-table-cell')[columnIndex];\n if (!aCell || !bCell) return 0;\n\n const aValue = aCell.textContent.trim();\n const bValue = bCell.textContent.trim();\n\n if (!isNaN(Number(aValue)) && !isNaN(Number(bValue))) {\n return direction === 'asc' ? +aValue - +bValue : +bValue - +aValue;\n }\n\n return direction === 'asc' ? aValue.localeCompare(bValue) : bValue.localeCompare(aValue);\n });\n\n rows.forEach(row => body.appendChild(row));\n\n const bodyComponent = body as HTMLSpwTableBodyElement;\n if (bodyComponent?.updateZebraStyles) {\n bodyComponent.updateZebraStyles();\n }\n }\n\n private updateHeadersSortState(sort: SortEvent) {\n const headers = this.el.querySelectorAll('spw-table-header');\n headers.forEach((header: any) => {\n const isCurrent = header.columnId === sort.column;\n header.isSorted = isCurrent;\n header.sortDirection = isCurrent ? sort.direction : undefined;\n });\n }\n\n private formatSize(value?: string): string {\n if (value === undefined || value === null) {\n return 'auto';\n }\n return `${value}px`;\n }\n\n private get elementClass(): { [className: string]: boolean } {\n return {\n 'spw-table': true,\n 'spw-table--is-sticky': this.isSticky,\n [`spw-table--layout-${this.tableLayout}`]: true,\n };\n }\n\n render() {\n return (\n <Host\n style={{\n '--spw-table-max-height': this.formatSize(this.maxHeight),\n '--spw-table-min-width': this.formatSize(this.minWidth),\n }}\n >\n <div class=\"spw-table-container\">\n <table part=\"table\" class={this.elementClass} role=\"table\" aria-label={this.accAriaLabel}>\n <slot />\n </table>\n </div>\n </Host>\n );\n }\n}\n"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"spw-table.entry.js","sources":["src/components/spw-table/spw-table.scss?tag=spw-table&encapsulation=shadow","src/components/spw-table/spw-table.tsx"],"sourcesContent":[":host {\n display: block;\n position: relative;\n}\n\n%highlight {\n font-weight: 700;\n background: var(--spw-color-themes-grey-grey-100);\n}\n\n.spw-table-container {\n width: 100%;\n overflow-x: auto;\n overflow-y: auto;\n max-height: var(--spw-table-max-height);\n border-radius: 4px;\n outline: 1px solid var(--spw-color-themes-grey-grey-300);\n outline-offset: -1px;\n position: relative;\n @include scrollbars(var(--spw-color-themes-grey-grey-400), var(--spw-ds-white));\n}\n\n.spw-table {\n width: 100%;\n border-collapse: collapse;\n min-width: var(--spw-table-min-width);\n border-radius: 4px;\n position: relative;\n &--layout-fixed {\n table-layout: fixed;\n }\n &--layout-auto {\n table-layout: auto;\n }\n}\n","import { Component, Element, Event, Listen, EventEmitter, Host, Prop, Watch, h } from '@stencil/core';\n\nexport interface SortEvent {\n column: string;\n direction: 'asc' | 'desc';\n}\n\n@Component({\n tag: 'spw-table',\n styleUrl: 'spw-table.scss',\n shadow: true,\n})\nexport class SpwTable {\n @Element() el: HTMLSpwTableElement;\n\n /** Propriété pour l'aria-label, à des fins d'accessibilité */\n @Prop() accAriaLabel?: string;\n /** Si le header du tableau doit être sticky ou non */\n @Prop() isSticky?: boolean = false;\n /** Si défini, apparition d'une scrollbar verticale et max-height */\n @Prop() maxHeight?: string;\n /** Si défini, apparition d'une scrollbar horizontale et max-width */\n @Prop() minWidth?: string = '600';\n /** Permet de définir le table-layout (auto ou fixed) */\n @Prop() tableLayout?: 'auto' | 'fixed' = 'auto';\n /** Définit un background de couleur différent une ligne sur 2 */\n @Prop() isZebra?: boolean = false;\n /** Désactive le tri natif pour permettre l'utilisation d'une fonction de tri personnalisée */\n @Prop() disableSort?: boolean = false;\n /** État du tri actuel (colonne et direction). Peut être défini de l'extérieur pour un tri personnalisé */\n @Prop({ mutable: true }) currentSort?: SortEvent;\n\n @Event() spwSort: EventEmitter<SortEvent>;\n\n private mutationObserver?: MutationObserver;\n\n @Watch('currentSort')\n onCurrentSortChange(newSort: SortEvent | undefined) {\n if (newSort) {\n this.updateHeadersSortState(newSort);\n }\n }\n\n @Watch('isSticky')\n onIsStickyChange() {\n this.applyStickyToChildren();\n }\n\n componentDidLoad() {\n this.updateZebra();\n this.applyStickyToChildren();\n const slot = this.el.shadowRoot?.querySelector('slot');\n if (slot) {\n slot.addEventListener('slotchange', () => {\n this.setupHeaderCheckboxListener();\n this.updateMasterCheckboxState();\n this.applyStickyToChildren();\n });\n }\n this.setupHeaderCheckboxListener();\n this.setupBodyCheckboxListener();\n this.setupTableBodyObserver();\n setTimeout(() => {\n this.updateMasterCheckboxState();\n }, 0);\n }\n\n disconnectedCallback() {\n if (this.mutationObserver) {\n this.mutationObserver.disconnect();\n }\n }\n\n private setupTableBodyObserver() {\n const body = Array.from(this.el.children).find(el => el.tagName.toLowerCase() === 'spw-table-body');\n if (!body) return;\n\n this.mutationObserver = new MutationObserver(() => {\n this.setupBodyCheckboxListener();\n setTimeout(() => {\n this.updateMasterCheckboxState();\n }, 0);\n });\n\n this.mutationObserver.observe(body, {\n childList: true,\n subtree: true,\n attributes: true,\n attributeFilter: ['checked', 'disabled'],\n });\n }\n\n private getMasterCheckboxColumnIndex(): number | null {\n const slot = this.el.shadowRoot?.querySelector('slot');\n if (!slot) return null;\n\n const assignedElements = slot.assignedElements({ flatten: true }) as HTMLElement[];\n const head = assignedElements.find(el => el.tagName.toLowerCase() === 'spw-table-head');\n if (!head) return null;\n\n const headerRow = head.querySelector('spw-table-row');\n if (!headerRow) return null;\n\n const headerCells = Array.from(headerRow.querySelectorAll('spw-table-header'));\n\n for (let i = 0; i < headerCells.length; i++) {\n if (headerCells[i].querySelector('spw-checkbox')) {\n return i;\n }\n }\n\n return null;\n }\n\n private isCheckboxDisabled(checkbox: any): boolean {\n return checkbox?.disabled === true || checkbox?.getAttribute('disabled') === 'true' || checkbox?.getAttribute('disabled') === '';\n }\n\n private updateMasterCheckboxState() {\n const columnIndex = this.getMasterCheckboxColumnIndex();\n if (columnIndex === null) return;\n\n const slot = this.el.shadowRoot?.querySelector('slot');\n const assignedElements = slot?.assignedElements({ flatten: true }) as HTMLElement[] | undefined;\n if (!assignedElements) return;\n\n const head = assignedElements.find(el => el.tagName.toLowerCase() === 'spw-table-head');\n const body = assignedElements.find(el => el.tagName.toLowerCase() === 'spw-table-body');\n if (!head || !body) return;\n\n const headerRow = head.querySelector('spw-table-row');\n const headerCell = headerRow?.querySelectorAll('spw-table-header')[columnIndex];\n const masterCheckbox = headerCell?.querySelector('spw-checkbox') as any;\n\n const rows = body.querySelectorAll('spw-table-row');\n const checkboxData = Array.from(rows).map(row => {\n const cell = row.querySelectorAll('spw-table-cell')[columnIndex];\n const cb = cell?.querySelector('spw-checkbox') as any;\n return {\n checked: cb?.checked === true || cb?.getAttribute('checked') === 'true',\n disabled: this.isCheckboxDisabled(cb),\n };\n });\n\n const enabledCheckboxes = checkboxData.filter(item => !item.disabled);\n\n if (enabledCheckboxes.length === 0) return;\n\n const allChecked = enabledCheckboxes.every(item => item.checked);\n const noneChecked = enabledCheckboxes.every(item => !item.checked);\n\n if (!masterCheckbox) return;\n\n if (allChecked) {\n masterCheckbox.checked = true;\n masterCheckbox.setAttribute('checked', 'true');\n masterCheckbox.setAttribute('icon', 'fa-check');\n } else if (noneChecked) {\n masterCheckbox.checked = false;\n masterCheckbox.setAttribute('checked', 'false');\n masterCheckbox.setAttribute('icon', 'fa-check');\n } else {\n masterCheckbox.checked = true;\n masterCheckbox.setAttribute('checked', 'true');\n masterCheckbox.setAttribute('icon', 'fa-minus');\n }\n }\n\n private setupHeaderCheckboxListener() {\n const assignedElements = this.el.shadowRoot?.querySelector('slot')?.assignedElements({ flatten: true }) as HTMLElement[] | undefined;\n\n if (!assignedElements) return;\n\n const head = assignedElements.find(el => el.tagName.toLowerCase() === 'spw-table-head');\n if (!head) return;\n\n const headerRows = head.querySelectorAll('spw-table-row');\n\n headerRows.forEach(row => {\n const checkboxes = row.querySelectorAll('spw-checkbox');\n checkboxes.forEach(cb => {\n cb.addEventListener('spwChange', (event: CustomEvent<boolean>) => {\n this.toggleAllRowCheckboxes(event.detail);\n });\n });\n });\n }\n\n private checkboxChangeHandler = () => this.updateMasterCheckboxState();\n\n private setupBodyCheckboxListener() {\n const body = Array.from(this.el.children).find(el => el.tagName.toLowerCase() === 'spw-table-body');\n if (!body) return;\n\n const rows = body.querySelectorAll('spw-table-row');\n rows.forEach(row => {\n const checkboxes = row.querySelectorAll('spw-checkbox');\n checkboxes.forEach(cb => {\n cb.removeEventListener('spwChange', this.checkboxChangeHandler);\n cb.addEventListener('spwChange', this.checkboxChangeHandler);\n });\n });\n }\n\n private toggleAllRowCheckboxes(checked: boolean) {\n const columnIndex = this.getMasterCheckboxColumnIndex();\n if (columnIndex === null) return;\n\n const slot = this.el.shadowRoot?.querySelector('slot');\n const assignedElements = slot?.assignedElements({ flatten: true }) as HTMLElement[] | undefined;\n if (!assignedElements) return;\n\n const body = assignedElements.find(el => el.tagName.toLowerCase() === 'spw-table-body');\n if (!body) return;\n\n const rows = body.querySelectorAll('spw-table-row');\n\n rows.forEach(row => {\n const cells = Array.from(row.querySelectorAll('spw-table-cell'));\n const targetCell = cells[columnIndex];\n const checkbox = targetCell?.querySelector('spw-checkbox') as any;\n\n if (checkbox && !this.isCheckboxDisabled(checkbox)) {\n checkbox.checked = checked;\n checkbox.setAttribute('checked', checked.toString());\n }\n });\n\n setTimeout(() => {\n this.updateMasterCheckboxState();\n }, 0);\n }\n\n @Listen('spwHeaderClick')\n handleHeaderClick(event: CustomEvent<string>) {\n const columnId = event.detail;\n const current = this.currentSort;\n\n const newSort: SortEvent = {\n column: columnId,\n direction: current?.column === columnId && current.direction === 'asc' ? 'desc' : 'asc',\n };\n\n this.currentSort = newSort;\n this.spwSort.emit(newSort);\n\n if (!this.disableSort) {\n this.sortRows(newSort.column, newSort.direction);\n }\n\n this.updateHeadersSortState(newSort);\n this.updateZebra();\n }\n\n private updateZebra() {\n const slot = this.el.shadowRoot.querySelector('slot');\n if (!slot) return;\n\n const assignedElements = slot.assignedElements({ flatten: true });\n const body = assignedElements.find(el => el.tagName.toLowerCase() === 'spw-table-body') as any;\n\n if (body) {\n if (this.isZebra) {\n body.setAttribute('is-zebra', 'true');\n } else {\n body.removeAttribute('is-zebra');\n }\n\n if (typeof body.updateZebraStyles === 'function') {\n body.updateZebraStyles();\n }\n }\n }\n\n private applyStickyToChildren() {\n requestAnimationFrame(() => {\n const stickyClass = '--is-sticky';\n const headers = this.el.querySelectorAll('spw-table-header');\n const cells = this.el.querySelectorAll('spw-table-cell');\n const footer = this.el.querySelector('spw-table-footer');\n\n if (this.isSticky) {\n headers.forEach(header => header.classList.add(stickyClass));\n footer?.classList.add(stickyClass);\n } else {\n headers.forEach(header => header.classList.remove(stickyClass));\n cells.forEach(cell => cell.classList.remove(stickyClass));\n footer?.classList.remove(stickyClass);\n }\n });\n }\n\n private sortRows(columnId: string, direction: 'asc' | 'desc') {\n const body = this.el.shadowRoot\n .querySelector('slot')\n ?.assignedElements()\n .find(el => el.tagName.toLowerCase() === 'spw-table-body');\n if (!body) return;\n\n const rows = Array.from(body.querySelectorAll('spw-table-row'));\n\n const columnIndex = Array.from(this.el.querySelectorAll('spw-table-header')).findIndex((header: any) => header.columnId === columnId);\n if (columnIndex === -1) return;\n\n rows.sort((a: any, b: any) => {\n const aCell = a.querySelectorAll('spw-table-cell')[columnIndex];\n const bCell = b.querySelectorAll('spw-table-cell')[columnIndex];\n if (!aCell || !bCell) return 0;\n\n const aValue = aCell.textContent.trim();\n const bValue = bCell.textContent.trim();\n\n if (!isNaN(Number(aValue)) && !isNaN(Number(bValue))) {\n return direction === 'asc' ? +aValue - +bValue : +bValue - +aValue;\n }\n\n return direction === 'asc' ? aValue.localeCompare(bValue) : bValue.localeCompare(aValue);\n });\n\n rows.forEach(row => body.appendChild(row));\n\n const bodyComponent = body as HTMLSpwTableBodyElement;\n if (bodyComponent?.updateZebraStyles) {\n bodyComponent.updateZebraStyles();\n }\n }\n\n private updateHeadersSortState(sort: SortEvent) {\n const headers = this.el.querySelectorAll('spw-table-header');\n headers.forEach((header: any) => {\n const isCurrent = header.columnId === sort.column;\n header.isSorted = isCurrent;\n header.sortDirection = isCurrent ? sort.direction : undefined;\n });\n }\n\n private formatSize(value?: string): string {\n if (value === undefined || value === null) {\n return 'auto';\n }\n return `${value}px`;\n }\n\n private get elementClass(): { [className: string]: boolean } {\n return {\n 'spw-table': true,\n 'spw-table--is-sticky': this.isSticky,\n [`spw-table--layout-${this.tableLayout}`]: true,\n };\n }\n\n render() {\n return (\n <Host\n style={{\n '--spw-table-max-height': this.formatSize(this.maxHeight),\n '--spw-table-min-width': this.formatSize(this.minWidth),\n }}\n >\n <div class=\"spw-table-container\">\n <table part=\"table\" class={this.elementClass} role=\"table\" aria-label={this.accAriaLabel}>\n <slot />\n </table>\n </div>\n </Host>\n );\n }\n}\n"],"names":[],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"utils-BBi01mKM.js","sources":["src/utils/utils.ts"],"sourcesContent":["export function format(first: string, middle: string, last: string): string {\n return (first || '') + (middle ? ` ${middle}` : '') + (last ? ` ${last}` : '');\n}\n\nexport function toKebabCase(str: string) {\n return str.replace(/([a-z0-9])([A-Z])/g, '$1-$2').toLowerCase();\n}\n\nexport function formatDate(date: string): string {\n const parts = date.split('-');\n return `${parts[2]}/${parts[1]}/${parts[0]}`;\n}\n\nexport function stripHtmlContent(content: string): string {\n const div = document.createElement('div');\n div.innerHTML = content;\n return div.textContent || div.innerText || '';\n}\n\ninterface ComponentProp {\n name: string;\n type: string;\n docs: string;\n default: string;\n}\n\ninterface ComponentEvent {\n event: string;\n docs: string;\n detail: string;\n}\n\ninterface ComponentMethod {\n name: string;\n signature: string;\n docs: string;\n returns: {\n type: string;\n docs: string;\n };\n parameters: Array<{\n name: string;\n type: string;\n docs: string;\n }>;\n}\n\ninterface ComponentInfo {\n name: string;\n props: ComponentProp[];\n events: ComponentEvent[];\n methods: ComponentMethod[];\n}\n\nconst description = (prop: ComponentProp | ComponentEvent | ComponentMethod) => (prop.docs || '').trim();\n\nconst isText = (prop: ComponentProp) => prop.type === 'string';\nconst isBoolean = (prop: ComponentProp) => prop.type === 'boolean';\nconst isEnum = (prop: ComponentProp) => prop.type.includes('|');\nconst isNumber = (prop: ComponentProp) => prop.type === 'number';\n\nconst enumOptions = (prop: ComponentProp) =>\n prop.type\n .split('|')\n .map(t => t.trim())\n .map(t => (t === '\"\"' ? 'default' : t))\n .map(t => t.replace(/^\"(.*)\"$/, '$1'));\n\nconst generateProp = (prop: ComponentProp) => {\n if (isText(prop)) {\n return {\n [prop.name]: {\n control: 'text',\n description: description(prop),\n defaultValue: prop.default,\n table: {\n category: 'properties',\n defaultValue: { summary: prop.default },\n type: { summary: 'string' },\n },\n },\n };\n }\n\n if (isBoolean(prop)) {\n return {\n [prop.name]: {\n control: 'boolean',\n description: description(prop),\n defaultValue: prop.default,\n table: {\n category: 'properties',\n defaultValue: { summary: prop.default },\n type: { summary: 'boolean' },\n },\n },\n };\n }\n\n if (isNumber(prop)) {\n return {\n [prop.name]: {\n control: 'number',\n description: description(prop),\n defaultValue: prop.default,\n table: {\n category: 'properties',\n defaultValue: { summary: prop.default },\n type: { summary: 'number' },\n },\n },\n };\n }\n\n if (isEnum(prop)) {\n return {\n [prop.name]: {\n control: 'select',\n defaultValue: prop.default,\n options: enumOptions(prop),\n description: description(prop),\n table: {\n category: 'properties',\n defaultValue: { summary: prop.default },\n type: { summary: 'enum' },\n },\n },\n };\n }\n\n return {};\n};\n\nconst generateProps = (props: ComponentProp[]) => {\n let args = {};\n props.forEach(prop => (args = { ...args, ...generateProp(prop) }));\n return args;\n};\n\nconst generateEvent = (event: ComponentEvent) => {\n function capitalizeFirstLetter(string: string) {\n return string.charAt(0).toUpperCase() + string.slice(1);\n }\n\n return {\n [`on${capitalizeFirstLetter(event.event)}`]: {\n action: event.event,\n description: description(event),\n table: {\n defaultValue: { summary: event.event },\n category: 'events',\n type: { summary: event.detail },\n },\n },\n };\n};\n\nconst generateEvents = (events: ComponentEvent[]) => {\n let args = {};\n events.forEach(event => (args = { ...args, ...generateEvent(event) }));\n return args;\n};\n\nconst generateMethod = (method: ComponentMethod) => {\n return {\n [method.name]: {\n action: method.name,\n description: description(method),\n table: {\n category: 'methods',\n type: { summary: method.signature },\n defaultValue: { summary: method.returns.type },\n },\n },\n };\n};\n\nconst generateMethods = (methods: ComponentMethod[]) => {\n let args = {};\n methods.forEach(method => (args = { ...args, ...generateMethod(method) }));\n return args;\n};\n\nconst extractComponentInfoByTag = (componentsData: any, tag: string): ComponentInfo | null => {\n const component = componentsData.components.find(c => c.tag === tag);\n\n if (!component) {\n console.error(`Component with tag ${tag} not found`);\n return null;\n }\n\n const { props, events, methods } = component;\n\n const propInfo = props.map(prop => ({\n name: prop.name,\n type: prop.type,\n docs: prop.docs,\n default: prop.default || '',\n }));\n\n const eventInfo = events.map(event => ({\n event: event.event,\n docs: event.docs,\n detail: event.detail,\n }));\n\n const methodInfo = methods.map(method => ({\n name: method.name,\n signature: method.signature,\n docs: method.docs,\n returns: method.returns,\n parameters: method.parameters,\n }));\n\n return {\n name: tag,\n props: propInfo,\n events: eventInfo,\n methods: methodInfo,\n };\n};\n\nconst generateHTMLTable = (componentInfo: ComponentInfo): string => {\n if (!componentInfo) {\n return `<p>Component not found</p>`;\n }\n\n const { props, events, methods } = componentInfo;\n\n const propsRows = props\n .map(\n prop => `\n <tr>\n <td>${prop.name}</td>\n <td>${prop.type}</td>\n <td>${prop.docs}</td>\n <td>${prop.default}</td>\n </tr>\n `,\n )\n .join('');\n\n const eventsRows = events\n .map(\n event => `\n <tr>\n <td>${event.event}</td>\n <td>${event.detail}</td>\n <td>${event.docs}</td>\n </tr>\n `,\n )\n .join('');\n\n const methodsRows = methods\n .map(\n method => `\n <tr>\n <td>${method.name}</td>\n <td>${method.signature}</td>\n <td>${method.returns.type}</td>\n <td>${method.docs}</td>\n </tr>\n `,\n )\n .join('');\n\n return `\n <h3>Propriétés</h3>\n <table class=\"w-full\">\n <thead>\n <tr>\n <th>Propriété</th>\n <th>Type</th>\n <th>Description</th>\n <th>Valeur par défaut</th>\n </tr>\n </thead>\n <tbody>\n ${propsRows}\n </tbody>\n </table>\n <h3>Événements</h3>\n <table class=\"w-full\">\n <thead>\n <tr>\n <th>Événement</th>\n <th>Détail</th>\n <th>Description</th>\n </tr>\n </thead>\n <tbody>\n ${eventsRows}\n </tbody>\n </table>\n <h3>Méthodes</h3>\n <table class=\"w-full\">\n <thead>\n <tr>\n <th>Méthode</th>\n <th>Signature</th>\n <th>Retour</th>\n <th>Description</th>\n </tr>\n </thead>\n <tbody>\n ${methodsRows}\n </tbody>\n </table>\n `;\n};\n\nexport const generateComponentTable = (componentsData: any, tag: string): string => {\n const componentInfo = extractComponentInfoByTag(componentsData, tag);\n return generateHTMLTable(componentInfo);\n};\n\nexport const withComponentControls = (\n componentsData: any,\n { tag, customTokens = [] }: { tag: string; customTokens?: { name: string; description: string; defaultValue: string }[] },\n): any => {\n const component = componentsData.components.find(c => c.tag === tag);\n const props = component?.props || [];\n const events = component?.events || [];\n const methods = component?.methods || [];\n\n const tokenControls = customTokens.reduce((acc, token) => {\n acc[token.name] = {\n control: true,\n description: token.description,\n table: {\n category: 'Tokens',\n type: { summary: 'CSS Variable' },\n defaultValue: { summary: token.defaultValue },\n },\n };\n return acc;\n }, {});\n\n // ✅ Séparation claire des catégories\n const propControls = generateProps(props as ComponentProp[]);\n const eventControls = generateEvents(events as ComponentEvent[]);\n const methodControls = generateMethods(methods as ComponentMethod[]);\n\n // ✅ Regroupement complet pour Storybook\n const allControls = {\n ...propControls,\n ...eventControls,\n ...methodControls,\n ...tokenControls,\n };\n\n // ✅ Indique explicitement quelles sont les props réelles du composant\n Object.defineProperty(allControls, '__realProps', {\n value: Object.keys(propControls).concat(Object.keys(tokenControls)),\n enumerable: false, // ne pollue pas la vue Storybook\n });\n\n return allControls;\n};\n\nexport function extractArgTypes(componentsData: any, subComponentTags: string[]) {\n return subComponentTags.reduce((acc, tag) => {\n const subComponentArgTypes = withComponentControls(componentsData, { tag });\n return { ...acc, ...subComponentArgTypes };\n }, {});\n}\n\nexport function formatFileSize(sizeInBytes) {\n const sizeInMB = sizeInBytes / (1024 * 1024);\n let formattedSize = sizeInMB.toFixed(2).replace('.', ',');\n\n if (sizeInMB > 0 && sizeInMB < 0.01) {\n formattedSize = '0,01';\n } else if (sizeInMB === 0) {\n formattedSize = '0,00';\n }\n\n return `${formattedSize} Mo`;\n}\n\nexport function hasSlotContent(el: HTMLElement): boolean {\n const slot = el.querySelector('slot');\n return slot && slot.assignedNodes().length > 0;\n}\n"],"names":[],"mappings":"AAQM,SAAU,UAAU,CAAC,IAAY,EAAA;IACrC,MAAM,KAAK,GAAG,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC;AAC7B,IAAA,OAAO,GAAG,KAAK,CAAC,CAAC,CAAC,IAAI,KAAK,CAAC,CAAC,CAAC,IAAI,KAAK,CAAC,CAAC,CAAC,EAAE;AAC9C;AAqWM,SAAU,cAAc,CAAC,WAAW,EAAA;IACxC,MAAM,QAAQ,GAAG,WAAW,IAAI,IAAI,GAAG,IAAI,CAAC;AAC5C,IAAA,IAAI,aAAa,GAAG,QAAQ,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,GAAG,EAAE,GAAG,CAAC;IAEzD,IAAI,QAAQ,GAAG,CAAC,IAAI,QAAQ,GAAG,IAAI,EAAE;QACnC,aAAa,GAAG,MAAM;;AACjB,SAAA,IAAI,QAAQ,KAAK,CAAC,EAAE;QACzB,aAAa,GAAG,MAAM;;IAGxB,OAAO,CAAA,EAAG,aAAa,CAAA,GAAA,CAAK;AAC9B;;;;"}
1
+ {"version":3,"file":"utils-BBi01mKM.js","sources":["src/utils/utils.ts"],"sourcesContent":["export function format(first: string, middle: string, last: string): string {\n return (first || '') + (middle ? ` ${middle}` : '') + (last ? ` ${last}` : '');\n}\n\nexport function toKebabCase(str: string) {\n return str.replace(/([a-z0-9])([A-Z])/g, '$1-$2').toLowerCase();\n}\n\nexport function formatDate(date: string): string {\n const parts = date.split('-');\n return `${parts[2]}/${parts[1]}/${parts[0]}`;\n}\n\nexport function stripHtmlContent(content: string): string {\n const div = document.createElement('div');\n div.innerHTML = content;\n return div.textContent || div.innerText || '';\n}\n\ninterface ComponentProp {\n name: string;\n type: string;\n docs: string;\n default: string;\n}\n\ninterface ComponentEvent {\n event: string;\n docs: string;\n detail: string;\n}\n\ninterface ComponentMethod {\n name: string;\n signature: string;\n docs: string;\n returns: {\n type: string;\n docs: string;\n };\n parameters: Array<{\n name: string;\n type: string;\n docs: string;\n }>;\n}\n\ninterface ComponentInfo {\n name: string;\n props: ComponentProp[];\n events: ComponentEvent[];\n methods: ComponentMethod[];\n}\n\nconst description = (prop: ComponentProp | ComponentEvent | ComponentMethod) => (prop.docs || '').trim();\n\nconst isText = (prop: ComponentProp) => prop.type === 'string';\nconst isBoolean = (prop: ComponentProp) => prop.type === 'boolean';\nconst isEnum = (prop: ComponentProp) => prop.type.includes('|');\nconst isNumber = (prop: ComponentProp) => prop.type === 'number';\n\nconst enumOptions = (prop: ComponentProp) =>\n prop.type\n .split('|')\n .map(t => t.trim())\n .map(t => (t === '\"\"' ? 'default' : t))\n .map(t => t.replace(/^\"(.*)\"$/, '$1'));\n\nconst generateProp = (prop: ComponentProp, componentTag?: string, prefixPropName: boolean = false) => {\n const category = componentTag ? `Props - ${componentTag}` : 'properties';\n const propName = prefixPropName && componentTag ? `${componentTag}__${prop.name}` : prop.name;\n\n const baseTableConfig = {\n category: category,\n defaultValue: { summary: prop.default },\n };\n\n if (isText(prop)) {\n return {\n [propName]: {\n control: 'text',\n description: description(prop),\n defaultValue: prop.default,\n name: prop.name,\n table: {\n ...baseTableConfig,\n type: { summary: 'string' },\n },\n },\n };\n }\n\n if (isBoolean(prop)) {\n return {\n [propName]: {\n control: 'boolean',\n description: description(prop),\n defaultValue: prop.default,\n name: prop.name,\n table: {\n ...baseTableConfig,\n type: { summary: 'boolean' },\n },\n },\n };\n }\n\n if (isNumber(prop)) {\n return {\n [propName]: {\n control: 'number',\n description: description(prop),\n defaultValue: prop.default,\n name: prop.name,\n table: {\n ...baseTableConfig,\n type: { summary: 'number' },\n },\n },\n };\n }\n\n if (isEnum(prop)) {\n return {\n [propName]: {\n control: 'select',\n defaultValue: prop.default,\n options: enumOptions(prop),\n description: description(prop),\n name: prop.name,\n table: {\n ...baseTableConfig,\n type: { summary: 'enum' },\n },\n },\n };\n }\n\n return {};\n};\n\nconst generateProps = (props: ComponentProp[], componentTag?: string, prefixPropName: boolean = false) => {\n let args = {};\n props.forEach(prop => (args = { ...args, ...generateProp(prop, componentTag, prefixPropName) }));\n return args;\n};\n\nconst generateEvent = (event: ComponentEvent, componentTag?: string, prefixEventName: boolean = false) => {\n function capitalizeFirstLetter(string: string) {\n return string.charAt(0).toUpperCase() + string.slice(1);\n }\n\n const category = componentTag ? `Events - ${componentTag}` : 'events';\n const originalEventName = `on${capitalizeFirstLetter(event.event)}`;\n const eventName = prefixEventName && componentTag ? `${componentTag}__${originalEventName}` : originalEventName;\n\n return {\n [eventName]: {\n action: event.event,\n description: description(event),\n name: originalEventName,\n table: {\n defaultValue: { summary: event.event },\n category: category,\n type: { summary: event.detail },\n },\n },\n };\n};\n\nconst generateEvents = (events: ComponentEvent[], componentTag?: string, prefixEventName: boolean = false) => {\n let args = {};\n events.forEach(event => (args = { ...args, ...generateEvent(event, componentTag, prefixEventName) }));\n return args;\n};\n\nconst generateMethod = (method: ComponentMethod, componentTag?: string, prefixMethodName: boolean = false) => {\n const category = componentTag ? `Methods - ${componentTag}` : 'methods';\n const methodName = prefixMethodName && componentTag ? `${componentTag}__${method.name}` : method.name;\n\n return {\n [methodName]: {\n action: method.name,\n description: description(method),\n name: method.name,\n table: {\n category: category,\n type: { summary: method.signature },\n defaultValue: { summary: method.returns.type },\n },\n },\n };\n};\n\nconst generateMethods = (methods: ComponentMethod[], componentTag?: string, prefixMethodName: boolean = false) => {\n let args = {};\n methods.forEach(method => (args = { ...args, ...generateMethod(method, componentTag, prefixMethodName) }));\n return args;\n};\n\nconst extractComponentInfoByTag = (componentsData: any, tag: string): ComponentInfo | null => {\n const component = componentsData.components.find(c => c.tag === tag);\n\n if (!component) {\n console.error(`Component with tag ${tag} not found`);\n return null;\n }\n\n const { props, events, methods } = component;\n\n const propInfo = props.map(prop => ({\n name: prop.name,\n type: prop.type,\n docs: prop.docs,\n default: prop.default || '',\n }));\n\n const eventInfo = events.map(event => ({\n event: event.event,\n docs: event.docs,\n detail: event.detail,\n }));\n\n const methodInfo = methods.map(method => ({\n name: method.name,\n signature: method.signature,\n docs: method.docs,\n returns: method.returns,\n parameters: method.parameters,\n }));\n\n return {\n name: tag,\n props: propInfo,\n events: eventInfo,\n methods: methodInfo,\n };\n};\n\nconst generateHTMLTable = (componentInfo: ComponentInfo): string => {\n if (!componentInfo) {\n return `<p>Component not found</p>`;\n }\n\n const { props, events, methods } = componentInfo;\n\n const propsRows = props\n .map(\n prop => `\n <tr>\n <td>${prop.name}</td>\n <td>${prop.type}</td>\n <td>${prop.docs}</td>\n <td>${prop.default}</td>\n </tr>\n `,\n )\n .join('');\n\n const eventsRows = events\n .map(\n event => `\n <tr>\n <td>${event.event}</td>\n <td>${event.detail}</td>\n <td>${event.docs}</td>\n </tr>\n `,\n )\n .join('');\n\n const methodsRows = methods\n .map(\n method => `\n <tr>\n <td>${method.name}</td>\n <td>${method.signature}</td>\n <td>${method.returns.type}</td>\n <td>${method.docs}</td>\n </tr>\n `,\n )\n .join('');\n\n return `\n <h3>Propriétés</h3>\n <table class=\"w-full\">\n <thead>\n <tr>\n <th>Propriété</th>\n <th>Type</th>\n <th>Description</th>\n <th>Valeur par défaut</th>\n </tr>\n </thead>\n <tbody>\n ${propsRows}\n </tbody>\n </table>\n <h3>Événements</h3>\n <table class=\"w-full\">\n <thead>\n <tr>\n <th>Événement</th>\n <th>Détail</th>\n <th>Description</th>\n </tr>\n </thead>\n <tbody>\n ${eventsRows}\n </tbody>\n </table>\n <h3>Méthodes</h3>\n <table class=\"w-full\">\n <thead>\n <tr>\n <th>Méthode</th>\n <th>Signature</th>\n <th>Retour</th>\n <th>Description</th>\n </tr>\n </thead>\n <tbody>\n ${methodsRows}\n </tbody>\n </table>\n `;\n};\n\nexport const generateComponentTable = (componentsData: any, tag: string): string => {\n const componentInfo = extractComponentInfoByTag(componentsData, tag);\n return generateHTMLTable(componentInfo);\n};\n\nexport const withComponentControls = (\n componentsData: any,\n { tag, customTokens = [], prefixNames = false }: { tag: string; customTokens?: { name: string; description: string; defaultValue: string }[]; prefixNames?: boolean },\n): any => {\n const component = componentsData.components.find(c => c.tag === tag);\n const props = component?.props || [];\n const events = component?.events || [];\n const methods = component?.methods || [];\n\n const tokenControls = customTokens.reduce((acc, token) => {\n const tokenName = prefixNames ? `${tag}__${token.name}` : token.name;\n acc[tokenName] = {\n control: true,\n description: token.description,\n table: {\n category: `Tokens - ${tag}`,\n type: { summary: 'CSS Variable' },\n defaultValue: { summary: token.defaultValue },\n },\n };\n return acc;\n }, {});\n\n const propControls = generateProps(props as ComponentProp[], tag, prefixNames);\n const eventControls = generateEvents(events as ComponentEvent[], tag, prefixNames);\n const methodControls = generateMethods(methods as ComponentMethod[], tag, prefixNames);\n\n const allControls = {\n ...propControls,\n ...eventControls,\n ...methodControls,\n ...tokenControls,\n };\n\n Object.defineProperty(allControls, '__realProps', {\n value: Object.keys(propControls).concat(Object.keys(tokenControls)),\n enumerable: false,\n });\n\n return allControls;\n};\n\nexport function extractArgTypes(componentsData: any, subComponentTags: string[]) {\n return subComponentTags.reduce((acc, tag) => {\n const subComponentArgTypes = withComponentControls(componentsData, { tag, prefixNames: true });\n return { ...acc, ...subComponentArgTypes };\n }, {});\n}\n\nexport function formatFileSize(sizeInBytes) {\n const sizeInMB = sizeInBytes / (1024 * 1024);\n let formattedSize = sizeInMB.toFixed(2).replace('.', ',');\n\n if (sizeInMB > 0 && sizeInMB < 0.01) {\n formattedSize = '0,01';\n } else if (sizeInMB === 0) {\n formattedSize = '0,00';\n }\n\n return `${formattedSize} Mo`;\n}\n\nexport function hasSlotContent(el: HTMLElement): boolean {\n const slot = el.querySelector('slot');\n return slot && slot.assignedNodes().length > 0;\n}\n"],"names":[],"mappings":"AAQM,SAAU,UAAU,CAAC,IAAY,EAAA;IACrC,MAAM,KAAK,GAAG,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC;AAC7B,IAAA,OAAO,GAAG,KAAK,CAAC,CAAC,CAAC,IAAI,KAAK,CAAC,CAAC,CAAC,IAAI,KAAK,CAAC,CAAC,CAAC,EAAE;AAC9C;AAoXM,SAAU,cAAc,CAAC,WAAW,EAAA;IACxC,MAAM,QAAQ,GAAG,WAAW,IAAI,IAAI,GAAG,IAAI,CAAC;AAC5C,IAAA,IAAI,aAAa,GAAG,QAAQ,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,GAAG,EAAE,GAAG,CAAC;IAEzD,IAAI,QAAQ,GAAG,CAAC,IAAI,QAAQ,GAAG,IAAI,EAAE;QACnC,aAAa,GAAG,MAAM;;AACjB,SAAA,IAAI,QAAQ,KAAK,CAAC,EAAE;QACzB,aAAa,GAAG,MAAM;;IAGxB,OAAO,CAAA,EAAG,aAAa,CAAA,GAAA,CAAK;AAC9B;;;;"}
@@ -0,0 +1,2 @@
1
+ import{r as t,c as o,h as e,g as r,H as s}from"./p-CvfVJV8a.js";const n="/*! normalize.css v8.0.1 | MIT License | github.com/necolas/normalize.css */html{-webkit-text-size-adjust:100%;line-height:1.3}h1,h2,h3,h4,h5,h6,li,p,ul{margin:0;padding:0}ul{list-style:none}:host{-webkit-text-size-adjust:100%;--spw-button-font-size-small:14px;--spw-button-font-size-medium:16px;--spw-button-font-size-large:18px;--spw-button-px-small:16px;--spw-button-px-medium:20px;--spw-button-px-large:24px;--spw-button-py-small:8px;--spw-button-py-medium:12px;--spw-button-py-large:16px;box-sizing:border-box;display:inline-block;font-size:100%;line-height:1.3;vertical-align:top}:host *,:host :after,:host :before{box-sizing:inherit;font-family:Nunito Sans}body{margin:0}main{display:block}h1{font-size:2em;margin:.67em 0}hr{box-sizing:content-box;height:0;overflow:visible}pre{font-family:monospace,monospace;font-size:1em}a{background-color:transparent}abbr[title]{border-bottom:none;text-decoration:underline;-webkit-text-decoration:underline dotted;text-decoration:underline dotted}b,strong{font-weight:bolder}code,kbd,samp{font-family:monospace,monospace;font-size:1em}small{font-size:80%}sub,sup{font-size:75%;line-height:0;position:relative;vertical-align:baseline}sub{bottom:-.25em}sup{top:-.5em}img{border-style:none}button,input,optgroup,select,textarea{font-family:inherit;font-size:100%;line-height:1.15;margin:0}button,input{overflow:visible}button,select{text-transform:none}[type=button],[type=reset],[type=submit],button{-webkit-appearance:button}[type=button]::-moz-focus-inner,[type=reset]::-moz-focus-inner,[type=submit]::-moz-focus-inner,button::-moz-focus-inner{border-style:none;padding:0}[type=button]:-moz-focusring,[type=reset]:-moz-focusring,[type=submit]:-moz-focusring,button:-moz-focusring{outline:1px dotted ButtonText}fieldset{padding:.35em .75em .625em}legend{box-sizing:border-box;color:inherit;display:table;max-width:100%;padding:0;white-space:normal}progress{vertical-align:baseline}textarea{overflow:auto}[type=checkbox],[type=radio]{box-sizing:border-box;padding:0}[type=number]::-webkit-inner-spin-button,[type=number]::-webkit-outer-spin-button{height:auto}[type=search]{-webkit-appearance:textfield;outline-offset:-2px}[type=search]::-webkit-search-decoration{-webkit-appearance:none}::-webkit-file-upload-button{-webkit-appearance:button;font:inherit}details{display:block}summary{display:list-item}[hidden],template{display:none}:root{--spw-ds-container-xl:1200px;--spw-ds-container-lg:1024px;--spw-ds-container-md:768px;--spw-ds-container-sm:640px}.spw-ds-container{margin-left:auto;margin-right:auto;padding-left:16px;padding-right:16px;width:100%}@media (min-width:460px){.spw-ds-container{max-width:var(--spw-ds-container-sm)}}@media (min-width:768px){.spw-ds-container{max-width:var(--spw-ds-container-md)}}@media (min-width:1024px){.spw-ds-container{max-width:var(--spw-ds-container-lg)}}@media (min-width:1350px){.spw-ds-container{max-width:var(--spw-ds-container-xl)}}:host([is-full-width]){display:block;width:100%}.spw-button{border:2px solid transparent;border-radius:9999px;cursor:pointer;display:block;font-weight:700;letter-spacing:.18px;line-height:1;outline:3px solid transparent;overflow:hidden;transition:all .1s ease-in;width:100%}.spw-button--fullwidth{width:100%!important}.spw-button--fullwidth-mobile{width:100%}@media (min-width:768px){.spw-button--fullwidth-mobile{width:auto}}.spw-button--is-icon-only{padding-left:0!important;padding-right:0!important}.spw-button:focus-visible{box-shadow:0 0 0 5px #000;outline:3px solid #fff;outline-offset:-1px}.spw-button spw-loading{left:50%;opacity:0;pointer-events:none;position:absolute;top:50%;transform:translate(-50%,-50%);z-index:1}.spw-button--loading{pointer-events:none;position:relative}.spw-button--loading spw-loading{opacity:1}.spw-button__inner,.spw-button__inner-text{align-items:center;display:flex;justify-content:center;position:relative;z-index:2}.spw-button--loading .spw-button__inner-text{opacity:0}.spw-button:is(a){text-decoration:none}.spw-button--primary{background:var(--spw-ds-primary);color:var(--spw-ds-white)}.spw-button--primary:not([disabled]):hover{background:var(--spw-ds-variant)}.spw-button--primary:not([disabled]):active{background:var(--spw-ds-active)}.spw-button--primary spw-loading{--spw-loading-border-color:hsla(0,0%,100%,.3);--spw-loading-spinner-color:#fff}.spw-button--secondary{background:var(--spw-color-themes-grey-grey-200);color:var(--spw-color-themes-grey-grey-900)}.spw-button--secondary:not([disabled]):hover{background:var(--spw-color-themes-grey-grey-300)}.spw-button--secondary:not([disabled]):active{background:var(--spw-color-themes-grey-grey-400)}.spw-button--secondary spw-loading{--spw-loading-border-color:rgba(0,0,0,.1);--spw-loading-spinner-color:var(--spw-ds-primary)}.spw-button--tertiary{background:none;border-radius:4px;color:var(--spw-ds-primary);transition:none}.spw-button--tertiary:not([disabled]):active,.spw-button--tertiary:not([disabled]):hover{text-decoration:underline}.spw-button--tertiary:not([disabled]):active{color:var(--spw-ds-active)}.spw-button--tertiary spw-loading{--spw-loading-border-color:rgba(0,0,0,.1);--spw-loading-spinner-color:var(--spw-ds-primary)}.spw-button--primary[disabled],.spw-button--secondary[disabled]{background:var(--spw-color-themes-grey-grey-100)}.spw-button--tertiary[disabled]{background:none}.spw-button--primary[disabled],.spw-button--secondary[disabled],.spw-button--tertiary[disabled]{border-color:none;color:var(--spw-color-themes-grey-grey-400);cursor:not-allowed}.spw-button--surface-dark{box-shadow:var(--spw-effect-elevation-8)}.spw-button--surface-dark:not([disabled]):active{box-shadow:var(--spw-effect-elevation-active-0),var(--spw-effect-elevation-active-1),var(--spw-effect-elevation-active-2)}.spw-button--surface-dark[disabled]{box-shadow:none}.spw-button--surface-dark.spw-button--primary{background:var(--spw-ds-white);border-color:var(--spw-ds-white);color:var(--spw-colors-support-grey-grey-900)}.spw-button--surface-dark.spw-button--primary:not([disabled]):hover{background:transparent;border-color:var(--spw-ds-white);color:var(--spw-ds-white)}.spw-button--surface-dark.spw-button--primary:not([disabled]):active{background:transparent;border-color:var(--spw-colors-support-grey-grey-500);color:var(--spw-colors-support-grey-grey-500)}.spw-button--surface-dark.spw-button--primary[disabled]{background:var(--spw-colors-support-grey-grey-700);border-color:var(--spw-colors-support-grey-grey-700);color:var(--spw-colors-support-grey-grey-800)}.spw-button--surface-dark.spw-button--primary spw-loading{--spw-loading-border-color:var(--spw-colors-support-grey-grey-300);--spw-loading-spinner-color:var(--spw-ds-primary)}.spw-button--surface-dark.spw-button--secondary{background:transparent;border-color:var(--spw-ds-white);color:var(--spw-ds-white)}.spw-button--surface-dark.spw-button--secondary:not([disabled]):hover{background:var(--spw-ds-white);border-color:var(--spw-ds-white);color:var(--spw-colors-support-grey-grey-900)}.spw-button--surface-dark.spw-button--secondary:not([disabled]):active{background:var(--spw-colors-support-grey-grey-400);border-color:var(--spw-colors-support-grey-grey-400);color:var(--spw-colors-support-grey-grey-900)}.spw-button--surface-dark.spw-button--secondary[disabled]{background:var(--spw-colors-support-grey-grey-700);border-color:var(--spw-colors-support-grey-grey-700);color:var(--spw-colors-support-grey-grey-800)}.spw-button--surface-dark.spw-button--secondary spw-loading{--spw-loading-border-color:hsla(0,0%,100%,.2);--spw-loading-spinner-color:#fff}.spw-button--surface-dark.spw-button--tertiary{box-shadow:none;color:var(--spw-ds-white)}.spw-button--surface-dark.spw-button--tertiary:not([disabled]):active,.spw-button--surface-dark.spw-button--tertiary:not([disabled]):hover{box-shadow:none}.spw-button--surface-dark.spw-button--tertiary:not([disabled]):active{color:var(--spw-ds-primary)}.spw-button--surface-dark.spw-button--tertiary[disabled]{color:var(--spw-colors-support-grey-grey-700)}.spw-button--surface-dark.spw-button--tertiary spw-loading{--spw-loading-border-color:hsla(0,0%,100%,.2);--spw-loading-spinner-color:#fff}.spw-button--surface-primary,.spw-button--surface-primary:not([disabled]):active,.spw-button--surface-primary[disabled]{box-shadow:none}.spw-button--surface-primary.spw-button--primary{background:var(--spw-ds-white);border-color:var(--spw-ds-white);color:var(--spw-colors-support-grey-grey-900)}.spw-button--surface-primary.spw-button--primary:not([disabled]):hover{background:transparent;border-color:var(--spw-ds-white);color:var(--spw-ds-white)}.spw-button--surface-primary.spw-button--primary:not([disabled]):active{background:transparent;border-color:#fff;color:#fff;opacity:.9}.spw-button--surface-primary.spw-button--primary[disabled]{background:#fff;border-color:#fff;color:var(--spw-colors-support-grey-grey-600);opacity:.5}.spw-button--surface-primary.spw-button--primary spw-loading{--spw-loading-border-color:var(--spw-colors-support-grey-grey-300);--spw-loading-spinner-color:var(--spw-ds-primary)}.spw-button--surface-primary.spw-button--secondary{background:transparent;border-color:var(--spw-ds-white);color:var(--spw-ds-white)}.spw-button--surface-primary.spw-button--secondary:not([disabled]):hover{background:var(--spw-ds-white);border-color:var(--spw-ds-white);color:var(--spw-colors-support-grey-grey-900)}.spw-button--surface-primary.spw-button--secondary:not([disabled]):active{background:#fff;border-color:#fff;color:var(--spw-colors-support-grey-grey-900);opacity:.9}.spw-button--surface-primary.spw-button--secondary[disabled]{background:#fff;border-color:#fff;color:var(--spw-colors-support-grey-grey-600);opacity:.5}.spw-button--surface-primary.spw-button--secondary spw-loading{--spw-loading-border-color:hsla(0,0%,100%,.2);--spw-loading-spinner-color:#fff}.spw-button--surface-primary.spw-button--tertiary{box-shadow:none;color:var(--spw-ds-white)}.spw-button--surface-primary.spw-button--tertiary:not([disabled]):active,.spw-button--surface-primary.spw-button--tertiary:not([disabled]):hover{box-shadow:none}.spw-button--surface-primary.spw-button--tertiary:not([disabled]):active{color:#fff;opacity:.9}.spw-button--surface-primary.spw-button--tertiary[disabled]{color:#fff;opacity:.5}.spw-button--surface-primary.spw-button--tertiary spw-loading{--spw-loading-border-color:hsla(0,0%,100%,.2);--spw-loading-spinner-color:#fff}.spw-button--surface-light.spw-button--primary[disabled]{background:var(--spw-colors-support-grey-grey-500);color:var(--spw-colors-support-grey-grey-600)}.spw-button--surface-light.spw-button--secondary{background:var(--spw-ds-white);color:var(--spw-colors-support-grey-grey-900)}.spw-button--surface-light.spw-button--secondary:not([disabled]):hover{background:var(--spw-colors-support-grey-grey-300)}.spw-button--surface-light.spw-button--secondary:not([disabled]):active{background:var(--spw-colors-support-grey-grey-500)}.spw-button--surface-light.spw-button--secondary[disabled]{background:var(--spw-colors-support-grey-grey-500);color:var(--spw-colors-support-grey-grey-600)}.spw-button--surface-light.spw-button--tertiary{color:var(--spw-colors-support-grey-grey-900)}.spw-button--surface-light.spw-button--tertiary:not([disabled]):active{color:var(--spw-ds-primary)}.spw-button--surface-light.spw-button--tertiary[disabled]{color:var(--spw-colors-support-grey-grey-600)}.spw-button--large{font-size:var(--spw-button-font-size-large);padding:var(--spw-button-py-large) var(--spw-button-px-large)}.spw-button--large .spw-button__inner-text{gap:12px}.spw-button--large.spw-button--is-icon-only{width:54px}.spw-button--medium{font-size:var(--spw-button-font-size-medium);padding:var(--spw-button-py-medium) var(--spw-button-px-medium)}.spw-button--medium .spw-button__inner-text{gap:8px}.spw-button--medium.spw-button--is-icon-only{width:45px}.spw-button--small{font-size:var(--spw-button-font-size-small);padding:var(--spw-button-py-small) var(--spw-button-px-small)}.spw-button--small .spw-button__inner-text{gap:6px}.spw-button--small.spw-button--is-icon-only{width:35px}.spw-button--large.spw-button--tertiary,.spw-button--medium.spw-button--tertiary,.spw-button--small.spw-button--tertiary{padding:4px}.spw-tw-mr-2{margin-right:.5rem}.spw-tw-relative{position:relative}.spw-tw-flex{display:flex}.spw-tw-w-full{width:100%}.spw-tw-items-center{align-items:center}.spw-tw-justify-between{justify-content:space-between}.spw-tw-gap-x-2{column-gap:.5rem}.spw-tw-gap-y-2{row-gap:.5rem}.spw-tw-space-x-4>:not([hidden])~:not([hidden]){--tw-space-x-reverse:0;margin-left:calc(1rem*(1 - var(--tw-space-x-reverse)));margin-right:calc(1rem*var(--tw-space-x-reverse))}";const a=class{constructor(e){t(this,e);this.spwFocus=o(this,"spwFocus",7);this.spwBlur=o(this,"spwBlur",7);this.spwNavigate=o(this,"spwNavigate",7);this.target="_self";this.name="";this.value="";this.type="button";this.variant="primary";this.surface="default";this.disabled=false;this.size="medium";this.isIconOnly=false;this.isFullWidth=false;this.isFullWidthMobile=true;this.isLoading=false;this.onFocus=()=>{this.spwFocus.emit()};this.onBlur=()=>{this.spwBlur.emit()};this.onClick=t=>{if(this.disabled||this.isLoading){t.preventDefault();return}if(this.type==="reset"){t.preventDefault();this.resetFormInputs();return}if(this.type==="submit"&&!this.disabled){const o=this.el.closest("form");if(o){t.preventDefault();o.requestSubmit();return}}if(this.href!==undefined){this.spwNavigate.emit(t)}}}resetFormInputs(){const t=this.el.closest("form");if(!t)return;const o=t.querySelectorAll("spw-input");o.forEach((t=>{const o=t.shadowRoot.querySelector("input");if(o){o.value=""}}))}get elementClass(){return{"spw-button":true,[`spw-button--${this.variant}`]:true,[`spw-button--surface-${this.surface}`]:true,[`spw-button--${this.size}`]:true,[`spw-button--is-icon-only`]:this.isIconOnly,[`spw-button--fullwidth`]:this.isFullWidth,[`spw-button--fullwidth-mobile`]:this.isFullWidthMobile,[`spw-button--loading`]:this.isLoading}}render(){const{type:t,download:o,href:r,rel:s,target:n,name:a,value:i}=this;const p=this.href===undefined?"button":"a";const d=p==="button"?{type:t,name:a,value:i}:{download:o,href:r,rel:s,target:n};const l=this.icon&&!this.iconPosition?"right":this.iconPosition;const w=`spw-icon--${l}`;const c=this.icon?e("spw-icon",{class:w,icon:this.icon}):null;const u=this.disabled;const b={"aria-label":this===null||this===void 0?void 0:this.accAriaLabel,"aria-disabled":u?"true":null};return e(p,Object.assign({key:"e9eef72fb99c615172917acc24f70ebd45952829"},d,{class:this.elementClass,disabled:u,onFocus:this.onFocus,onBlur:this.onBlur,onClick:this.onClick},b),e("div",{key:"6a855c4097ae1aa79900f755448c03990f21a5cd",class:"spw-button__inner"},e("div",{key:"df7af3c99186aa808a65526d4c205a29d36ed285",class:"spw-button__inner-text"},l==="left"&&c,!this.isIconOnly&&e("slot",{key:"9909ce45a0e6e832fc98f5ea96da6c6c0a934399"}),l==="right"&&c)),e("spw-loading",{key:"5433366a7c599fcedd58cc6361bcb058c407689c",text:""}))}get el(){return r(this)}};a.style=n;const i="/*! normalize.css v8.0.1 | MIT License | github.com/necolas/normalize.css */html{-webkit-text-size-adjust:100%;line-height:1.3}h1,h2,h3,h4,h5,h6,li,p,ul{margin:0;padding:0}ul{list-style:none}:host{-webkit-text-size-adjust:100%;--spw-loading-border-color:var(--spw-color-themes-grey-grey-200);--spw-loading-spinner-color:var(--spw-ds-primary);box-sizing:border-box;display:block;font-size:100%;line-height:1.3}:host *,:host :after,:host :before{box-sizing:inherit;font-family:Nunito Sans}body{margin:0}main{display:block}h1{font-size:2em;margin:.67em 0}hr{box-sizing:content-box;height:0;overflow:visible}pre{font-family:monospace,monospace;font-size:1em}a{background-color:transparent}abbr[title]{border-bottom:none;text-decoration:underline;-webkit-text-decoration:underline dotted;text-decoration:underline dotted}b,strong{font-weight:bolder}code,kbd,samp{font-family:monospace,monospace;font-size:1em}small{font-size:80%}sub,sup{font-size:75%;line-height:0;position:relative;vertical-align:baseline}sub{bottom:-.25em}sup{top:-.5em}img{border-style:none}button,input,optgroup,select,textarea{font-family:inherit;font-size:100%;line-height:1.15;margin:0}button,input{overflow:visible}button,select{text-transform:none}[type=button],[type=reset],[type=submit],button{-webkit-appearance:button}[type=button]::-moz-focus-inner,[type=reset]::-moz-focus-inner,[type=submit]::-moz-focus-inner,button::-moz-focus-inner{border-style:none;padding:0}[type=button]:-moz-focusring,[type=reset]:-moz-focusring,[type=submit]:-moz-focusring,button:-moz-focusring{outline:1px dotted ButtonText}fieldset{padding:.35em .75em .625em}legend{box-sizing:border-box;color:inherit;display:table;max-width:100%;padding:0;white-space:normal}progress{vertical-align:baseline}textarea{overflow:auto}[type=checkbox],[type=radio]{box-sizing:border-box;padding:0}[type=number]::-webkit-inner-spin-button,[type=number]::-webkit-outer-spin-button{height:auto}[type=search]{-webkit-appearance:textfield;outline-offset:-2px}[type=search]::-webkit-search-decoration{-webkit-appearance:none}::-webkit-file-upload-button{-webkit-appearance:button;font:inherit}details{display:block}summary{display:list-item}[hidden],template{display:none}:root{--spw-ds-container-xl:1200px;--spw-ds-container-lg:1024px;--spw-ds-container-md:768px;--spw-ds-container-sm:640px}.spw-ds-container{margin-left:auto;margin-right:auto;padding-left:16px;padding-right:16px;width:100%}@media (min-width:460px){.spw-ds-container{max-width:var(--spw-ds-container-sm)}}@media (min-width:768px){.spw-ds-container{max-width:var(--spw-ds-container-md)}}@media (min-width:1024px){.spw-ds-container{max-width:var(--spw-ds-container-lg)}}@media (min-width:1350px){.spw-ds-container{max-width:var(--spw-ds-container-xl)}}.spw-loading{display:flex}.spw-loading__spinner{animation:loading 1s linear infinite;border:4px solid var(--spw-loading-border-color);border-radius:50%;border-top-color:var(--spw-loading-spinner-color);height:20px;width:20px}@keyframes loading{to{transform:rotate(1turn)}}.spw-loading__text{color:var(--spw-color-themes-grey-grey-800);margin-left:8px}.spw-tw-mr-2{margin-right:.5rem}.spw-tw-relative{position:relative}.spw-tw-flex{display:flex}.spw-tw-w-full{width:100%}.spw-tw-items-center{align-items:center}.spw-tw-justify-between{justify-content:space-between}.spw-tw-gap-x-2{column-gap:.5rem}.spw-tw-gap-y-2{row-gap:.5rem}.spw-tw-space-x-4>:not([hidden])~:not([hidden]){--tw-space-x-reverse:0;margin-left:calc(1rem*(1 - var(--tw-space-x-reverse)));margin-right:calc(1rem*var(--tw-space-x-reverse))}.spw-tw-mb-10{margin-bottom:2.5rem}.spw-tw-mb-6{margin-bottom:1.5rem}.spw-tw-ml-2{margin-left:.5rem}.spw-tw-mr-4{margin-right:1rem}.spw-tw-mt-12{margin-top:3rem}.-spw-tw-mt-1{margin-top:-.25rem}.spw-tw-mb-2{margin-bottom:.5rem}";const p=class{constructor(o){t(this,o);this.text="Chargement..."}render(){return e(s,{key:"407115d12f98004dce5494c8307e2e9a6a96c069"},e("div",{key:"d8d178a2e22ec41314d221847c024abe1ef2599a",class:"spw-loading"},e("div",{key:"c173f74b988d9e9f84f5819b6d244143ec303e29",class:"spw-loading__spinner"}),this.text&&e("p",{key:"71770d28ebe8c1a034a93fdda549d08bc680eced",class:"spw-loading__text"},this.text)))}};p.style=i;export{a as spw_button,p as spw_loading};
2
+ //# sourceMappingURL=p-0f69442e.entry.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"names":["spwButtonCss","SpwButton","constructor","hostRef","this","target","name","value","type","variant","surface","disabled","size","isIconOnly","isFullWidth","isFullWidthMobile","isLoading","onFocus","spwFocus","emit","onBlur","spwBlur","onClick","ev","preventDefault","resetFormInputs","form","el","closest","requestSubmit","href","undefined","spwNavigate","spwInputs","querySelectorAll","forEach","spwInput","input","shadowRoot","querySelector","elementClass","render","download","rel","TagType","attrs","iconPosition","icon","iconClass","iconElement","h","class","isDisabled","ariaAttributes","accAriaLabel","Object","assign","key","text","spwLoadingCss","SpwLoading","Host"],"sources":["src/components/spw-button/spw-button.scss?tag=spw-button&encapsulation=shadow","src/components/spw-button/spw-button.tsx","src/components/spw-loading/spw-loading.scss?tag=spw-loading&encapsulation=shadow","src/components/spw-loading/spw-loading.tsx"],"sourcesContent":["@import '../../scss/mixins';\n\n:host {\n display: inline-block;\n vertical-align: top;\n --spw-button-font-size-small: 14px;\n --spw-button-font-size-medium: 16px;\n --spw-button-font-size-large: 18px;\n --spw-button-px-small: 16px;\n --spw-button-px-medium: 20px;\n --spw-button-px-large: 24px;\n --spw-button-py-small: 8px;\n --spw-button-py-medium: 12px;\n --spw-button-py-large: 16px;\n}\n\n:host([is-full-width]) {\n display: block;\n width: 100%;\n}\n\n/* Base */\n\n.spw-button {\n border: 2px solid transparent;\n display: block;\n width: 100%;\n border-radius: 9999px;\n letter-spacing: 0.18px;\n cursor: pointer;\n font-weight: bold;\n outline: 3px solid transparent;\n overflow: hidden;\n transition: all 0.1s ease-in;\n line-height: 1;\n\n &--fullwidth {\n width: 100% !important;\n }\n\n &--fullwidth-mobile {\n width: 100%;\n @include breakpoint(md) {\n width: auto;\n }\n }\n\n &--is-icon-only {\n padding-left: 0 !important;\n padding-right: 0 !important;\n }\n\n &:focus-visible {\n outline: 3px solid white;\n outline-offset: -1px;\n box-shadow: 0 0 0 5px black;\n }\n\n spw-loading {\n opacity: 0;\n position: absolute;\n top: 50%;\n left: 50%;\n pointer-events: none;\n transform: translate(-50%, -50%);\n z-index: 1;\n }\n\n &--loading {\n position: relative;\n pointer-events: none;\n spw-loading {\n opacity: 1;\n }\n }\n\n &__inner {\n display: flex;\n align-items: center;\n justify-content: center;\n position: relative;\n z-index: 2;\n }\n\n &__inner-text {\n display: flex;\n align-items: center;\n justify-content: center;\n position: relative;\n z-index: 2;\n .spw-button--loading & {\n opacity: 0;\n }\n }\n\n &:is(a) {\n text-decoration: none;\n }\n}\n\n/* Variants */\n\n.spw-button {\n &--primary {\n background: var(--spw-ds-primary);\n color: var(--spw-ds-white);\n &:not([disabled]):hover {\n background: var(--spw-ds-variant);\n }\n &:not([disabled]):active {\n background: var(--spw-ds-active);\n }\n spw-loading {\n --spw-loading-border-color: rgba(255, 255, 255, 0.3);\n --spw-loading-spinner-color: white;\n }\n }\n\n &--secondary {\n background: var(--spw-color-themes-grey-grey-200);\n color: var(--spw-color-themes-grey-grey-900);\n &:not([disabled]):hover {\n background: var(--spw-color-themes-grey-grey-300);\n }\n &:not([disabled]):active {\n background: var(--spw-color-themes-grey-grey-400);\n }\n spw-loading {\n --spw-loading-border-color: rgba(0, 0, 0, 0.1);\n --spw-loading-spinner-color: var(--spw-ds-primary);\n }\n }\n\n &--tertiary {\n transition: none;\n border-radius: 4px;\n background: none;\n color: var(--spw-ds-primary);\n &:not([disabled]):hover,\n &:not([disabled]):active {\n text-decoration: underline;\n }\n &:not([disabled]):active {\n color: var(--spw-ds-active);\n }\n spw-loading {\n --spw-loading-border-color: rgba(0, 0, 0, 0.1);\n --spw-loading-spinner-color: var(--spw-ds-primary);\n }\n }\n}\n\n/* Disabled */\n\n.spw-button {\n &--primary[disabled],\n &--secondary[disabled] {\n background: var(--spw-color-themes-grey-grey-100);\n }\n\n &--tertiary[disabled] {\n background: none;\n }\n\n &--primary[disabled],\n &--secondary[disabled],\n &--tertiary[disabled] {\n color: var(--spw-color-themes-grey-grey-400);\n border-color: none;\n cursor: not-allowed;\n }\n}\n\n/* Surface dark */\n\n.spw-button {\n &--surface-dark {\n box-shadow: var(--spw-effect-elevation-8);\n &:not([disabled]):active {\n box-shadow: var(--spw-effect-elevation-active-0), var(--spw-effect-elevation-active-1), var(--spw-effect-elevation-active-2);\n }\n\n &[disabled] {\n box-shadow: none;\n }\n\n &.spw-button--primary {\n color: var(--spw-colors-support-grey-grey-900);\n border-color: var(--spw-ds-white);\n background: var(--spw-ds-white);\n &:not([disabled]):hover {\n background: transparent;\n color: var(--spw-ds-white);\n border-color: var(--spw-ds-white);\n }\n &:not([disabled]):active {\n background: transparent;\n color: var(--spw-colors-support-grey-grey-500);\n border-color: var(--spw-colors-support-grey-grey-500);\n }\n &[disabled] {\n border-color: var(--spw-colors-support-grey-grey-700);\n background: var(--spw-colors-support-grey-grey-700);\n color: var(--spw-colors-support-grey-grey-800);\n }\n spw-loading {\n --spw-loading-border-color: var(--spw-colors-support-grey-grey-300);\n --spw-loading-spinner-color: var(--spw-ds-primary);\n }\n }\n\n &.spw-button--secondary {\n background: transparent;\n color: var(--spw-ds-white);\n border-color: var(--spw-ds-white);\n &:not([disabled]):hover {\n color: var(--spw-colors-support-grey-grey-900);\n border-color: var(--spw-ds-white);\n background: var(--spw-ds-white);\n }\n &:not([disabled]):active {\n color: var(--spw-colors-support-grey-grey-900);\n border-color: var(--spw-colors-support-grey-grey-400);\n background: var(--spw-colors-support-grey-grey-400);\n }\n &[disabled] {\n border-color: var(--spw-colors-support-grey-grey-700);\n background: var(--spw-colors-support-grey-grey-700);\n color: var(--spw-colors-support-grey-grey-800);\n }\n spw-loading {\n --spw-loading-border-color: rgba(255, 255, 255, 0.2);\n --spw-loading-spinner-color: white;\n }\n }\n\n &.spw-button--tertiary {\n box-shadow: none;\n color: var(--spw-ds-white);\n &:not([disabled]):hover,\n &:not([disabled]):active {\n box-shadow: none;\n }\n &:not([disabled]):active {\n color: var(--spw-ds-primary);\n }\n &[disabled] {\n color: var(--spw-colors-support-grey-grey-700);\n }\n spw-loading {\n --spw-loading-border-color: rgba(255, 255, 255, 0.2);\n --spw-loading-spinner-color: white;\n }\n }\n }\n}\n\n/* Surface primary */\n\n.spw-button {\n &--surface-primary {\n box-shadow: none;\n &:not([disabled]):active {\n box-shadow: none;\n }\n\n &[disabled] {\n box-shadow: none;\n }\n\n &.spw-button--primary {\n color: var(--spw-colors-support-grey-grey-900);\n border-color: var(--spw-ds-white);\n background: var(--spw-ds-white);\n &:not([disabled]):hover {\n background: transparent;\n color: var(--spw-ds-white);\n border-color: var(--spw-ds-white);\n }\n &:not([disabled]):active {\n background: transparent;\n color: white;\n border-color: white;\n opacity: 0.9;\n }\n &[disabled] {\n border-color: white;\n background: white;\n color: var(--spw-colors-support-grey-grey-600);\n opacity: 0.5;\n }\n spw-loading {\n --spw-loading-border-color: var(--spw-colors-support-grey-grey-300);\n --spw-loading-spinner-color: var(--spw-ds-primary);\n }\n }\n\n &.spw-button--secondary {\n background: transparent;\n color: var(--spw-ds-white);\n border-color: var(--spw-ds-white);\n &:not([disabled]):hover {\n color: var(--spw-colors-support-grey-grey-900);\n border-color: var(--spw-ds-white);\n background: var(--spw-ds-white);\n }\n &:not([disabled]):active {\n color: var(--spw-colors-support-grey-grey-900);\n border-color: white;\n background: white;\n opacity: 0.9;\n }\n &[disabled] {\n border-color: white;\n background: white;\n color: var(--spw-colors-support-grey-grey-600);\n opacity: 0.5;\n }\n spw-loading {\n --spw-loading-border-color: rgba(255, 255, 255, 0.2);\n --spw-loading-spinner-color: white;\n }\n }\n\n &.spw-button--tertiary {\n box-shadow: none;\n color: var(--spw-ds-white);\n &:not([disabled]):hover,\n &:not([disabled]):active {\n box-shadow: none;\n }\n &:not([disabled]):active {\n color: white;\n opacity: 0.9;\n }\n &[disabled] {\n color: white;\n opacity: 0.5;\n }\n spw-loading {\n --spw-loading-border-color: rgba(255, 255, 255, 0.2);\n --spw-loading-spinner-color: white;\n }\n }\n }\n}\n\n/* Surface light */\n\n.spw-button {\n &--surface-light {\n &.spw-button--primary {\n &[disabled] {\n color: var(--spw-colors-support-grey-grey-600);\n background: var(--spw-colors-support-grey-grey-500);\n }\n }\n\n &.spw-button--secondary {\n color: var(--spw-colors-support-grey-grey-900);\n background: var(--spw-ds-white);\n &:not([disabled]):hover {\n background: var(--spw-colors-support-grey-grey-300);\n }\n &:not([disabled]):active {\n background: var(--spw-colors-support-grey-grey-500);\n }\n &[disabled] {\n color: var(--spw-colors-support-grey-grey-600);\n background: var(--spw-colors-support-grey-grey-500);\n }\n }\n\n &.spw-button--tertiary {\n color: var(--spw-colors-support-grey-grey-900);\n &:not([disabled]):active {\n color: var(--spw-ds-primary);\n }\n &[disabled] {\n color: var(--spw-colors-support-grey-grey-600);\n }\n }\n }\n}\n\n/* Sizes */\n\n.spw-button {\n &--large {\n font-size: var(--spw-button-font-size-large);\n padding: var(--spw-button-py-large) var(--spw-button-px-large);\n .spw-button__inner-text {\n gap: 12px;\n }\n &.spw-button--is-icon-only {\n width: 54px;\n }\n }\n\n &--medium {\n font-size: var(--spw-button-font-size-medium);\n padding: var(--spw-button-py-medium) var(--spw-button-px-medium);\n .spw-button__inner-text {\n gap: 8px;\n }\n &.spw-button--is-icon-only {\n width: 45px;\n }\n }\n\n &--small {\n font-size: var(--spw-button-font-size-small);\n padding: var(--spw-button-py-small) var(--spw-button-px-small);\n .spw-button__inner-text {\n gap: 6px;\n }\n &.spw-button--is-icon-only {\n width: 35px;\n }\n }\n\n &--small,\n &--medium,\n &--large {\n &.spw-button--tertiary {\n padding: 4px;\n }\n }\n}\n","import { Component, Element, Prop, h, Event, EventEmitter } from '@stencil/core';\n\n@Component({\n tag: 'spw-button',\n styleUrl: 'spw-button.scss',\n shadow: true,\n})\nexport class SpwButton {\n @Element() el: HTMLSpwButtonElement;\n\n /** Spécifie le lien si nécessaire */\n @Prop() href?: string;\n /** Attribut target, s'applique uniquement si href est rempli */\n @Prop() target?: string = '_self';\n /** Remplit l'attribut rel */\n @Prop() rel?: string;\n /** Permet de télécharger un fichier au lieu de naviguer vers le lien */\n @Prop() download?: string;\n /** Nom du bouton */\n @Prop() name?: string = '';\n /** Valeur du bouton */\n @Prop() value?: string | number = '';\n /** Type du bouton */\n @Prop() type?: 'button' | 'submit' | 'reset' = 'button';\n\n /** Permet de sélectionner une variante du bouton */\n @Prop() variant?: 'primary' | 'secondary' | 'tertiary' = 'primary';\n /** Permet de choisir la surface d'arrière-plan du bouton */\n @Prop() surface?: 'default' | 'dark' | 'light' | 'primary' = 'default';\n /** Si désactivé, le bouton n'est pas utilisable */\n @Prop() disabled?: boolean = false;\n /** Permet de spécifier la taille du bouton */\n @Prop() size?: 'large' | 'medium' | 'small' = 'medium';\n\n /** Remplit l'attribut aria-label, utilisé à des fins d'accessibilité */\n @Prop() accAriaLabel?: string;\n\n /** Si rempli, vous pouvez utiliser une référence d'icône font-awesome */\n @Prop() isIconOnly?: boolean = false;\n /** Si rempli, vous pouvez utiliser une référence d'icône font-awesome */\n @Prop() icon?: string;\n /** Position de l'icône à l'intérieur du bouton */\n @Prop() iconPosition?: 'left' | 'right';\n\n /** Si vrai, le bouton prend toute la largeur */\n @Prop() isFullWidth?: boolean = false;\n /** Si vrai, le bouton prend toute la largeur en mobile */\n @Prop({ reflect: true }) isFullWidthMobile?: boolean = true;\n\n /** Affiche un état de chargement, désactive le bouton */\n @Prop() isLoading?: boolean = false;\n\n /** Lors du focus */\n @Event() spwFocus: EventEmitter<void>;\n /** Lors de la perte du focus */\n @Event() spwBlur: EventEmitter<void>;\n /** Navigation vers un lien lors du clic */\n @Event() spwNavigate: EventEmitter<MouseEvent>;\n\n private onFocus = () => {\n this.spwFocus.emit();\n };\n\n private onBlur = () => {\n this.spwBlur.emit();\n };\n\n private resetFormInputs() {\n const form = this.el.closest('form');\n if (!form) return;\n\n const spwInputs = form.querySelectorAll('spw-input');\n spwInputs.forEach(spwInput => {\n const input = spwInput.shadowRoot.querySelector('input');\n if (input) {\n input.value = '';\n }\n });\n }\n\n private onClick = (ev: MouseEvent) => {\n if (this.disabled || this.isLoading) {\n ev.preventDefault();\n return;\n }\n\n if (this.type === 'reset') {\n ev.preventDefault();\n this.resetFormInputs();\n return;\n }\n\n if (this.type === 'submit' && !this.disabled) {\n const form = this.el.closest('form');\n if (form) {\n ev.preventDefault();\n form.requestSubmit();\n return;\n }\n }\n\n if (this.href !== undefined) {\n this.spwNavigate.emit(ev);\n }\n };\n\n private get elementClass(): { [className: string]: boolean } {\n return {\n 'spw-button': true,\n [`spw-button--${this.variant}`]: true,\n [`spw-button--surface-${this.surface}`]: true,\n [`spw-button--${this.size}`]: true,\n [`spw-button--is-icon-only`]: this.isIconOnly,\n [`spw-button--fullwidth`]: this.isFullWidth,\n [`spw-button--fullwidth-mobile`]: this.isFullWidthMobile,\n [`spw-button--loading`]: this.isLoading,\n };\n }\n\n render() {\n const { type, download, href, rel, target, name, value } = this;\n const TagType = this.href === undefined ? 'button' : 'a';\n const attrs =\n TagType === 'button'\n ? { type: type, name, value }\n : {\n download,\n href,\n rel,\n target,\n };\n\n const iconPosition = this.icon && !this.iconPosition ? 'right' : this.iconPosition;\n const iconClass = `spw-icon--${iconPosition}`;\n const iconElement = this.icon ? <spw-icon class={iconClass} icon={this.icon}></spw-icon> : null;\n\n const isDisabled = this.disabled;\n\n const ariaAttributes = {\n 'aria-label': this?.accAriaLabel,\n 'aria-disabled': isDisabled ? 'true' : null,\n };\n\n return (\n <TagType {...attrs} class={this.elementClass} disabled={isDisabled} onFocus={this.onFocus} onBlur={this.onBlur} onClick={this.onClick} {...ariaAttributes}>\n <div class=\"spw-button__inner\">\n <div class=\"spw-button__inner-text\">\n {iconPosition === 'left' && iconElement}\n {!this.isIconOnly && <slot></slot>}\n {iconPosition === 'right' && iconElement}\n </div>\n </div>\n <spw-loading text=\"\"></spw-loading>\n </TagType>\n );\n }\n}\n",":host {\n display: block;\n --spw-loading-border-color: var(--spw-color-themes-grey-grey-200);\n --spw-loading-spinner-color: var(--spw-ds-primary);\n}\n\n.spw-loading {\n display: flex;\n &__spinner {\n width: 20px;\n height: 20px;\n border-radius: 50%;\n border: 4px solid var(--spw-loading-border-color);\n border-top-color: var(--spw-loading-spinner-color);\n animation: loading 1s linear infinite;\n }\n @keyframes loading {\n to {\n transform: rotate(360deg);\n }\n }\n &__text {\n margin-left: 8px;\n color: var(--spw-color-themes-grey-grey-800);\n }\n}\n","import { Component, Host, h, Prop } from '@stencil/core';\n\n@Component({\n tag: 'spw-loading',\n styleUrl: 'spw-loading.scss',\n shadow: true,\n})\nexport class SpwLoading {\n /** Permet de spécifier un texte de chargement */\n @Prop() text?: string = 'Chargement...';\n\n render() {\n return (\n <Host>\n <div class=\"spw-loading\">\n <div class=\"spw-loading__spinner\"></div>\n {this.text && <p class=\"spw-loading__text\">{this.text}</p>}\n </div>\n </Host>\n );\n }\n}\n"],"mappings":"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","ignoreList":[]}