@swisspost/design-system-components 1.5.0 → 1.6.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (302) hide show
  1. package/dist/cjs/check-non-empty-ae713942.js +13 -0
  2. package/dist/cjs/check-non-empty-ae713942.js.map +1 -0
  3. package/dist/cjs/{check-one-of-4c2e8b2e.js → check-one-of-27ad3154.js} +1 -1
  4. package/dist/cjs/check-one-of-27ad3154.js.map +1 -0
  5. package/dist/cjs/constants-238701d3.js +7 -0
  6. package/dist/cjs/constants-238701d3.js.map +1 -0
  7. package/dist/cjs/fade-35a3633a.js +12 -0
  8. package/dist/cjs/fade-35a3633a.js.map +1 -0
  9. package/dist/cjs/index-b38a23e0.js +41 -0
  10. package/dist/cjs/index-b38a23e0.js.map +1 -0
  11. package/dist/cjs/{index-12cc37c9.js → index-b619e205.js} +245 -41
  12. package/dist/cjs/index-b619e205.js.map +1 -0
  13. package/dist/cjs/index.cjs.js +26 -0
  14. package/dist/cjs/index.cjs.js.map +1 -1
  15. package/dist/cjs/loader.cjs.js +3 -12
  16. package/dist/cjs/loader.cjs.js.map +1 -1
  17. package/dist/cjs/package-7c4db872.js +7 -0
  18. package/dist/cjs/package-7c4db872.js.map +1 -0
  19. package/dist/cjs/post-accordion.cjs.entry.js +89 -0
  20. package/dist/cjs/post-accordion.cjs.entry.js.map +1 -0
  21. package/dist/cjs/post-alert-c037e6a3.js +101 -0
  22. package/dist/cjs/post-alert-c037e6a3.js.map +1 -0
  23. package/dist/cjs/post-alert.cjs.entry.js +9 -97
  24. package/dist/cjs/post-alert.cjs.entry.js.map +1 -1
  25. package/dist/cjs/post-collapsible-7c9d23a2.js +93 -0
  26. package/dist/cjs/post-collapsible-7c9d23a2.js.map +1 -0
  27. package/dist/cjs/post-collapsible.cjs.entry.js +7 -119
  28. package/dist/cjs/post-collapsible.cjs.entry.js.map +1 -1
  29. package/dist/cjs/post-components.cjs.js +3 -6
  30. package/dist/cjs/post-components.cjs.js.map +1 -1
  31. package/dist/cjs/post-icon-f418f76a.js +105 -0
  32. package/dist/cjs/post-icon-f418f76a.js.map +1 -0
  33. package/dist/cjs/post-icon.cjs.entry.js +8 -100
  34. package/dist/cjs/post-icon.cjs.entry.js.map +1 -1
  35. package/dist/cjs/post-tab-header-e08c2a42.js +33 -0
  36. package/dist/cjs/post-tab-header-e08c2a42.js.map +1 -0
  37. package/dist/cjs/post-tab-header.cjs.entry.js +6 -26
  38. package/dist/cjs/post-tab-header.cjs.entry.js.map +1 -1
  39. package/dist/cjs/post-tab-panel-721f7f32.js +27 -0
  40. package/dist/cjs/post-tab-panel-721f7f32.js.map +1 -0
  41. package/dist/cjs/post-tab-panel.cjs.entry.js +4 -20
  42. package/dist/cjs/post-tab-panel.cjs.entry.js.map +1 -1
  43. package/dist/cjs/post-tabs-4bcc867b.js +153 -0
  44. package/dist/cjs/post-tabs-4bcc867b.js.map +1 -0
  45. package/dist/cjs/post-tabs.cjs.entry.js +5 -127
  46. package/dist/cjs/post-tabs.cjs.entry.js.map +1 -1
  47. package/dist/cjs/post-tooltip-261c5cda.js +5095 -0
  48. package/dist/cjs/post-tooltip-261c5cda.js.map +1 -0
  49. package/dist/cjs/post-tooltip.cjs.entry.js +5 -5088
  50. package/dist/cjs/post-tooltip.cjs.entry.js.map +1 -1
  51. package/dist/collection/animations/collapse.js +13 -0
  52. package/dist/collection/animations/collapse.js.map +1 -0
  53. package/dist/collection/animations/fade.js +4 -4
  54. package/dist/collection/animations/fade.js.map +1 -1
  55. package/dist/collection/collection-manifest.json +10 -9
  56. package/dist/collection/components/post-accordion/post-accordion.css +1 -0
  57. package/dist/collection/components/post-accordion/post-accordion.js +178 -0
  58. package/dist/collection/components/post-accordion/post-accordion.js.map +1 -0
  59. package/dist/collection/components/post-alert/post-alert.css +6 -534
  60. package/dist/collection/components/post-alert/post-alert.js +10 -9
  61. package/dist/collection/components/post-alert/post-alert.js.map +1 -1
  62. package/dist/collection/components/post-collapsible/heading-levels.js +2 -0
  63. package/dist/collection/components/post-collapsible/heading-levels.js.map +1 -0
  64. package/dist/collection/components/post-collapsible/post-collapsible.css +1 -261
  65. package/dist/collection/components/post-collapsible/post-collapsible.js +65 -63
  66. package/dist/collection/components/post-collapsible/post-collapsible.js.map +1 -1
  67. package/dist/collection/components/post-icon/post-icon.css +1 -102
  68. package/dist/collection/components/post-icon/post-icon.js +5 -4
  69. package/dist/collection/components/post-icon/post-icon.js.map +1 -1
  70. package/dist/collection/components/post-tab-header/post-tab-header.css +3 -337
  71. package/dist/collection/components/post-tab-header/post-tab-header.js +6 -5
  72. package/dist/collection/components/post-tab-header/post-tab-header.js.map +1 -1
  73. package/dist/collection/components/post-tab-panel/post-tab-panel.css +1 -3
  74. package/dist/collection/components/post-tab-panel/post-tab-panel.js +2 -2
  75. package/dist/collection/components/post-tabs/post-tabs.css +1 -148
  76. package/dist/collection/components/post-tabs/post-tabs.js +36 -13
  77. package/dist/collection/components/post-tabs/post-tabs.js.map +1 -1
  78. package/dist/collection/components/post-tooltip/post-tooltip.css +1 -194
  79. package/dist/collection/components/post-tooltip/post-tooltip.js +22 -15
  80. package/dist/collection/components/post-tooltip/post-tooltip.js.map +1 -1
  81. package/dist/collection/index.js +8 -1
  82. package/dist/collection/index.js.map +1 -1
  83. package/dist/collection/utils/index.js +1 -3
  84. package/dist/collection/utils/index.js.map +1 -1
  85. package/dist/collection/utils/is-motion-reduced.js +4 -0
  86. package/dist/collection/utils/is-motion-reduced.js.map +1 -0
  87. package/dist/collection/utils/property-checkers/check-non-empty.js +1 -1
  88. package/dist/collection/utils/property-checkers/empty-or.js +1 -1
  89. package/dist/collection/utils/property-checkers/index.js +4 -4
  90. package/dist/components/check-non-empty.js +2 -2
  91. package/dist/components/check-non-empty.js.map +1 -1
  92. package/dist/components/check-one-of.js.map +1 -1
  93. package/dist/components/constants.js +5 -0
  94. package/dist/components/constants.js.map +1 -0
  95. package/dist/components/fade.js +4 -4
  96. package/dist/components/fade.js.map +1 -1
  97. package/dist/components/index.d.ts +6 -0
  98. package/dist/components/index.js +8 -1
  99. package/dist/components/index.js.map +1 -1
  100. package/dist/components/index2.js +36 -0
  101. package/dist/components/index2.js.map +1 -0
  102. package/dist/components/package.js +1 -1
  103. package/dist/components/post-accordion.d.ts +11 -0
  104. package/dist/components/post-accordion.js +108 -0
  105. package/dist/components/post-accordion.js.map +1 -0
  106. package/dist/components/post-alert.js +1 -129
  107. package/dist/components/post-alert.js.map +1 -1
  108. package/dist/components/post-alert2.js +138 -0
  109. package/dist/components/post-alert2.js.map +1 -0
  110. package/dist/components/post-collapsible.js +1 -146
  111. package/dist/components/post-collapsible.js.map +1 -1
  112. package/dist/components/post-collapsible2.js +117 -0
  113. package/dist/components/post-collapsible2.js.map +1 -0
  114. package/dist/components/post-icon2.js +12 -22
  115. package/dist/components/post-icon2.js.map +1 -1
  116. package/dist/components/post-tab-header.js +1 -45
  117. package/dist/components/post-tab-header.js.map +1 -1
  118. package/dist/components/post-tab-header2.js +51 -0
  119. package/dist/components/post-tab-header2.js.map +1 -0
  120. package/dist/components/post-tab-panel.js +1 -39
  121. package/dist/components/post-tab-panel.js.map +1 -1
  122. package/dist/components/post-tab-panel2.js +43 -0
  123. package/dist/components/post-tab-panel2.js.map +1 -0
  124. package/dist/components/post-tabs.js +1 -146
  125. package/dist/components/post-tabs.js.map +1 -1
  126. package/dist/components/post-tabs2.js +169 -0
  127. package/dist/components/post-tabs2.js.map +1 -0
  128. package/dist/components/post-tooltip.js +1 -5111
  129. package/dist/components/post-tooltip.js.map +1 -1
  130. package/dist/components/post-tooltip2.js +5117 -0
  131. package/dist/components/post-tooltip2.js.map +1 -0
  132. package/dist/docs.d.ts +334 -235
  133. package/dist/docs.json +458 -14
  134. package/dist/esm/check-non-empty-09c39561.js +11 -0
  135. package/dist/esm/check-non-empty-09c39561.js.map +1 -0
  136. package/dist/esm/{check-one-of-ded5e15e.js → check-one-of-74750af9.js} +1 -1
  137. package/dist/esm/check-one-of-74750af9.js.map +1 -0
  138. package/dist/esm/constants-8d548297.js +5 -0
  139. package/dist/esm/constants-8d548297.js.map +1 -0
  140. package/dist/esm/fade-7fd71785.js +9 -0
  141. package/dist/esm/fade-7fd71785.js.map +1 -0
  142. package/dist/esm/index-35921354.js +36 -0
  143. package/dist/esm/index-35921354.js.map +1 -0
  144. package/dist/esm/{index-5611074b.js → index-4eff5fc5.js} +245 -41
  145. package/dist/esm/index-4eff5fc5.js.map +1 -0
  146. package/dist/esm/index.js +14 -1
  147. package/dist/esm/index.js.map +1 -1
  148. package/dist/esm/loader.js +4 -13
  149. package/dist/esm/loader.js.map +1 -1
  150. package/dist/esm/package-3bbdb32c.js +5 -0
  151. package/dist/esm/package-3bbdb32c.js.map +1 -0
  152. package/dist/esm/post-accordion.entry.js +85 -0
  153. package/dist/esm/post-accordion.entry.js.map +1 -0
  154. package/dist/esm/post-alert-5dd43c8b.js +99 -0
  155. package/dist/esm/post-alert-5dd43c8b.js.map +1 -0
  156. package/dist/esm/post-alert.entry.js +8 -100
  157. package/dist/esm/post-alert.entry.js.map +1 -1
  158. package/dist/esm/post-collapsible-26dc2340.js +91 -0
  159. package/dist/esm/post-collapsible-26dc2340.js.map +1 -0
  160. package/dist/esm/post-collapsible.entry.js +6 -122
  161. package/dist/esm/post-collapsible.entry.js.map +1 -1
  162. package/dist/esm/post-components.js +4 -7
  163. package/dist/esm/post-components.js.map +1 -1
  164. package/dist/esm/post-icon-fb0eb8aa.js +103 -0
  165. package/dist/esm/post-icon-fb0eb8aa.js.map +1 -0
  166. package/dist/esm/post-icon.entry.js +7 -103
  167. package/dist/esm/post-icon.entry.js.map +1 -1
  168. package/dist/esm/post-tab-header-deebc551.js +31 -0
  169. package/dist/esm/post-tab-header-deebc551.js.map +1 -0
  170. package/dist/esm/post-tab-header.entry.js +5 -29
  171. package/dist/esm/post-tab-header.entry.js.map +1 -1
  172. package/dist/esm/post-tab-panel-4b820f71.js +25 -0
  173. package/dist/esm/post-tab-panel-4b820f71.js.map +1 -0
  174. package/dist/esm/post-tab-panel.entry.js +3 -23
  175. package/dist/esm/post-tab-panel.entry.js.map +1 -1
  176. package/dist/esm/post-tabs-2d8d6a33.js +151 -0
  177. package/dist/esm/post-tabs-2d8d6a33.js.map +1 -0
  178. package/dist/esm/post-tabs.entry.js +4 -130
  179. package/dist/esm/post-tabs.entry.js.map +1 -1
  180. package/dist/esm/post-tooltip-811309c5.js +5093 -0
  181. package/dist/esm/post-tooltip-811309c5.js.map +1 -0
  182. package/dist/esm/post-tooltip.entry.js +4 -5091
  183. package/dist/esm/post-tooltip.entry.js.map +1 -1
  184. package/dist/post-components/index.esm.js +1 -1
  185. package/dist/post-components/{p-2b6ab354.entry.js → p-01e8dfe6.js} +3 -3
  186. package/dist/post-components/p-01e8dfe6.js.map +1 -0
  187. package/dist/post-components/p-0a49c1a3.entry.js +2 -0
  188. package/dist/post-components/{p-bcc705f1.js → p-1339f8cd.js} +1 -1
  189. package/dist/post-components/p-1339f8cd.js.map +1 -0
  190. package/dist/post-components/p-1a8a8ef2.js +2 -0
  191. package/dist/post-components/p-1a8a8ef2.js.map +1 -0
  192. package/dist/post-components/p-27092ac3.entry.js +2 -0
  193. package/dist/post-components/p-27092ac3.entry.js.map +1 -0
  194. package/dist/post-components/{p-e5306504.js → p-2737eaf5.js} +1 -1
  195. package/dist/post-components/p-2737eaf5.js.map +1 -0
  196. package/dist/post-components/p-332eef46.js +2 -0
  197. package/dist/post-components/p-332eef46.js.map +1 -0
  198. package/dist/post-components/p-440193f4.js +2 -0
  199. package/dist/post-components/p-440193f4.js.map +1 -0
  200. package/dist/post-components/p-541142fd.js +2 -0
  201. package/dist/post-components/p-541142fd.js.map +1 -0
  202. package/dist/post-components/p-574acdb0.js +2 -0
  203. package/dist/post-components/p-574acdb0.js.map +1 -0
  204. package/dist/post-components/p-66460e3f.entry.js +2 -0
  205. package/dist/post-components/p-66460e3f.entry.js.map +1 -0
  206. package/dist/post-components/p-810ee105.entry.js +2 -0
  207. package/dist/post-components/p-810ee105.entry.js.map +1 -0
  208. package/dist/post-components/p-939df031.entry.js +2 -0
  209. package/dist/post-components/p-939df031.entry.js.map +1 -0
  210. package/dist/post-components/p-94b3f291.entry.js +2 -0
  211. package/dist/post-components/p-94b3f291.entry.js.map +1 -0
  212. package/dist/post-components/p-97000cb6.js +2 -0
  213. package/dist/post-components/p-97000cb6.js.map +1 -0
  214. package/dist/post-components/p-a7649277.js +3 -0
  215. package/dist/post-components/p-a7649277.js.map +1 -0
  216. package/dist/post-components/p-abd149b3.entry.js +2 -0
  217. package/dist/post-components/p-abd149b3.entry.js.map +1 -0
  218. package/dist/post-components/p-b531475e.js +2 -0
  219. package/dist/post-components/p-b531475e.js.map +1 -0
  220. package/dist/post-components/p-c6b73d6e.js +2 -0
  221. package/dist/post-components/p-c6b73d6e.js.map +1 -0
  222. package/dist/post-components/{p-29535fea.entry.js → p-d4fb9f16.js} +2 -2
  223. package/dist/post-components/p-d4fb9f16.js.map +1 -0
  224. package/dist/post-components/p-dfe29f7f.js +2 -0
  225. package/dist/post-components/p-dfe29f7f.js.map +1 -0
  226. package/dist/post-components/p-e9dc9039.entry.js +2 -0
  227. package/dist/post-components/p-e9dc9039.entry.js.map +1 -0
  228. package/dist/post-components/post-components.esm.js +1 -1
  229. package/dist/post-components/post-components.esm.js.map +1 -1
  230. package/dist/types/animations/collapse.d.ts +2 -0
  231. package/dist/types/components/post-accordion/post-accordion.d.ts +28 -0
  232. package/dist/types/components/post-alert/post-alert.d.ts +1 -1
  233. package/dist/types/components/post-collapsible/heading-levels.d.ts +2 -0
  234. package/dist/types/components/post-collapsible/post-collapsible.d.ts +16 -12
  235. package/dist/types/components/post-tabs/post-tabs.d.ts +1 -0
  236. package/dist/types/components.d.ts +79 -3
  237. package/dist/types/index.d.ts +7 -0
  238. package/dist/types/stencil-public-runtime.d.ts +38 -5
  239. package/dist/types/utils/index.d.ts +1 -3
  240. package/dist/types/utils/is-motion-reduced.d.ts +1 -0
  241. package/loader/index.d.ts +1 -1
  242. package/package.json +8 -8
  243. package/dist/cjs/check-non-empty-35b4d0b5.js +0 -14
  244. package/dist/cjs/check-non-empty-35b4d0b5.js.map +0 -1
  245. package/dist/cjs/check-one-of-4c2e8b2e.js.map +0 -1
  246. package/dist/cjs/check-type-508a21a5.js +0 -18
  247. package/dist/cjs/check-type-508a21a5.js.map +0 -1
  248. package/dist/cjs/fade-8c6d4fa7.js +0 -12
  249. package/dist/cjs/fade-8c6d4fa7.js.map +0 -1
  250. package/dist/cjs/index-12cc37c9.js.map +0 -1
  251. package/dist/cjs/index-f8f6f146.js +0 -28
  252. package/dist/cjs/index-f8f6f146.js.map +0 -1
  253. package/dist/cjs/package-67091813.js +0 -7
  254. package/dist/cjs/package-67091813.js.map +0 -1
  255. package/dist/collection/utils/get-element-height.js +0 -12
  256. package/dist/collection/utils/get-element-height.js.map +0 -1
  257. package/dist/collection/utils/on-transition-end.js +0 -15
  258. package/dist/collection/utils/on-transition-end.js.map +0 -1
  259. package/dist/collection/utils/should-reduce-motion.js +0 -4
  260. package/dist/collection/utils/should-reduce-motion.js.map +0 -1
  261. package/dist/components/check-type.js +0 -16
  262. package/dist/components/check-type.js.map +0 -1
  263. package/dist/esm/check-non-empty-554bdf88.js +0 -11
  264. package/dist/esm/check-non-empty-554bdf88.js.map +0 -1
  265. package/dist/esm/check-one-of-ded5e15e.js.map +0 -1
  266. package/dist/esm/check-type-18ebb4e7.js +0 -16
  267. package/dist/esm/check-type-18ebb4e7.js.map +0 -1
  268. package/dist/esm/fade-671f1489.js +0 -9
  269. package/dist/esm/fade-671f1489.js.map +0 -1
  270. package/dist/esm/index-5611074b.js.map +0 -1
  271. package/dist/esm/index-7f723686.js +0 -24
  272. package/dist/esm/index-7f723686.js.map +0 -1
  273. package/dist/esm/package-f5cb3167.js +0 -5
  274. package/dist/esm/package-f5cb3167.js.map +0 -1
  275. package/dist/esm/polyfills/css-shim.js +0 -1
  276. package/dist/post-components/p-12046db8.entry.js +0 -2
  277. package/dist/post-components/p-12046db8.entry.js.map +0 -1
  278. package/dist/post-components/p-15fc087f.js +0 -2
  279. package/dist/post-components/p-15fc087f.js.map +0 -1
  280. package/dist/post-components/p-24b07f64.js +0 -2
  281. package/dist/post-components/p-29535fea.entry.js.map +0 -1
  282. package/dist/post-components/p-296af738.entry.js +0 -2
  283. package/dist/post-components/p-296af738.entry.js.map +0 -1
  284. package/dist/post-components/p-2b6ab354.entry.js.map +0 -1
  285. package/dist/post-components/p-75a7b352.js +0 -2
  286. package/dist/post-components/p-75a7b352.js.map +0 -1
  287. package/dist/post-components/p-a14ec7bb.entry.js +0 -2
  288. package/dist/post-components/p-a14ec7bb.entry.js.map +0 -1
  289. package/dist/post-components/p-bcc705f1.js.map +0 -1
  290. package/dist/post-components/p-c7497ecb.entry.js +0 -2
  291. package/dist/post-components/p-c7497ecb.entry.js.map +0 -1
  292. package/dist/post-components/p-c8efe0ae.js +0 -2
  293. package/dist/post-components/p-c8efe0ae.js.map +0 -1
  294. package/dist/post-components/p-cc6e4eb8.entry.js +0 -2
  295. package/dist/post-components/p-cc6e4eb8.entry.js.map +0 -1
  296. package/dist/post-components/p-d94db268.js +0 -3
  297. package/dist/post-components/p-d94db268.js.map +0 -1
  298. package/dist/post-components/p-e5306504.js.map +0 -1
  299. package/dist/types/utils/get-element-height.d.ts +0 -3
  300. package/dist/types/utils/on-transition-end.d.ts +0 -1
  301. package/dist/types/utils/should-reduce-motion.d.ts +0 -1
  302. /package/dist/post-components/{p-24b07f64.js.map → p-0a49c1a3.entry.js.map} +0 -0
