@swisspost/design-system-components 9.0.0-next.12 → 9.0.0-next.14

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 (452) hide show
  1. package/dist/.config/bindings.angular.js +4 -0
  2. package/dist/cjs/{attribute-observer-10f08c04.js → attribute-observer-6d8b886b.js} +4 -4
  3. package/dist/cjs/{check-one-of-f4f5d0c0.js → check-one-of-ef931478.js} +2 -1
  4. package/dist/cjs/{check-type-64af82a9.js → check-type-696d2c51.js} +4 -4
  5. package/dist/cjs/{check-url-3ffdd2fb.js → check-url-1cf6fb0d.js} +2 -1
  6. package/dist/cjs/{debounce-1151afe3.js → debounce-158fd76f.js} +2 -1
  7. package/dist/cjs/fade-72d5ef55.js +14 -0
  8. package/dist/cjs/{index-f1b08cdb.js → index-0ee3ab4a.js} +334 -152
  9. package/dist/cjs/{index-5d4e0aed.js → index-bea4ac42.js} +7 -5
  10. package/dist/cjs/index.cjs.js +30 -28
  11. package/dist/cjs/loader.cjs.js +2 -2
  12. package/dist/cjs/{package-0bd6fb0d.js → package-7d11b6ea.js} +1 -1
  13. package/dist/cjs/{post-accordion-7aadd881.js → post-accordion-29861d97.js} +15 -8
  14. package/dist/cjs/{post-accordion-item-bd033c7f.js → post-accordion-item-0da0f7aa.js} +20 -13
  15. package/dist/cjs/post-accordion-item.cjs.entry.js +7 -7
  16. package/dist/cjs/post-accordion.cjs.entry.js +4 -4
  17. package/dist/cjs/{post-avatar-5dbdf70d.js → post-avatar-01b9cd6d.js} +29 -21
  18. package/dist/cjs/post-avatar.cjs.entry.js +3 -3
  19. package/dist/cjs/post-back-to-top-9a5647f7.js +80 -0
  20. package/dist/cjs/post-back-to-top.cjs.entry.js +5 -5
  21. package/dist/cjs/post-banner-33929088.js +110 -0
  22. package/dist/cjs/post-banner.cjs.entry.js +8 -8
  23. package/dist/cjs/{post-breadcrumb-531c4f79.js → post-breadcrumb-1384018e.js} +41 -34
  24. package/dist/cjs/post-breadcrumb-item_2.cjs.entry.js +7 -7
  25. package/dist/cjs/post-breadcrumb.cjs.entry.js +5 -5
  26. package/dist/cjs/post-card-control-4c85eda3.js +314 -0
  27. package/dist/cjs/post-card-control.cjs.entry.js +4 -4
  28. package/dist/cjs/post-closebutton_15.cjs.entry.js +8 -8
  29. package/dist/cjs/{post-collapsible-trigger-02924200.js → post-collapsible-trigger-0fb2596a.js} +47 -35
  30. package/dist/cjs/post-collapsible_2.cjs.entry.js +8 -8
  31. package/dist/cjs/post-components.cjs.js +3 -3
  32. package/dist/cjs/{post-footer-96d7bd47.js → post-footer-f621a563.js} +18 -12
  33. package/dist/cjs/post-footer.cjs.entry.js +3 -3
  34. package/dist/cjs/post-linkarea-865079c1.js +32 -0
  35. package/dist/cjs/post-linkarea.cjs.entry.js +11 -0
  36. package/dist/cjs/{post-menu-item-3f73fb4d.js → post-menu-item-ab3e2e7e.js} +12 -9
  37. package/dist/cjs/{post-popover-64195ffd.js → post-popover-a2ba9226.js} +24 -10
  38. package/dist/cjs/post-popover.cjs.entry.js +4 -4
  39. package/dist/cjs/{post-rating-bd27ebfc.js → post-rating-c402c294.js} +33 -10
  40. package/dist/cjs/post-rating.cjs.entry.js +3 -3
  41. package/dist/cjs/post-tab-header-c819517d.js +36 -0
  42. package/dist/cjs/post-tab-header.cjs.entry.js +3 -3
  43. package/dist/cjs/{post-tab-panel-3eedcd19.js → post-tab-panel-3cb207f3.js} +9 -6
  44. package/dist/cjs/post-tab-panel.cjs.entry.js +3 -3
  45. package/dist/cjs/{post-tabs-ea94b243.js → post-tabs-b6fa39c3.js} +29 -18
  46. package/dist/cjs/post-tabs.cjs.entry.js +4 -4
  47. package/dist/cjs/{post-tag-1d75024b.js → post-tag-9c366519.js} +20 -9
  48. package/dist/cjs/post-tag.cjs.entry.js +3 -3
  49. package/dist/cjs/{post-togglebutton-876f7892.js → post-togglebutton-d49bec2c.js} +682 -221
  50. package/dist/cjs/{post-tooltip-e4ef3c7e.js → post-tooltip-425c01ba.js} +24 -12
  51. package/dist/cjs/post-tooltip.cjs.entry.js +8 -8
  52. package/dist/cjs/{slide-5d51abe8.js → slide-8ae17ee4.js} +4 -4
  53. package/dist/collection/animations/collapse.js +5 -5
  54. package/dist/collection/animations/fade.js +6 -2
  55. package/dist/collection/animations/slide.js +4 -4
  56. package/dist/collection/collection-manifest.json +4 -3
  57. package/dist/collection/components/post-accordion/post-accordion.js +16 -6
  58. package/dist/collection/components/post-accordion-item/post-accordion-item.js +21 -11
  59. package/dist/collection/components/post-avatar/post-avatar.js +35 -20
  60. package/dist/collection/components/post-back-to-top/post-back-to-top.css +1 -1
  61. package/dist/collection/components/post-back-to-top/post-back-to-top.js +14 -8
  62. package/dist/collection/components/post-banner/post-banner.css +1 -1
  63. package/dist/collection/components/post-banner/post-banner.js +40 -14
  64. package/dist/collection/components/post-breadcrumb/post-breadcrumb.js +41 -31
  65. package/dist/collection/components/post-breadcrumb-item/post-breadcrumb-item.js +10 -6
  66. package/dist/collection/components/post-card-control/post-card-control.css +1 -1
  67. package/dist/collection/components/post-card-control/post-card-control.js +104 -43
  68. package/dist/collection/components/post-closebutton/post-closebutton.js +2 -1
  69. package/dist/collection/components/post-collapsible/post-collapsible.js +16 -6
  70. package/dist/collection/components/post-collapsible-trigger/post-collapsible-trigger.js +25 -21
  71. package/dist/collection/components/post-footer/post-footer.js +9 -5
  72. package/dist/collection/components/post-header/post-header.css +1 -1
  73. package/dist/collection/components/post-header/post-header.js +90 -15
  74. package/dist/collection/components/post-icon/post-icon.js +93 -23
  75. package/dist/collection/components/post-language-option/post-language-option.js +37 -8
  76. package/dist/collection/components/post-language-switch/post-language-switch.css +1 -1
  77. package/dist/collection/components/post-language-switch/post-language-switch.js +24 -7
  78. package/dist/collection/components/post-linkarea/post-linkarea.css +1 -0
  79. package/dist/collection/components/post-linkarea/post-linkarea.js +32 -0
  80. package/dist/collection/components/post-list/post-list.js +19 -6
  81. package/dist/collection/components/post-list-item/post-list-item.js +2 -1
  82. package/dist/collection/components/post-logo/post-logo.js +8 -4
  83. package/dist/collection/components/post-mainnavigation/post-mainnavigation.css +1 -1
  84. package/dist/collection/components/post-mainnavigation/post-mainnavigation.js +197 -17
  85. package/dist/collection/components/post-megadropdown/post-megadropdown.css +1 -1
  86. package/dist/collection/components/post-megadropdown/post-megadropdown.js +134 -64
  87. package/dist/collection/components/post-megadropdown-trigger/post-megadropdown-trigger.css +1 -1
  88. package/dist/collection/components/post-megadropdown-trigger/post-megadropdown-trigger.js +18 -11
  89. package/dist/collection/components/post-menu/post-menu.js +56 -33
  90. package/dist/collection/components/post-menu-item/post-menu-item.js +1 -1
  91. package/dist/collection/components/post-menu-trigger/post-menu-trigger.js +24 -16
  92. package/dist/collection/components/post-popover/post-popover.css +1 -1
  93. package/dist/collection/components/post-popover/post-popover.js +26 -5
  94. package/dist/collection/components/post-popovercontainer/post-popovercontainer.css +1 -1
  95. package/dist/collection/components/post-popovercontainer/post-popovercontainer.js +55 -8
  96. package/dist/collection/components/post-rating/post-rating.js +39 -7
  97. package/dist/collection/components/post-tab-header/post-tab-header.css +1 -1
  98. package/dist/collection/components/post-tab-header/post-tab-header.js +9 -5
  99. package/dist/collection/components/post-tab-panel/post-tab-panel.js +9 -5
  100. package/dist/collection/components/post-tabs/post-tabs.css +1 -1
  101. package/dist/collection/components/post-tabs/post-tabs.js +25 -18
  102. package/dist/collection/components/post-tag/post-tag.css +1 -1
  103. package/dist/collection/components/post-tag/post-tag.js +23 -5
  104. package/dist/collection/components/post-togglebutton/post-togglebutton.js +18 -14
  105. package/dist/collection/components/post-tooltip/post-tooltip.js +26 -9
  106. package/dist/collection/index.js +1 -0
  107. package/dist/collection/utils/attribute-observer.js +4 -4
  108. package/dist/collection/utils/breakpoints.js +9 -6
  109. package/dist/collection/utils/component-on-ready.js +4 -4
  110. package/dist/collection/utils/debounce.js +2 -1
  111. package/dist/collection/utils/get-focusable-children.js +2 -2
  112. package/dist/collection/utils/property-checkers/check-one-of.js +2 -1
  113. package/dist/collection/utils/property-checkers/check-pattern.js +2 -1
  114. package/dist/collection/utils/property-checkers/check-type.js +4 -4
  115. package/dist/collection/utils/property-checkers/check-url.js +2 -1
  116. package/dist/collection/utils/property-checkers/empty-or.js +2 -1
  117. package/dist/collection/utils/sass-export.js +8 -5
  118. package/dist/components/index.js +36 -35
  119. package/dist/components/{post-collapsible-trigger2.js → p-05590ac0.js} +30 -27
  120. package/dist/components/{post-breadcrumb2.js → p-146677d1.js} +50 -43
  121. package/dist/components/p-1ee1742f.js +237 -0
  122. package/dist/components/p-2083ae2c.js +3 -0
  123. package/dist/components/{post-megadropdown-trigger2.js → p-27edc023.js} +21 -15
  124. package/dist/components/{post-tooltip2.js → p-2d9b46b4.js} +26 -14
  125. package/dist/components/p-38778a14.js +345 -0
  126. package/dist/components/p-3aba7629.js +29 -0
  127. package/dist/components/{post-togglebutton2.js → p-3cee636a.js} +20 -17
  128. package/dist/components/p-3e8554e7.js +1646 -0
  129. package/dist/components/p-424d5ea9.js +199 -0
  130. package/dist/components/p-46a6c5ec.js +168 -0
  131. package/dist/components/p-4965cfe1.js +145 -0
  132. package/{loaders/slide.js → dist/components/p-4af6dbed.js} +4 -4
  133. package/dist/components/{post-list2.js → p-536eba02.js} +19 -9
  134. package/dist/components/p-5653923a.js +44 -0
  135. package/dist/components/{post-footer2.js → p-58878996.js} +23 -17
  136. package/dist/components/{post-logo2.js → p-5f51ec58.js} +10 -7
  137. package/{loaders/post-popovercontainer2.js → dist/components/p-60cf53cc.js} +34 -11
  138. package/dist/components/p-64e3de38.js +11 -0
  139. package/dist/components/{post-accordion-item2.js → p-68ecd276.js} +26 -19
  140. package/dist/components/p-75b8b652.js +54 -0
  141. package/dist/components/{post-tab-panel2.js → p-78e1d893.js} +11 -8
  142. package/dist/components/{check-type.js → p-8562c7dc.js} +4 -4
  143. package/{loaders/post-menu-trigger2.js → dist/components/p-8b053fd5.js} +27 -20
  144. package/dist/components/{post-icon2.js → p-91031e3b.js} +85 -28
  145. package/dist/components/{post-menu2.js → p-91882483.js} +60 -65
  146. package/dist/{esm/attribute-observer-37fa950a.js → components/p-9748a355.js} +4 -4
  147. package/dist/components/{post-list-item2.js → p-9e4b1f10.js} +4 -4
  148. package/dist/components/{post-accordion2.js → p-a3a004e6.js} +17 -10
  149. package/dist/components/{post-popover2.js → p-af23f7de.js} +26 -12
  150. package/dist/components/{post-collapsible2.js → p-b018d864.js} +23 -14
  151. package/dist/components/{check-non-empty.js → p-b095519d.js} +1 -1
  152. package/dist/components/{check-one-of.js → p-bacd3e2c.js} +2 -1
  153. package/dist/components/{post-closebutton2.js → p-bf14d264.js} +6 -6
  154. package/dist/components/{post-breadcrumb-item2.js → p-c7c1d466.js} +13 -10
  155. package/dist/components/{post-tag2.js → p-cab43cee.js} +22 -11
  156. package/dist/components/{post-menu-item2.js → p-ccccf0c3.js} +4 -4
  157. package/dist/components/{post-tabs2.js → p-ce854a7d.js} +30 -19
  158. package/dist/components/{post-avatar2.js → p-d3fb70af.js} +31 -23
  159. package/dist/components/{post-language-option2.js → p-d47bb5bf.js} +32 -12
  160. package/dist/components/{debounce.js → p-e1baac59.js} +2 -1
  161. package/dist/components/{post-back-to-top2.js → p-e20366a6.js} +20 -15
  162. package/dist/components/{index2.js → p-eabb09ad.js} +9 -6
  163. package/dist/components/{post-language-switch2.js → p-f6d80d76.js} +29 -17
  164. package/dist/components/p-f7b9f90a.js +135 -0
  165. package/dist/components/{post-rating2.js → p-fc59de7c.js} +35 -12
  166. package/dist/components/post-accordion-item.js +1 -1
  167. package/dist/components/post-accordion.js +1 -1
  168. package/dist/components/post-avatar.js +1 -1
  169. package/dist/components/post-back-to-top.js +1 -1
  170. package/dist/components/post-banner.js +1 -1
  171. package/dist/components/post-breadcrumb-item.js +1 -1
  172. package/dist/components/post-breadcrumb.js +1 -1
  173. package/dist/components/post-card-control.js +1 -1
  174. package/dist/components/post-closebutton.js +1 -1
  175. package/dist/components/post-collapsible-trigger.js +1 -1
  176. package/dist/components/post-collapsible.js +1 -1
  177. package/dist/components/post-footer.js +1 -1
  178. package/dist/components/post-header.js +1 -1
  179. package/dist/components/post-icon.js +1 -1
  180. package/dist/components/post-language-option.js +1 -1
  181. package/dist/components/post-language-switch.js +1 -1
  182. package/dist/components/post-linkarea.d.ts +11 -0
  183. package/dist/components/post-linkarea.js +6 -0
  184. package/dist/components/post-list-item.js +1 -1
  185. package/dist/components/post-list.js +1 -1
  186. package/dist/components/post-logo.js +1 -1
  187. package/dist/components/post-mainnavigation.js +1 -1
  188. package/dist/components/post-megadropdown-trigger.js +1 -1
  189. package/dist/components/post-megadropdown.js +1 -1
  190. package/dist/components/post-menu-item.js +1 -1
  191. package/dist/components/post-menu-trigger.js +1 -1
  192. package/dist/components/post-menu.js +1 -1
  193. package/dist/components/post-popover.js +1 -1
  194. package/dist/components/post-popovercontainer.js +1 -1
  195. package/dist/components/post-rating.js +1 -1
  196. package/dist/components/post-tab-header.js +1 -1
  197. package/dist/components/post-tab-panel.js +1 -1
  198. package/dist/components/post-tabs.js +1 -1
  199. package/dist/components/post-tag.js +1 -1
  200. package/dist/components/post-togglebutton.js +1 -1
  201. package/dist/components/post-tooltip.js +1 -1
  202. package/dist/docs.d.ts +8 -0
  203. package/dist/docs.json +335 -156
  204. package/{loaders/attribute-observer.js → dist/esm/attribute-observer-2f203993.js} +4 -4
  205. package/{loaders/check-one-of.js → dist/esm/check-one-of-0d5858c0.js} +2 -1
  206. package/dist/esm/{check-type-8828dbe4.js → check-type-a6ccc9a3.js} +4 -4
  207. package/dist/esm/{check-url-a974431e.js → check-url-0bd876f7.js} +2 -1
  208. package/dist/esm/{debounce-abe98cc2.js → debounce-e54c7131.js} +2 -1
  209. package/dist/esm/fade-1f3cacf4.js +11 -0
  210. package/dist/esm/{index-6bfe6554.js → index-2c232bf2.js} +334 -152
  211. package/dist/esm/{index-b49c9904.js → index-d1bbbd88.js} +7 -5
  212. package/dist/esm/index.js +29 -28
  213. package/dist/esm/loader.js +3 -3
  214. package/dist/esm/package-8c98af5e.js +3 -0
  215. package/dist/esm/{post-accordion-ca48eb18.js → post-accordion-49fba403.js} +15 -8
  216. package/dist/esm/{post-accordion-item-a461f2a7.js → post-accordion-item-c516517a.js} +20 -13
  217. package/dist/esm/post-accordion-item.entry.js +7 -7
  218. package/dist/esm/post-accordion.entry.js +4 -4
  219. package/dist/esm/{post-avatar-0da1a2e8.js → post-avatar-b527ac63.js} +29 -21
  220. package/dist/esm/post-avatar.entry.js +3 -3
  221. package/dist/esm/post-back-to-top-f514c1f0.js +78 -0
  222. package/dist/esm/post-back-to-top.entry.js +5 -5
  223. package/dist/esm/post-banner-0ad7758b.js +108 -0
  224. package/dist/esm/post-banner.entry.js +8 -8
  225. package/dist/esm/{post-breadcrumb-85ffd02f.js → post-breadcrumb-57bca9dd.js} +41 -34
  226. package/dist/esm/post-breadcrumb-item_2.entry.js +7 -7
  227. package/dist/esm/post-breadcrumb.entry.js +5 -5
  228. package/dist/esm/post-card-control-ea741f60.js +312 -0
  229. package/dist/esm/post-card-control.entry.js +4 -4
  230. package/dist/esm/post-closebutton_15.entry.js +8 -8
  231. package/dist/esm/{post-collapsible-trigger-883db3bf.js → post-collapsible-trigger-31155750.js} +47 -35
  232. package/dist/esm/post-collapsible_2.entry.js +8 -8
  233. package/dist/esm/post-components.js +4 -4
  234. package/dist/esm/{post-footer-7b0eb067.js → post-footer-cdde2086.js} +18 -12
  235. package/dist/esm/post-footer.entry.js +3 -3
  236. package/dist/esm/post-linkarea-cad95623.js +30 -0
  237. package/dist/esm/post-linkarea.entry.js +3 -0
  238. package/dist/esm/{post-menu-item-37f637a3.js → post-menu-item-db732728.js} +12 -9
  239. package/dist/esm/{post-popover-c24ecd38.js → post-popover-00f427ac.js} +24 -10
  240. package/dist/esm/post-popover.entry.js +4 -4
  241. package/dist/esm/{post-rating-e1c66e5c.js → post-rating-cdcb2a1d.js} +33 -10
  242. package/dist/esm/post-rating.entry.js +3 -3
  243. package/dist/esm/post-tab-header-1d4113cb.js +34 -0
  244. package/dist/esm/post-tab-header.entry.js +3 -3
  245. package/dist/esm/{post-tab-panel-73b56a16.js → post-tab-panel-7a5c03ef.js} +9 -6
  246. package/dist/esm/post-tab-panel.entry.js +3 -3
  247. package/dist/esm/{post-tabs-02e523b8.js → post-tabs-308190c0.js} +29 -18
  248. package/dist/esm/post-tabs.entry.js +4 -4
  249. package/dist/esm/{post-tag-43aba068.js → post-tag-aebbda10.js} +20 -9
  250. package/dist/esm/post-tag.entry.js +3 -3
  251. package/dist/esm/{post-togglebutton-c2231709.js → post-togglebutton-95ba85d2.js} +682 -221
  252. package/dist/esm/{post-tooltip-8271950c.js → post-tooltip-918d3a54.js} +24 -12
  253. package/dist/esm/post-tooltip.entry.js +8 -8
  254. package/dist/{components/slide.js → esm/slide-62768431.js} +4 -4
  255. package/dist/post-components/index.esm.js +1 -1
  256. package/dist/post-components/p-037d6ef2.entry.js +1 -0
  257. package/dist/post-components/p-1e69a72f.js +1 -0
  258. package/dist/post-components/p-1fda117c.js +1 -0
  259. package/dist/post-components/p-2083ae2c.js +1 -0
  260. package/dist/post-components/p-24297444.js +1 -0
  261. package/dist/post-components/{p-e2f886ab.js → p-267f52a9.js} +3 -3
  262. package/dist/post-components/p-2e6c5b60.js +1 -0
  263. package/dist/post-components/p-3591d4e3.entry.js +1 -0
  264. package/dist/post-components/p-3dec4425.entry.js +1 -0
  265. package/dist/post-components/p-423aecd4.js +1 -0
  266. package/dist/post-components/p-43221de8.entry.js +1 -0
  267. package/dist/post-components/p-48fd00e7.entry.js +1 -0
  268. package/dist/post-components/p-4af6dbed.js +1 -0
  269. package/dist/post-components/p-4ca79b52.js +1 -0
  270. package/dist/post-components/p-4d2dee9f.entry.js +1 -0
  271. package/dist/post-components/p-4fedef65.js +1 -0
  272. package/dist/post-components/p-59109b3b.entry.js +1 -0
  273. package/dist/post-components/p-64e3de38.js +1 -0
  274. package/dist/post-components/p-675352c3.entry.js +1 -0
  275. package/dist/post-components/p-6e4527d9.entry.js +1 -0
  276. package/dist/post-components/p-726bfda2.js +1 -0
  277. package/dist/post-components/p-767c0bf3.js +1 -0
  278. package/dist/post-components/p-796968bd.entry.js +1 -0
  279. package/dist/post-components/p-7c9758fa.js +1 -0
  280. package/dist/post-components/p-8a452260.js +1 -0
  281. package/dist/post-components/p-8a50b900.js +1 -0
  282. package/dist/post-components/p-8de4f677.entry.js +1 -0
  283. package/dist/post-components/p-93632808.js +1 -0
  284. package/dist/post-components/p-9748a355.js +1 -0
  285. package/dist/post-components/p-9aca3d07.entry.js +1 -0
  286. package/dist/post-components/p-9f0c5164.js +1 -0
  287. package/dist/post-components/p-a6436e7f.js +1 -0
  288. package/dist/post-components/p-ad246c0d.js +1 -0
  289. package/dist/post-components/p-b015efcb.entry.js +1 -0
  290. package/dist/post-components/p-b0afc087.entry.js +1 -0
  291. package/dist/post-components/p-b1adc221.js +1 -0
  292. package/dist/post-components/p-b2c0d21a.js +1 -0
  293. package/dist/post-components/p-b5a566f1.js +1 -0
  294. package/dist/post-components/p-c0961047.entry.js +1 -0
  295. package/dist/post-components/p-c388b7bb.entry.js +1 -0
  296. package/dist/post-components/{p-c510d968.entry.js → p-ca41b899.entry.js} +1 -1
  297. package/dist/post-components/p-d2395ae9.entry.js +1 -0
  298. package/dist/post-components/p-d9833667.js +2 -0
  299. package/dist/post-components/p-da261c46.entry.js +1 -0
  300. package/dist/post-components/post-components.esm.js +1 -1
  301. package/dist/types/animations/collapse.d.ts +2 -2
  302. package/dist/types/animations/fade.d.ts +2 -2
  303. package/dist/types/animations/slide.d.ts +2 -2
  304. package/dist/types/components/post-header/post-header.d.ts +11 -2
  305. package/dist/types/components/post-icon/post-icon.d.ts +1 -1
  306. package/dist/types/components/post-language-switch/post-language-switch.d.ts +1 -1
  307. package/dist/types/components/post-linkarea/post-linkarea.d.ts +5 -0
  308. package/dist/types/components/post-mainnavigation/post-mainnavigation.d.ts +57 -3
  309. package/dist/types/components/post-megadropdown/post-megadropdown.d.ts +26 -12
  310. package/dist/types/components/post-popovercontainer/post-popovercontainer.d.ts +4 -0
  311. package/dist/types/components/post-tabs/post-tabs.d.ts +1 -1
  312. package/dist/types/components.d.ts +51 -25
  313. package/dist/types/home/runner/work/design-system/design-system/packages/components/.stencil/.config/bindings.angular.d.ts +2 -0
  314. package/dist/types/index.d.ts +3 -2
  315. package/dist/types/stencil-public-runtime.d.ts +6 -0
  316. package/dist/types/utils/attribute-observer.d.ts +1 -1
  317. package/dist/types/utils/component-on-ready.d.ts +1 -1
  318. package/dist/types/utils/get-focusable-children.d.ts +1 -1
  319. package/dist/types/utils/sass-export.d.ts +5 -1
  320. package/loaders/index.d.ts +2 -0
  321. package/loaders/index.js +3 -2
  322. package/loaders/{post-collapsible-trigger2.js → p-05590ac0.js} +30 -27
  323. package/loaders/{post-breadcrumb-item2.js → p-1beacb73.js} +13 -10
  324. package/loaders/p-2083ae2c.js +3 -0
  325. package/loaders/p-3aba7629.js +29 -0
  326. package/loaders/p-3e8554e7.js +1646 -0
  327. package/{dist/esm/slide-3422b8a3.js → loaders/p-4af6dbed.js} +4 -4
  328. package/loaders/{index2.js → p-56ad4838.js} +9 -6
  329. package/{dist/components/post-popovercontainer2.js → loaders/p-60cf53cc.js} +34 -11
  330. package/loaders/p-64e3de38.js +11 -0
  331. package/loaders/{post-accordion-item2.js → p-83baa315.js} +26 -19
  332. package/loaders/{check-type.js → p-8562c7dc.js} +4 -4
  333. package/{dist/components/post-menu-trigger2.js → loaders/p-8b053fd5.js} +27 -20
  334. package/loaders/{post-menu2.js → p-91882483.js} +60 -65
  335. package/{dist/components/attribute-observer.js → loaders/p-9748a355.js} +4 -4
  336. package/loaders/{post-collapsible2.js → p-9fac5d7d.js} +23 -14
  337. package/loaders/{check-non-empty.js → p-b095519d.js} +1 -1
  338. package/{dist/esm/check-one-of-6b3ef8eb.js → loaders/p-bacd3e2c.js} +2 -1
  339. package/loaders/{post-menu-item2.js → p-ccccf0c3.js} +4 -4
  340. package/loaders/{debounce.js → p-e1baac59.js} +2 -1
  341. package/loaders/{post-icon2.js → p-f7177e26.js} +85 -28
  342. package/loaders/p-f7b9f90a.js +135 -0
  343. package/loaders/post-accordion-item.js +1 -1
  344. package/loaders/post-accordion.js +17 -10
  345. package/loaders/post-avatar.js +31 -23
  346. package/loaders/post-back-to-top.js +20 -15
  347. package/loaders/post-banner.js +42 -23
  348. package/loaders/post-breadcrumb-item.js +1 -1
  349. package/loaders/post-breadcrumb.js +50 -43
  350. package/loaders/post-card-control.js +93 -51
  351. package/loaders/post-closebutton.js +6 -6
  352. package/loaders/post-collapsible-trigger.js +1 -1
  353. package/loaders/post-collapsible.js +1 -1
  354. package/loaders/post-footer.js +23 -17
  355. package/loaders/post-header.js +74 -154
  356. package/loaders/post-icon.js +1 -1
  357. package/loaders/post-language-option.js +32 -12
  358. package/loaders/post-language-switch.js +29 -17
  359. package/loaders/post-linkarea.d.ts +11 -0
  360. package/loaders/post-linkarea.js +47 -0
  361. package/loaders/post-list-item.js +4 -4
  362. package/loaders/post-list.js +19 -9
  363. package/loaders/post-logo.js +10 -7
  364. package/loaders/post-mainnavigation.js +197 -8
  365. package/loaders/post-megadropdown-trigger.js +21 -15
  366. package/loaders/post-megadropdown.js +119 -51
  367. package/loaders/post-menu-item.js +1 -1
  368. package/loaders/post-menu-trigger.js +1 -1
  369. package/loaders/post-menu.js +1 -1
  370. package/loaders/post-popover.js +26 -12
  371. package/loaders/post-popovercontainer.js +1 -1
  372. package/loaders/post-rating.js +35 -12
  373. package/loaders/post-tab-header.js +13 -10
  374. package/loaders/post-tab-panel.js +11 -8
  375. package/loaders/post-tabs.js +30 -19
  376. package/loaders/post-tag.js +22 -11
  377. package/loaders/post-togglebutton.js +20 -17
  378. package/loaders/post-tooltip.js +26 -14
  379. package/package.json +19 -16
  380. package/dist/cjs/fade-35a3633a.js +0 -10
  381. package/dist/cjs/post-back-to-top-71bc912c.js +0 -75
  382. package/dist/cjs/post-banner-d4e0c73c.js +0 -91
  383. package/dist/cjs/post-card-control-332f6f1f.js +0 -272
  384. package/dist/cjs/post-tab-header-1f057694.js +0 -33
  385. package/dist/components/fade.js +0 -7
  386. package/dist/components/package.js +0 -3
  387. package/dist/components/post-banner2.js +0 -126
  388. package/dist/components/post-card-control2.js +0 -303
  389. package/dist/components/post-header2.js +0 -279
  390. package/dist/components/post-mainnavigation2.js +0 -48
  391. package/dist/components/post-megadropdown2.js +0 -100
  392. package/dist/components/post-tab-header2.js +0 -51
  393. package/dist/esm/fade-7fd71785.js +0 -7
  394. package/dist/esm/package-f8f7bb40.js +0 -3
  395. package/dist/esm/post-back-to-top-77471a90.js +0 -73
  396. package/dist/esm/post-banner-b0af5bd3.js +0 -89
  397. package/dist/esm/post-card-control-3225eb57.js +0 -270
  398. package/dist/esm/post-tab-header-6a9b0153.js +0 -31
  399. package/dist/post-components/p-025688e5.js +0 -1
  400. package/dist/post-components/p-08b51b35.entry.js +0 -1
  401. package/dist/post-components/p-0e216cc4.js +0 -2
  402. package/dist/post-components/p-24c92608.js +0 -1
  403. package/dist/post-components/p-25a57971.js +0 -1
  404. package/dist/post-components/p-2737eaf5.js +0 -1
  405. package/dist/post-components/p-2cb4a8f1.js +0 -1
  406. package/dist/post-components/p-33b64e0c.js +0 -1
  407. package/dist/post-components/p-34d70cd5.js +0 -1
  408. package/dist/post-components/p-350f3900.entry.js +0 -1
  409. package/dist/post-components/p-35bc4554.js +0 -1
  410. package/dist/post-components/p-38b259a4.entry.js +0 -1
  411. package/dist/post-components/p-3c6cef1e.entry.js +0 -1
  412. package/dist/post-components/p-4a713cf8.js +0 -1
  413. package/dist/post-components/p-4b5e2b24.js +0 -1
  414. package/dist/post-components/p-515e0f96.js +0 -1
  415. package/dist/post-components/p-5467b223.js +0 -1
  416. package/dist/post-components/p-54e58fc2.entry.js +0 -1
  417. package/dist/post-components/p-637759d6.js +0 -1
  418. package/dist/post-components/p-6adeaa6c.js +0 -1
  419. package/dist/post-components/p-7589a19f.js +0 -1
  420. package/dist/post-components/p-7cce7342.entry.js +0 -1
  421. package/dist/post-components/p-819e19de.js +0 -1
  422. package/dist/post-components/p-82d48128.js +0 -1
  423. package/dist/post-components/p-85171893.entry.js +0 -1
  424. package/dist/post-components/p-882fdd0c.entry.js +0 -1
  425. package/dist/post-components/p-94399c69.js +0 -1
  426. package/dist/post-components/p-9a02b162.entry.js +0 -1
  427. package/dist/post-components/p-b1f5bc26.js +0 -1
  428. package/dist/post-components/p-b2f239a1.entry.js +0 -1
  429. package/dist/post-components/p-b571e5c8.js +0 -1
  430. package/dist/post-components/p-ba530822.js +0 -1
  431. package/dist/post-components/p-bae1c85f.entry.js +0 -1
  432. package/dist/post-components/p-bdabdec5.js +0 -1
  433. package/dist/post-components/p-c1225174.entry.js +0 -1
  434. package/dist/post-components/p-c372a141.entry.js +0 -1
  435. package/dist/post-components/p-c87c5d59.entry.js +0 -1
  436. package/dist/post-components/p-d04c1b7f.entry.js +0 -1
  437. package/dist/post-components/p-da300843.entry.js +0 -1
  438. package/dist/post-components/p-fec04a15.entry.js +0 -1
  439. package/loaders/fade.js +0 -7
  440. package/loaders/package.js +0 -3
  441. /package/dist/components/{heading-levels.js → p-247a1668.js} +0 -0
  442. /package/dist/components/{constants.js → p-440193f4.js} +0 -0
  443. /package/dist/components/{index.browser.js → p-5959f2bd.js} +0 -0
  444. /package/dist/components/{get-root.js → p-fc91cbc2.js} +0 -0
  445. /package/dist/post-components/{p-4a3f67ab.js → p-8562c7dc.js} +0 -0
  446. /package/dist/post-components/{p-611b3c41.js → p-bacd3e2c.js} +0 -0
  447. /package/dist/post-components/{p-b22656b1.js → p-cb9ab938.js} +0 -0
  448. /package/dist/post-components/{p-d4f93f2b.js → p-e1baac59.js} +0 -0
  449. /package/loaders/{heading-levels.js → p-247a1668.js} +0 -0
  450. /package/loaders/{constants.js → p-440193f4.js} +0 -0
  451. /package/loaders/{index.browser.js → p-5959f2bd.js} +0 -0
  452. /package/loaders/{get-root.js → p-fc91cbc2.js} +0 -0
