@swisspost/design-system-components 9.0.0-next.17 → 9.0.0-next.19

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 (256) hide show
  1. package/dist/cjs/{check-url-1ff4cf75.js → check-url-4c524d85.js} +1 -1
  2. package/dist/cjs/{index-f2eedfeb.js → index-d4222dcb.js} +1 -1
  3. package/dist/cjs/index.cjs.js +22 -22
  4. package/dist/cjs/loader.cjs.js +1 -1
  5. package/dist/cjs/{package-6000ba84.js → package-1403e51d.js} +1 -1
  6. package/dist/cjs/{post-accordion-562d63d3.js → post-accordion-e84c9d23.js} +1 -1
  7. package/dist/cjs/{post-accordion-item-2b9a7c01.js → post-accordion-item-d1ef00c3.js} +3 -3
  8. package/dist/cjs/post-accordion-item.cjs.entry.js +4 -4
  9. package/dist/cjs/post-accordion.cjs.entry.js +2 -2
  10. package/dist/cjs/{post-avatar-d9194b7f.js → post-avatar-7a8860df.js} +1 -1
  11. package/dist/cjs/post-avatar.cjs.entry.js +2 -2
  12. package/dist/cjs/{post-back-to-top-fa8d4e1d.js → post-back-to-top-6c7057f9.js} +2 -2
  13. package/dist/cjs/post-back-to-top.cjs.entry.js +2 -2
  14. package/dist/cjs/{post-banner-3b91a695.js → post-banner-ecc46714.js} +3 -3
  15. package/dist/cjs/post-banner.cjs.entry.js +4 -4
  16. package/dist/cjs/{post-breadcrumb-839a2652.js → post-breadcrumb-dbb85db9.js} +2 -2
  17. package/dist/cjs/post-breadcrumb-item_2.cjs.entry.js +4 -4
  18. package/dist/cjs/post-breadcrumb.cjs.entry.js +3 -3
  19. package/dist/cjs/{post-card-control-14a4dfc8.js → post-card-control-76f6a5b3.js} +1 -1
  20. package/dist/cjs/post-card-control.cjs.entry.js +2 -2
  21. package/dist/cjs/post-closebutton_15.cjs.entry.js +4 -4
  22. package/dist/cjs/{post-collapsible-trigger-05be3759.js → post-collapsible-trigger-8b242323.js} +2 -2
  23. package/dist/cjs/post-collapsible_2.cjs.entry.js +4 -4
  24. package/dist/cjs/post-components.cjs.js +1 -1
  25. package/dist/cjs/{post-footer-a70591e7.js → post-footer-eeec84e0.js} +1 -1
  26. package/dist/cjs/post-footer.cjs.entry.js +2 -2
  27. package/dist/cjs/post-linkarea-61dbfe5d.js +30 -0
  28. package/dist/cjs/post-linkarea.cjs.entry.js +2 -2
  29. package/dist/cjs/{post-menu-item-e20f184b.js → post-menu-item-12639f7c.js} +2 -2
  30. package/dist/cjs/{post-popover-e398bdfb.js → post-popover-9569b144.js} +2 -2
  31. package/dist/cjs/post-popover.cjs.entry.js +2 -2
  32. package/dist/cjs/{post-rating-7aff1856.js → post-rating-5645cae4.js} +2 -2
  33. package/dist/cjs/post-rating.cjs.entry.js +2 -2
  34. package/dist/cjs/{post-tab-header-a2dbedd3.js → post-tab-header-82e8ccd0.js} +3 -3
  35. package/dist/cjs/post-tab-header.cjs.entry.js +2 -2
  36. package/dist/cjs/{post-tab-panel-5be6d90e.js → post-tab-panel-ef3df53e.js} +2 -2
  37. package/dist/cjs/post-tab-panel.cjs.entry.js +2 -2
  38. package/dist/cjs/{post-tabs-c0ff849b.js → post-tabs-8f1e74d9.js} +2 -2
  39. package/dist/cjs/post-tabs.cjs.entry.js +2 -2
  40. package/dist/cjs/{post-tag-0d9d3036.js → post-tag-c353e30c.js} +2 -2
  41. package/dist/cjs/post-tag.cjs.entry.js +2 -2
  42. package/dist/cjs/{post-togglebutton-46c57375.js → post-togglebutton-8949d278.js} +341 -161
  43. package/dist/cjs/{post-tooltip-fd1b7b47.js → post-tooltip-cf18ac29.js} +4 -4
  44. package/dist/cjs/post-tooltip.cjs.entry.js +4 -4
  45. package/dist/collection/components/post-accordion-item/post-accordion-item.css +1 -1
  46. package/dist/collection/components/post-back-to-top/post-back-to-top.css +1 -1
  47. package/dist/collection/components/post-banner/post-banner.css +1 -1
  48. package/dist/collection/components/post-header/post-header.css +1 -1
  49. package/dist/collection/components/post-header/post-header.js +13 -3
  50. package/dist/collection/components/post-icon/post-icon.js +41 -37
  51. package/dist/collection/components/post-language-option/post-language-option.css +1 -1
  52. package/dist/collection/components/post-language-option/post-language-option.js +2 -2
  53. package/dist/collection/components/post-language-switch/post-language-switch.css +1 -1
  54. package/dist/collection/components/post-language-switch/post-language-switch.js +6 -6
  55. package/dist/collection/components/post-linkarea/post-linkarea.css +1 -1
  56. package/dist/collection/components/post-linkarea/post-linkarea.js +12 -14
  57. package/dist/collection/components/post-list/post-list.js +2 -2
  58. package/dist/collection/components/post-mainnavigation/post-mainnavigation.css +1 -1
  59. package/dist/collection/components/post-mainnavigation/post-mainnavigation.js +55 -34
  60. package/dist/collection/components/post-megadropdown/post-megadropdown.css +1 -1
  61. package/dist/collection/components/post-megadropdown/post-megadropdown.js +64 -21
  62. package/dist/collection/components/post-megadropdown-trigger/post-megadropdown-trigger.js +24 -2
  63. package/dist/collection/components/post-menu/post-menu.js +17 -13
  64. package/dist/collection/components/post-menu-trigger/post-menu-trigger.js +13 -7
  65. package/dist/collection/components/post-popover/post-popover.css +1 -1
  66. package/dist/collection/components/post-popovercontainer/post-popovercontainer.css +1 -1
  67. package/dist/collection/components/post-popovercontainer/post-popovercontainer.js +141 -33
  68. package/dist/collection/components/post-rating/post-rating.js +1 -1
  69. package/dist/collection/components/post-tab-header/post-tab-header.css +1 -1
  70. package/dist/collection/components/post-tab-header/post-tab-header.js +1 -1
  71. package/dist/collection/components/post-tab-panel/post-tab-panel.js +1 -1
  72. package/dist/collection/components/post-tabs/post-tabs.js +1 -1
  73. package/dist/collection/components/post-tag/post-tag.js +1 -1
  74. package/dist/collection/components/post-togglebutton/post-togglebutton.js +1 -1
  75. package/dist/collection/components/post-tooltip/post-tooltip.css +1 -1
  76. package/dist/collection/components/post-tooltip/post-tooltip.js +1 -1
  77. package/dist/collection/utils/property-checkers/check-url.js +1 -1
  78. package/dist/components/index2.js +1 -1
  79. package/dist/components/package.js +1 -1
  80. package/dist/components/post-accordion-item2.js +1 -1
  81. package/dist/components/post-back-to-top2.js +1 -1
  82. package/dist/components/post-banner2.js +1 -1
  83. package/dist/components/post-header2.js +14 -4
  84. package/dist/components/post-icon2.js +41 -37
  85. package/dist/components/post-language-option2.js +2 -2
  86. package/dist/components/post-language-switch2.js +6 -6
  87. package/dist/components/post-linkarea2.js +12 -14
  88. package/dist/components/post-list2.js +2 -2
  89. package/dist/components/post-mainnavigation2.js +57 -36
  90. package/dist/components/post-megadropdown-trigger2.js +24 -2
  91. package/dist/components/post-megadropdown2.js +42 -19
  92. package/dist/components/post-menu-trigger2.js +13 -7
  93. package/dist/components/post-menu2.js +17 -13
  94. package/dist/components/post-popover2.js +1 -1
  95. package/dist/components/post-popovercontainer2.js +125 -33
  96. package/dist/components/post-rating2.js +1 -1
  97. package/dist/components/post-tab-header2.js +2 -2
  98. package/dist/components/post-tab-panel2.js +1 -1
  99. package/dist/components/post-tabs2.js +1 -1
  100. package/dist/components/post-tag2.js +1 -1
  101. package/dist/components/post-togglebutton2.js +1 -1
  102. package/dist/components/post-tooltip2.js +2 -2
  103. package/dist/docs.json +71 -11
  104. package/dist/esm/{check-url-8ab230de.js → check-url-f84034b1.js} +1 -1
  105. package/dist/esm/{index-0aec278f.js → index-1b263a63.js} +1 -1
  106. package/dist/esm/index.js +22 -22
  107. package/dist/esm/loader.js +1 -1
  108. package/dist/esm/package-21cb9eb8.js +3 -0
  109. package/dist/esm/{post-accordion-ae79061a.js → post-accordion-db14e23a.js} +1 -1
  110. package/dist/esm/{post-accordion-item-6aa9b5bd.js → post-accordion-item-c1f42c05.js} +3 -3
  111. package/dist/esm/post-accordion-item.entry.js +4 -4
  112. package/dist/esm/post-accordion.entry.js +2 -2
  113. package/dist/esm/{post-avatar-2384ca3b.js → post-avatar-ccda94eb.js} +1 -1
  114. package/dist/esm/post-avatar.entry.js +2 -2
  115. package/dist/esm/{post-back-to-top-ec1c2754.js → post-back-to-top-f038d599.js} +2 -2
  116. package/dist/esm/post-back-to-top.entry.js +2 -2
  117. package/dist/esm/{post-banner-c7b88ac2.js → post-banner-a24ccf11.js} +3 -3
  118. package/dist/esm/post-banner.entry.js +4 -4
  119. package/dist/esm/{post-breadcrumb-d48cb773.js → post-breadcrumb-e3e4b50c.js} +2 -2
  120. package/dist/esm/post-breadcrumb-item_2.entry.js +4 -4
  121. package/dist/esm/post-breadcrumb.entry.js +3 -3
  122. package/dist/esm/{post-card-control-b63a2837.js → post-card-control-0a4497d8.js} +1 -1
  123. package/dist/esm/post-card-control.entry.js +2 -2
  124. package/dist/esm/post-closebutton_15.entry.js +4 -4
  125. package/dist/esm/{post-collapsible-trigger-8f4daf1e.js → post-collapsible-trigger-6b0253d8.js} +2 -2
  126. package/dist/esm/post-collapsible_2.entry.js +4 -4
  127. package/dist/esm/post-components.js +1 -1
  128. package/dist/esm/{post-footer-b4b75c94.js → post-footer-fa4a2a32.js} +1 -1
  129. package/dist/esm/post-footer.entry.js +2 -2
  130. package/dist/esm/post-linkarea-1458faa8.js +28 -0
  131. package/dist/esm/post-linkarea.entry.js +2 -2
  132. package/dist/esm/{post-menu-item-d087d910.js → post-menu-item-b9af8b46.js} +2 -2
  133. package/dist/esm/{post-popover-a096ee08.js → post-popover-425eb5c9.js} +2 -2
  134. package/dist/esm/post-popover.entry.js +2 -2
  135. package/dist/esm/{post-rating-0ead6a2a.js → post-rating-4057a5b5.js} +2 -2
  136. package/dist/esm/post-rating.entry.js +2 -2
  137. package/dist/esm/{post-tab-header-e29d371b.js → post-tab-header-602eb0cb.js} +3 -3
  138. package/dist/esm/post-tab-header.entry.js +2 -2
  139. package/dist/esm/{post-tab-panel-57840a1a.js → post-tab-panel-fccea5b6.js} +2 -2
  140. package/dist/esm/post-tab-panel.entry.js +2 -2
  141. package/dist/esm/{post-tabs-70dfc43c.js → post-tabs-b9f41051.js} +2 -2
  142. package/dist/esm/post-tabs.entry.js +2 -2
  143. package/dist/esm/{post-tag-be1ad18d.js → post-tag-54b70906.js} +2 -2
  144. package/dist/esm/post-tag.entry.js +2 -2
  145. package/dist/esm/{post-togglebutton-8da6d613.js → post-togglebutton-f6746062.js} +341 -161
  146. package/dist/esm/{post-tooltip-cb549b9f.js → post-tooltip-eccf3d93.js} +4 -4
  147. package/dist/esm/post-tooltip.entry.js +4 -4
  148. package/dist/post-components/index.esm.js +1 -1
  149. package/dist/post-components/p-0337eb03.entry.js +1 -0
  150. package/dist/post-components/p-0470d5af.entry.js +1 -0
  151. package/dist/post-components/p-07b75b18.entry.js +1 -0
  152. package/dist/post-components/{p-c3135c18.js → p-0d879e8b.js} +1 -1
  153. package/dist/post-components/{p-9b46c8f2.js → p-0f6fee8f.js} +1 -1
  154. package/dist/post-components/p-114bb8ba.js +1 -0
  155. package/dist/post-components/{p-fa65c799.js → p-18fa847f.js} +1 -1
  156. package/dist/post-components/{p-fb8f5195.js → p-1c1a614d.js} +1 -1
  157. package/dist/post-components/p-202156ad.js +1 -0
  158. package/dist/post-components/p-2f5425e2.entry.js +1 -0
  159. package/dist/post-components/p-39586235.js +1 -0
  160. package/dist/post-components/p-3b1c2b8a.entry.js +1 -0
  161. package/dist/post-components/{p-16d20563.js → p-46accc5f.js} +1 -1
  162. package/dist/post-components/{p-f513fd5d.js → p-470c7464.js} +1 -1
  163. package/dist/post-components/{p-77eb06d0.js → p-509fc6e6.js} +1 -1
  164. package/dist/post-components/{p-7f09a864.js → p-541c7be9.js} +2 -2
  165. package/dist/post-components/p-54c98790.js +1 -0
  166. package/dist/post-components/p-5afa25c7.entry.js +1 -0
  167. package/dist/post-components/{p-49b69e0e.js → p-5b1c57d5.js} +1 -1
  168. package/dist/post-components/p-5cf79fe3.entry.js +1 -0
  169. package/dist/post-components/p-5d9c1fc3.entry.js +1 -0
  170. package/dist/post-components/p-608ba689.entry.js +1 -0
  171. package/dist/post-components/p-64776810.entry.js +1 -0
  172. package/dist/post-components/{p-faaa4c0a.js → p-6651164c.js} +1 -1
  173. package/dist/post-components/p-7085e0e7.entry.js +1 -0
  174. package/dist/post-components/{p-904b3028.entry.js → p-7bf39758.entry.js} +1 -1
  175. package/dist/post-components/p-7dc1ccf0.entry.js +1 -0
  176. package/dist/post-components/p-81eac2e5.entry.js +1 -0
  177. package/dist/post-components/p-8a31b2fc.entry.js +1 -0
  178. package/dist/post-components/p-8e7e9942.entry.js +1 -0
  179. package/dist/post-components/p-a24bf798.js +1 -0
  180. package/dist/post-components/p-a621090d.js +1 -0
  181. package/dist/post-components/p-a926c755.js +1 -0
  182. package/dist/post-components/{p-ce76e0bf.js → p-b27b7d03.js} +1 -1
  183. package/dist/post-components/{p-76bbd883.js → p-b8100b63.js} +1 -1
  184. package/dist/post-components/p-c48553bd.entry.js +1 -0
  185. package/dist/post-components/{p-26951eb6.js → p-cb472e20.js} +1 -1
  186. package/dist/post-components/p-cea81e00.entry.js +1 -0
  187. package/dist/post-components/p-d2d2681a.js +1 -0
  188. package/dist/post-components/{p-baf06ea0.js → p-d8b179fb.js} +1 -1
  189. package/dist/post-components/p-f405f29e.entry.js +1 -0
  190. package/dist/post-components/post-components.esm.js +1 -1
  191. package/dist/types/components/post-header/post-header.d.ts +1 -0
  192. package/dist/types/components/post-icon/post-icon.d.ts +5 -0
  193. package/dist/types/components/post-language-option/post-language-option.d.ts +1 -1
  194. package/dist/types/components/post-language-switch/post-language-switch.d.ts +1 -1
  195. package/dist/types/components/post-linkarea/post-linkarea.d.ts +2 -2
  196. package/dist/types/components/post-mainnavigation/post-mainnavigation.d.ts +2 -5
  197. package/dist/types/components/post-megadropdown/post-megadropdown.d.ts +12 -5
  198. package/dist/types/components/post-megadropdown-trigger/post-megadropdown-trigger.d.ts +6 -0
  199. package/dist/types/components/post-menu-trigger/post-menu-trigger.d.ts +2 -1
  200. package/dist/types/components/post-popovercontainer/post-popovercontainer.d.ts +15 -1
  201. package/dist/types/components.d.ts +19 -10
  202. package/loaders/index2.js +1 -1
  203. package/loaders/package.js +1 -1
  204. package/loaders/post-accordion-item2.js +1 -1
  205. package/loaders/post-back-to-top.js +1 -1
  206. package/loaders/post-banner.js +1 -1
  207. package/loaders/post-header.js +14 -4
  208. package/loaders/post-icon2.js +41 -37
  209. package/loaders/post-language-option.js +2 -2
  210. package/loaders/post-language-switch.js +6 -6
  211. package/loaders/post-linkarea.js +12 -14
  212. package/loaders/post-list.js +2 -2
  213. package/loaders/post-mainnavigation.js +57 -36
  214. package/loaders/post-megadropdown-trigger.js +24 -2
  215. package/loaders/post-megadropdown.js +42 -19
  216. package/loaders/post-menu-trigger2.js +13 -7
  217. package/loaders/post-menu2.js +17 -13
  218. package/loaders/post-popover.js +1 -1
  219. package/loaders/post-popovercontainer2.js +125 -33
  220. package/loaders/post-rating.js +1 -1
  221. package/loaders/post-tab-header.js +2 -2
  222. package/loaders/post-tab-panel.js +1 -1
  223. package/loaders/post-tabs.js +1 -1
  224. package/loaders/post-tag.js +1 -1
  225. package/loaders/post-togglebutton.js +1 -1
  226. package/loaders/post-tooltip.js +2 -2
  227. package/package.json +3 -3
  228. package/dist/cjs/post-linkarea-199a2615.js +0 -32
  229. package/dist/esm/package-0d05729a.js +0 -3
  230. package/dist/esm/post-linkarea-d3ae37f9.js +0 -30
  231. package/dist/post-components/p-0ca3d16c.entry.js +0 -1
  232. package/dist/post-components/p-1a695d66.entry.js +0 -1
  233. package/dist/post-components/p-1eb54abb.entry.js +0 -1
  234. package/dist/post-components/p-2bcf91f6.entry.js +0 -1
  235. package/dist/post-components/p-3e94d076.entry.js +0 -1
  236. package/dist/post-components/p-3ef59370.entry.js +0 -1
  237. package/dist/post-components/p-3fdd351e.js +0 -1
  238. package/dist/post-components/p-413b656c.entry.js +0 -1
  239. package/dist/post-components/p-480169b9.js +0 -1
  240. package/dist/post-components/p-59373941.js +0 -1
  241. package/dist/post-components/p-78ae731e.js +0 -1
  242. package/dist/post-components/p-78b6020e.entry.js +0 -1
  243. package/dist/post-components/p-88c5e0bf.entry.js +0 -1
  244. package/dist/post-components/p-8c732622.entry.js +0 -1
  245. package/dist/post-components/p-8f2e8a63.entry.js +0 -1
  246. package/dist/post-components/p-9a5111ca.entry.js +0 -1
  247. package/dist/post-components/p-9ae6517d.entry.js +0 -1
  248. package/dist/post-components/p-a2806a35.js +0 -1
  249. package/dist/post-components/p-c6a239f2.entry.js +0 -1
  250. package/dist/post-components/p-ceb96aaa.js +0 -1
  251. package/dist/post-components/p-d2646369.entry.js +0 -1
  252. package/dist/post-components/p-debe5b2d.entry.js +0 -1
  253. package/dist/post-components/p-f2ed28e5.js +0 -1
  254. package/dist/post-components/p-f3c23d8c.entry.js +0 -1
  255. package/dist/post-components/p-f573860f.js +0 -1
  256. package/dist/post-components/p-facba41d.entry.js +0 -1