@@ -2,34 +2,14 @@
2
2
 
3
3
  Object.defineProperty(exports, '__esModule', { value: true });
4
4
 
5
- const index = require('./index-12cc37c9.js');
6
- const _package = require('./package-67091813.js');
7
- const checkNonEmpty = require('./check-non-empty-35b4d0b5.js');
5
+ const postTabHeader = require('./post-tab-header-e08c2a42.js');
6
+ require('./index-b619e205.js');
7
+ require('./package-7c4db872.js');
8
+ require('./check-non-empty-ae713942.js');
9
+ require('./constants-238701d3.js');
8
10
 
9
- const postTabHeaderCss = ".tab-title{display:inline-block;position:relative;box-sizing:border-box;padding:1rem;transition:background-color 100ms;border-right:1px solid transparent;border-left:1px solid transparent;outline-color:currentColor;opacity:0.7;color:var(--post-contrast-color);text-decoration:none}.tab-title:focus{background-color:unset;color:var(--post-contrast-color)}.tab-title:hover{opacity:1;background-color:#fff;color:var(--post-contrast-color)}.tab-title:focus-visible{outline:transparent;opacity:1;background-color:#fff;color:var(--post-contrast-color);box-shadow:none}.tab-title:focus-visible::after{content:\"\";display:block;position:absolute;top:2px;right:1px;bottom:0;left:1px;box-shadow:0 0 0 1px #fff, 0 0 0 2px hsl(0, 0%, 20%)}.tab-title.active{z-index:1;border-right-color:hsl(0, 0%, 80%);border-left-color:hsl(0, 0%, 80%);opacity:1;background-color:#fff;color:var(--post-contrast-color);font-weight:700}.tab-title.active::before{content:\"\";display:block;position:absolute;top:0;right:-1px;left:-1px;height:0.25rem;background-color:#fc0}:is(.bg-dark,.bg-primary,.bg-black,.bg-danger,.bg-nightblue,.bg-nightblue-bright,.bg-petrol,.bg-coral,.bg-olive,.bg-purple,.bg-purple-bright,.bg-aubergine,.bg-aubergine-bright) .tab-title:hover{background-color:rgba(255, 255, 255, 0.2)}:is(.bg-dark,.bg-primary,.bg-black,.bg-danger,.bg-nightblue,.bg-nightblue-bright,.bg-petrol,.bg-coral,.bg-olive,.bg-purple,.bg-purple-bright,.bg-aubergine,.bg-aubergine-bright) .tab-title:focus-visible{background-color:rgba(255, 255, 255, 0.2)}@media (forced-colors: active), (-ms-high-contrast: active), (-ms-high-contrast: white-on-black){.tab-title{opacity:1;border-left-color:Canvas;border-right-color:Canvas;color:LinkText}.tab-title:hover,.tab-title:focus,.tab-title:focus-within,.tab-title:focus-visible{outline:2px solid Highlight;outline-offset:-0.25rem}.tab-title.active{border-left-color:ButtonText;border-right-color:ButtonText;color:Highlight}.tab-title.active::before{background-color:Highlight}}.bg-yellow .tab-title{background-color:#fc0}.bg-yellow .tab-title.active{background-color:#fc0}.bg-yellow .nav-item{background-color:#fc0}.bg-light .tab-title{background-color:#faf9f8}.bg-light .tab-title.active{background-color:#faf9f8}.bg-light .nav-item{background-color:#faf9f8}.bg-gray .tab-title{background-color:#f4f3f1}.bg-gray .tab-title.active{background-color:#f4f3f1}.bg-gray .nav-item{background-color:#f4f3f1}.bg-dark .tab-title{background-color:hsl(0, 0%, 20%)}.bg-dark .tab-title.active{background-color:hsl(0, 0%, 20%)}.bg-dark .nav-item{background-color:hsl(0, 0%, 20%)}.bg-primary .tab-title{background-color:hsl(0, 0%, 20%)}.bg-primary .tab-title.active{background-color:hsl(0, 0%, 20%)}.bg-primary .nav-item{background-color:hsl(0, 0%, 20%)}.bg-white .tab-title{background-color:#fff}.bg-white .tab-title.active{background-color:#fff}.bg-white .nav-item{background-color:#fff}.bg-black .tab-title{background-color:#000}.bg-black .tab-title.active{background-color:#000}.bg-black .nav-item{background-color:#000}.bg-success .tab-title{background-color:#2c911c}.bg-success .tab-title.active{background-color:#2c911c}.bg-success .nav-item{background-color:#2c911c}.bg-info .tab-title{background-color:#cce4ee}.bg-info .tab-title.active{background-color:#cce4ee}.bg-info .nav-item{background-color:#cce4ee}.bg-warning .tab-title{background-color:#f49e00}.bg-warning .tab-title.active{background-color:#f49e00}.bg-warning .nav-item{background-color:#f49e00}.bg-danger .tab-title{background-color:#a51728}.bg-danger .tab-title.active{background-color:#a51728}.bg-danger .nav-item{background-color:#a51728}.bg-nightblue .tab-title{background-color:#004976}.bg-nightblue .tab-title.active{background-color:#004976}.bg-nightblue .nav-item{background-color:#004976}.bg-nightblue-bright .tab-title{background-color:#0076a8}.bg-nightblue-bright .tab-title.active{background-color:#0076a8}.bg-nightblue-bright .nav-item{background-color:#0076a8}.bg-petrol .tab-title{background-color:#006d68}.bg-petrol .tab-title.active{background-color:#006d68}.bg-petrol .nav-item{background-color:#006d68}.bg-petrol-bright .tab-title{background-color:#00968f}.bg-petrol-bright .tab-title.active{background-color:#00968f}.bg-petrol-bright .nav-item{background-color:#00968f}.bg-coral .tab-title{background-color:#9e2a2f}.bg-coral .tab-title.active{background-color:#9e2a2f}.bg-coral .nav-item{background-color:#9e2a2f}.bg-coral-bright .tab-title{background-color:#e03c31}.bg-coral-bright .tab-title.active{background-color:#e03c31}.bg-coral-bright .nav-item{background-color:#e03c31}.bg-olive .tab-title{background-color:#716135}.bg-olive .tab-title.active{background-color:#716135}.bg-olive .nav-item{background-color:#716135}.bg-olive-bright .tab-title{background-color:#aa9d2e}.bg-olive-bright .tab-title.active{background-color:#aa9d2e}.bg-olive-bright .nav-item{background-color:#aa9d2e}.bg-purple .tab-title{background-color:#80276c}.bg-purple .tab-title.active{background-color:#80276c}.bg-purple .nav-item{background-color:#80276c}.bg-purple-bright .tab-title{background-color:#c5299b}.bg-purple-bright .tab-title.active{background-color:#c5299b}.bg-purple-bright .nav-item{background-color:#c5299b}.bg-aubergine .tab-title{background-color:#523178}.bg-aubergine .tab-title.active{background-color:#523178}.bg-aubergine .nav-item{background-color:#523178}.bg-aubergine-bright .tab-title{background-color:#7566a0}.bg-aubergine-bright .tab-title.active{background-color:#7566a0}.bg-aubergine-bright .nav-item{background-color:#7566a0}[class*=bg-] .tab-title.active:focus::after{background-color:rgba(255, 255, 255, 0.2)}@supports selector(*:focus-visible){[class*=bg-] .tab-title.active:focus::after{background-color:unset}[class*=bg-] .tab-title.active:focus-visible::after{background-color:rgba(255, 255, 255, 0.2)}}:host{display:block}";
10
11
 