@@ -1,7 +1,8 @@
1
- import { h, Host } from "@stencil/core";
1
+ import { h, Host, } from "@stencil/core";
2
2
  import { throttle } from "throttle-debounce";
3
3
  import { version } from "../../../../package";
4
4
  import { slideDown, slideUp } from "../../animations/slide";
5
+ import { getFocusableChildren } from "../../utils/get-focusable-children";
5
6
  /**
6
7
  * @slot post-logo - Should be used together with the `<post-logo>` component.
7
8
  * @slot meta-navigation - Holds an `<ul>` with meta navigation links.
@@ -12,23 +13,41 @@ import { slideDown, slideUp } from "../../animations/slide";
12
13
  * @slot post-mainnavigation - Has a default slot because it's only meant to be used in the `<post-header>`.
13
14
  */
14
15
  export class PostHeader {
15
- constructor() {
16
- this.scrollParent = null;
17
- this.throttledScroll = () => this.handleScrollEvent();
18
- this.throttledResize = throttle(50, () => this.handleResize());
19
- this.device = null;
20
- this.mobileMenuExtended = false;
21
- }
16
+ firstFocusableEl;
17
+ lastFocusableEl;
18
+ scrollParent = null;
19
+ mobileMenu;
20
+ mobileMenuAnimation;
21
+ throttledScroll = () => this.handleScrollEvent();
22
+ throttledResize = throttle(50, () => this.handleResize());
22
23
  componentWillRender() {
23
24
  this.scrollParent = this.getScrollParent(this.host);
24
25
  this.scrollParent.addEventListener('scroll', this.throttledScroll, { passive: true });
25
26
  window.addEventListener('resize', this.throttledResize, { passive: true });
26
27
  this.handleResize();
27
28
  this.handleScrollEvent();
29
+ this.getFocusableElements();
28
30
  }
31
+ host;
32
+ device = null;
33
+ mobileMenuExtended = false;
29
34
  frozeBody(isMobileMenuExtended) {
30
35
  document.body.style.overflow = isMobileMenuExtended ? 'hidden' : '';
36
+ if (isMobileMenuExtended) {
37
+ this.host.addEventListener('keydown', e => {
38
+ this.keyboardHandler(e);
39
+ });
40
+ }
41
+ else {
42
+ this.host.removeEventListener('keydown', e => {
43
+ this.keyboardHandler(e);
44
+ });
45
+ }
31
46
  }
47
+ /**
48
+ * An event emitted when the device has changed
49
+ */
50
+ postUpdateDevice;
32
51
  /**
33
52
  * Toggles the mobile navigation.
34
53
  */
@@ -48,6 +67,36 @@ export class PostHeader {
48
67
  if (!this.mobileMenuExtended)
49
68
  await this.mobileMenuAnimation.finished;
50
69
  }
70
+ // Get all the focusable elements in the post-header mobile menu
71
+ getFocusableElements() {
72
+ // Get elements in the correct order (different as the DOM order)
73
+ const focusableEls = [
74
+ ...Array.from(this.host.querySelectorAll('.list-inline:not([slot="meta-navigation"]) > li')),
75
+ ...Array.from(this.host.querySelectorAll('nav > post-list > div > post-list-item, post-mainnavigation > .back-button, post-megadropdown-trigger')),
76
+ ...Array.from(this.host.querySelectorAll('.list-inline[slot="meta-navigation"] > li, post-language-option')),
77
+ ];
78
+ // Add the main toggle menu button to the list of focusable children
79
+ const focusableChildren = [
80
+ this.host.querySelector('post-togglebutton'),
81
+ ...focusableEls.flatMap(el => Array.from(getFocusableChildren(el))),
82
+ ];
83
+ this.firstFocusableEl = focusableChildren[0];
84
+ this.lastFocusableEl = focusableChildren[focusableChildren.length - 1];
85
+ }
86
+ keyboardHandler(e) {
87
+ if (e.key === 'Tab' && this.mobileMenuExtended) {
88
+ if (e.shiftKey && document.activeElement === this.firstFocusableEl) {
89
+ // If back tab (Tab + Shift) and first element is focused, focus goes to the last element of the megadropdown
90
+ e.preventDefault();
91
+ this.lastFocusableEl.focus();
92
+ }
93
+ else if (!e.shiftKey && document.activeElement === this.lastFocusableEl) {
94
+ // If Tab and last element is focused, focus goes back to the first element of the megadropdown
95
+ e.preventDefault();
96
+ this.firstFocusableEl.focus();
97
+ }
98
+ }
99
+ }
51
100
  handleScrollEvent() {
52
101
  // Credits: "https://github.com/qeremy/so/blob/master/so.dom.js#L426"
53
102
  const st = Math.max(0, this.scrollParent instanceof Document
@@ -79,10 +128,9 @@ export class PostHeader {
79
128
  });
80
129
  }
81
130
  handleResize() {
82
- var _a;
83
131
  const previousDevice = this.device;
84
132
  let newDevice;
85
- const width = window === null || window === void 0 ? void 0 : window.innerWidth;
133
+ const width = window?.innerWidth;
86
134
  if (width >= 1024) {
87
135
  newDevice = 'desktop';
88
136
  }
@@ -97,27 +145,30 @@ export class PostHeader {
97
145
  this.toggleMobileMenu();
98
146
  this.mobileMenuAnimation.finish(); // no animation
99
147
  }
100
- const mhh = (_a = this.host.shadowRoot.querySelector('.title-header')) === null || _a === void 0 ? void 0 : _a.clientHeight;
148
+ const mhh = this.host.shadowRoot.querySelector('.local-header')?.clientHeight;
101
149
  this.host.style.setProperty('--main-header-height', `${mhh}px`);
102
150
  // Apply only on change for doing work only when necessary
103
151
  if (newDevice !== previousDevice) {
104
152
  this.device = newDevice;
153
+ this.postUpdateDevice.emit(this.device);
105
154
  window.requestAnimationFrame(() => {
106
155
  this.switchLanguageSwitchMode();
107
156
  });
108
157
  }
109
158
  }
110
159
  switchLanguageSwitchMode() {
111
- var _a;
112
160
  const variant = this.device === 'desktop' ? 'menu' : 'list';
113
- (_a = this.host.querySelector('post-language-switch')) === null || _a === void 0 ? void 0 : _a.setAttribute('variant', variant);
161
+ this.host.querySelector('post-language-switch')?.setAttribute('variant', variant);
114
162
  }
115
- render() {
163
+ renderNavigation() {
116
164
  const navigationClasses = ['navigation'];
117
165
  if (this.mobileMenuExtended) {
118
166
  navigationClasses.push('extended');
119
167
  }
120
- return (h(Host, { key: '008e84568ce41249365d93169b2f94cd988601d0', version: version }, h("div", { key: 'f6415c30b3bfacd01a65166c7f0a3afc37676cc8', class: "global-header" }, h("div", { key: 'dc1465a3a68ce8c66c7da644d992c37d8d09ccc4', class: "global-sub" }, h("div", { key: '490b4afe502465bc20ccc41149533929987f2fab', class: "logo" }, h("slot", { key: '28ee1cdb2804f6315fffa2c319a1e2fa1e54ad08', name: "post-logo" }))), h("div", { key: '777d715f4718bb6738665f3d65c9ee4729a977de', class: "global-sub" }, this.device === 'desktop' && h("slot", { key: 'c1ddbfdecc96fe3a6efb930d8475ee880059d372', name: "meta-navigation" }), h("slot", { key: 'df1ccf5c36ea4a05812c3983961389c42c42ddb9', name: "global-controls" }), this.device === 'desktop' && h("slot", { key: 'ace2dda9a3f3d898934c7d47c84e2475fb555e5d', name: "post-language-switch" }), h("div", { key: '3e8d94d9534d5daaa2f8e6ca5cc0833e78a49224', onClick: () => this.toggleMobileMenu(), class: "mobile-toggle" }, h("slot", { key: '58e3637f103411f5e577dba931caf884f46a6e47', name: "post-togglebutton" })))), h("div", { key: 'f90ff065ed795fc780c90768e5c0ab5a431bec8d', class: 'title-header ' + (this.mobileMenuExtended ? 'title-header-mobile-extended' : '') }, h("slot", { key: 'a1aaaf02da073b9e7de82e84c93745afa6a8c4e9', name: "title" }), h("div", { key: '84ae2f8b846536130967362de160e054049c8489', class: "global-sub" }, h("slot", { key: '8a845cd7f87b3a2c2fba7ffc1ace31e87f6329d9', name: "local-controls" }), h("slot", { key: 'f3822b883fc88436a84d3ca7f840946af992417e' }))), h("div", { key: '8e0390c6c2b9a71488eea73c9207d0c336c9b75d', ref: el => (this.mobileMenu = el), class: navigationClasses.join(' ') }, h("slot", { key: '5fc2db060eb962c313fc4c9ab67032e990ff54c6', name: "post-mainnavigation" }), (this.device === 'mobile' || this.device === 'tablet') && (h("div", { key: '7b9147dcf5de01865785d417c8d1966efb891ace', class: "navigation-footer" }, h("slot", { key: '6e163a7dad7b0b0fc02493cd15152179d4242980', name: "meta-navigation" }), h("slot", { key: 'e8fd19eeed8a99d69ccd8635e36cd0256ed4424b', name: "post-language-switch" }))))));
168
+ return (h("div", { ref: el => (this.mobileMenu = el), class: navigationClasses.join(' ') }, h("slot", { name: "post-mainnavigation" }), (this.device === 'mobile' || this.device === 'tablet') && (h("div", { class: "navigation-footer" }, h("slot", { name: "meta-navigation" }), h("slot", { name: "post-language-switch" })))));
169
+ }
170
+ render() {
171
+ return (h(Host, { key: 'efbf8028f2abf376f497081996dba759f5885630', version: version }, h("div", { key: 'ecaaea274045453ce869f36e8a1155626b1818ba', class: "global-header" }, h("div", { key: '2fda0d65321ad1cbbc47b731f095e0d9b6694d99', class: "global-sub" }, h("div", { key: '24864d5f18c9d923717cc2e996395cff3bd6ce8b', class: "logo" }, h("slot", { key: 'ba82d7f62bb845732fe6066bcdc7eef15913c9e6', name: "post-logo" }))), h("div", { key: 'a0ddea4e564fca1e286998c73fea75eb8c228428', class: "global-sub" }, this.device === 'desktop' && h("slot", { key: '0d7aa11452eb69fe28914ff7787c6dc206fd4009', name: "meta-navigation" }), h("slot", { key: 'e92b7b9db6e16e8fcecb1ca74efa63942dd542c5', name: "global-controls" }), this.device === 'desktop' && h("slot", { key: 'c68984037a71d5ac54828f6cf2367c3b07e428fc', name: "post-language-switch" }), h("div", { key: '70fb5040dc2f000c2afa286bb673ae9cf88521cf', onClick: () => this.toggleMobileMenu(), class: "mobile-toggle" }, h("slot", { key: '509fb81812262cd9efdb3a562e48f72b0d29e376', name: "post-togglebutton" })))), h("div", { key: '393d1040bad2f85caced5b4a8ff02e30fa5fd5f1', class: 'local-header ' + (this.mobileMenuExtended ? 'local-header-mobile-extended' : '') }, h("slot", { key: '786cc114aae985a0612d3cb044684290e3026462', name: "title" }), h("div", { key: 'd4f68653a09bbf0b222873ed5d23fec6ba9d8f6f', class: "local-sub" }, h("slot", { key: '0ad7dda5490964e9a8eae5e0bf66a117882f7a06', name: "local-controls" }), h("slot", { key: 'bddc01c7696f456c38c200b330767a0f1b353d88' })), this.device === 'desktop' && this.renderNavigation()), this.device !== 'desktop' && this.renderNavigation()));
121
172
  }
122
173
  static get is() { return "post-header"; }
123
174
  static get encapsulation() { return "shadow"; }
@@ -137,6 +188,30 @@ export class PostHeader {
137
188
  "mobileMenuExtended": {}
138
189
  };
139
190
  }
191
+ static get events() {
192
+ return [{
193
+ "method": "postUpdateDevice",
194
+ "name": "postUpdateDevice",
195
+ "bubbles": true,
196
+ "cancelable": true,
197
+ "composed": true,
198
+ "docs": {
199
+ "tags": [],
200
+ "text": "An event emitted when the device has changed"
201
+ },
202
+ "complexType": {
203
+ "original": "DEVICE_SIZE",
204
+ "resolved": "\"desktop\" | \"mobile\" | \"tablet\"",
205
+ "references": {
206
+ "DEVICE_SIZE": {
207
+ "location": "local",
208
+ "path": "/home/runner/work/design-system/design-system/packages/components/src/components/post-header/post-header.tsx",
209
+ "id": "src/components/post-header/post-header.tsx::DEVICE_SIZE"
210
+ }
211
+ }
212
+ }
213
+ }];
214
+ }
140
215
  static get methods() {
141
216
  return {
142
217
  "toggleMobileMenu": {
@@ -15,54 +15,110 @@ const ANIMATION_KEYS = [...ANIMATION_NAMES];
15
15
  * @class PostIcon - representing a stencil component
16
16
  */
17
17
  export class PostIcon {
18
- constructor() {
19
- this.animation = null;
20
- this.base = null;
21
- this.flipH = false;
22
- this.flipV = false;
23
- this.name = undefined;
24
- this.rotate = null;
25
- this.scale = null;
26
- }
18
+ host;
19
+ /**
20
+ * The name of the animation.
21
+ */
22
+ animation = null;
27
23
  validateAnimation(newValue = this.animation) {
28
24
  if (newValue !== undefined)
29
25
  checkEmptyOrOneOf(newValue, ANIMATION_KEYS, `The post-icon "animation" prop requires one of the following values: ${ANIMATION_KEYS.join(', ')}.`);
30
26
  }
27
+ /**
28
+ * The base path, where the icons are located (must be a public url).<br/>Leave this field empty to use the default cdn url.
29
+ */
30
+ base = null;
31
31
  validateBase(newValue = this.base) {
32
32
  checkEmptyOrType(newValue, 'string', 'The post-icon "base" prop should be a string.');
33
33
  }
34
+ /**
35
+ * When set to `true`, the icon will be flipped horizontally.
36
+ */
37
+ flipH = false;
34
38
  validateFlipH(newValue = this.flipH) {
35
39
  checkEmptyOrType(newValue, 'boolean', 'The post-icon "flipH" prop should be a boolean.');
36
40
  }
41
+ /**
42
+ * When set to `true`, the icon will be flipped vertically.
43
+ */
44
+ flipV = false;
37
45
  validateFlipV(newValue = this.flipV) {
38
46
  checkEmptyOrType(newValue, 'boolean', 'The post-icon "flipV" prop should be a boolean.');
39
47
  }
48
+ /**
49
+ * The name/id of the icon (e.g. 1000, 1001, ...).
50
+ */
51
+ name;
40
52
  validateName(newValue = this.name) {
41
53
  checkNonEmpty(newValue, 'The post-icon "name" prop is required!.');
42
54
  checkType(newValue, 'string', 'The post-icon "name" prop should be a string.');
43
55
  }
56
+ /**
57
+ * The number of degree for the css rotate transformation.
58
+ */
59
+ rotate = null;
44
60
  validateRotate(newValue = this.rotate) {
45
61
  checkEmptyOrType(newValue, 'number', 'The post-icon "rotate" prop should be a number.');
46
62
  }
63
+ /**
64
+ * The number for the css scale transformation.
65
+ */
66
+ scale = null;
47
67
  validateScale(newValue = this.scale) {
48
68
  checkEmptyOrType(newValue, 'number', 'The post-icon "scale" prop should be a number.');
49
69
  }
50
- getPath() {
51
- var _a, _b, _c, _d, _e, _f;
52
- // Construct icon path from different possible sources
53
- const metaBase = (_b = (_a = document.head
54
- .querySelector('meta[name="design-system-settings"][data-post-icon-base]')) === null || _a === void 0 ? void 0 : _a.getAttribute('data-post-icon-base')) !== null && _b !== void 0 ? _b : null;
55
- const baseHref = (_c = document.getElementsByTagName('base')[0]) === null || _c === void 0 ? void 0 : _c.href;
56
- const fileBase = `${(_f = (_e = (_d = this.base) !== null && _d !== void 0 ? _d : metaBase) !== null && _e !== void 0 ? _e : baseHref) !== null && _f !== void 0 ? _f : CDN_URL}/`.replace(/\/\/$/, '/');
57
- const fileName = `${this.name}.svg`;
58
- const filePath = `${fileBase}${fileName}`;
59
- return new URL(filePath, window.location.origin).toString();
70
+ // Construct the icon url from different possible sources
71
+ getUrl() {
72
+ // the first definition object which defines a domain, will be used to set the domain of the file url
73
+ // the first definition object which defines a slug, will be used to set the slug of the file url
74
+ const urlDefinitions = [
75
+ getUrlDefinition(this.base, 'both'),
76
+ getUrlDefinition(document.head
77
+ .querySelector('meta[name="design-system-settings"][data-post-icon-base]')
78
+ ?.getAttribute('data-post-icon-base'), 'relative'),
79
+ getUrlDefinition(document.querySelector('base[href]')?.getAttribute('href'), 'both'),
80
+ ];
81
+ // in case no other definition defines a domain, the current origin is used as a fallback
82
+ const origin = urlDefinitions.find(d => d.definesDomain)?.url?.origin ?? window.location.origin;
83
+ // in case no other definition defines a slug, the cdn url is used as a fallback
84
+ const slug = urlDefinitions.find(d => d.definesSlug)?.url?.pathname;
85
+ const file = `${this.name}.svg`;
86
+ let url;
87
+ if (slug) {
88
+ url = new URL(`${origin}${slug}/${file}`).toString();
89
+ }
90
+ else {
91
+ url = new URL(`${CDN_URL}/${file}`).toString();
92
+ }
93
+ return url;
94
+ function getUrlDefinition(url, allow) {
95
+ return {
96
+ url: getUrlObject(url),
97
+ definesDomain: allow !== 'relative' ? definesDomain(url) : false,
98
+ definesSlug: allow !== 'absolute' ? definesSlug(url) : false,
99
+ };
100
+ function getUrlObject(url) {
101
+ if (url) {
102
+ return definesDomain(url) ? new URL(url) : new URL(url, window.location.origin);
103
+ }
104
+ else {
105
+ return null;
106
+ }
107
+ }
108
+ function definesDomain(url) {
109
+ return url ? /^https?:\/\//.test(url) : false;
110
+ }
111
+ function definesSlug(url) {
112
+ const urlObject = getUrlObject(url);
113
+ return Boolean(/^\/.+/.test(urlObject?.pathname));
114
+ }
115
+ }
60
116
  }
61
117
  getStyles() {
62
- const path = this.getPath();
118
+ const url = this.getUrl();
63
119
  return Object.entries({
64
- '-webkit-mask-image': `url(${path})`,
65
- 'mask-image': `url('${path}')`,
120
+ '-webkit-mask-image': `url(${url})`,
121
+ 'mask-image': `url('${url}')`,
66
122
  'transform': (this.scale && !isNaN(Number(this.scale)) ? 'scale(' + this.scale + ')' : '') +
67
123
  (this.rotate && !isNaN(Number(this.rotate)) ? ' rotate(' + this.rotate + 'deg)' : ''),
68
124
  })
@@ -79,7 +135,7 @@ export class PostIcon {
79
135
  this.validateAnimation();
80
136
  }
81
137
  render() {
82
- return (h(Host, { key: '70e13e357929d2601de3b61f46f9a717ba491fd5', "data-version": version }, h("span", { key: 'a0c40175bfa6bd06f3498dc056685c8396b6e706', style: this.getStyles() })));
138
+ return (h(Host, { key: '6c494ba3cdd2ee173fa99a8ce8ff0e8ab5cf2979', "data-version": version }, h("span", { key: 'd9e0192a2788541b97bf3e25468129ac335d44b5', style: this.getStyles() })));
83
139
  }
84
140
  static get is() { return "post-icon"; }
85
141
  static get encapsulation() { return "shadow"; }
@@ -114,6 +170,8 @@ export class PostIcon {
114
170
  "tags": [],
115
171
  "text": "The name of the animation."
116
172
  },
173
+ "getter": false,
174
+ "setter": false,
117
175
  "attribute": "animation",
118
176
  "reflect": false,
119
177
  "defaultValue": "null"
@@ -132,6 +190,8 @@ export class PostIcon {
132
190
  "tags": [],
133
191
  "text": "The base path, where the icons are located (must be a public url).<br/>Leave this field empty to use the default cdn url."
134
192
  },
193
+ "getter": false,
194
+ "setter": false,
135
195
  "attribute": "base",
136
196
  "reflect": false,
137
197
  "defaultValue": "null"
@@ -150,6 +210,8 @@ export class PostIcon {
150
210
  "tags": [],
151
211
  "text": "When set to `true`, the icon will be flipped horizontally."
152
212
  },
213
+ "getter": false,
214
+ "setter": false,
153
215
  "attribute": "flip-h",
154
216
  "reflect": false,
155
217
  "defaultValue": "false"
@@ -168,6 +230,8 @@ export class PostIcon {
168
230
  "tags": [],
169
231
  "text": "When set to `true`, the icon will be flipped vertically."
170
232
  },
233
+ "getter": false,
234
+ "setter": false,
171
235
  "attribute": "flip-v",
172
236
  "reflect": false,
173
237
  "defaultValue": "false"
@@ -186,6 +250,8 @@ export class PostIcon {
186
250
  "tags": [],
187
251
  "text": "The name/id of the icon (e.g. 1000, 1001, ...)."
188
252
  },
253
+ "getter": false,
254
+ "setter": false,
189
255
  "attribute": "name",
190
256
  "reflect": false
191
257
  },
@@ -203,6 +269,8 @@ export class PostIcon {
203
269
  "tags": [],
204
270
  "text": "The number of degree for the css rotate transformation."
205
271
  },
272
+ "getter": false,
273
+ "setter": false,
206
274
  "attribute": "rotate",
207
275
  "reflect": false,
208
276
  "defaultValue": "null"
@@ -221,6 +289,8 @@ export class PostIcon {
221
289
  "tags": [],
222
290
  "text": "The number for the css scale transformation."
223
291
  },
292
+ "getter": false,
293
+ "setter": false,
224
294
  "attribute": "scale",
225
295
  "reflect": false,
226
296
  "defaultValue": "null"
@@ -5,22 +5,37 @@ import { version } from "../../../../package";
5
5
  * @slot default - Slot for placing the content inside the anchor or button.
6
6
  */
7
7
  export class PostLanguageOption {
8
- constructor() {
9
- this.code = undefined;
10
- this.active = undefined;
11
- this.variant = undefined;
12
- this.name = undefined;
13
- this.url = undefined;
14
- }
8
+ host;
9
+ /**
10
+ * The ISO 639 language code, formatted according to [RFC 5646 (also known as BCP 47)](https://datatracker.ietf.org/doc/html/rfc5646). For example, "de".
11
+ */
12
+ code;
15
13
  validateCode(value = this.code) {
16
14
  checkType(value, 'string', 'The "code" property of the post-language-option component must be a string.');
17
15
  }
16
+ /**
17
+ * If set to `true`, the language option is considered the current language for the page.
18
+ */
19
+ active;
18
20
  validateActiveProp(value = this.active) {
19
21
  checkEmptyOrType(value, 'boolean', 'The "active" property of the post-language-option component must be a boolean value.');
20
22
  }
23
+ /**
24
+ * The variant of the post-language-switch parent (dynamically set by the parent)
25
+ */
26
+ variant;
27
+ /**
28
+ * The full name of the language. For example, "Deutsch".
29
+ */
30
+ name;
21
31
  validateName(value = this.name) {
22
32
  checkEmptyOrType(value, 'string', 'The "name" property of the post-language-option component must be a string.');
23
33
  }
34
+ /**
35
+ * The URL used for the href attribute of the internal anchor.
36
+ * This field is optional; if not provided, a button will be used internally instead of an anchor.
37
+ */
38
+ url;
24
39
  validateUrl(value = this.url) {
25
40
  checkEmptyOrType(value, 'string', 'The "url" property of the post-language-option component must be a valid URL.');
26
41
  }
@@ -33,6 +48,10 @@ export class PostLanguageOption {
33
48
  throw new Error('The "name" property of the post-language-option component is required when the full language name is not displayed.');
34
49
  }
35
50
  }
51
+ /**
52
+ * An event emitted when the language option is clicked. The payload is the ISO 639 code of the language.
53
+ */
54
+ postChange;
36
55
  /**
37
56
  * Selects the language option programmatically.
38
57
  */
@@ -53,7 +72,7 @@ export class PostLanguageOption {
53
72
  this.emitChange();
54
73
  }
55
74
  };
56
- return (h(Host, { key: '6a7c4af5ab0a953cc2c70621efc6fff905638900', "data-version": version, role: this.variant ? `${this.variant}item` : null }, this.url ? (h("a", { "aria-current": this.active ? 'page' : undefined, "aria-label": this.name, href: this.url, hrefLang: lang, lang: lang, onClick: () => this.emitChange(), onKeyDown: emitOnKeyDown }, h("slot", null))) : (h("button", { "aria-current": this.active ? 'true' : undefined, "aria-label": this.name, lang: lang, onClick: () => this.emitChange(), onKeyDown: emitOnKeyDown }, h("slot", null)))));
75
+ return (h(Host, { key: 'eff35e907ca174aa239604d8e3c937309d306cd1', "data-version": version, role: this.variant ? `${this.variant}item` : null }, this.url ? (h("a", { "aria-current": this.active ? 'page' : undefined, "aria-label": this.name, href: this.url, hrefLang: lang, lang: lang, onClick: () => this.emitChange(), onKeyDown: emitOnKeyDown }, h("slot", null))) : (h("button", { "aria-current": this.active ? 'true' : undefined, "aria-label": this.name, lang: lang, onClick: () => this.emitChange(), onKeyDown: emitOnKeyDown }, h("slot", null)))));
57
76
  }
58
77
  static get is() { return "post-language-option"; }
59
78
  static get originalStyleUrls() {
@@ -82,6 +101,8 @@ export class PostLanguageOption {
82
101
  "tags": [],
83
102
  "text": "The ISO 639 language code, formatted according to [RFC 5646 (also known as BCP 47)](https://datatracker.ietf.org/doc/html/rfc5646). For example, \"de\"."
84
103
  },
104
+ "getter": false,
105
+ "setter": false,
85
106
  "attribute": "code",
86
107
  "reflect": false
87
108
  },
@@ -99,6 +120,8 @@ export class PostLanguageOption {
99
120
  "tags": [],
100
121
  "text": "If set to `true`, the language option is considered the current language for the page."
101
122
  },
123
+ "getter": false,
124
+ "setter": false,
102
125
  "attribute": "active",
103
126
  "reflect": true
104
127
  },
@@ -122,6 +145,8 @@ export class PostLanguageOption {
122
145
  "tags": [],
123
146
  "text": "The variant of the post-language-switch parent (dynamically set by the parent)"
124
147
  },
148
+ "getter": false,
149
+ "setter": false,
125
150
  "attribute": "variant",
126
151
  "reflect": false
127
152
  },
@@ -139,6 +164,8 @@ export class PostLanguageOption {
139
164
  "tags": [],
140
165
  "text": "The full name of the language. For example, \"Deutsch\"."
141
166
  },
167
+ "getter": false,
168
+ "setter": false,
142
169
  "attribute": "name",
143
170
  "reflect": false
144
171
  },
@@ -156,6 +183,8 @@ export class PostLanguageOption {
156
183
  "tags": [],
157
184
  "text": "The URL used for the href attribute of the internal anchor.\nThis field is optional; if not provided, a button will be used internally instead of an anchor."
158
185
  },
186
+ "getter": false,
187
+ "setter": false,
159
188
  "attribute": "url",
160
189
  "reflect": false
161
190
  }