@@ -1,7 +1,7 @@
1
1
  import { proxyCustomElement, HTMLElement, createEvent, h, Host } from '@stencil/core/internal/client';
2
2
  import { g as getFocusableChildren } from './get-focusable-children.js';
3
3
 
4
- const postMegadropdownCss = "@keyframes slide-in{0%{transform:translateX(100%)}100%{transform:translateX(0%)}}@keyframes slide-out{from{transform:translateX(0%)}to{transform:translateX(100%)}}@keyframes slide-down{from{transform:translateY(-100%)}to{transform:translateY(0%)}}@keyframes slide-up{0%{transform:translateY(0%)}100%{transform:translateY(-100%)}}*,::before,::after{box-sizing:border-box}.megadropdown-container{--post-main-header-height:56px;--post-global-header-height:72px;--post-header-height:calc(var(--post-global-header-height) + var(--post-main-header-height));box-shadow:0 8px 6px rgba(0,0,0,.16);position:absolute;background-color:#fafafa;border:none;z-index:1;border-top:1px solid #e1e0dc;width:100%;top:100%;left:0;border-radius:0}.megadropdown-container.slide-in{animation:slide-down 350ms forwards}.megadropdown-container.slide-out{animation:slide-up 350ms forwards}@media screen and (max-width: 1023.98px){.megadropdown-container{--post-global-header-height:64px;z-index:4;top:0 !important;left:0;width:100%;position:fixed;height:calc(100vh - var(--post-header-height));max-height:calc(100vh - var(--header-height));border-top:unset;overflow:auto}.megadropdown-container.slide-in{animation:slide-in 350ms forwards}.megadropdown-container.slide-out{animation:slide-out 350ms forwards}}.megadropdown{padding:31px 40px 40px;background-color:#fafafa}@media screen and (max-width: 1023.98px){.megadropdown{padding:16px 32px 24px}}@media screen and (max-width: 599.98px){.megadropdown{padding-inline:16px}}.megadropdown .megadropdown-content{gap:1.5rem;display:grid;grid-template-columns:repeat(auto-fit, minmax(min(15vw, 100%), 1fr));grid-auto-rows:1fr auto;grid-auto-flow:dense}@media screen and (max-width: 1023.98px){.megadropdown .megadropdown-content{grid-template-columns:repeat(auto-fit, minmax(min(35vw, 100%), 1fr))}}@media screen and (max-width: 599.98px){.megadropdown .megadropdown-content{grid-template-columns:1fr}}.megadropdown h2{display:none;margin-top:0;margin-bottom:8px;font-weight:900}.megadropdown h2 a{text-decoration:none;font-weight:inherit;border-bottom:0;border-top:0}@media screen and (max-width: 1023.98px){.megadropdown h2{display:block;font-size:1.25rem}}@media screen and (max-width: 599.98px){.megadropdown h2{font-size:1.125rem}}.megadropdown post-list{display:grid;grid-row:span 2;grid-template-rows:subgrid;row-gap:0px}.megadropdown post-list>[role=list]{flex-direction:unset;display:unset}.megadropdown post-list>*{width:100%}.megadropdown post-list .list-title{display:flex;flex-direction:column-reverse;height:100%}.megadropdown post-list .list-title h3{font-size:20px;display:block;font-weight:900}.megadropdown post-list .list-title h3:not(:has(a)){padding:15px 12px 14px 8px;border-bottom:1px solid #050400}.megadropdown post-list .list-title h3 a{padding-block:15px 14px;padding-inline-start:8px;border-radius:0;text-decoration:none;font-size:inherit;display:flex;align-items:center;justify-content:space-between;min-height:53px;width:100%;min-width:100%;height:var(--post-core-dimension-48);padding-inline-end:calc(var(--post-core-dimension-6) + var(--post-core-dimension-24) + var(--post-core-dimension-16));gap:var(--post-core-dimension-16);font-weight:var(--post-core-font-weight-400);position:relative;height:unset;font-weight:900}.megadropdown post-list .list-title h3 a::before{content:\"\";background-color:currentColor;bottom:0;width:100%;height:var(--post-core-dimension-1);position:absolute;left:0}.megadropdown post-list .list-title h3 a:hover::before{height:var(--post-core-dimension-3)}.megadropdown post-list .list-title h3 a:hover::after{content:\"\";display:block;margin-right:calc((var(--post-core-dimension-24) + var(--post-core-dimension-16))*-1);mask-image:url(\"data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 32 32'%3E%3Cpath d='m31.95 16-9.11 9.11c-.2.2-.45.29-.71.29s-.51-.1-.71-.29a.996.996 0 0 1 0-1.41l6.69-6.69H-.05v-2h28.17l-6.69-6.69a.996.996 0 1 1 1.41-1.41l9.11 9.11Z'%3E%3C/path%3E%3C/svg%3E\");background-color:currentColor;color:currentColor;forced-color-adjust:preserve-parent-color;width:var(--post-core-dimension-20);min-width:var(--post-core-dimension-20);height:var(--post-core-dimension-20)}@media screen and (max-width: 1023.98px){.megadropdown post-list .list-title h3{font-size:1rem}.megadropdown post-list .list-title h3:not(:has(a)){padding:15px 12px 14px 8px;border-bottom:1px solid #050400}}@media screen and (max-width: 599.98px){.megadropdown post-list .list-title h3{font-size:.875rem}}.megadropdown post-list-item>a{padding-block:13px 12px;padding-inline-start:8px;display:flex;text-decoration:none;width:100%;min-width:100%;height:auto;min-height:48px}.megadropdown post-list-item>a:hover{border-block-width:0}@media screen and (min-width: 1024px){.megadropdown post-list-item>a{font-size:1.25rem}}@media screen and (max-width: 1023.98px){.megadropdown post-list-item>a{padding-block:12px 11px}}@media screen and (max-width: 599.98px){.megadropdown post-list-item>a{font-size:.875rem}}.megadropdown .back-button{display:none;margin-bottom:2rem}.megadropdown .back-button .btn{width:auto}@media screen and (max-width: 1023.98px){.megadropdown .back-button{display:block}}.megadropdown .close-button{position:absolute;top:1rem;right:1rem}@media screen and (max-width: 1023.98px){.megadropdown .close-button{display:none}}";
4
+ const postMegadropdownCss = "@keyframes slide-in{0%{transform:translateX(100%)}100%{transform:translateX(0%)}}@keyframes slide-out{from{transform:translateX(0%)}to{transform:translateX(100%)}}@keyframes slide-down{from{transform:translateY(-100%)}to{transform:translateY(0%)}}@keyframes slide-up{0%{transform:translateY(0%)}100%{transform:translateY(-100%)}}*,::before,::after{box-sizing:border-box}.megadropdown-container{box-shadow:0 8px 6px rgba(0,0,0,.16);position:absolute;background-color:#fafafa;border:none;z-index:1;border-top:1px solid #e1e0dc;width:100%;top:100%;left:0;border-radius:0}@media (forced-colors: active),(-ms-high-contrast: active),(-ms-high-contrast: white-on-black){.megadropdown-container{border-block-end:1px solid CanvasText}}.megadropdown-container.slide-in{animation:slide-down 350ms forwards}.megadropdown-container.slide-out{animation:slide-up 350ms forwards}@media screen and (max-width: 1023.98px){.megadropdown-container{z-index:4;top:0 !important;left:0;width:100%;position:fixed;height:calc(100vh - var(--header-height));max-height:calc(100vh - var(--header-height));border-top:unset;overflow:auto}.megadropdown-container.slide-in{animation:slide-in 350ms forwards}.megadropdown-container.slide-out{animation:slide-out 350ms forwards}}.megadropdown{padding:31px 40px 40px;background-color:#fafafa}@media screen and (max-width: 1023.98px){.megadropdown{display:flex;flex-direction:column;width:inherit;padding:16px 32px 24px}}@media screen and (max-width: 599.98px){.megadropdown{padding-inline:16px}}.megadropdown .megadropdown-content{gap:1.5rem;display:grid;grid-template-columns:repeat(auto-fit, minmax(min(15vw, 100%), 1fr));grid-auto-rows:1fr auto;grid-auto-flow:dense}@media screen and (max-width: 1023.98px){.megadropdown .megadropdown-content{grid-template-columns:repeat(auto-fit, minmax(min(35vw, 100%), 1fr))}}@media screen and (max-width: 599.98px){.megadropdown .megadropdown-content{grid-template-columns:1fr}}.megadropdown h2{display:none;margin-top:0;margin-bottom:8px;font-weight:900}.megadropdown h2 a{text-decoration:none;display:none;font-weight:inherit;border-bottom:0;border-top:0}@media screen and (max-width: 1023.98px){.megadropdown h2{display:block;font-size:1.25rem}}@media screen and (max-width: 599.98px){.megadropdown h2{font-size:1.125rem}}.megadropdown post-list{display:grid;grid-row:span 2;grid-template-rows:subgrid;row-gap:0px}.megadropdown post-list>[role=list]{flex-direction:unset;display:unset}.megadropdown post-list>*{width:100%}.megadropdown post-list .list-title{display:flex;flex-direction:column-reverse;height:100%}.megadropdown post-list .list-title h3{font-size:20px;display:block;font-weight:900}.megadropdown post-list .list-title h3:not(:has(a)),.megadropdown post-list .list-title h3 a{padding:16px 12px 14px 8px}.megadropdown post-list .list-title h3:not(:has(a)){position:relative}.megadropdown post-list .list-title h3:not(:has(a))::before{content:\"\";background-color:#050400;bottom:0;width:100%;height:2px;position:absolute;left:0}.megadropdown post-list .list-title h3 a{border-radius:0;text-decoration:none;font-size:inherit;display:flex;align-items:center;justify-content:space-between;min-height:53px;width:100%;min-width:100%;height:48px;padding-inline:8px 12px;gap:16px;font-weight:400;position:relative;height:unset;font-weight:900}.megadropdown post-list .list-title h3 a::before{content:\"\";background-color:#050400;bottom:0;width:100%;height:1px;position:absolute;left:0}.megadropdown post-list .list-title h3 a.selected,.megadropdown post-list .list-title h3 a[aria-expanded=true]{background-color:#050400;color:#fff}.megadropdown post-list .list-title h3 a:hover{background-color:#504f4b;color:#fff}.megadropdown post-list .list-title h3 a:hover::before{background-color:#504f4b}.megadropdown post-list .list-title h3 a::before{height:2px}@media screen and (max-width: 1023.98px){.megadropdown post-list .list-title h3{font-size:1rem}.megadropdown post-list .list-title h3:not(:has(a)),.megadropdown post-list .list-title h3 a{padding:14px 12px 12px 8px}}@media screen and (max-width: 599.98px){.megadropdown post-list .list-title h3{font-size:.875rem}}.megadropdown post-list-item>a{padding-block:13px 12px;padding-inline-start:8px;display:flex;text-decoration:none;width:100%;min-width:100%;height:auto;min-height:48px}.megadropdown post-list-item>a:hover{border-block-width:0}@media screen and (min-width: 1024px){.megadropdown post-list-item>a{font-size:1.25rem}}@media screen and (max-width: 1023.98px){.megadropdown post-list-item>a{padding-block:12px 11px}}@media screen and (max-width: 599.98px){.megadropdown post-list-item>a{font-size:.875rem}}.megadropdown .back-button{display:none;margin-bottom:2rem}.megadropdown .back-button .btn{width:auto}@media screen and (max-width: 1023.98px){.megadropdown .back-button{order:-1;display:block}}.megadropdown .close-button{position:absolute;top:1rem;right:1rem}@media screen and (max-width: 1023.98px){.megadropdown .close-button{display:none}}";
5
5
  const PostMegadropdownStyle0 = postMegadropdownCss;