11
- const PostTabHeader = class {
12
- constructor(hostRef) {
13
- index.registerInstance(this, hostRef);
14
- this.tabId = undefined;
15
- this.panel = undefined;
16
- }
17
- validateFor(newValue) {
18
- checkNonEmpty.checkNonEmpty(newValue, 'The "panel" prop is required for the post-tab-header.');
19
- }
20
- componentWillLoad() {
21
- this.tabId = `tab-${this.host.id || crypto.randomUUID()}`;
22
- }
23
- render() {
24
- return (index.h(index.Host, { "data-version": _package.version }, index.h("li", { class: "nav-item" }, index.h("a", { "aria-selected": "false", class: "tab-title nav-link", href: "#", id: this.tabId, role: "tab" }, index.h("slot", null)))));
25
- }
26
- get host() { return index.getElement(this); }
27
- static get watchers() { return {
28
- "panel": ["validateFor"]
29
- }; }
30
- };
31
- PostTabHeader.style = postTabHeaderCss;
32
12
 
33
- exports.post_tab_header = PostTabHeader;
13
+ exports.post_tab_header = postTabHeader.PostTabHeader;
34
14
 
35
15
  //# sourceMappingURL=post-tab-header.cjs.entry.js.map
@@ -1 +1 @@
1
- {"file":"post-tab-header.entry.cjs.js","mappings":";;;;;;;;AAAA,MAAM,gBAAgB,GAAG,msLAAmsL;;MCS/sL,aAAa;;;;;;EAWxB,WAAW,CAAC,QAAyC;IACnDA,2BAAa,CAAC,QAAQ,EAAE,uDAAuD,CAAC,CAAC;GAClF;EAED,iBAAiB;IACf,IAAI,CAAC,KAAK,GAAG,OAAO,IAAI,CAAC,IAAI,CAAC,EAAE,IAAI,MAAM,CAAC,UAAU,EAAE,EAAE,CAAC;GAC3D;EAED,MAAM;IACJ,QACEC,QAACC,UAAI,oBAAeC,gBAAO,IACzBF,gBAAI,KAAK,EAAC,UAAU,IAClBA,gCACgB,OAAO,EACrB,KAAK,EAAC,oBAAoB,EAC1B,IAAI,EAAC,GAAG,EACR,EAAE,EAAE,IAAI,CAAC,KAAK,EACd,IAAI,EAAC,KAAK,IAEVA,qBAAO,CACL,CACD,CACA,EACP;GACH;;;;;;;;;;","names":["checkNonEmpty","h","Host","version"],"sources":["./src/components/post-tab-header/post-tab-header.scss?tag=post-tab-header&encapsulation=shadow","./src/components/post-tab-header/post-tab-header.tsx"],"sourcesContent":["@use '@swisspost/design-system-styles/components/tabs/tab-title';\n\n:host {\n display: block;\n}\n","import { Component, Element, h, Host, Prop, State, Watch } from '@stencil/core';\nimport { version } from '../../../package.json';\nimport { checkNonEmpty } from '../../utils';\n\n@Component({\n tag: 'post-tab-header',\n styleUrl: 'post-tab-header.scss',\n shadow: true,\n})\nexport class PostTabHeader {\n @Element() host: HTMLPostTabHeaderElement;\n\n @State() tabId: string;\n\n /**\n * The name of the panel controlled by the tab header.\n */\n @Prop() readonly panel: HTMLPostTabPanelElement['name'];\n\n @Watch('panel')\n validateFor(newValue: HTMLPostTabPanelElement['name']) {\n checkNonEmpty(newValue, 'The \"panel\" prop is required for the post-tab-header.');\n }\n\n componentWillLoad() {\n this.tabId = `tab-${this.host.id || crypto.randomUUID()}`;\n }\n\n render() {\n return (\n <Host data-version={version}>\n <li class=\"nav-item\">\n <a\n aria-selected=\"false\"\n class=\"tab-title nav-link\"\n href=\"#\"\n id={this.tabId}\n role=\"tab\"\n >\n <slot/>\n </a>\n </li>\n </Host>\n );\n }\n}\n"],"version":3}
1
+ {"file":"post-tab-header.entry.cjs.js","mappings":";;;;;;;;;;;;","names":[],"sources":[],"sourcesContent":[],"version":3}
@@ -0,0 +1,27 @@
1
+ 'use strict';
2
+
3
+ const index = require('./index-b619e205.js');
4
+ const _package = require('./package-7c4db872.js');
5
+
6
+ const postTabPanelCss = ":host{display:none}";
7
+
8
+ const PostTabPanel = class {
9
+ constructor(hostRef) {
10
+ index.registerInstance(this, hostRef);
11
+ this.panelId = undefined;
12
+ this.name = undefined;
13
+ }
14
+ componentWillLoad() {
15
+ // get the id set on the host element or use a random id by default
16
+ this.panelId = `panel-${this.host.id || crypto.randomUUID()}`;
17
+ }
18
+ render() {
19
+ return (index.h(index.Host, { "data-version": _package.version }, index.h("div", { class: "tab-pane", id: this.panelId, role: "tabpanel" }, index.h("slot", null))));
20
+ }
21
+ get host() { return index.getElement(this); }
22
+ };
23
+ PostTabPanel.style = postTabPanelCss;
24
+
25
+ exports.PostTabPanel = PostTabPanel;
26
+
27
+ //# sourceMappingURL=post-tab-panel-721f7f32.js.map
@@ -0,0 +1 @@
1
+ {"file":"post-tab-panel-721f7f32.js","mappings":";;;;;AAAA,MAAM,eAAe,GAAG,qBAAqB;;MCQhC,YAAY;;;;;;EAUvB,iBAAiB;;IAEf,IAAI,CAAC,OAAO,GAAG,SAAS,IAAI,CAAC,IAAI,CAAC,EAAE,IAAI,MAAM,CAAC,UAAU,EAAE,EAAE,CAAC;GAC/D;EAED,MAAM;IACJ,QACEA,QAACC,UAAI,oBAAeC,gBAAO,IACzBF,iBACE,KAAK,EAAC,UAAU,EAChB,EAAE,EAAE,IAAI,CAAC,OAAO,EAChB,IAAI,EAAC,UAAU,IAEfA,qBAAO,CACH,CACD,EACP;GACH;;;;;;;","names":["h","Host","version"],"sources":["src/components/post-tab-panel/post-tab-panel.scss?tag=post-tab-panel&encapsulation=shadow","src/components/post-tab-panel/post-tab-panel.tsx"],"sourcesContent":[":host {\n display: none;\n}\n","import { Component, Element, h, Host, Prop, State } from '@stencil/core';\nimport { version } from '../../../package.json';\n\n@Component({\n tag: 'post-tab-panel',\n styleUrl: 'post-tab-panel.scss',\n shadow: true,\n})\nexport class PostTabPanel {\n @Element() host: HTMLPostTabPanelElement;\n\n @State() panelId: string;\n\n /**\n * The name of the panel, used to associate it with a tab header.\n */\n @Prop() readonly name: string;\n\n componentWillLoad() {\n // get the id set on the host element or use a random id by default\n this.panelId = `panel-${this.host.id || crypto.randomUUID()}`;\n }\n\n render() {\n return (\n <Host data-version={version}>\n <div\n class=\"tab-pane\"\n id={this.panelId}\n role=\"tabpanel\"\n >\n <slot/>\n </div>\n </Host>\n );\n }\n}\n"],"version":3}
@@ -2,28 +2,12 @@
2
2
 