@@ -1 +1 @@
1
- :host{display:block}@media screen and (max-width: 1023.99px){:host{display:flex !important;gap:.5rem}}.post-language-switch-dropdown-container{display:flex;flex-direction:column}.post-language-switch-dropdown-container>*{width:100%}.post-language-switch-trigger{cursor:pointer;padding:0;overflow:visible;border:0;background:none;color:inherit;font:inherit;-webkit-user-select:none;user-select:none;appearance:button;text-decoration:none;display:inline-flex;align-items:center;gap:var(--post-core-dimension-6);border-radius:var(--post-core-dimension-24);font-size:var(--post-core-font-size-16);padding:var(--post-core-dimension-3) var(--post-core-dimension-10)}.post-language-switch-trigger{outline-offset:var(--post-device-spacing-padding-2) !important;outline:var(--post-scheme-color-interactive-focus-stroke) none var(--post-device-border-width-focus) !important}.post-language-switch-trigger:is(:focus-visible,:has(:focus-visible),.pretend-focus){outline-style:var(--post-core-border-style-solid) !important}@media(forced-colors: active),(-ms-high-contrast: active),(-ms-high-contrast: white-on-black){.post-language-switch-trigger:is(:focus-visible,:has(:focus-visible),.pretend-focus){outline-color:Highlight !important}}@supports not selector(:has(:focus-visible)){.post-language-switch-trigger:is(:focus-visible,:focus-within,.pretend-focus){outline-style:var(--post-core-border-style-solid) !important}@media(forced-colors: active),(-ms-high-contrast: active),(-ms-high-contrast: white-on-black){.post-language-switch-trigger:is(:focus-visible,:focus-within,.pretend-focus){outline-color:Highlight !important}}}.post-language-switch-trigger:not(:disabled):hover,.post-language-switch-trigger.pretend-hover{border-color:var(--post-scheme-color-interactive-button-tertiary-hover-stroke);background-color:var(--post-scheme-color-interactive-button-tertiary-hover-bg);color:var(--post-scheme-color-interactive-button-tertiary-hover-fg)}.post-language-switch-trigger post-icon{height:var(--post-core-dimension-16);width:var(--post-core-dimension-16)}
1
+ :host{display:block}@media screen and (max-width: 1023.98px){:host{display:flex !important;gap:.5rem}}.post-language-switch-dropdown-container{display:flex;flex-direction:column}.post-language-switch-dropdown-container>*{width:100%}.post-language-switch-trigger{cursor:pointer;padding:0;overflow:visible;border:0;background:none;color:inherit;font:inherit;-webkit-user-select:none;user-select:none;appearance:button;text-decoration:none;display:inline-flex;align-items:center;gap:var(--post-core-dimension-6);border-radius:var(--post-core-dimension-24);font-size:var(--post-core-font-size-16);padding:var(--post-core-dimension-3) var(--post-core-dimension-10)}.post-language-switch-trigger{outline-offset:var(--post-device-spacing-padding-2) !important;outline:var(--post-scheme-color-interactive-focus-stroke) none var(--post-device-border-width-focus) !important}.post-language-switch-trigger:is(:focus-visible,:has(:focus-visible),.pretend-focus){outline-style:var(--post-core-border-style-solid) !important}@media(forced-colors: active),(-ms-high-contrast: active),(-ms-high-contrast: white-on-black){.post-language-switch-trigger:is(:focus-visible,:has(:focus-visible),.pretend-focus){outline-color:Highlight !important}}@supports not selector(:has(:focus-visible)){.post-language-switch-trigger:is(:focus-visible,:focus-within,.pretend-focus){outline-style:var(--post-core-border-style-solid) !important}@media(forced-colors: active),(-ms-high-contrast: active),(-ms-high-contrast: white-on-black){.post-language-switch-trigger:is(:focus-visible,:focus-within,.pretend-focus){outline-color:Highlight !important}}}.post-language-switch-trigger:not(:disabled):hover,.post-language-switch-trigger.pretend-hover{border-color:var(--post-scheme-color-interactive-button-tertiary-hover-stroke);background-color:var(--post-scheme-color-interactive-button-tertiary-hover-bg);color:var(--post-scheme-color-interactive-button-tertiary-hover-fg)}.post-language-switch-trigger post-icon{height:var(--post-core-dimension-16);width:var(--post-core-dimension-16)}
@@ -4,22 +4,32 @@ import { version } from "../../../../package";
4
4
  import { SWITCH_VARIANTS } from "./switch-variants";