6
6
 
7
7
  const PostMegadropdown = /*@__PURE__*/ proxyCustomElement(class PostMegadropdown extends HTMLElement {
@@ -21,11 +21,13 @@ const PostMegadropdown = /*@__PURE__*/ proxyCustomElement(class PostMegadropdown
21
21
  static activeDropdown = null;
22
22
  /**
23
23
  * Emits when the dropdown is shown or hidden.
24
- * The event payload is a boolean: `true` when the dropdown was opened, `false` when it was closed.
24
+ * The event payload is an object.
25
+ * `isVisible` is true when the dropdown gets opened and false when it gets closed
26
+ * `focusParent` determines whether after the closing of the mega dropdown, the focus should go back to the trigger parent or naturally go to the next focusable element in the page
25
27
  **/
26
28
  postToggleMegadropdown;
27
29
  disconnectedCallback() {
28
- this.removeOutsideClickListener();
30
+ this.removeListeners();
29
31
  if (PostMegadropdown.activeDropdown === this) {
30
32
  PostMegadropdown.activeDropdown = null;
31
33
  }
@@ -56,23 +58,32 @@ const PostMegadropdown = /*@__PURE__*/ proxyCustomElement(class PostMegadropdown
56
58
  this.animationClass = 'slide-in';
57
59
  }
58
60
  this.isVisible = true;
59
- this.host.addEventListener('keydown', e => this.keyboardHandler(e));
60
61
  PostMegadropdown.activeDropdown = this;
61
- this.postToggleMegadropdown.emit(this.isVisible);
62
- this.addOutsideClickListener();
62
+ this.postToggleMegadropdown.emit({ isVisible: this.isVisible });
63
+ requestAnimationFrame(() => {
64
+ if (this.firstFocusableEl &&
65
+ window.getComputedStyle(this.firstFocusableEl).display !== 'none') {
66
+ this.firstFocusableEl.focus();
67
+ }
68
+ });
69
+ this.addListeners();
63
70
  }
64
71
  /**
65
72
  * Hides the dropdown with an animation.
66
73
  */
67
- async hide() {
74
+ async hide(focusParent = true) {
75
+ this.postToggleMegadropdown.emit({ isVisible: false, focusParent: focusParent });
68
76
  this.animationClass = 'slide-out';
69
- PostMegadropdown.activeDropdown = null;
70
- this.host.removeEventListener('keydown', e => this.keyboardHandler(e));
77
+ }
78
+ async focusFirst() {
79
+ this.firstFocusableEl?.focus();
71
80
  }
72
81
  connectedCallback() {
73
82
  this.header = this.host.closest('post-header');
74
83
  if (this.header) {
75
- this.header.addEventListener('postUpdateDevice', (event) => (this.device = event.detail));
84
+ this.header.addEventListener('postUpdateDevice', (event) => {
85
+ this.device = event.detail;
86
+ });
76
87
  }
77
88
  }
78
89
  /**
@@ -81,15 +92,15 @@ const PostMegadropdown = /*@__PURE__*/ proxyCustomElement(class PostMegadropdown
81
92
  forceClose() {
82
93
  this.isVisible = false;
83
94
  this.animationClass = null;
84
- this.postToggleMegadropdown.emit(this.isVisible);
85
- this.removeOutsideClickListener();
95
+ this.postToggleMegadropdown.emit({ isVisible: this.isVisible, focusParent: false });
96
+ this.removeListeners();
86
97
  }
87
98
  handleAnimationEnd() {
88
99
  if (this.animationClass === 'slide-out') {
89
100
  this.isVisible = false;
90
101
  this.animationClass = null;
91
- this.postToggleMegadropdown.emit(this.isVisible);
92
- this.removeOutsideClickListener();
102
+ PostMegadropdown.activeDropdown = null;
103
+ this.removeListeners();
93
104
  }
94
105
  }
95
106
  handleClickOutside = (event) => {
@@ -106,12 +117,16 @@ const PostMegadropdown = /*@__PURE__*/ proxyCustomElement(class PostMegadropdown
106
117
  }
107
118
  }
108
119
  }
109
- this.hide();
120
+ this.hide(false);
110
121
  };
111
- addOutsideClickListener() {
122
+ addListeners() {
123
+ this.host.addEventListener('keydown', e => this.keyboardHandler(e));
124
+ document.addEventListener('keyup', e => this.handleTabOutside(e));
112
125
  document.addEventListener('mousedown', this.handleClickOutside);
113
126
  }
114
- removeOutsideClickListener() {
127
+ removeListeners() {
128
+ this.host.removeEventListener('keydown', e => this.keyboardHandler(e));
129
+ document.removeEventListener('keyup', e => this.handleTabOutside(e));
115
130
  document.removeEventListener('mousedown', this.handleClickOutside);
116
131
  }
117
132
  getFocusableElements() {
@@ -135,9 +150,16 @@ const PostMegadropdown = /*@__PURE__*/ proxyCustomElement(class PostMegadropdown
135
150
  }
136
151
  }
137
152
  }
153
+ handleTabOutside(e) {
154
+ if (e.key === 'Tab' && this.device === 'desktop') {
155
+ if (!this.host.contains(e.target)) {
156
+ this.hide(false);
157
+ }
158
+ }
159
+ }
138
160
  render() {
139
161
  const containerStyle = this.isVisible ? {} : { display: 'none' };
140
- return (h(Host, { key: '11be74da0c6d35e1a50c954735a6b1f079cd0eb6' }, h("div", { key: '202023b2495012f78ba761f20aef1ba0325a98f0', class: `megadropdown-container ${this.animationClass || ''}`, style: containerStyle, onAnimationEnd: () => this.handleAnimationEnd() }, h("div", { key: '87ac87a83de7ce798f5d9057b992893bfc00f2e1', class: "megadropdown" }, h("div", { key: '650738a55e5007b9ae0c3ee30fb2f1ae53152744', onClick: () => this.hide(), class: "back-button" }, h("slot", { key: 'a7b70ce1fbc7090807b8d60efce6cb83eb06674e', name: "back-button" })), h("div", { key: '812d3458649669e867d7d761079299b64d9e4e4d', onClick: () => this.hide(), class: "close-button" }, h("slot", { key: '2ee2df463dfd6667b729fd1b47987ea40e8d9d5f', name: "close-button" })), h("slot", { key: 'a5d0029319e34b652923d07fcddd5cb647912b03', name: "megadropdown-title" }), h("div", { key: 'c563cf50e3d9a1a466b9aec386982c80569ac094', class: "megadropdown-content" }, h("slot", { key: 'a05eeceb8fdbfc4373ee7d42d4f583475b44b4dc' }))))));
162
+ return (h(Host, { key: '83c6439c9f8b225a4252b2c9c525589bfe6d72b9' }, h("div", { key: 'fa59247d65f5c47699ae2ccca2cbb70706c22582', class: `megadropdown-container ${this.animationClass || ''}`, style: containerStyle, onAnimationEnd: () => this.handleAnimationEnd() }, h("div", { key: '937d784bb303920d1e44337eb5a3d5bb8971f276', class: "megadropdown" }, h("slot", { key: '5b5196fd0427f52390d7d07505d03090b3e240cf', name: "megadropdown-title" }), h("div", { key: '8e339d051513396b24247c21b5e6d21bee1ba5d8', class: "megadropdown-content" }, h("slot", { key: '57209bb8428ebc4b6273a1442e96cb88d6af86d1' })), h("div", { key: '3aa4e57e7b523ed5c21108ac53d6664d81351c6c', onClick: () => this.hide(true), class: "back-button" }, h("slot", { key: '44584be04f555e288dfa2cc9078010b7bfc93b97', name: "back-button" })), h("div", { key: '67e1aa1ac0d0071f46705608f9a965d5258c0263', onClick: () => this.hide(true), class: "close-button" }, h("slot", { key: '7b3198f9581b725d9b43608a3d903e8c09689217', name: "close-button" }))))));
141
163
  }
142
164
  static get style() { return PostMegadropdownStyle0; }
143
165
  }, [4, "post-megadropdown", {
@@ -146,7 +168,8 @@ const PostMegadropdown = /*@__PURE__*/ proxyCustomElement(class PostMegadropdown
146
168
  "animationClass": [32],
147
169
  "toggle": [64],
148
170
  "show": [64],
149
- "hide": [64]
171
+ "hide": [64],
172
+ "focusFirst": [64]
150
173
  }]);
151
174
  function defineCustomElement() {
152
175
  if (typeof customElements === "undefined") {
@@ -32,11 +32,8 @@ const PostMenuTrigger = /*@__PURE__*/ proxyCustomElement(class PostMenuTrigger e
32
32
  return ref && ref.localName === 'post-menu' ? ref : null;
33
33
  }
34
34
  handleToggle() {
35
- const menu = this.menu;
36
- if (menu && this.slottedButton) {
37
- this.ariaExpanded = !this.ariaExpanded;
38
- this.slottedButton.setAttribute('aria-expanded', this.ariaExpanded.toString());
39
- menu.toggle(this.host);
35
+ if (this.menu) {
36
+ this.menu.toggle(this.host);
40
37
  }
41
38
  else {
42
39
  console.warn(`No post-menu found with ID: ${this.for}`);
@@ -48,8 +45,10 @@ const PostMenuTrigger = /*@__PURE__*/ proxyCustomElement(class PostMenuTrigger e
48
45
  this.handleToggle();
49
46
  }
50
47
  };
51
- componentDidLoad() {
48
+ connectedCallback() {
52
49
  this.root = getRoot(this.host);
50
+ }
51
+ componentDidLoad() {
53
52
  this.validateControlFor();
54
53
  this.slottedButton = this.host.querySelector('button');
55
54
  // Check if the slottedButton is within a web component
@@ -64,6 +63,13 @@ const PostMenuTrigger = /*@__PURE__*/ proxyCustomElement(class PostMenuTrigger e
64
63
  }
65
64
  if (this.slottedButton) {
66
65
  this.slottedButton.setAttribute('aria-haspopup', 'menu');
66
+ // Listen to the `toggleMenu` event emitted by the `post-menu` component
67
+ if (this.menu && this.slottedButton) {
68
+ this.menu.addEventListener('toggleMenu', (event) => {
69
+ this.ariaExpanded = event.detail;
70
+ this.slottedButton.setAttribute('aria-expanded', this.ariaExpanded.toString());
71
+ });
72
+ }
67
73
  this.slottedButton.addEventListener('click', () => {
68
74
  this.handleToggle();
69
75
  });
@@ -74,7 +80,7 @@ const PostMenuTrigger = /*@__PURE__*/ proxyCustomElement(class PostMenuTrigger e
74
80
  }
75
81
  }
76
82
  render() {
77
- return (h(Host, { key: 'a0fff619978087ce0c67d7d327982424e3784ff0', "data-version": version, "tab-index": "-1" }, h("slot", { key: '93e26150b59e9a01275a6815096e09ff5fac146b' })));
83
+ return (h(Host, { key: '39bea077fd4d85f442b7b1d56969a203c470a269', "data-version": version, "tab-index": "-1" }, h("slot", { key: '9f7777a4167cdfbf9f1ab2dfe7c3d6e759c8a83b' })));
78
84
  }
79
85
  static get watchers() { return {
80
86
  "for": ["validateControlFor"]
@@ -48,17 +48,29 @@ const PostMenu = /*@__PURE__*/ proxyCustomElement(class PostMenu extends HTMLEle
48
48
  this.popoverRef.addEventListener('postToggle', (event) => {
49
49
  this.isVisible = event.detail;
50
50
  this.toggleMenu.emit(this.isVisible);
51
+ requestAnimationFrame(() => {
52
+ if (this.isVisible) {
53
+ this.lastFocusedElement = this.root.activeElement;
54
+ const menuItems = this.getSlottedItems();
55
+ if (menuItems.length > 0) {
56
+ menuItems[0].focus();
57
+ }
58
+ }
59
+ else if (this.lastFocusedElement) {
60
+ this.lastFocusedElement.focus();
61
+ }
62
+ });
51
63
  });
52
64
  }
53
65
  /**
54
66
  * Toggles the menu visibility based on its current state.
55
67
  */
56
68
  async toggle(target) {
57
- if (this.isVisible) {
58
- await this.hide();
69
+ if (this.popoverRef) {
70
+ await this.popoverRef.toggle(target);
59
71
  }
60
72
  else {
61
- await this.show(target);
73
+ console.error('toggle: popoverRef is null or undefined');
62
74
  }
63
75
  }
64
76
  /**
@@ -69,11 +81,6 @@ const PostMenu = /*@__PURE__*/ proxyCustomElement(class PostMenu extends HTMLEle
69
81
  async show(target) {
70
82
  if (this.popoverRef) {
71
83
  await this.popoverRef.show(target);
72
- this.lastFocusedElement = this.root.activeElement; // Use root's activeElement
73
- const menuItems = this.getSlottedItems();
74
- if (menuItems.length > 0) {
75
- menuItems[0].focus();
76
- }
77
84
  }
78
85
  else {
79
86
  console.error('show: popoverRef is null or undefined');
@@ -85,9 +92,6 @@ const PostMenu = /*@__PURE__*/ proxyCustomElement(class PostMenu extends HTMLEle
85
92
  async hide() {
86
93
  if (this.popoverRef) {
87
94
  await this.popoverRef.hide();
88
- if (this.lastFocusedElement) {
89
- this.lastFocusedElement.focus();
90
- }
91
95
  }
92
96
  else {
93
97
  console.error('hide: popoverRef is null or undefined');
@@ -131,10 +135,10 @@ const PostMenu = /*@__PURE__*/ proxyCustomElement(class PostMenu extends HTMLEle
131
135
  currentIndex = 0;
132
136
  break;
133
137
  case this.KEYCODES.END:
138
+ e.preventDefault();
134
139
  currentIndex = menuItems.length - 1;
135
140
  break;
136
141
  case this.KEYCODES.SPACE:
137
- case this.KEYCODES.ENTER:
138
142
  this.toggle(this.host);
139
143
  return;
140
144
  case this.KEYCODES.TAB:
@@ -157,7 +161,7 @@ const PostMenu = /*@__PURE__*/ proxyCustomElement(class PostMenu extends HTMLEle
157
161
  .flatMap(el => Array.from(getFocusableChildren(el))));
158
162
  }
159
163
  render() {
160
- return (h(Host, { key: '071532c327f80197dda662f77e5cb2444281087d', "data-version": version }, h("post-popovercontainer", { key: '9f70ca4009139e0547026b26be610a02f4f1a95a', placement: this.placement, ref: e => (this.popoverRef = e) }, h("div", { key: '3ff1048a8fb27402a82cedc3dc300366063c9601', class: "popover-container", part: "popover-container" }, h("slot", { key: 'bed6c96b7502e0032b746ac6fdf8c3dd6d782e48' })))));
164
+ return (h(Host, { key: '3a79b9df5a5d4c121aa9ca36883d6e17cbf2a66e', "data-version": version }, h("post-popovercontainer", { key: '9c8a37a2c70b98ff9a960f467ab951af10c34726', placement: this.placement, ref: e => (this.popoverRef = e) }, h("div", { key: '0cda7fc8df3f201d4b4e0170bb8a94e72e123814', class: "popover-container", part: "popover-container" }, h("slot", { key: 'ac20e448dededb6ea79715c2c29122dccf0d7309' })))));
161
165
  }
162
166
  static get style() { return PostMenuStyle0; }
163
167
  }, [1, "post-menu", {
@@ -3,7 +3,7 @@ import { v as version } from './package.js';
3
3
  import { g as getAttributeObserver } from './attribute-observer.js';
4
4
  import { d as defineCustomElement$1 } from './post-popovercontainer2.js';
5
5
 
6
- const postPopoverCss = "/*!\n * Copyright 2021 by Swiss Post, Information Technology\n */.btn-close{padding:0;overflow:visible;border:0;background:none;color:inherit;font:inherit;-webkit-user-select:none;user-select:none;appearance:button;border-radius:var(--post-device-border-radius-round);color:#000;transition:opacity 250ms,border-color 250ms,background-color 250ms,color 250ms;cursor:pointer}.btn-close{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}.btn-close:is(:focus-visible,:has(:focus-visible),.pretend-focus){outline-style:var(--post-core-border-style-solid) !important;border-radius:4px}@media (forced-colors: active),(-ms-high-contrast: active),(-ms-high-contrast: white-on-black){.btn-close:is(:focus-visible,:has(:focus-visible),.pretend-focus){outline-color:Highlight !important}}@supports not selector(:has(:focus-visible)){.btn-close:is(:focus-visible,:focus-within,.pretend-focus){outline-style:var(--post-core-border-style-solid) !important;border-radius:4px}@media (forced-colors: active),(-ms-high-contrast: active),(-ms-high-contrast: white-on-black){.btn-close:is(:focus-visible,:focus-within,.pretend-focus){outline-color:Highlight !important}}}.btn-close::before{mask-image:url(\"data:image/svg+xml,%3Csvg viewBox='0 0 32 32' xmlns='http://www.w3.org/2000/svg'%3E%3Cpath d='m16.267 16.667 6.667-6.533-.933-1.067-6.667 6.667-6.667-6.667-.933 1.067 6.667 6.533-6.667 6.667 1.067.933 6.533-6.667 6.667 6.667.933-1.067z'/%3E%3C/svg%3E\");background-color:currentColor;color:currentColor;forced-color-adjust:preserve-parent-color;content:\"\";display:block;height:var(--post-core-dimension-24);width:var(--post-core-dimension-24)}.btn-close:focus,.btn-close:not(:disabled):hover,.pretend-hover.btn-close{color:#000}.btn-close:disabled{color:#999}@media (forced-colors: active),(-ms-high-contrast: active),(-ms-high-contrast: white-on-black){.btn-close{color:CanvasText;forced-color-adjust:none}.btn-close:focus,.btn-close:not(:disabled):hover,.pretend-hover.btn-close{color:Highlight}}.btn-close-white{color:#e6e6e6}.btn-close-white:focus,.btn-close-white:not(:disabled):hover,.btn-close-white.pretend-hover{color:#fff}.btn-close-white:disabled{color:#999}*{box-sizing:border-box}:host{display:block}.visually-hidden{position:absolute;width:1px;height:1px;margin:-1px;padding:0;overflow:hidden;clip:rect(0 0 0 0);border:0}.popover-container{display:flex;align-items:self-start;padding:.5em;min-width:160px;max-width:280px;max-width:100%}.popover-content{padding:.5em;flex-grow:1}.btn-close{color:inherit}";
6
+ const postPopoverCss = "/*!\n * Copyright 2021 by Swiss Post, Information Technology\n */.btn-close{padding:0;overflow:visible;border:0;background:none;color:var(--post-scheme-color-interactive-button-secondary-enabled-fg);font:inherit;-webkit-user-select:none;user-select:none;appearance:button;border-radius:var(--post-device-border-radius-round);color:#000;transition:opacity 250ms,border-color 250ms,background-color 250ms,color 250ms;cursor:pointer}@media (forced-colors: active),(-ms-high-contrast: active),(-ms-high-contrast: white-on-black){.btn-close{background-color:ButtonFace !important}.btn-close:hover{background-color:Highlight !important}}.btn-close{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}.btn-close:is(:focus-visible,:has(:focus-visible),.pretend-focus){outline-style:var(--post-core-border-style-solid) !important;border-radius:4px}@media (forced-colors: active),(-ms-high-contrast: active),(-ms-high-contrast: white-on-black){.btn-close:is(:focus-visible,:has(:focus-visible),.pretend-focus){outline-color:Highlight !important}}@supports not selector(:has(:focus-visible)){.btn-close:is(:focus-visible,:focus-within,.pretend-focus){outline-style:var(--post-core-border-style-solid) !important;border-radius:4px}@media (forced-colors: active),(-ms-high-contrast: active),(-ms-high-contrast: white-on-black){.btn-close:is(:focus-visible,:focus-within,.pretend-focus){outline-color:Highlight !important}}}.btn-close::before{mask-image:url(\"data:image/svg+xml,%3Csvg viewBox='0 0 32 32' xmlns='http://www.w3.org/2000/svg'%3E%3Cpath d='m16.267 16.667 6.667-6.533-.933-1.067-6.667 6.667-6.667-6.667-.933 1.067 6.667 6.533-6.667 6.667 1.067.933 6.533-6.667 6.667 6.667.933-1.067z'/%3E%3C/svg%3E\");background-color:currentColor;color:currentColor;forced-color-adjust:preserve-parent-color;content:\"\";display:block;height:var(--post-core-dimension-24);width:var(--post-core-dimension-24)}.btn-close:focus,.btn-close:not(:disabled):hover,.pretend-hover.btn-close{color:#000}.btn-close:disabled{color:#999}@media (forced-colors: active),(-ms-high-contrast: active),(-ms-high-contrast: white-on-black){.btn-close{color:CanvasText;forced-color-adjust:none}.btn-close:focus,.btn-close:not(:disabled):hover,.pretend-hover.btn-close{color:Highlight}}.btn-close-white{color:#e6e6e6}.btn-close-white:focus,.btn-close-white:not(:disabled):hover,.btn-close-white.pretend-hover{color:#fff}.btn-close-white:disabled{color:#999}*{box-sizing:border-box}:host{display:block}.visually-hidden{position:absolute;width:1px;height:1px;margin:-1px;padding:0;overflow:hidden;clip:rect(0 0 0 0);border:0}.popover-container{display:flex;align-items:self-start;padding:.5em;min-width:160px;max-width:280px;max-width:100%}.popover-content{padding:.5em;flex-grow:1}.btn-close{color:inherit}";
7
7
  const PostPopoverStyle0 = postPopoverCss;
8
8
 
9
9
  /**
@@ -2103,15 +2103,9 @@ const computePosition = (reference, floating, options) => {
2103
2103
  }
2104
2104
  `,E=null;function I(e){if(E===null)try{E=new CSSStyleSheet,E.replaceSync(C);}catch{E=!1;}if(E===!1){let t=document.createElement("style");t.textContent=C,e instanceof Document?e.head.prepend(t):e.prepend(t);}else e.adoptedStyleSheets=[E,...e.adoptedStyleSheets];}function K(){window.ToggleEvent=window.ToggleEvent||c;function e(n){return n?.includes(":popover-open")&&(n=n.replace(J,"$1.\\:popover-open")),n}f(Document.prototype,"querySelector",e),f(Document.prototype,"querySelectorAll",e),f(Element.prototype,"querySelector",e),f(Element.prototype,"querySelectorAll",e),f(Element.prototype,"matches",e),f(Element.prototype,"closest",e),f(DocumentFragment.prototype,"querySelectorAll",e),f(DocumentFragment.prototype,"querySelectorAll",e),Object.defineProperties(HTMLElement.prototype,{popover:{enumerable:!0,configurable:!0,get(){if(!this.hasAttribute("popover"))return null;let n=(this.getAttribute("popover")||"").toLowerCase();return n===""||n=="auto"?"auto":"manual"},set(n){this.setAttribute("popover",n);}},showPopover:{enumerable:!0,configurable:!0,value(){S(this);}},hidePopover:{enumerable:!0,configurable:!0,value(){m(this,!0,!0);}},togglePopover:{enumerable:!0,configurable:!0,value(n){h.get(this)==="showing"&&n===void 0||n===!1?m(this,!0,!0):(n===void 0||n===!0)&&S(this);}}});let t=Element.prototype.attachShadow;t&&Object.defineProperties(Element.prototype,{attachShadow:{enumerable:!0,configurable:!0,writable:!0,value(n){let s=t.call(this,n);return I(s),s}}});let o=HTMLElement.prototype.attachInternals;o&&Object.defineProperties(HTMLElement.prototype,{attachInternals:{enumerable:!0,configurable:!0,writable:!0,value(){let n=o.call(this);return n.shadowRoot&&I(n.shadowRoot),n}}});let r=new WeakMap;function i(n){Object.defineProperties(n.prototype,{popoverTargetElement:{enumerable:!0,configurable:!0,set(s){if(s===null)this.removeAttribute("popovertarget"),r.delete(this);else if(s instanceof Element)this.setAttribute("popovertarget",""),r.set(this,s);else throw new TypeError("popoverTargetElement must be an element or null")},get(){if(this.localName!=="button"&&this.localName!=="input"||this.localName==="input"&&this.type!=="reset"&&this.type!=="image"&&this.type!=="button"||this.disabled||this.form&&this.type==="submit")return null;let s=r.get(this);if(s&&s.isConnected)return s;if(s&&!s.isConnected)return r.delete(this),null;let u=v(this),w=this.getAttribute("popovertarget");return (u instanceof Document||u instanceof B)&&w&&u.getElementById(w)||null}},popoverTargetAction:{enumerable:!0,configurable:!0,get(){let s=(this.getAttribute("popovertargetaction")||"").toLowerCase();return s==="show"||s==="hide"?s:"toggle"},set(s){this.setAttribute("popovertargetaction",s);}}});}i(HTMLButtonElement),i(HTMLInputElement);let l=n=>{if(!n.isTrusted)return;let s=n.composedPath()[0];if(!(s instanceof Element)||s?.shadowRoot)return;let u=v(s);if(!(u instanceof B||u instanceof Document))return;let w=s.closest("[popovertargetaction],[popovertarget]");if(w){O(w),n.preventDefault();return}},a=n=>{let s=n.key,u=n.target;!n.defaultPrevented&&u&&(s==="Escape"||s==="Esc")&&T(u.ownerDocument,!0,!0);};(n=>{n.addEventListener("click",l),n.addEventListener("keydown",a),n.addEventListener("pointerdown",x),n.addEventListener("pointerup",x);})(document),I(document);}j()||K();})();
2105
2105
 
2106
- const postPopovercontainerCss = "@layer polyfill{@supports not selector(:popover-open){[popover]:not(.\\:popover-open){display:none}}}:where(post-popovercontainer){box-shadow:var(--post-device-elevation-300);background:var(--post-current-palette-bg);color:var(--post-current-palette-fg);position:fixed;z-index:1060;width:max-content;margin:0;padding:0;box-sizing:border-box;border:2px solid rgba(0,0,0,0);border-radius:4px;overflow:visible}:where(post-popovercontainer)[tooltip]{position:absolute;width:1px;height:1px;margin:-1px;padding:0;overflow:hidden;clip:rect(0 0 0 0);border:0}:where(post-popovercontainer):not(:has(.arrow)){box-shadow:var(--post-device-elevation-300)}:where(post-popovercontainer):has(.arrow){filter:drop-shadow(1px 2px 3px hsla(216, 9%, 11%, 0.15)) drop-shadow(2px 4px 6px hsla(225, 17%, 9%, 0.15)) drop-shadow(4px 8px 12px hsla(225, 7%, 11%, 0.15))}:where(post-popovercontainer):has(.arrow.top){filter:drop-shadow(0px -2px 3px hsla(216, 9%, 11%, 0.15)) drop-shadow(0px -4px 6px hsla(225, 17%, 9%, 0.15)) drop-shadow(0px -8px 12px hsla(225, 7%, 11%, 0.15))}:where(post-popovercontainer):has(.arrow.left){filter:drop-shadow(-2px 0px 3px hsla(216, 9%, 11%, 0.15)) drop-shadow(-4px 0px 6px hsla(225, 17%, 9%, 0.15)) drop-shadow(-8px 0px 12px hsla(225, 7%, 11%, 0.15))}:where(post-popovercontainer):has(.arrow.right){filter:drop-shadow(2px 0px 3px hsla(216, 9%, 11%, 0.15)) drop-shadow(4px 0px 6px hsla(225, 17%, 9%, 0.15)) drop-shadow(8px 0px 12px hsla(225, 7%, 11%, 0.15))}:where(post-popovercontainer) .arrow{position:absolute;width:.5825rem;height:.5825rem;background-color:inherit;rotate:45deg;pointer-events:none;z-index:-1}:where(post-popovercontainer) .arrow.top{border-left:2px solid rgba(0,0,0,0);border-top:2px solid rgba(0,0,0,0)}:where(post-popovercontainer) .arrow.right{border-right:2px solid rgba(0,0,0,0);border-top:2px solid rgba(0,0,0,0)}:where(post-popovercontainer) .arrow.left{border-left:2px solid rgba(0,0,0,0);border-bottom:2px solid rgba(0,0,0,0)}:where(post-popovercontainer) .arrow.bottom{border-right:2px solid rgba(0,0,0,0);border-bottom:2px solid rgba(0,0,0,0)}";
2106
+ const postPopovercontainerCss = "@layer polyfill{@supports not selector(:popover-open){[popover]:not(.\\:popover-open){display:none}}}:where(post-popovercontainer){background-color:rgba(0,0,0,0);border:rgba(0,0,0,0);position:fixed;z-index:1060;margin:0;padding:0;overflow:visible}:where(post-popovercontainer)>div{box-shadow:var(--post-device-elevation-300);width:max-content;color:var(--post-current-palette-fg);background-color:var(--post-current-palette-bg);border:2px solid rgba(0,0,0,0);border-radius:4px}:where(post-popovercontainer)[tooltip]{position:absolute;width:1px;height:1px;margin:-1px;padding:0;overflow:hidden;clip:rect(0 0 0 0);border:0}:where(post-popovercontainer)[safe-space]::after{content:\"\";position:fixed;inset:0;z-index:-1;pointer-events:auto}:where(post-popovercontainer)[safe-space=triangle]::after{clip-path:polygon(var(--safe-space-cursor-x, 0) var(--safe-space-cursor-y, 0), var(--safe-space-popover-x-start, var(--safe-space-popover-x, 0)) var(--safe-space-popover-y, var(--safe-space-popover-y-start, 0)), var(--safe-space-popover-x-end, var(--safe-space-popover-x, 0)) var(--safe-space-popover-y, var(--safe-space-popover-y-end, 0)))}:where(post-popovercontainer)[safe-space=trapezoid]::after{clip-path:polygon(var(--safe-space-trigger-x-start, var(--safe-space-trigger-x, 0)) var(--safe-space-trigger-y, var(--safe-space-trigger-y-start, 0)), var(--safe-space-trigger-x-end, var(--safe-space-trigger-x, 0)) var(--safe-space-trigger-y, var(--safe-space-trigger-y-end, 0)), var(--safe-space-popover-x-end, var(--safe-space-popover-x, 0)) var(--safe-space-popover-y, var(--safe-space-popover-y-end, 0)), var(--safe-space-popover-x-start, var(--safe-space-popover-x, 0)) var(--safe-space-popover-y, var(--safe-space-popover-y-start, 0)))}:where(post-popovercontainer):not(:has(.arrow))>div{box-shadow:var(--post-device-elevation-300)}:where(post-popovercontainer):has(.arrow)>div{filter:drop-shadow(1px 2px 3px hsla(216, 9%, 11%, 0.15)) drop-shadow(2px 4px 6px hsla(225, 17%, 9%, 0.15)) drop-shadow(4px 8px 12px hsla(225, 7%, 11%, 0.15))}:where(post-popovercontainer):has(.arrow.top)>div{filter:drop-shadow(0px -2px 3px hsla(216, 9%, 11%, 0.15)) drop-shadow(0px -4px 6px hsla(225, 17%, 9%, 0.15)) drop-shadow(0px -8px 12px hsla(225, 7%, 11%, 0.15))}:where(post-popovercontainer):has(.arrow.left)>div{filter:drop-shadow(-2px 0px 3px hsla(216, 9%, 11%, 0.15)) drop-shadow(-4px 0px 6px hsla(225, 17%, 9%, 0.15)) drop-shadow(-8px 0px 12px hsla(225, 7%, 11%, 0.15))}:where(post-popovercontainer):has(.arrow.right)>div{filter:drop-shadow(2px 0px 3px hsla(216, 9%, 11%, 0.15)) drop-shadow(4px 0px 6px hsla(225, 17%, 9%, 0.15)) drop-shadow(8px 0px 12px hsla(225, 7%, 11%, 0.15))}:where(post-popovercontainer) .arrow{position:absolute;width:.5825rem;height:.5825rem;background-color:inherit;rotate:45deg;pointer-events:none;z-index:-1}:where(post-popovercontainer) .arrow.top{border-left:2px solid rgba(0,0,0,0);border-top:2px solid rgba(0,0,0,0)}:where(post-popovercontainer) .arrow.right{border-right:2px solid rgba(0,0,0,0);border-top:2px solid rgba(0,0,0,0)}:where(post-popovercontainer) .arrow.left{border-left:2px solid rgba(0,0,0,0);border-bottom:2px solid rgba(0,0,0,0)}:where(post-popovercontainer) .arrow.bottom{border-right:2px solid rgba(0,0,0,0);border-bottom:2px solid rgba(0,0,0,0)}";
2107
2107
  const PostPopovercontainerStyle0 = postPopovercontainerCss;
2108
2108
 
2109
- const SIDE_MAP = {
2110
- top: 'bottom',
2111
- right: 'left',
2112
- bottom: 'top',
2113
- left: 'right',
2114
- };
2115
2109
  const PostPopovercontainer = /*@__PURE__*/ proxyCustomElement(class PostPopovercontainer extends HTMLElement$1 {
2116
2110
  constructor() {
2117
2111
  super();
@@ -2121,7 +2115,28 @@ const PostPopovercontainer = /*@__PURE__*/ proxyCustomElement(class PostPopoverc
2121
2115
  this.placement = 'top';
2122
2116
  this.edgeGap = 8;
2123
2117
  this.arrow = false;
2118
+ this.safeSpace = undefined;
2124
2119
  }
2120
+ static STATIC_SIDES = {
2121
+ top: 'bottom',
2122
+ right: 'left',
2123
+ bottom: 'top',
2124
+ left: 'right',
2125
+ };
2126
+ static PROPERTIES_TO_CLEAR = [
2127
+ '--safe-space-popover-x',
2128
+ '--safe-space-popover-y',
2129
+ '--safe-space-popover-x-start',
2130
+ '--safe-space-popover-x-end',
2131
+ '--safe-space-popover-y-start',
2132
+ '--safe-space-popover-y-end',
2133
+ '--safe-space-trigger-x',
2134
+ '--safe-space-trigger-y',
2135
+ '--safe-space-trigger-x-start',
2136
+ '--safe-space-trigger-x-end',
2137
+ '--safe-space-trigger-y-start',
2138
+ '--safe-space-trigger-y-end',
2139
+ ];
2125
2140
  get host() { return this; }
2126
2141
  arrowRef;
2127
2142
  eventTarget;
@@ -2131,12 +2146,22 @@ const PostPopovercontainer = /*@__PURE__*/ proxyCustomElement(class PostPopoverc
2131
2146
  * Fires whenever the popover gets shown or hidden, passing the new state in event.details as a boolean
2132
2147
  */
2133
2148
  postToggle;
2149
+ /**
2150
+ * Updates cursor position for safe space feature when popover is open.
2151
+ * Sets CSS custom properties for dynamic styling of safe area.
2152
+ * @param event MouseEvent with cursor position
2153
+ */
2154
+ mouseTrackingHandler(event) {
2155
+ this.host.style.setProperty('--safe-space-cursor-x', `${event.clientX}px`);
2156
+ this.host.style.setProperty('--safe-space-cursor-y', `${event.clientY}px`);
2157
+ }
2134
2158
  componentDidLoad() {
2135
2159
  this.host.addEventListener('beforetoggle', this.handleToggle.bind(this));
2136
2160
  }
2137
2161
  disconnectedCallback() {
2138
- if (typeof this.clearAutoUpdate === 'function')
2162
+ if (typeof this.clearAutoUpdate === 'function') {
2139
2163
  this.clearAutoUpdate();
2164
+ }
2140
2165
  }
2141
2166
  /**
2142
2167
  * Programmatically display the tooltip
@@ -2171,7 +2196,7 @@ const PostPopovercontainer = /*@__PURE__*/ proxyCustomElement(class PostPopoverc
2171
2196
  this.host.togglePopover(force);
2172
2197
  this.toggleTimeoutId = null;
2173
2198
  }
2174
- return this.host.matches(':where(:popover-open, .popover-open');
2199
+ return this.host.matches(':where(:popover-open, .popover-open)');
2175
2200
  }
2176
2201
  /**
2177
2202
  * Start or stop auto updates based on tooltip events.
@@ -2184,10 +2209,14 @@ const PostPopovercontainer = /*@__PURE__*/ proxyCustomElement(class PostPopoverc
2184
2209
  const isOpen = e.newState === 'open';
2185
2210
  if (isOpen) {
2186
2211
  this.startAutoupdates();
2212
+ if (this.safeSpace)
2213
+ window.addEventListener('mousemove', this.mouseTrackingHandler.bind(this));
2187
2214
  }
2188
2215
  else {
2189
2216
  if (typeof this.clearAutoUpdate === 'function')
2190
2217
  this.clearAutoUpdate();
2218
+ if (this.safeSpace)
2219
+ window.removeEventListener('mousemove', this.mouseTrackingHandler.bind(this));
2191
2220
  }
2192
2221
  this.postToggle.emit(isOpen);
2193
2222
  }
@@ -2199,14 +2228,35 @@ const PostPopovercontainer = /*@__PURE__*/ proxyCustomElement(class PostPopoverc
2199
2228
  this.clearAutoUpdate = autoUpdate(this.eventTarget, this.host, this.calculatePosition.bind(this));
2200
2229
  }
2201
2230
  async calculatePosition() {
2231
+ const { x, y, middlewareData, placement } = await this.computeMainPosition();
2232
+ const currentPlacement = placement.split('-')[0];
2233
+ // Position popover
2234
+ this.host.style.left = `${x}px`;
2235
+ this.host.style.top = `${y}px`;
2236
+ // Position arrow if enabled
2237
+ if (this.arrow && middlewareData.arrow) {
2238
+ const { x: arrowX, y: arrowY } = middlewareData.arrow;
2239
+ const staticSide = PostPopovercontainer.STATIC_SIDES[currentPlacement];
2240
+ if (staticSide) {
2241
+ Object.assign(this.arrowRef.style, {
2242
+ left: arrowX ? `${arrowX}px` : '',
2243
+ top: arrowY ? `${arrowY}px` : '',
2244
+ [staticSide]: '-7px',
2245
+ });
2246
+ }
2247
+ }
2248
+ // Handle safe space if enabled
2249
+ if (this.safeSpace && this.eventTarget) {
2250
+ await this.updateSafeSpaceBoundaries(currentPlacement);
2251
+ }
2252
+ }
2253
+ async computeMainPosition() {
2202
2254
  const gap = this.edgeGap;
2203
2255
  const middleware = [
2204
2256
  flip(),
2205
2257
  inline(),
2206
2258
  shift({
2207
2259
  padding: gap,
2208
- // Prevents shifting away from the anchor too far, while shifting as far as possible
2209
- // https://floating-ui.com/docs/shift#limiter
2210
2260
  limiter: limitShift({
2211
2261
  offset: 32,
2212
2262
  }),
@@ -2218,40 +2268,81 @@ const PostPopovercontainer = /*@__PURE__*/ proxyCustomElement(class PostPopoverc
2218
2268
  });
2219
2269
  },
2220
2270
  }),
2221
- offset(this.arrow ? gap + 4 : gap), // 4px outside of element to account for focus outline + ~arrow size
2271
+ offset(this.arrow ? gap + 4 : gap),
2222
2272
  ];
2223
2273
  if (this.arrow) {
2224
2274
  middleware.push(arrow({ element: this.arrowRef, padding: gap }));
2225
2275
  }
2226
- const { x, y, middlewareData, placement: currentPlacement, } = await computePosition(this.eventTarget, this.host, {
2276
+ return computePosition(this.eventTarget, this.host, {
2227
2277
  placement: this.placement || 'top',
2228
2278
  strategy: 'fixed',
2229
2279
  middleware,
2230
2280
  });
2231
- // Tooltip
2232
- this.host.style.left = `${x}px`;
2233
- this.host.style.top = `${y}px`;
2234
- // Arrow
2235
- if (this.arrow) {
2236
- // Tutorial: https://codesandbox.io/s/mystifying-kare-ee3hmh?file=/src/index.js
2237
- const side = currentPlacement.split('-')[0];
2238
- const { x: arrowX, y: arrowY } = middlewareData.arrow;
2239
- const staticSide = SIDE_MAP[side];
2240
- const offsetBorderLineJoin = 2;
2241
- Object.assign(this.arrowRef.style, {
2242
- top: arrowY ? `${arrowY}px` : '',
2243
- left: arrowX ? `${arrowX}px` : '',
2244
- [staticSide]: `${-this.arrowRef.offsetWidth / 2 - offsetBorderLineJoin}px`,
2245
- });
2246
- // Add position as a class to be able to style arrow for HCM
2247
- this.arrowRef.classList.remove(...Object.values(SIDE_MAP));
2248
- this.arrowRef.classList.add(staticSide);
2281
+ }
2282
+ async updateSafeSpaceBoundaries(currentPlacement) {
2283
+ const targetRect = this.eventTarget.getBoundingClientRect();
2284
+ const popoverRect = this.host.getBoundingClientRect();
2285
+ const isVertical = currentPlacement === 'top' || currentPlacement === 'bottom';
2286
+ // Helper function to get positioning data based on placement
2287
+ const getPositioningData = (placement, popoverRect, targetRect) => {
2288
+ if (placement === 'top' || placement === 'bottom') {
2289
+ return {
2290
+ popover: {
2291
+ y: placement === 'top' ? popoverRect.bottom : popoverRect.top,
2292
+ xStart: popoverRect.left,
2293
+ xEnd: popoverRect.right,
2294
+ },
2295
+ trigger: {
2296
+ y: placement === 'top' ? targetRect.top : targetRect.bottom,
2297
+ xStart: targetRect.left,
2298
+ xEnd: targetRect.right,
2299
+ },
2300
+ };
2301
+ }
2302
+ else {
2303
+ // left or right
2304
+ return {
2305
+ popover: {
2306
+ x: placement === 'left' ? popoverRect.right : popoverRect.left,
2307
+ yStart: popoverRect.top,
2308
+ yEnd: popoverRect.bottom,
2309
+ },
2310
+ trigger: {
2311
+ x: placement === 'left' ? targetRect.left : targetRect.right,
2312
+ yStart: targetRect.top,
2313
+ yEnd: targetRect.bottom,
2314
+ },
2315
+ };
2316
+ }
2317
+ };
2318
+ const posData = getPositioningData(currentPlacement, popoverRect, targetRect);
2319
+ // Clear previous values
2320
+ PostPopovercontainer.PROPERTIES_TO_CLEAR.forEach(prop => {
2321
+ this.host.style.removeProperty(prop);
2322
+ });
2323
+ if (isVertical) {
2324
+ // For top/bottom placement
2325
+ this.host.style.setProperty('--safe-space-popover-y', `${posData.popover.y}px`);
2326
+ this.host.style.setProperty('--safe-space-popover-x-start', `${posData.popover.xStart}px`);
2327
+ this.host.style.setProperty('--safe-space-popover-x-end', `${posData.popover.xEnd}px`);
2328
+ this.host.style.setProperty('--safe-space-trigger-y', `${posData.trigger.y}px`);
2329
+ this.host.style.setProperty('--safe-space-trigger-x-start', `${posData.trigger.xStart}px`);
2330
+ this.host.style.setProperty('--safe-space-trigger-x-end', `${posData.trigger.xEnd}px`);
2331
+ }
2332
+ else {
2333
+ // For left/right placement
2334
+ this.host.style.setProperty('--safe-space-popover-x', `${posData.popover.x}px`);
2335
+ this.host.style.setProperty('--safe-space-popover-y-start', `${posData.popover.yStart}px`);
2336
+ this.host.style.setProperty('--safe-space-popover-y-end', `${posData.popover.yEnd}px`);
2337
+ this.host.style.setProperty('--safe-space-trigger-x', `${posData.trigger.x}px`);
2338
+ this.host.style.setProperty('--safe-space-trigger-y-start', `${posData.trigger.yStart}px`);
2339
+ this.host.style.setProperty('--safe-space-trigger-y-end', `${posData.trigger.yEnd}px`);
2249
2340
  }
2250
2341
  }
2251
2342
  render() {
2252
- return (h(Host, { key: '6bebf9ab3013796d0eebb3d543411a0e80d2e913', "data-version": version, popover: this.manualClose ? 'manual' : 'auto' }, this.arrow && (h("span", { key: 'd6eca10452a54073a293128e8faf76e45e35c4c5', class: "arrow", ref: el => {
2343
+ return (h(Host, { key: '2d04c94fe2a6de0c0fe17c1e2dcb99481d13336b', "data-version": version, popover: this.manualClose ? 'manual' : 'auto' }, h("div", { key: '3653be7880e5b896ae85e97ad709838732032f2d' }, this.arrow && (h("span", { key: '770f1727acf0ccb47e3940d034850df9fc3a6096', class: "arrow", ref: el => {
2253
2344
  this.arrowRef = el;
2254
- } })), h("slot", { key: '3b6674dfa1b3ffac10c6640717c7ae713577c965' })));
2345
+ } })), h("slot", { key: 'b12e95d51accec79a08fda3970f3b46ba7147ed7' }))));
2255
2346
  }
2256
2347
  static get style() { return PostPopovercontainerStyle0; }
2257
2348
  }, [4, "post-popovercontainer", {
@@ -2259,6 +2350,7 @@ const PostPopovercontainer = /*@__PURE__*/ proxyCustomElement(class PostPopoverc
2259
2350
  "placement": [1],
2260
2351
  "edgeGap": [2, "edge-gap"],
2261
2352
  "arrow": [4],
2353
+ "safeSpace": [513, "safe-space"],
2262
2354
  "show": [64],
2263
2355
  "hide": [64],
2264
2356
  "toggle": [64]
@@ -85,7 +85,7 @@ const PostRating = /*@__PURE__*/ proxyCustomElement(class PostRating extends HTM
85
85
  }
86
86
  }
87
87
  render() {
88
- return (h(Host, { key: '64891ff9f0ef8f7bc2be5df9e989577830b35ffc', "data-version": version }, h("div", { key: 'b4e7050864265e33e08b88fc3d5c8eea3cf6ab0e', role: "slider", class: "rating", tabindex: "0", "aria-label": this.label, "aria-valuemin": "0", "aria-valuemax": this.stars, "aria-valuenow": this.currentRating, "aria-valuetext": `${this.currentRating} out of ${this.stars}`, "aria-readonly": this.readonly ? 'true' : 'false', onKeyDown: this.keydownHandler, onBlur: this.blurHandler }, Array.from({ length: this.stars }).map((v, i) => (h("div", { key: `star-${v}`, "aria-hidden": "true", class: {
88
+ return (h(Host, { key: '4ccdf384b9a4cfc462d5d3f4a7caab659b6ba2b0', "data-version": version }, h("div", { key: '7ab53083bcdff6586b1de7f1c9e5fa546728fc6f', role: "slider", class: "rating", tabindex: "0", "aria-label": this.label, "aria-valuemin": "0", "aria-valuemax": this.stars, "aria-valuenow": this.currentRating, "aria-valuetext": `${this.currentRating} out of ${this.stars}`, "aria-readonly": this.readonly ? 'true' : 'false', onKeyDown: this.keydownHandler, onBlur: this.blurHandler }, Array.from({ length: this.stars }).map((v, i) => (h("div", { key: `star-${v}`, "aria-hidden": "true", class: {
89
89
  'star': true,
90
90
  'before-hover': i < this.hoveredIndex,
91
91
  'active': i < Math.round(this.currentRating),
@@ -3,7 +3,7 @@ import { v as version } from './package.js';
3
3
  import { c as checkNonEmpty } from './check-non-empty.js';
4
4
  import { n as nanoid } from './index.browser.js';
5
5
 
6
- const postTabHeaderCss = ".tab-title[role=tab]{display:inline-block;cursor:pointer;position:relative;box-sizing:border-box;padding:1rem;transition:background-color 100ms;border-right:1px solid rgba(0,0,0,0);border-left:1px solid rgba(0,0,0,0);outline-color:currentColor;opacity:.7;color:#000;text-decoration:none;background-color:rgba(0,0,0,0)}.tab-title[role=tab]:focus{background-color:unset;color:#000}.tab-title[role=tab]:hover{opacity:1;background-color:rgba(0,0,0,.6);color:#fff}.tab-title[role=tab]:focus-visible{outline:rgba(0,0,0,0);opacity:1;background-color:rgba(0,0,0,.6);color:#fff;box-shadow:none}.tab-title[role=tab]: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 #333}.tab-title[role=tab].active{z-index:1;border-right-color:#ccc;border-left-color:#ccc;opacity:1;background-color:#fff;color:#000;font-weight:700}.tab-title[role=tab].active::before{content:\"\";display:block;position:absolute;top:0;right:-1px;left:-1px;height:var(--post-core-dimension-4);background-color:#fc0}:where(.bg-dark,.bg-black,.bg-primary,.bg-secondary,.bg-success,.bg-error) .tab-title[role=tab]:hover{background-color:rgba(255,255,255,.2)}:where(.bg-dark,.bg-black,.bg-primary,.bg-secondary,.bg-success,.bg-error) .tab-title[role=tab]:focus-visible{background-color:rgba(255,255,255,.2)}@media (forced-colors: active),(-ms-high-contrast: active),(-ms-high-contrast: white-on-black){.tab-title[role=tab]{opacity:1;border-left-color:Canvas;border-right-color:Canvas;color:LinkText}.tab-title[role=tab]:hover,.tab-title[role=tab]:focus,.tab-title[role=tab]:focus-within,.tab-title[role=tab]:focus-visible{outline:var(--post-core-dimension-2) solid Highlight;outline-offset:calc(var(--post-core-dimension-4)*-1)}.tab-title[role=tab].active{border-left-color:ButtonText;border-right-color:ButtonText;color:Highlight}.tab-title[role=tab].active::before{background-color:Highlight}}/*!\n * Copyright 2021 by Swiss Post, Information Technology\n */:host{display:block}.tab-title{padding:0;overflow:visible;border:0;background:none;color:inherit;font:inherit;-webkit-user-select:none;user-select:none;appearance:button}";
6
+ const postTabHeaderCss = ".tab-title[role=tab]{display:inline-block;cursor:pointer;position:relative;box-sizing:border-box;padding:1rem;transition:background-color 100ms;border-right:1px solid rgba(0,0,0,0);border-left:1px solid rgba(0,0,0,0);outline-color:currentColor;opacity:.7;color:#000;text-decoration:none;background-color:rgba(0,0,0,0)}.tab-title[role=tab]:focus{background-color:unset;color:#000}.tab-title[role=tab]:hover{opacity:1;background-color:rgba(0,0,0,.6);color:#fff}.tab-title[role=tab]:focus-visible{outline:rgba(0,0,0,0);opacity:1;background-color:rgba(0,0,0,.6);color:#fff;box-shadow:none}.tab-title[role=tab]: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 #333}.tab-title[role=tab].active{z-index:1;border-right-color:#ccc;border-left-color:#ccc;opacity:1;background-color:#fff;color:#000;font-weight:700}.tab-title[role=tab].active::before{content:\"\";display:block;position:absolute;top:0;right:-1px;left:-1px;height:var(--post-core-dimension-4);background-color:#fc0}:where(.bg-dark,.bg-black,.bg-primary,.bg-secondary,.bg-success,.bg-error) .tab-title[role=tab]:hover{background-color:rgba(255,255,255,.2)}:where(.bg-dark,.bg-black,.bg-primary,.bg-secondary,.bg-success,.bg-error) .tab-title[role=tab]:focus-visible{background-color:rgba(255,255,255,.2)}@media (forced-colors: active),(-ms-high-contrast: active),(-ms-high-contrast: white-on-black){.tab-title[role=tab]{opacity:1;border-left-color:Canvas;border-right-color:Canvas;color:LinkText}.tab-title[role=tab]:hover,.tab-title[role=tab]:focus,.tab-title[role=tab]:focus-within,.tab-title[role=tab]:focus-visible{outline:var(--post-core-dimension-2) solid Highlight;outline-offset:calc(var(--post-core-dimension-4)*-1)}.tab-title[role=tab].active{border-left-color:ButtonText;border-right-color:ButtonText;color:Highlight}.tab-title[role=tab].active::before{background-color:Highlight}}/*!\n * Copyright 2021 by Swiss Post, Information Technology\n */:host{display:block}.tab-title{padding:0;overflow:visible;border:0;background:none;color:var(--post-scheme-color-interactive-button-secondary-enabled-fg);font:inherit;-webkit-user-select:none;user-select:none;appearance:button}@media (forced-colors: active),(-ms-high-contrast: active),(-ms-high-contrast: white-on-black){.tab-title{background-color:ButtonFace !important}.tab-title:hover{background-color:Highlight !important}}";
7
7
  const PostTabHeaderStyle0 = postTabHeaderCss;
8
8
 
9
9
  const PostTabHeader = /*@__PURE__*/ proxyCustomElement(class PostTabHeader extends HTMLElement {
@@ -22,7 +22,7 @@ const PostTabHeader = /*@__PURE__*/ proxyCustomElement(class PostTabHeader exten
22
22
  this.tabId = `tab-${this.host.id || nanoid(6)}`;
23
23
  }
24
24
  render() {
25
- return (h(Host, { key: 'f7383136476f3d32a79c39f7cadef8bcde0630f7', id: this.tabId, role: "tab", "data-version": version, "aria-selected": "false", tabindex: "-1", class: "tab-title", slot: "tabs" }, h("slot", { key: 'b88f3ce360da891793e31b84c4bfd4f59511d88a' })));
25
+ return (h(Host, { key: '79e7eed336d8867b9741efb96f80c1a3b1910a3f', id: this.tabId, role: "tab", "data-version": version, "aria-selected": "false", tabindex: "-1", class: "tab-title", slot: "tabs" }, h("slot", { key: '10f7977c4f26a41730d364c8e60b7a15b87bb45c' })));
26
26
  }
27
27
  static get watchers() { return {
28
28
  "panel": ["validateFor"]
@@ -19,7 +19,7 @@ const PostTabPanel = /*@__PURE__*/ proxyCustomElement(class PostTabPanel extends
19
19
  this.panelId = `panel-${this.host.id || nanoid(6)}`;
20
20
  }
21
21
  render() {
22
- return (h(Host, { key: '9d35c9ceec54f1c2983600342e5e63a49ca93aef', "data-version": version, id: this.panelId, role: "tabpanel" }, h("slot", { key: '8db185ca7a2030343df512962126a91f64840a64' })));
22
+ return (h(Host, { key: '8331ab54bda793a120dc467d8406cc0a02a5c480', "data-version": version, id: this.panelId, role: "tabpanel" }, h("slot", { key: '7da6d67b69150a70ee290ad8ef9b95684ea3f83d' })));
23
23
  }
24
24
  static get style() { return PostTabPanelStyle0; }
25
25
  }, [1, "post-tab-panel", {
@@ -172,7 +172,7 @@ const PostTabs = /*@__PURE__*/ proxyCustomElement(class PostTabs extends HTMLEle
172
172
  nextTab.focus();
173
173
  }
174
174
  render() {
175
- return (h(Host, { key: '7c81cd091603a01d960ecc2aed9653d0031dd16e', "data-version": version }, h("div", { key: '716a9f1e05a7ffeca8459e6a88ce4b56364b50ec', class: "tabs-wrapper", part: "tabs" }, h("div", { key: 'b41b35b26e0e1ef1e285719975841aefbdc4a8e1', class: "tabs", role: "tablist" }, h("slot", { key: '065b3a6ecfba2710a344b44cc6d5e73beb0655df', name: "tabs", onSlotchange: () => this.enableTabs() }))), h("div", { key: 'f30ce2c568071c8f144ba50e62b48a1294207c63', class: "tab-content", part: "content" }, h("slot", { key: 'c71155abdf95343990b2ee85592e7a995f58d05e', onSlotchange: () => this.moveMisplacedTabs() }))));
175
+ return (h(Host, { key: 'dae24eee55a75f9b825f590883a9c1e896c1e9fc', "data-version": version }, h("div", { key: '0a26de80b8267ddc30455b0b5afbf10ae521232b', class: "tabs-wrapper", part: "tabs" }, h("div", { key: '826cb0a4355eeb5ddc07288e1e68fc72785c095f', class: "tabs", role: "tablist" }, h("slot", { key: '94ce90bc3dc8ff4b5012fcfa3c0039b188c14002', name: "tabs", onSlotchange: () => this.enableTabs() }))), h("div", { key: '462f80f3368431344910cc317f1c0f42112dc99a', class: "tab-content", part: "content" }, h("slot", { key: '57a80ac790ca75f3b62382994c21a3a3c78004cc', onSlotchange: () => this.moveMisplacedTabs() }))));
176
176
  }
177
177
  static get style() { return PostTabsStyle0; }
178
178
  }, [1, "post-tabs", {