3
3
  Object.defineProperty(exports, '__esModule', { value: true });
4
4
 
5
- const index = require('./index-12cc37c9.js');
6
- const _package = require('./package-67091813.js');
5
+ const postTabPanel = require('./post-tab-panel-721f7f32.js');
6
+ require('./index-b619e205.js');
7
+ require('./package-7c4db872.js');
7
8
 
8
- const postTabPanelCss = ":host{display:none}";
9
9
 
10
- const PostTabPanel = class {
11
- constructor(hostRef) {
12
- index.registerInstance(this, hostRef);
13
- this.panelId = undefined;
14
- this.name = undefined;
15
- }
16
- componentWillLoad() {
17
- // get the id set on the host element or use a random id by default
18
- this.panelId = `panel-${this.host.id || crypto.randomUUID()}`;
19
- }
20
- render() {
21
- return (index.h(index.Host, { "data-version": _package.version }, index.h("div", { class: "tab-pane", id: this.panelId, role: "tabpanel" }, index.h("slot", null))));
22
- }
23
- get host() { return index.getElement(this); }
24
- };
25
- PostTabPanel.style = postTabPanelCss;
26
10
 
27
- exports.post_tab_panel = PostTabPanel;
11
+ exports.post_tab_panel = postTabPanel.PostTabPanel;
28
12
 