5
5
  import { nanoid } from "nanoid";
6
6
  export class PostLanguageSwitch {
7
- constructor() {
8
- this.menuId = `p${nanoid(11)}`;
9
- this.caption = undefined;
10
- this.description = undefined;
11
- this.variant = 'list';
12
- this.activeLang = undefined;
13
- }
7
+ host;
8
+ /**
9
+ * A title for the list of language options
10
+ */
11
+ caption;
14
12
  validateCaption(value = this.caption) {
15
13
  checkType(value, 'string', 'The "caption" property of the post-language-switch component must be a string.');
16
14
  }
15
+ /**
16
+ * A descriptive text for the list of language options
17
+ */
18
+ description;
17
19
  validateDescription(value = this.description) {
18
20
  checkType(value, 'string', 'The "description" property of the post-language-switch component must be a string.');
19
21
  }
22
+ /**
23
+ * Variant that determines the rendering of the language switch either as a list (used on mobile in the header) or a dropdown (used on desktop in the header)
24
+ */
25
+ variant = 'list';
20
26
  validateVariant(value = this.variant) {
21
27
  checkEmptyOrOneOf(value, SWITCH_VARIANTS, `The "variant" property of the post-language-switch component must be: ${SWITCH_VARIANTS.join(', ')}`);
22
28
  }
29
+ /**
30
+ * The active language of the language switch
31
+ */
32
+ activeLang;
23
33
  connectedCallback() {
24
34
  this.updateChildrenVariant();
25
35
  // Get the active language based on children's active state
@@ -59,6 +69,7 @@ export class PostLanguageSwitch {
59
69
  }
60
70
  });