29
13
  //# sourceMappingURL=post-tab-panel.cjs.entry.js.map
@@ -1 +1 @@
1
- {"file":"post-tab-panel.entry.cjs.js","mappings":";;;;;;;AAAA,MAAM,eAAe,GAAG,qBAAqB;;MCQhC,YAAY;;;;;;EAUvB,iBAAiB;;IAEf,IAAI,CAAC,OAAO,GAAG,SAAS,IAAI,CAAC,IAAI,CAAC,EAAE,IAAI,MAAM,CAAC,UAAU,EAAE,EAAE,CAAC;GAC/D;EAED,MAAM;IACJ,QACEA,QAACC,UAAI,oBAAeC,gBAAO,IACzBF,iBACE,KAAK,EAAC,UAAU,EAChB,EAAE,EAAE,IAAI,CAAC,OAAO,EAChB,IAAI,EAAC,UAAU,IAEfA,qBAAO,CACH,CACD,EACP;GACH;;;;;;;","names":["h","Host","version"],"sources":["./src/components/post-tab-panel/post-tab-panel.scss?tag=post-tab-panel&encapsulation=shadow","./src/components/post-tab-panel/post-tab-panel.tsx"],"sourcesContent":[":host {\n display: none;\n}\n","import { Component, Element, h, Host, Prop, State } from '@stencil/core';\nimport { version } from '../../../package.json';\n\n@Component({\n tag: 'post-tab-panel',\n styleUrl: 'post-tab-panel.scss',\n shadow: true,\n})\nexport class PostTabPanel {\n @Element() host: HTMLPostTabPanelElement;\n\n @State() panelId: string;\n\n /**\n * The name of the panel, used to associate it with a tab header.\n */\n @Prop() readonly name: string;\n\n componentWillLoad() {\n // get the id set on the host element or use a random id by default\n this.panelId = `panel-${this.host.id || crypto.randomUUID()}`;\n }\n\n render() {\n return (\n <Host data-version={version}>\n <div\n class=\"tab-pane\"\n id={this.panelId}\n role=\"tabpanel\"\n >\n <slot/>\n </div>\n </Host>\n );\n }\n}\n"],"version":3}
1
+ {"file":"post-tab-panel.entry.cjs.js","mappings":";;;;;;;;;;","names":[],"sources":[],"sourcesContent":[],"version":3}
@@ -0,0 +1,153 @@
1
+ 'use strict';
2
+
3
+ const index = require('./index-b619e205.js');
4
+ const _package = require('./package-7c4db872.js');
5
+ const fade = require('./fade-35a3633a.js');
6
+
7
+ const postTabsCss = ".tabs-wrapper{position:relative;padding-top:1rem;border:0;background-color:#faf9f8}.tabs-wrapper::after{content:\"\";position:absolute;bottom:0;width:100%;height:1px;background-color:#ccc}.tabs-wrapper .tabs{background-color:rgba(0,0,0,0) !important}@media (forced-colors: active),(-ms-high-contrast: active),(-ms-high-contrast: white-on-black){.tabs-wrapper::after{background-color:ButtonBorder}}.tabs{margin:0;padding:0;list-style:none;display:flex;flex-wrap:nowrap;overflow-x:auto;overscroll-behavior-x:contain;white-space:nowrap}.tabs::after{content:\"\";display:block;flex:1 0 auto;width:1rem}.tab-content{padding-top:1rem;padding-bottom:1rem}.bg-yellow .tabs-wrapper{background-color:#fc0}.bg-light .tabs-wrapper{background-color:#faf9f8}.bg-gray .tabs-wrapper{background-color:#f4f3f1}.bg-dark .tabs-wrapper{background-color:#333}.bg-primary .tabs-wrapper{background-color:#333}.bg-white .tabs-wrapper{background-color:#fff}.bg-black .tabs-wrapper{background-color:#000}.bg-success .tabs-wrapper{background-color:#2c911c}.bg-info .tabs-wrapper{background-color:#cce4ee}.bg-warning .tabs-wrapper{background-color:#f49e00}.bg-danger .tabs-wrapper{background-color:#a51728}.bg-nightblue .tabs-wrapper{background-color:#004976}.bg-nightblue-bright .tabs-wrapper{background-color:#0076a8}.bg-petrol .tabs-wrapper{background-color:#006d68}.bg-petrol-bright .tabs-wrapper{background-color:#00968f}.bg-coral .tabs-wrapper{background-color:#9e2a2f}.bg-coral-bright .tabs-wrapper{background-color:#e03c31}.bg-olive .tabs-wrapper{background-color:#716135}.bg-olive-bright .tabs-wrapper{background-color:#aa9d2e}.bg-purple .tabs-wrapper{background-color:#80276c}.bg-purple-bright .tabs-wrapper{background-color:#c5299b}.bg-aubergine .tabs-wrapper{background-color:#523178}.bg-aubergine-bright .tabs-wrapper{background-color:#7566a0}:host{display:block}";
8
+
9
+ const PostTabs = class {
10
+ constructor(hostRef) {
11
+ index.registerInstance(this, hostRef);
12
+ this.tabChange = index.createEvent(this, "tabChange", 7);
13
+ this.isLoaded = false;
14
+ this.activePanel = undefined;
15
+ }
16
+ get tabs() {
17
+ return this.host.querySelectorAll('post-tab-header');
18
+ }
19
+ componentDidLoad() {
20
+ this.moveMisplacedTabs();
21
+ this.enableTabs();
22
+ const initiallyActivePanel = this.activePanel || this.tabs.item(0).panel;
23
+ void this.show(initiallyActivePanel);
24
+ this.isLoaded = true;
25
+ }
26
+ /**
27
+ * Shows the panel with the given name and selects its associated tab.
28
+ * Any other panel that was previously shown becomes hidden and its associated tab is unselected.
29
+ */
30
+ async show(panelName) {
31
+ var _a;
32
+ // do nothing if the tab is already active
33
+ if (panelName === ((_a = this.activeTab) === null || _a === void 0 ? void 0 : _a.panel)) {
34
+ return;
35
+ }
36
+ const previousTab = this.activeTab;
37
+ const newTab = this.host.querySelector(`post-tab-header[panel=${panelName}]`);
38
+ this.activateTab(newTab);
39
+ // if a panel is currently being displayed, remove it from the view and complete the associated animation
40
+ if (this.showing) {
41
+ this.showing.effect['target'].style.display = 'none';
42
+ this.showing.finish();
43
+ }
44
+ // hide the currently visible panel only if no other animation is running
45
+ if (previousTab && !this.showing && !this.hiding) {
46
+ this.hidePanel(previousTab.panel);
47
+ }
48
+ // wait for any hiding animation to complete before showing the selected tab
49
+ if (this.hiding) {
50
+ await this.hiding.finished;
51
+ }
52
+ this.showSelectedPanel();
53
+ // wait for any display animation to complete for the returned promise to fully resolve
54
+ if (this.showing) {
55
+ await this.showing.finished;
56
+ }
57
+ this.tabChange.emit(this.activeTab.panel);
58
+ }
59
+ moveMisplacedTabs() {
60
+ if (!this.tabs)
61
+ return;
62
+ this.tabs.forEach(tab => {
63
+ if (tab.getAttribute('slot') === 'tabs')
64
+ return;
65
+ tab.setAttribute('slot', 'tabs');
66
+ });
67
+ }
68
+ enableTabs() {
69
+ if (!this.tabs)
70
+ return;
71
+ this.tabs.forEach(async (tab) => {
72
+ await tab.componentOnReady();
73
+ const tabTitle = tab.shadowRoot.querySelector('.tab-title');
74
+ // if the tab has an "aria-controls" attribute it was already linked to its panel: do nothing
75
+ if (tabTitle.getAttribute('aria-controls'))
76
+ return;
77
+ const tabPanel = this.getPanel(tab.panel).shadowRoot.querySelector('.tab-pane');
78
+ tabTitle.setAttribute('aria-controls', tabPanel.id);
79
+ tabPanel.setAttribute('aria-labelledby', tabTitle.id);
80
+ tab.addEventListener('click', () => {
81
+ void this.show(tab.panel);
82
+ });
83
+ tab.addEventListener('keydown', ({ key }) => {
84
+ if (key === 'ArrowRight' || key === 'ArrowLeft')
85
+ this.navigateTabs(tab, key);
86
+ });
87
+ });
88
+ // if the currently active tab was removed from the DOM then select the first one
89
+ if (this.activeTab && !this.activeTab.isConnected) {
90
+ void this.show(this.tabs.item(0).panel);
91
+ }
92
+ }
93
+ activateTab(tab) {
94
+ if (this.activeTab) {
95
+ const tabTitle = this.activeTab.shadowRoot.querySelector('.tab-title');
96
+ tabTitle.setAttribute('aria-selected', 'false');
97
+ tabTitle.setAttribute('tabindex', '-1');
98
+ tabTitle.classList.remove('active');
99
+ }
100
+ const tabTitle = tab.shadowRoot.querySelector('.tab-title');
101
+ tabTitle.setAttribute('aria-selected', 'true');
102
+ tabTitle.removeAttribute('tabindex');
103
+ tabTitle.classList.add('active');
104
+ this.activeTab = tab;
105
+ }
106
+ hidePanel(panelName) {
107
+ const previousPanel = this.getPanel(panelName);
108
+ if (!previousPanel)
109
+ return;
110
+ this.hiding = fade.fadeOut(previousPanel);
111
+ this.hiding.onfinish = () => {
112
+ previousPanel.style.display = 'none';
113
+ this.hiding = null;
114
+ };
115
+ }
116
+ showSelectedPanel() {
117
+ const panel = this.getPanel(this.activeTab.panel);
118
+ panel.style.display = 'block';
119
+ // prevent the initially selected panel from fading in
120
+ if (!this.isLoaded)
121
+ return;
122
+ this.showing = fade.fadeIn(panel);
123
+ this.showing.onfinish = () => {
124
+ this.showing = null;
125
+ };
126
+ }
127
+ getPanel(name) {
128
+ return this.host.querySelector(`post-tab-panel[name=${name}]`);
129
+ }
130
+ navigateTabs(tab, key) {
131
+ const activeTabIndex = Array.from(this.tabs).indexOf(tab);
132
+ let nextTab;
133
+ if (key === 'ArrowRight') {
134
+ nextTab = this.tabs[activeTabIndex + 1] || this.tabs[0];
135
+ }
136
+ else {
137
+ nextTab = this.tabs[activeTabIndex - 1] || this.tabs[this.tabs.length - 1];
138
+ }
139
+ if (!nextTab)
140
+ return;
141
+ const nextTabTitle = nextTab.shadowRoot.querySelector('.tab-title');
142
+ nextTabTitle.focus();
143
+ }
144
+ render() {
145
+ return (index.h(index.Host, { "data-version": _package.version }, index.h("div", { class: "tabs-wrapper" }, index.h("div", { class: "tabs", role: "tablist" }, index.h("slot", { name: "tabs", onSlotchange: () => this.enableTabs() }))), index.h("div", { class: "tab-content" }, index.h("slot", { onSlotchange: () => this.moveMisplacedTabs() }))));
146
+ }
147
+ get host() { return index.getElement(this); }
148
+ };
149
+ PostTabs.style = postTabsCss;
150
+
151
+ exports.PostTabs = PostTabs;
152
+
153
+ //# sourceMappingURL=post-tabs-4bcc867b.js.map
@@ -0,0 +1 @@
1
+ {"file":"post-tabs-4bcc867b.js","mappings":"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","names":["fadeOut","fadeIn","h","Host","version"],"sources":["src/components/post-tabs/post-tabs.scss?tag=post-tabs&encapsulation=shadow","src/components/post-tabs/post-tabs.tsx"],"sourcesContent":["@use '@swisspost/design-system-styles/components/tabs/tabs-wrapper';\n\n:host {\n display: block;\n}\n","import { Component, Element, Event, EventEmitter, h, Host, Method, Prop } from '@stencil/core';\nimport { version } from '../../../package.json';\nimport { fadeIn, fadeOut } from '../../animations';\n\n@Component({\n tag: 'post-tabs',\n styleUrl: 'post-tabs.scss',\n shadow: true,\n})\nexport class PostTabs {\n private activeTab: HTMLPostTabHeaderElement;\n private showing: Animation;\n private hiding: Animation;\n private isLoaded = false;\n\n private get tabs(): NodeListOf<HTMLPostTabHeaderElement> {\n return this.host.querySelectorAll('post-tab-header');\n }\n\n @Element() host: HTMLPostTabsElement;\n\n /**\n * The name of the panel that is initially shown.\n * If not specified, it defaults to the panel associated with the first tab.\n *\n * **Changing this value after initialization has no effect.**\n */\n @Prop() readonly activePanel: HTMLPostTabPanelElement['name'];\n\n /**\n * An event emitted after the active tab changes, when the fade in transition of its associated panel is finished.\n * The payload is the name of the newly shown panel.\n */\n @Event() tabChange: EventEmitter<HTMLPostTabPanelElement['name']>;\n\n componentDidLoad() {\n this.moveMisplacedTabs();\n this.enableTabs();\n\n const initiallyActivePanel = this.activePanel || this.tabs.item(0).panel;\n void this.show(initiallyActivePanel);\n\n this.isLoaded = true;\n }\n\n /**\n * Shows the panel with the given name and selects its associated tab.\n * Any other panel that was previously shown becomes hidden and its associated tab is unselected.\n */\n @Method()\n async show(panelName: string) {\n // do nothing if the tab is already active\n if (panelName === this.activeTab?.panel) {\n return;\n }\n\n const previousTab = this.activeTab;\n const newTab: HTMLPostTabHeaderElement = this.host.querySelector(\n `post-tab-header[panel=${panelName}]`,\n );\n this.activateTab(newTab);\n\n // if a panel is currently being displayed, remove it from the view and complete the associated animation\n if (this.showing) {\n this.showing.effect['target'].style.display = 'none';\n this.showing.finish();\n }\n\n // hide the currently visible panel only if no other animation is running\n if (previousTab && !this.showing && !this.hiding) {\n this.hidePanel(previousTab.panel);\n }\n\n // wait for any hiding animation to complete before showing the selected tab\n if (this.hiding) {\n await this.hiding.finished;\n }\n\n this.showSelectedPanel();\n\n // wait for any display animation to complete for the returned promise to fully resolve\n if (this.showing) {\n await this.showing.finished;\n }\n\n this.tabChange.emit(this.activeTab.panel);\n }\n\n private moveMisplacedTabs() {\n if (!this.tabs) return;\n\n this.tabs.forEach(tab => {\n if (tab.getAttribute('slot') === 'tabs') return;\n tab.setAttribute('slot', 'tabs');\n });\n }\n\n private enableTabs() {\n if (!this.tabs) return;\n\n this.tabs.forEach(async tab => {\n await tab.componentOnReady();\n\n const tabTitle = tab.shadowRoot.querySelector('.tab-title');\n\n // if the tab has an \"aria-controls\" attribute it was already linked to its panel: do nothing\n if (tabTitle.getAttribute('aria-controls')) return;\n\n const tabPanel = this.getPanel(tab.panel).shadowRoot.querySelector('.tab-pane');\n tabTitle.setAttribute('aria-controls', tabPanel.id);\n tabPanel.setAttribute('aria-labelledby', tabTitle.id);\n\n tab.addEventListener('click', () => {\n void this.show(tab.panel);\n });\n\n tab.addEventListener('keydown', ({ key }) => {\n if (key === 'ArrowRight' || key === 'ArrowLeft') this.navigateTabs(tab, key);\n });\n });\n\n // if the currently active tab was removed from the DOM then select the first one\n if (this.activeTab && !this.activeTab.isConnected) {\n void this.show(this.tabs.item(0).panel);\n }\n }\n\n private activateTab(tab: HTMLPostTabHeaderElement) {\n if (this.activeTab) {\n const tabTitle = this.activeTab.shadowRoot.querySelector('.tab-title');\n tabTitle.setAttribute('aria-selected', 'false');\n tabTitle.setAttribute('tabindex', '-1');\n tabTitle.classList.remove('active');\n }\n\n const tabTitle = tab.shadowRoot.querySelector('.tab-title');\n tabTitle.setAttribute('aria-selected', 'true');\n tabTitle.removeAttribute('tabindex');\n tabTitle.classList.add('active');\n\n this.activeTab = tab;\n }\n\n private hidePanel(panelName: HTMLPostTabPanelElement['name']) {\n const previousPanel = this.getPanel(panelName);\n\n if (!previousPanel) return;\n\n this.hiding = fadeOut(previousPanel);\n this.hiding.onfinish = () => {\n previousPanel.style.display = 'none';\n this.hiding = null;\n };\n }\n\n private showSelectedPanel() {\n const panel = this.getPanel(this.activeTab.panel);\n panel.style.display = 'block';\n\n // prevent the initially selected panel from fading in\n if (!this.isLoaded) return;\n\n this.showing = fadeIn(panel);\n this.showing.onfinish = () => {\n this.showing = null;\n };\n }\n\n private getPanel(name: string): HTMLPostTabPanelElement {\n return this.host.querySelector(`post-tab-panel[name=${name}]`);\n }\n\n private navigateTabs(tab: HTMLPostTabHeaderElement, key: 'ArrowRight' | 'ArrowLeft') {\n const activeTabIndex = Array.from(this.tabs).indexOf(tab);\n\n let nextTab: HTMLPostTabHeaderElement;\n if (key === 'ArrowRight') {\n nextTab = this.tabs[activeTabIndex + 1] || this.tabs[0];\n } else {\n nextTab = this.tabs[activeTabIndex - 1] || this.tabs[this.tabs.length - 1];\n }\n\n if (!nextTab) return;\n\n const nextTabTitle = nextTab.shadowRoot.querySelector('.tab-title') as HTMLAnchorElement;\n nextTabTitle.focus();\n }\n\n render() {\n return (\n <Host data-version={version}>\n <div class=\"tabs-wrapper\">\n <div class=\"tabs\" role=\"tablist\">\n <slot name=\"tabs\" onSlotchange={() => this.enableTabs()} />\n </div>\n </div>\n <div class=\"tab-content\">\n <slot onSlotchange={() => this.moveMisplacedTabs()} />\n </div>\n </Host>\n );\n }\n}\n"],"version":3}
@@ -2,135 +2,13 @@
2
2
 
3
3
  Object.defineProperty(exports, '__esModule', { value: true });
4
4
 
5
- const index = require('./index-12cc37c9.js');
6
- const _package = require('./package-67091813.js');
7
- const fade = require('./fade-8c6d4fa7.js');
5
+ const postTabs = require('./post-tabs-4bcc867b.js');
6
+ require('./index-b619e205.js');
7
+ require('./package-7c4db872.js');
8
+ require('./fade-35a3633a.js');
8
9
 
9
- const postTabsCss = ".tabs-wrapper{position:relative;padding-top:1rem;border:0;background-color:#faf9f8}.tabs-wrapper::after{content:\"\";position:absolute;bottom:0;width:100%;height:1px;background-color:hsl(0, 0%, 80%)}.tabs-wrapper .tabs{background-color:transparent !important}@media (forced-colors: active), (-ms-high-contrast: active), (-ms-high-contrast: white-on-black){.tabs-wrapper::after{background-color:ButtonBorder}}.tabs{margin:0;padding:0;list-style:none;display:flex;flex-wrap:nowrap;overflow-x:auto;overscroll-behavior-x:contain;white-space:nowrap}.tabs::after{content:\"\";display:block;flex:1 0 auto;width:1rem}.tab-content{padding-top:1rem;padding-bottom:1rem}.bg-yellow .tabs-wrapper{background-color:#fc0}.bg-light .tabs-wrapper{background-color:#faf9f8}.bg-gray .tabs-wrapper{background-color:#f4f3f1}.bg-dark .tabs-wrapper{background-color:hsl(0, 0%, 20%)}.bg-primary .tabs-wrapper{background-color:hsl(0, 0%, 20%)}.bg-white .tabs-wrapper{background-color:#fff}.bg-black .tabs-wrapper{background-color:#000}.bg-success .tabs-wrapper{background-color:#2c911c}.bg-info .tabs-wrapper{background-color:#cce4ee}.bg-warning .tabs-wrapper{background-color:#f49e00}.bg-danger .tabs-wrapper{background-color:#a51728}.bg-nightblue .tabs-wrapper{background-color:#004976}.bg-nightblue-bright .tabs-wrapper{background-color:#0076a8}.bg-petrol .tabs-wrapper{background-color:#006d68}.bg-petrol-bright .tabs-wrapper{background-color:#00968f}.bg-coral .tabs-wrapper{background-color:#9e2a2f}.bg-coral-bright .tabs-wrapper{background-color:#e03c31}.bg-olive .tabs-wrapper{background-color:#716135}.bg-olive-bright .tabs-wrapper{background-color:#aa9d2e}.bg-purple .tabs-wrapper{background-color:#80276c}.bg-purple-bright .tabs-wrapper{background-color:#c5299b}.bg-aubergine .tabs-wrapper{background-color:#523178}.bg-aubergine-bright .tabs-wrapper{background-color:#7566a0}:host{display:block}";
10
10
 