61
71
  }
72
+ menuId = `p${nanoid(11)}`;
62
73
  renderList() {
63
74
  return (h(Host, { "data-version": version, "aria-label": `${this.caption}, ${this.description}`, "aria-role": "list" }, h("slot", null)));
64
75
  }
@@ -96,6 +107,8 @@ export class PostLanguageSwitch {
96
107
  "tags": [],
97
108
  "text": "A title for the list of language options"
98
109
  },
110
+ "getter": false,
111
+ "setter": false,
99
112
  "attribute": "caption",
100
113
  "reflect": false
101
114
  },
@@ -113,6 +126,8 @@ export class PostLanguageSwitch {
113
126
  "tags": [],
114
127
  "text": "A descriptive text for the list of language options"
115
128
  },
129
+ "getter": false,
130
+ "setter": false,
116
131
  "attribute": "description",
117
132
  "reflect": false
118
133
  },
@@ -136,6 +151,8 @@ export class PostLanguageSwitch {
136
151
  "tags": [],
137
152
  "text": "Variant that determines the rendering of the language switch either as a list (used on mobile in the header) or a dropdown (used on desktop in the header)"
138
153
  },
154
+ "getter": false,
155
+ "setter": false,
139
156
  "attribute": "variant",
140
157
  "reflect": false,