11
- const PostTabs = class {
12
- constructor(hostRef) {
13
- index.registerInstance(this, hostRef);
14
- this.tabChange = index.createEvent(this, "tabChange", 7);
15
- this.isLoaded = false;
16
- this.activePanel = undefined;
17
- }
18
- get tabs() {
19
- return this.host.querySelectorAll('post-tab-header');
20
- }
21
- componentDidLoad() {
22
- this.moveMisplacedTabs();
23
- this.enableTabs();
24
- const initiallyActivePanel = this.activePanel || this.tabs.item(0).panel;
25
- this.show(initiallyActivePanel);
26
- this.isLoaded = true;
27
- }
28
- /**
29
- * Shows the panel with the given name and selects its associated tab.
30
- * Any other panel that was previously shown becomes hidden and its associated tab is unselected.
31
- */
32
- async show(panelName) {
33
- var _a;
34
- // do nothing if the tab is already active
35
- if (panelName === ((_a = this.activeTab) === null || _a === void 0 ? void 0 : _a.panel)) {
36
- return;
37
- }
38
- const previousTab = this.activeTab;
39
- const newTab = this.host.querySelector(`post-tab-header[panel=${panelName}]`);
40
- this.activateTab(newTab);
41
- // if a panel is currently being displayed, remove it from the view and complete the associated animation
42
- if (this.showing) {
43
- this.showing.effect['target'].style.display = 'none';
44
- this.showing.finish();
45
- }
46
- // hide the currently visible panel only if no other animation is running
47
- if (previousTab && !this.showing && !this.hiding) {
48
- this.hidePanel(previousTab.panel);
49
- }
50
- // wait for any hiding animation to complete before showing the selected tab
51
- if (this.hiding) {
52
- await this.hiding.finished;
53
- }
54
- this.showSelectedPanel();
55
- // wait for any display animation to complete for the returned promise to fully resolve
56
- if (this.showing) {
57
- await this.showing.finished;
58
- }
59
- this.tabChange.emit(this.activeTab.panel);
60
- }
61
- moveMisplacedTabs() {
62
- if (!this.tabs)
63
- return;
64
- this.tabs.forEach(tab => {
65
- if (tab.getAttribute('slot') === 'tabs')
66
- return;
67
- tab.setAttribute('slot', 'tabs');
68
- });
69
- }
70
- enableTabs() {
71
- if (!this.tabs)
72
- return;
73
- this.tabs.forEach(async (tab) => {
74
- await tab.componentOnReady();
75
- const tabTitle = tab.shadowRoot.querySelector('.tab-title');
76
- // if the tab has an "aria-controls" attribute it was already linked to its panel: do nothing
77
- if (tabTitle.getAttribute('aria-controls'))
78
- return;
79
- const tabPanel = this.getPanel(tab.panel).shadowRoot.querySelector('.tab-pane');
80
- tabTitle.setAttribute('aria-controls', tabPanel.id);
81
- tabPanel.setAttribute('aria-labelledby', tabTitle.id);
82
- tab.addEventListener('click', e => {
83
- e.preventDefault();
84
- this.show(tab.panel);
85
- });
86
- });
87
- // if the currently active tab was removed from the DOM then select the first one
88
- if (this.activeTab && !this.activeTab.isConnected) {
89
- this.show(this.tabs.item(0).panel);
90
- }
91
- }
92
- activateTab(tab) {
93
- if (this.activeTab) {
94
- const tabTitle = this.activeTab.shadowRoot.querySelector('.tab-title');
95
- tabTitle.setAttribute('aria-selected', 'false');
96
- tabTitle.classList.remove('active');
97
- }
98
- const tabTitle = tab.shadowRoot.querySelector('.tab-title');
99
- tabTitle.setAttribute('aria-selected', 'true');
100
- tabTitle.classList.add('active');
101
- this.activeTab = tab;
102
- }
103
- hidePanel(panelName) {
104
- const previousPanel = this.getPanel(panelName);
105
- if (!previousPanel)
106
- return;
107
- this.hiding = fade.fadeOut(previousPanel);
108
- this.hiding.onfinish = () => {
109
- previousPanel.style.display = 'none';
110
- this.hiding = null;
111
- };
112
- }
113
- showSelectedPanel() {
114
- const panel = this.getPanel(this.activeTab.panel);
115
- panel.style.display = 'block';
116
- // prevent the initially selected panel from fading in
117
- if (!this.isLoaded)
118
- return;
119
- this.showing = fade.fadeIn(panel);
120
- this.showing.onfinish = () => {
121
- this.showing = null;
122
- };
123
- }
124
- getPanel(name) {
125
- return this.host.querySelector(`post-tab-panel[name=${name}]`);
126
- }
127
- render() {
128
- return (index.h(index.Host, { "data-version": _package.version }, index.h("div", { class: "tabs-wrapper" }, index.h("ul", { class: "tabs nav", role: "tablist" }, index.h("slot", { name: "tabs", onSlotchange: () => this.enableTabs() }))), index.h("div", { class: "tab-content" }, index.h("slot", { onSlotchange: () => this.moveMisplacedTabs() }))));
129
- }
130
- get host() { return index.getElement(this); }
131
- };
132
- PostTabs.style = postTabsCss;
133
11
 
134
- exports.post_tabs = PostTabs;
12
+ exports.post_tabs = postTabs.PostTabs;
135
13
 
136
14
  //# sourceMappingURL=post-tabs.cjs.entry.js.map
@@ -1 +1 @@
1
- {"file":"post-tabs.entry.cjs.js","mappings":"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","names":["fadeOut","fadeIn","h","Host","version"],"sources":["./src/components/post-tabs/post-tabs.scss?tag=post-tabs&encapsulation=shadow","./src/components/post-tabs/post-tabs.tsx"],"sourcesContent":["@use '@swisspost/design-system-styles/components/tabs/tabs-wrapper';\n\n:host {\n display: block;\n}\n","import { Component, Host, h, Element, Method, Event, EventEmitter, Prop } from '@stencil/core';\nimport { version } from '../../../package.json';\nimport { fadeIn, fadeOut } from '../../animations';\n\n@Component({\n tag: 'post-tabs',\n styleUrl: 'post-tabs.scss',\n shadow: true,\n})\nexport class PostTabs {\n private activeTab: HTMLPostTabHeaderElement;\n private showing: Animation;\n private hiding: Animation;\n private isLoaded = false;\n\n private get tabs(): NodeListOf<HTMLPostTabHeaderElement> {\n return this.host.querySelectorAll('post-tab-header');\n }\n\n @Element() host: HTMLPostTabsElement;\n\n /**\n * The name of the panel that is initially shown.\n * If not specified, it defaults to the panel associated with the first tab.\n *\n * **Changing this value after initialization has no effect.**\n */\n @Prop() readonly activePanel: HTMLPostTabPanelElement['name'];\n\n /**\n * An event emitted after the active tab changes, when the fade in transition of its associated panel is finished.\n * The payload is the name of the newly shown panel.\n */\n @Event() tabChange: EventEmitter<HTMLPostTabPanelElement['name']>;\n\n componentDidLoad() {\n this.moveMisplacedTabs();\n this.enableTabs();\n\n const initiallyActivePanel = this.activePanel || this.tabs.item(0).panel;\n this.show(initiallyActivePanel);\n\n this.isLoaded = true;\n }\n\n /**\n * Shows the panel with the given name and selects its associated tab.\n * Any other panel that was previously shown becomes hidden and its associated tab is unselected.\n */\n @Method()\n async show(panelName: string) {\n // do nothing if the tab is already active\n if (panelName === this.activeTab?.panel) {\n return;\n }\n\n const previousTab = this.activeTab;\n const newTab : HTMLPostTabHeaderElement = this.host.querySelector(`post-tab-header[panel=${panelName}]`);\n this.activateTab(newTab);\n\n // if a panel is currently being displayed, remove it from the view and complete the associated animation\n if (this.showing) {\n this.showing.effect['target'].style.display = 'none';\n this.showing.finish();\n }\n\n // hide the currently visible panel only if no other animation is running\n if (previousTab && !this.showing && !this.hiding) {\n this.hidePanel(previousTab.panel);\n }\n\n // wait for any hiding animation to complete before showing the selected tab\n if (this.hiding) {\n await this.hiding.finished;\n }\n\n this.showSelectedPanel();\n\n // wait for any display animation to complete for the returned promise to fully resolve\n if (this.showing) {\n await this.showing.finished;\n }\n\n this.tabChange.emit(this.activeTab.panel);\n }\n private moveMisplacedTabs() {\n if (!this.tabs) return;\n\n this.tabs.forEach(tab => {\n if (tab.getAttribute('slot') === 'tabs') return;\n tab.setAttribute('slot', 'tabs');\n });\n }\n\n private enableTabs() {\n if (!this.tabs) return;\n\n this.tabs.forEach(async tab => {\n await tab.componentOnReady();\n\n const tabTitle = tab.shadowRoot.querySelector('.tab-title');\n\n // if the tab has an \"aria-controls\" attribute it was already linked to its panel: do nothing\n if (tabTitle.getAttribute('aria-controls')) return;\n\n const tabPanel = this.getPanel(tab.panel).shadowRoot.querySelector('.tab-pane');\n tabTitle.setAttribute('aria-controls', tabPanel.id);\n tabPanel.setAttribute('aria-labelledby', tabTitle.id);\n\n tab.addEventListener('click', e => {\n e.preventDefault();\n this.show(tab.panel);\n });\n });\n\n // if the currently active tab was removed from the DOM then select the first one\n if (this.activeTab && !this.activeTab.isConnected) {\n this.show(this.tabs.item(0).panel);\n }\n }\n\n private activateTab(tab: HTMLPostTabHeaderElement) {\n if (this.activeTab) {\n const tabTitle = this.activeTab.shadowRoot.querySelector('.tab-title');\n tabTitle.setAttribute('aria-selected', 'false');\n tabTitle.classList.remove('active');\n }\n\n const tabTitle = tab.shadowRoot.querySelector('.tab-title');\n tabTitle.setAttribute('aria-selected', 'true');\n tabTitle.classList.add('active');\n\n this.activeTab = tab;\n }\n\n private hidePanel(panelName: HTMLPostTabPanelElement['name']) {\n const previousPanel = this.getPanel(panelName);\n\n if (!previousPanel) return;\n\n this.hiding = fadeOut(previousPanel);\n this.hiding.onfinish = () => {\n previousPanel.style.display = 'none';\n this.hiding = null;\n };\n }\n\n private showSelectedPanel() {\n const panel = this.getPanel(this.activeTab.panel);\n panel.style.display = 'block';\n\n // prevent the initially selected panel from fading in\n if (!this.isLoaded) return;\n\n this.showing = fadeIn(panel);\n this.showing.onfinish = () => {\n this.showing = null;\n };\n }\n\n private getPanel(name: string): HTMLPostTabPanelElement {\n return this.host.querySelector(\n `post-tab-panel[name=${name}]`\n );\n }\n\n render() {\n return (\n <Host data-version={version}>\n <div class=\"tabs-wrapper\">\n <ul class=\"tabs nav\" role=\"tablist\">\n <slot name=\"tabs\" onSlotchange={() => this.enableTabs()} />\n </ul>\n </div>\n <div class=\"tab-content\">\n <slot onSlotchange={() => this.moveMisplacedTabs()} />\n </div>\n </Host>\n );\n }\n}\n"],"version":3}
1
+ {"file":"post-tabs.entry.cjs.js","mappings":";;;;;;;;;;;","names":[],"sources":[],"sourcesContent":[],"version":3}