141
158
  "defaultValue": "'list'"
@@ -0,0 +1 @@
1
+ :host{display:contents;cursor:pointer}
@@ -0,0 +1,32 @@
1
+ import { h, Host } from "@stencil/core";
2
+ import { version } from "../../../../package";
3
+ export class PostLinkarea {
4
+ hostElement;
5
+ handleClick = () => {
6
+ const customSlottedLink = this.hostElement.querySelector('a[data-link]');
7
+ const linkElement = customSlottedLink
8
+ ? customSlottedLink
9
+ : this.hostElement.querySelector('a');
10
+ if (linkElement.href) {
11
+ window.location.href = linkElement.href;
12
+ }
13
+ else {
14
+ console.error('<post-linkarea> : Your element must contain a child with a `href` property.');
15
+ }
16
+ };
17
+ render() {
18
+ return (h(Host, { key: 'fd83dca8dca965d14f5a844454e79d7fb449639d', "data-version": version, onClick: this.handleClick, tabindex: "0" }, h("slot", { key: '278537c9aabe710d118cdd6075ab506a8a4dcfe2' })));
19
+ }
20
+ static get is() { return "post-linkarea"; }
21
+ static get originalStyleUrls() {
22
+ return {
23
+ "$": ["post-linkarea.scss"]
24
+ };
25
+ }
26
+ static get styleUrls() {
27
+ return {
28
+ "$": ["post-linkarea.css"]
29
+ };
30
+ }
31
+ static get elementRef() { return "hostElement"; }
32
+ }