@swisspost/design-system-components 9.0.0-next.24 → 9.0.0-next.26

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 (165) hide show
  1. package/dist/cjs/index.cjs.js +21 -21
  2. package/dist/cjs/{package-be30a2ae.js → package-8dee32a7.js} +1 -1
  3. package/dist/cjs/{post-accordion-980e3707.js → post-accordion-0b2214eb.js} +1 -1
  4. package/dist/cjs/{post-accordion-item-34526ddd.js → post-accordion-item-de23d2a4.js} +1 -1
  5. package/dist/cjs/post-accordion-item.cjs.entry.js +2 -2
  6. package/dist/cjs/post-accordion.cjs.entry.js +2 -2
  7. package/dist/cjs/{post-avatar-ed964ac4.js → post-avatar-ae0f8117.js} +1 -1
  8. package/dist/cjs/post-avatar.cjs.entry.js +2 -2
  9. package/dist/cjs/{post-back-to-top-12ee9182.js → post-back-to-top-821fa8c6.js} +4 -4
  10. package/dist/cjs/post-back-to-top.cjs.entry.js +3 -3
  11. package/dist/cjs/{post-banner-13755850.js → post-banner-f703f839.js} +1 -1
  12. package/dist/cjs/post-banner.cjs.entry.js +2 -2
  13. package/dist/cjs/{post-breadcrumb-d6d9f5a4.js → post-breadcrumb-db70dbb0.js} +1 -1
  14. package/dist/cjs/post-breadcrumb-item_2.cjs.entry.js +2 -2
  15. package/dist/cjs/post-breadcrumb.cjs.entry.js +2 -2
  16. package/dist/cjs/{post-card-control-4a6fbf19.js → post-card-control-0a234cd7.js} +1 -1
  17. package/dist/cjs/post-card-control.cjs.entry.js +2 -2
  18. package/dist/cjs/post-closebutton_15.cjs.entry.js +3 -3
  19. package/dist/cjs/{post-collapsible-trigger-5bdd97f1.js → post-collapsible-trigger-cde50d59.js} +1 -1
  20. package/dist/cjs/post-collapsible_2.cjs.entry.js +2 -2
  21. package/dist/cjs/{post-footer-f2217a34.js → post-footer-da4d4cf7.js} +1 -1
  22. package/dist/cjs/post-footer.cjs.entry.js +2 -2
  23. package/dist/cjs/{post-linkarea-ced4f6ad.js → post-linkarea-e08ff922.js} +1 -1
  24. package/dist/cjs/post-linkarea.cjs.entry.js +2 -2
  25. package/dist/cjs/{post-menu-item-4ef32029.js → post-menu-item-6e00329f.js} +1 -1
  26. package/dist/cjs/{post-popover-1a5b1f4c.js → post-popover-083e3d27.js} +1 -1
  27. package/dist/cjs/post-popover.cjs.entry.js +2 -2
  28. package/dist/cjs/{post-rating-9a9ce431.js → post-rating-7aea8f7a.js} +1 -1
  29. package/dist/cjs/post-rating.cjs.entry.js +2 -2
  30. package/dist/cjs/{post-tab-header-43c52a57.js → post-tab-header-4ec43572.js} +1 -1
  31. package/dist/cjs/post-tab-header.cjs.entry.js +2 -2
  32. package/dist/cjs/{post-tab-panel-16064007.js → post-tab-panel-140f40c4.js} +1 -1
  33. package/dist/cjs/post-tab-panel.cjs.entry.js +2 -2
  34. package/dist/cjs/{post-tabs-e4739459.js → post-tabs-0a05ad67.js} +1 -1
  35. package/dist/cjs/post-tabs.cjs.entry.js +2 -2
  36. package/dist/cjs/{post-tag-e1ed422b.js → post-tag-64ca2aaa.js} +1 -1
  37. package/dist/cjs/post-tag.cjs.entry.js +2 -2
  38. package/dist/cjs/{post-togglebutton-38ec151e.js → post-togglebutton-245f7bb8.js} +83 -58
  39. package/dist/cjs/{post-tooltip-463eaaf6.js → post-tooltip-0dfe7ecc.js} +1 -1
  40. package/dist/cjs/post-tooltip.cjs.entry.js +2 -2
  41. package/dist/cjs/{slide-8ae17ee4.js → slide-cd1f09b3.js} +6 -6
  42. package/dist/collection/animations/slide.js +6 -6
  43. package/dist/collection/components/post-back-to-top/post-back-to-top.js +2 -2
  44. package/dist/collection/components/post-header/post-header.css +1 -1
  45. package/dist/collection/components/post-header/post-header.js +79 -54
  46. package/dist/collection/components/post-mainnavigation/post-mainnavigation.css +1 -1
  47. package/dist/components/package.js +1 -1
  48. package/dist/components/post-back-to-top2.js +3 -3
  49. package/dist/components/post-header2.js +81 -56
  50. package/dist/components/post-mainnavigation2.js +1 -1
  51. package/dist/components/slide.js +7 -7
  52. package/dist/docs.json +1 -1
  53. package/dist/esm/index.js +21 -21
  54. package/dist/esm/package-69fdcae3.js +3 -0
  55. package/dist/esm/{post-accordion-7f239aa6.js → post-accordion-f67ce0ad.js} +1 -1
  56. package/dist/esm/{post-accordion-item-bac98792.js → post-accordion-item-4f1a4597.js} +1 -1
  57. package/dist/esm/post-accordion-item.entry.js +2 -2
  58. package/dist/esm/post-accordion.entry.js +2 -2
  59. package/dist/esm/{post-avatar-f74f6de0.js → post-avatar-52a2ba46.js} +1 -1
  60. package/dist/esm/post-avatar.entry.js +2 -2
  61. package/dist/esm/{post-back-to-top-6fdad155.js → post-back-to-top-9d72c88f.js} +4 -4
  62. package/dist/esm/post-back-to-top.entry.js +3 -3
  63. package/dist/esm/{post-banner-8448d770.js → post-banner-9487b62d.js} +1 -1
  64. package/dist/esm/post-banner.entry.js +2 -2
  65. package/dist/esm/{post-breadcrumb-d35e27a0.js → post-breadcrumb-5096ed4f.js} +1 -1
  66. package/dist/esm/post-breadcrumb-item_2.entry.js +2 -2
  67. package/dist/esm/post-breadcrumb.entry.js +2 -2
  68. package/dist/esm/{post-card-control-9233ca52.js → post-card-control-de358f9d.js} +1 -1
  69. package/dist/esm/post-card-control.entry.js +2 -2
  70. package/dist/esm/post-closebutton_15.entry.js +3 -3
  71. package/dist/esm/{post-collapsible-trigger-f98e1f9a.js → post-collapsible-trigger-4566760b.js} +1 -1
  72. package/dist/esm/post-collapsible_2.entry.js +2 -2
  73. package/dist/esm/{post-footer-f4be2a31.js → post-footer-9117392a.js} +1 -1
  74. package/dist/esm/post-footer.entry.js +2 -2
  75. package/dist/esm/{post-linkarea-c9d8d2be.js → post-linkarea-9412ebb6.js} +1 -1
  76. package/dist/esm/post-linkarea.entry.js +2 -2
  77. package/dist/esm/{post-menu-item-1ea9397a.js → post-menu-item-b475d581.js} +1 -1
  78. package/dist/esm/{post-popover-aa961cc7.js → post-popover-33f9c2a2.js} +1 -1
  79. package/dist/esm/post-popover.entry.js +2 -2
  80. package/dist/esm/{post-rating-17ecd4f4.js → post-rating-215726b3.js} +1 -1
  81. package/dist/esm/post-rating.entry.js +2 -2
  82. package/dist/esm/{post-tab-header-6f9449f1.js → post-tab-header-bd6cc764.js} +1 -1
  83. package/dist/esm/post-tab-header.entry.js +2 -2
  84. package/dist/esm/{post-tab-panel-fcecd935.js → post-tab-panel-1070163c.js} +1 -1
  85. package/dist/esm/post-tab-panel.entry.js +2 -2
  86. package/dist/esm/{post-tabs-008c118d.js → post-tabs-2bb77fdd.js} +1 -1
  87. package/dist/esm/post-tabs.entry.js +2 -2
  88. package/dist/esm/{post-tag-1e709fe5.js → post-tag-45a5e46a.js} +1 -1
  89. package/dist/esm/post-tag.entry.js +2 -2
  90. package/dist/esm/{post-togglebutton-a932d770.js → post-togglebutton-83debaae.js} +83 -58
  91. package/dist/esm/{post-tooltip-ad5b722d.js → post-tooltip-c29ac8e8.js} +1 -1
  92. package/dist/esm/post-tooltip.entry.js +2 -2
  93. package/dist/esm/{slide-62768431.js → slide-cd2850ee.js} +7 -7
  94. package/dist/post-components/index.esm.js +1 -1
  95. package/dist/post-components/p-07788cb9.entry.js +1 -0
  96. package/dist/post-components/p-12d9fcd9.entry.js +1 -0
  97. package/dist/post-components/{p-7daa1a9c.js → p-1698e849.js} +1 -1
  98. package/dist/post-components/p-189d9cb4.entry.js +1 -0
  99. package/dist/post-components/{p-edcc075c.js → p-1c55ede8.js} +1 -1
  100. package/dist/post-components/p-21003c46.entry.js +1 -0
  101. package/dist/post-components/{p-23c2b420.js → p-24d7d1a9.js} +1 -1
  102. package/dist/post-components/{p-c1307879.js → p-303eaf1d.js} +1 -1
  103. package/dist/post-components/p-3aaac027.entry.js +1 -0
  104. package/dist/post-components/{p-5e4d5df5.js → p-3bbd92a0.js} +1 -1
  105. package/dist/post-components/{p-1382d4c9.js → p-4bdde06a.js} +1 -1
  106. package/dist/post-components/{p-78d9d13e.entry.js → p-4f471325.entry.js} +1 -1
  107. package/dist/post-components/p-54c9cdb3.entry.js +1 -0
  108. package/dist/post-components/p-61423175.entry.js +1 -0
  109. package/dist/post-components/p-62de2967.entry.js +1 -0
  110. package/dist/post-components/{p-53dd7a51.js → p-848f737d.js} +1 -1
  111. package/dist/post-components/p-876b1909.entry.js +1 -0
  112. package/dist/post-components/p-8bb67775.entry.js +1 -0
  113. package/dist/post-components/{p-6545ed83.js → p-984a0615.js} +1 -1
  114. package/dist/post-components/p-9b052461.js +1 -0
  115. package/dist/post-components/{p-f0719685.js → p-9e673495.js} +1 -1
  116. package/dist/post-components/p-a354bd50.entry.js +1 -0
  117. package/dist/post-components/{p-923793ff.js → p-a37b1832.js} +1 -1
  118. package/dist/post-components/p-a98123d4.entry.js +1 -0
  119. package/dist/post-components/{p-12d7344a.entry.js → p-b332e4ba.entry.js} +1 -1
  120. package/dist/post-components/{p-bd957c85.js → p-b646df4e.js} +1 -1
  121. package/dist/post-components/{p-cfe29403.js → p-bad8774d.js} +1 -1
  122. package/dist/post-components/p-bb0c8b7f.js +1 -0
  123. package/dist/post-components/{p-637b619c.js → p-cdf8245c.js} +1 -1
  124. package/dist/post-components/p-d20f0d29.entry.js +1 -0
  125. package/dist/post-components/p-daba2472.js +1 -0
  126. package/dist/post-components/p-e28d2566.entry.js +1 -0
  127. package/dist/post-components/{p-f4c60bbb.js → p-e60601e1.js} +1 -1
  128. package/dist/post-components/p-e6272866.entry.js +1 -0
  129. package/dist/post-components/p-e66049a5.js +1 -0
  130. package/dist/post-components/{p-43b10fa7.js → p-e95db4f0.js} +1 -1
  131. package/dist/post-components/p-eae73564.js +1 -0
  132. package/dist/post-components/p-ed2b9ebc.entry.js +1 -0
  133. package/dist/post-components/{p-a0345520.js → p-f6ada564.js} +1 -1
  134. package/dist/post-components/p-fb548ceb.entry.js +1 -0
  135. package/dist/post-components/post-components.esm.js +1 -1
  136. package/dist/types/components/post-header/post-header.d.ts +10 -7
  137. package/loaders/package.js +1 -1
  138. package/loaders/post-back-to-top.js +3 -3
  139. package/loaders/post-header.js +81 -56
  140. package/loaders/post-mainnavigation.js +1 -1
  141. package/loaders/slide.js +7 -7
  142. package/package.json +3 -3
  143. package/dist/esm/package-7deeece6.js +0 -3
  144. package/dist/post-components/p-0e6ce700.entry.js +0 -1
  145. package/dist/post-components/p-20e07b4f.entry.js +0 -1
  146. package/dist/post-components/p-3b7f8717.entry.js +0 -1
  147. package/dist/post-components/p-453aa3c8.js +0 -1
  148. package/dist/post-components/p-4af6dbed.js +0 -1
  149. package/dist/post-components/p-6239b8f8.entry.js +0 -1
  150. package/dist/post-components/p-64ba9026.entry.js +0 -1
  151. package/dist/post-components/p-6a79800f.entry.js +0 -1
  152. package/dist/post-components/p-6eaba4b6.entry.js +0 -1
  153. package/dist/post-components/p-73acda40.entry.js +0 -1
  154. package/dist/post-components/p-7796d5c5.entry.js +0 -1
  155. package/dist/post-components/p-87c82919.entry.js +0 -1
  156. package/dist/post-components/p-8f80c6f8.entry.js +0 -1
  157. package/dist/post-components/p-9184781c.entry.js +0 -1
  158. package/dist/post-components/p-96e3823e.entry.js +0 -1
  159. package/dist/post-components/p-9b4b416c.entry.js +0 -1
  160. package/dist/post-components/p-a5682a18.entry.js +0 -1
  161. package/dist/post-components/p-ac46ccd1.entry.js +0 -1
  162. package/dist/post-components/p-c8bfefed.js +0 -1
  163. package/dist/post-components/p-d6757696.entry.js +0 -1
  164. package/dist/post-components/p-e47d9a2b.js +0 -1
  165. package/dist/post-components/p-fbe84d70.js +0 -1
@@ -1,8 +1,8 @@
1
1
  'use strict';
2
2
 
3
3
  const index = require('./index-d6bf2c66.js');
4
- const _package = require('./package-be30a2ae.js');
5
- const slide = require('./slide-8ae17ee4.js');
4
+ const _package = require('./package-8dee32a7.js');
5
+ const slide = require('./slide-cd1f09b3.js');
6
6
  const index$1 = require('./index-23e36ff7.js');
7
7
  const checkNonEmpty = require('./check-non-empty-bd99d236.js');
8
8
  const checkType = require('./check-type-cdbf6d29.js');
@@ -188,7 +188,7 @@ function getFocusableChildren(element) {
188
188
  return visibleFocusableChildren;
189
189
  }
190
190
 
191
- const postHeaderCss = "*,::before,::after{box-sizing:border-box}:host{z-index:1020;position:relative}:host(:not(:has([slot=title]))) .local-header{padding-block-start:0}:host(:not(:has([slot=title]))) .local-sub{display:none}.d-flex{display:flex}.space-between{justify-content:space-between}.global-header{background-color:#fc0;display:flex;justify-content:space-between;position:sticky;padding-inline:4px;height:var(--global-header-height)}@media screen and (max-width: 1023.98px){.global-header{z-index:3;inset-block-start:0}}@media screen and (min-width: 1024px){.global-header{z-index:5;padding-inline-end:12px;inset-block-start:calc((var(--global-header-height) - var(--global-header-reduced-height))*-1)}}.global-sub{display:flex;align-items:center;gap:24px}.align-end{align-items:flex-end}.logo{flex:1 0 auto;height:var(--global-header-height);width:var(--global-header-height);min-height:var(--global-header-reduced-height);align-self:flex-end}@media screen and (min-width: 1024px){.logo{height:calc(var(--global-header-height) - var(--header-scroll-top))}}::slotted(ul){margin-block:0 !important;list-style:none;display:flex;padding-left:0;gap:1rem;flex-shrink:0 !important}.local-header{display:flex;position:sticky;flex-wrap:wrap;align-items:center;justify-content:space-between;gap:4px;min-height:var(--local-header-min-height);background:#fff;transition:box-shadow .2s ease-in-out}.local-header::after{content:\"\";position:absolute;width:100%;height:1px;background-color:#e1e0dc;bottom:-1px;z-index:1}@media screen and (min-width: 1024px){.local-header{z-index:3;inset-block-start:calc(-1*(var(--local-header-height) - var(--main-navigation-height)) + var(--global-header-reduced-height));padding-block-start:18px;box-shadow:var(--post-device-elevation-300)}}@media screen and (max-width: 1023.98px){.local-header{z-index:2;inset-block-start:var(--global-header-height);padding-block:12px;flex-wrap:wrap;gap:16px}.local-header.local-header-mobile-extended::after{bottom:0}.local-header:not(.local-header-mobile-extended){box-shadow:var(--post-device-elevation-300)}}.local-sub{margin-inline-end:16px}::slotted(.list-inline){margin:0 !important;z-index:3 !important;position:relative !important}::slotted(h1){margin:0 !important;flex-shrink:10;z-index:3}@media screen and (min-width: 600px){::slotted(h1){margin-inline-start:12px !important}}@media screen and (max-width: 599.98px){::slotted(h1){margin-inline-start:8px !important}}@media screen and (min-width: 1024px){::slotted(h1){font-size:28px !important;line-height:34px !important}}@media screen and (max-width: 1023.98px){::slotted(h1){font-size:20px !important;max-width:calc(100vw - 8px - 16px)}}@media screen and (min-width: 1024px){.mobile-toggle{display:none}}.navigation{width:100%}@media screen and (min-width: 1024px){.navigation{inset-block-start:var(--global-header-reduced-height)}.navigation::before{display:block;content:\"\";position:absolute;inset:0;z-index:2;background:#fff}}@media screen and (max-width: 1023.98px){.navigation{position:fixed;z-index:1;inset-inline:0;background:#fff;inset-block-end:calc(100dvh - var(--header-height))}::slotted(post-mainnavigation),.navigation-footer{display:none;flex-direction:column;padding-block:16px 24px;padding-inline:32px}.navigation.extended ::slotted(post-mainnavigation),.navigation.extended .navigation-footer{display:flex}.navigation.extended{height:calc(100dvh - var(--header-height));display:flex;flex-direction:column}.navigation.extended.scroll-y{overflow-y:auto}.navigation.extended ::slotted(post-mainnavigation){flex-grow:1 !important}::slotted(post-mainnavigation){background-color:#fafafa;gap:32px}.navigation-footer{background-color:#f0efed;gap:24px}}@media screen and (max-width: 599.98px){::slotted(post-mainnavigation),.navigation-footer{padding-inline:16px}}";
191
+ const postHeaderCss = "*,::before,::after{box-sizing:border-box}:host{z-index:1020;position:relative}:host(:not(:has([slot=title]))) .local-header{padding-block-start:0}:host(:not(:has([slot=title]))) .local-sub{display:none}.d-flex{display:flex}.space-between{justify-content:space-between}.global-header{background-color:#fc0;display:flex;justify-content:space-between;position:sticky;padding-inline:4px;height:var(--global-header-height)}@media screen and (max-width: 1023.98px){.global-header{z-index:3;inset-block-start:0}}@media screen and (min-width: 1024px){.global-header{z-index:5;padding-inline-end:12px;inset-block-start:calc((var(--global-header-height) - var(--global-header-reduced-height))*-1)}}.global-sub{display:flex;align-items:center;gap:24px}.align-end{align-items:flex-end}.logo{flex:1 0 auto;height:var(--global-header-height);width:var(--global-header-height);min-height:var(--global-header-reduced-height);align-self:flex-end}@media screen and (min-width: 1024px){.logo{height:calc(var(--global-header-height) - var(--header-scroll-top))}}::slotted(ul){margin-block:0 !important;list-style:none;display:flex;padding-left:0;gap:1rem;flex-shrink:0 !important}.local-header{display:flex;position:sticky;flex-wrap:wrap;align-items:center;justify-content:space-between;gap:4px;min-height:var(--local-header-min-height);background:#fff;transition:box-shadow .2s ease-in-out}.local-header::after{content:\"\";position:absolute;width:100%;height:1px;background-color:#e1e0dc;bottom:-1px;z-index:1}@media (forced-colors: active),(-ms-high-contrast: active),(-ms-high-contrast: white-on-black){.local-header::after{background-color:Highlight}}@media screen and (min-width: 1024px){.local-header{z-index:3;inset-block-start:calc(-1*(var(--local-header-height) - var(--main-navigation-height)) + var(--global-header-reduced-height));padding-block-start:18px;box-shadow:var(--post-device-elevation-300)}}@media screen and (max-width: 1023.98px){.local-header{z-index:2;inset-block-start:var(--global-header-height);padding-block:12px;flex-wrap:wrap;gap:16px}.local-header.local-header-mobile-extended::after{bottom:0}.local-header:not(.local-header-mobile-extended){box-shadow:var(--post-device-elevation-300)}}.local-sub{margin-inline-end:16px}::slotted(.list-inline){margin:0 !important;z-index:3 !important;position:relative !important}@media screen and (min-width: 1024px){.mobile-toggle{display:none}}.navigation{width:100%}@media screen and (min-width: 1024px){.navigation{inset-block-start:var(--global-header-reduced-height)}.navigation::before{display:block;content:\"\";position:absolute;inset:0;z-index:2;background:#fff}}@media screen and (max-width: 1023.98px){.navigation{position:fixed;z-index:1;inset-inline:0;inset-block-start:var(--header-height);overflow:hidden}::slotted(post-mainnavigation),.navigation-footer{display:none;flex-direction:column;padding-block:16px 24px;padding-inline:32px}.navigation.extended ::slotted(post-mainnavigation),.navigation.extended .navigation-footer{display:flex}.navigation.extended>div{display:flex;flex-direction:column;height:calc(100dvh - var(--header-height))}.navigation.extended.scroll-y>div{overflow-y:auto;overflow-x:hidden}.navigation.extended ::slotted(post-mainnavigation){flex-grow:1 !important}::slotted(post-mainnavigation){background-color:#fafafa;gap:32px}.navigation-footer{background-color:#f0efed;gap:24px}}@media screen and (max-width: 599.98px){::slotted(post-mainnavigation),.navigation-footer{padding-inline:16px}}";
192
192
  const PostHeaderStyle0 = postHeaderCss;
193
193
 
194
194
  const PostHeader = class {
@@ -201,59 +201,79 @@ const PostHeader = class {
201
201
  }
202
202
  firstFocusableEl;
203
203
  lastFocusableEl;
204
- scrollListenerElement = null;
205
- overflowElement = null;
206
204
  mobileMenu;
207
205
  mobileMenuAnimation;
208
- throttledScroll = () => this.handleScrollEvent();
209
206
  throttledResize = throttle(50, () => this.handleResize());
207
+ scrollParentResizeObserver;
208
+ localHeaderResizeObserver;
209
+ get scrollParent() {
210
+ const frozenScrollParent = document.querySelector('[data-is-post-header-scroll-parent]');
211
+ if (frozenScrollParent)
212
+ return frozenScrollParent;
213
+ let element = this.host.parentElement;
214
+ while (element) {
215
+ const overflow = getComputedStyle(element).overflowY;
216
+ if (['auto', 'scroll'].includes(overflow)) {
217
+ return element;
218
+ }
219
+ element = element.parentElement;
220
+ }
221
+ return document.documentElement;
222
+ }
223
+ get host() { return index.getElement(this); }
224
+ frozeBody(isMobileMenuExtended) {
225
+ const scrollParent = this.scrollParent;
226
+ if (isMobileMenuExtended) {
227
+ scrollParent.setAttribute('data-is-post-header-scroll-parent', '');
228
+ scrollParent.style.overflow = 'hidden';
229
+ this.host.addEventListener('keydown', this.keyboardHandler.bind(this));
230
+ }
231
+ else {
232
+ scrollParent.style.overflow = '';
233
+ scrollParent.removeAttribute('data-is-post-header-scroll-parent');
234
+ this.host.removeEventListener('keydown', this.keyboardHandler.bind(this));
235
+ }
236
+ }
237
+ /**
238
+ * An event emitted when the device has changed
239
+ */
240
+ postUpdateDevice;
210
241
  componentWillRender() {
211
- this.scrollListenerElement = this.getScrollParent();
212
- this.overflowElement =
213
- this.scrollListenerElement === document
214
- ? document.documentElement
215
- : this.scrollListenerElement;
216
- this.scrollListenerElement.addEventListener('scroll', this.throttledScroll, { passive: true });
217
242
  window.addEventListener('resize', this.throttledResize, { passive: true });
243
+ window.addEventListener('scroll', this.handleScrollEvent.bind(this), {
244
+ passive: true,
245
+ });
246
+ this.scrollParent.addEventListener('scroll', this.handleScrollEvent.bind(this), {
247
+ passive: true,
248
+ });
218
249
  this.handleResize();
219
250
  this.handleScrollEvent();
220
251
  this.getFocusableElements();
221
252
  }
222
253
  componentDidLoad() {
223
- this.updateLocalHeaderHeight();
224
254
  // Check if the mega dropdown is expanded
225
- document.addEventListener('postToggleMegadropdown', (event) => {
226
- this.megadropdownOpen = event.detail.isVisible;
227
- });
255
+ document.addEventListener('postToggleMegadropdown', this.megedropdownStateHandler.bind(this));
228
256
  this.host.addEventListener('click', this.handleLinkClick.bind(this));
257
+ this.handleScrollParentResize();
258
+ this.handleLocalHeaderResize();
229
259
  }
230
260
  // Clean up possible side effects when post-header is disconnected
231
261
  disconnectedCallback() {
262
+ const scrollParent = this.scrollParent;
232
263
  this.mobileMenuExtended = false;
233
- this.overflowElement.style.overflow = '';
234
- this.host.removeEventListener('keydown', e => {
235
- this.keyboardHandler(e);
236
- });
264
+ scrollParent.style.overflow = '';
265
+ scrollParent.removeAttribute('data-is-post-header-scroll-parent');
266
+ window.removeEventListener('resize', this.throttledResize);
267
+ window.removeEventListener('scroll', this.handleScrollEvent.bind(this));
268
+ scrollParent.removeEventListener('scroll', this.handleScrollEvent.bind(this));
269
+ document.removeEventListener('postToggleMegadropdown', this.megedropdownStateHandler.bind(this));
270
+ this.host.removeEventListener('keydown', this.keyboardHandler.bind(this));
237
271
  this.host.removeEventListener('click', this.handleLinkClick.bind(this));
272
+ if (this.scrollParentResizeObserver)
273
+ this.scrollParentResizeObserver.disconnect();
274
+ if (this.localHeaderResizeObserver)
275
+ this.localHeaderResizeObserver.disconnect();
238
276
  }
239
- get host() { return index.getElement(this); }
240
- frozeBody(isMobileMenuExtended) {
241
- this.overflowElement.style.overflow = isMobileMenuExtended ? 'hidden' : '';
242
- if (isMobileMenuExtended) {
243
- this.host.addEventListener('keydown', e => {
244
- this.keyboardHandler(e);
245
- });
246
- }
247
- else {
248
- this.host.removeEventListener('keydown', e => {
249
- this.keyboardHandler(e);
250
- });
251
- }
252
- }
253
- /**
254
- * An event emitted when the device has changed
255
- */
256
- postUpdateDevice;
257
277
  /**
258
278
  * Toggles the mobile navigation.
259
279
  */
@@ -273,6 +293,9 @@ const PostHeader = class {
273
293
  if (!this.mobileMenuExtended)
274
294
  await this.mobileMenuAnimation.finished;
275
295
  }
296
+ megedropdownStateHandler(event) {
297
+ this.megadropdownOpen = event.detail.isVisible;
298
+ }
276
299
  // Get all the focusable elements in the post-header mobile menu
277
300
  getFocusableElements() {
278
301
  // Get elements in the correct order (different as the DOM order)
@@ -303,25 +326,15 @@ const PostHeader = class {
303
326
  }
304
327
  }
305
328
  }
306
- getScrollParent() {
307
- let parent = this.host.parentElement;
308
- if (parent.tagName === 'BODY') {
309
- parent = document;
310
- }
311
- return parent;
312
- }
313
329
  handleScrollEvent() {
314
- // Credits: "https://github.com/qeremy/so/blob/master/so.dom.js#L426"
315
- const st = Math.max(0, this.scrollListenerElement instanceof Document
316
- ? this.scrollListenerElement.documentElement.scrollTop
317
- : this.scrollListenerElement.scrollTop);
318
- this.host.style.setProperty('--header-scroll-top', `${st}px`);
330
+ this.host.style.setProperty('--header-scroll-top', `${this.scrollParent.scrollTop}px`);
319
331
  }
320
332
  updateLocalHeaderHeight() {
321
- requestAnimationFrame(() => {
322
- const mhh = this.host.shadowRoot.querySelector('.local-header')?.clientHeight || 0;
323
- this.host.style.setProperty('--local-header-height', `${mhh}px`);
324
- });
333
+ const localHeaderHeight = this.host.shadowRoot.querySelector('.local-header')?.clientHeight || 0;
334
+ this.host.style.setProperty('--local-header-height', `${localHeaderHeight}px`);
335
+ }
336
+ updateScrollParentHeight() {
337
+ this.host.style.setProperty('--header-scroll-parent-height', `${this.scrollParent.clientHeight}px`);
325
338
  }
326
339
  handleLinkClick(event) {
327
340
  const target = event.target;
@@ -358,7 +371,6 @@ const PostHeader = class {
358
371
  this.toggleMobileMenu();
359
372
  this.mobileMenuAnimation.finish(); // no animation
360
373
  }
361
- this.updateLocalHeaderHeight();
362
374
  // Apply only on change for doing work only when necessary
363
375
  if (newDevice !== previousDevice) {
364
376
  this.device = newDevice;
@@ -368,6 +380,19 @@ const PostHeader = class {
368
380
  });
369
381
  }
370
382
  }
383
+ handleScrollParentResize() {
384
+ if (this.scrollParent) {
385
+ this.scrollParentResizeObserver = new ResizeObserver(this.updateScrollParentHeight.bind(this));
386
+ this.scrollParentResizeObserver.observe(this.scrollParent);
387
+ }
388
+ }
389
+ handleLocalHeaderResize() {
390
+ const localHeader = this.host.shadowRoot.querySelector('.local-header');
391
+ if (localHeader) {
392
+ this.localHeaderResizeObserver = new ResizeObserver(this.updateLocalHeaderHeight.bind(this));
393
+ this.localHeaderResizeObserver.observe(localHeader);
394
+ }
395
+ }
371
396
  switchLanguageSwitchMode() {
372
397
  const variant = this.device === 'desktop' ? 'menu' : 'list';
373
398
  Array.from(this.host.querySelectorAll('post-language-switch')).forEach(languageSwitch => {
@@ -382,10 +407,10 @@ const PostHeader = class {
382
407
  if (!this.megadropdownOpen) {
383
408
  navigationClasses.push('scroll-y');
384
409
  }
385
- return (index.h("div", { ref: el => (this.mobileMenu = el), class: navigationClasses.join(' ') }, index.h("slot", { name: "post-mainnavigation" }), (this.device === 'mobile' || this.device === 'tablet') && (index.h("div", { class: "navigation-footer" }, index.h("slot", { name: "meta-navigation" }), index.h("slot", { name: "post-language-switch" })))));
410
+ return (index.h("div", { class: navigationClasses.join(' ') }, index.h("div", { ref: el => (this.mobileMenu = el) }, index.h("slot", { name: "post-mainnavigation" }), (this.device === 'mobile' || this.device === 'tablet') && (index.h("div", { class: "navigation-footer" }, index.h("slot", { name: "meta-navigation" }), index.h("slot", { name: "post-language-switch" }))))));
386
411
  }
387
412
  render() {
388
- return (index.h(index.Host, { key: 'd92b8f3fbf93f1defc6eff9d7283c7452962f1d9', version: _package.version }, index.h("div", { key: '2d4d19e4aab0bb294c95b4ed672aaac0d0ad23e9', class: "global-header" }, index.h("div", { key: '069ae5f4ad46baa0245dd97966738a1d4be8d954', class: "global-sub" }, index.h("div", { key: 'f48c56b8dab12bc8e9a19628d4bc9f7a99ebfd8a', class: "logo" }, index.h("slot", { key: '663d5f7aa39ec7ff68dd90f24472740ab49d6838', name: "post-logo" }))), index.h("div", { key: '6a0c11629c5d58d63b49cf99f87fa5858d05c5b0', class: "global-sub" }, this.device === 'desktop' && index.h("slot", { key: 'ecc46275f314af761ab96fc209133e5f011d25e1', name: "meta-navigation" }), index.h("slot", { key: '92d41365424c09e07750be9f561d08d062d25c37', name: "global-controls" }), this.device === 'desktop' && index.h("slot", { key: '6c4d7640261933e939a0cde1cf73d26024e4fcfc', name: "post-language-switch" }), index.h("div", { key: '39e2ee687469c80f36559d3e50210203e20e2854', onClick: () => this.toggleMobileMenu(), class: "mobile-toggle" }, index.h("slot", { key: 'f8e746e4dfef7f2427a78ac40b81f4cfd9422d95', name: "post-togglebutton" })))), index.h("div", { key: '90ca0666714d3e87600bd0ba160dcec289d9ed98', class: 'local-header ' + (this.mobileMenuExtended ? 'local-header-mobile-extended' : '') }, index.h("slot", { key: '08eb843b431faceac96aaada6714bd86c26f41f5', name: "title" }), index.h("div", { key: '04542458a9e4aa804daf74d17471a3849e62071e', class: "local-sub" }, index.h("slot", { key: 'c8c2bc0a9d8433776241c1121a04feb13c34b30c', name: "local-controls" }), index.h("slot", { key: 'c0b60ab9499dbb9bf08a7e104bac218accd16861' })), this.device === 'desktop' && this.renderNavigation()), this.device !== 'desktop' && this.renderNavigation()));
413
+ return (index.h(index.Host, { key: '866b6378652ff5860c8b046f249411941e3510ca', version: _package.version }, index.h("div", { key: '4f834e011faf12f0e9629c442172153a5d710f6a', class: "global-header" }, index.h("div", { key: '16acea9aa91b071f4ee25b00e19a0d23f5765ffa', class: "global-sub" }, index.h("div", { key: '1aea872a00166aeada3538f25c8d5b1afb0595a5', class: "logo" }, index.h("slot", { key: '343ed3f016295d025196841260fc501795f211ec', name: "post-logo" }))), index.h("div", { key: '47e2d3df5973d8cf542051c9da6b2b7f077d202c', class: "global-sub" }, this.device === 'desktop' && index.h("slot", { key: '2000cf588d06f28b1d25bca60842d05e01635e7c', name: "meta-navigation" }), index.h("slot", { key: '40d62c75e080bbee36b4a5f75ee0d6a727b0153a', name: "global-controls" }), this.device === 'desktop' && index.h("slot", { key: '531b27a3332a6f91491b0e04efce42037edf7384', name: "post-language-switch" }), index.h("div", { key: '427b869f050400509ec17b1ed8aa539a3efb8fef', onClick: () => this.toggleMobileMenu(), class: "mobile-toggle" }, index.h("slot", { key: '3d824c0b31cc55f4279944e02c4fa3f26bce9b7e', name: "post-togglebutton" })))), index.h("div", { key: 'bd23ea8c42abf93d343f4579b1a433d7224a3631', class: 'local-header ' + (this.mobileMenuExtended ? 'local-header-mobile-extended' : '') }, index.h("slot", { key: '25ee29386c66395371dd1fa7c61794fefc220b85', name: "title" }), index.h("div", { key: 'e8b11280d2664a8d19935fe7fc095830d0ff4a1c', class: "local-sub" }, index.h("slot", { key: 'af10ad2f82146d10af525dd6a83871f428d09953', name: "local-controls" }), index.h("slot", { key: '311f3b2ef20794fae57d8354bd4a06552e90703e' })), this.device === 'desktop' && this.renderNavigation()), this.device !== 'desktop' && this.renderNavigation()));
389
414
  }
390
415
  static get watchers() { return {
391
416
  "mobileMenuExtended": ["frozeBody"]
@@ -779,7 +804,7 @@ const PostLogo = class {
779
804
  };
780
805
  PostLogo.style = PostLogoStyle0;
781
806
 
782
- const postMainnavigationCss = "post-mainnavigation post-list-item>a{text-decoration:none;border-radius:0}post-mainnavigation post-list-item post-megadropdown-trigger button{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;text-align:start}@media (forced-colors: active),(-ms-high-contrast: active),(-ms-high-contrast: white-on-black){post-mainnavigation post-list-item post-megadropdown-trigger button{background-color:ButtonFace !important}post-mainnavigation post-list-item post-megadropdown-trigger button:hover{background-color:Highlight !important}}post-mainnavigation post-list-item post-megadropdown-trigger button{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-mainnavigation post-list-item post-megadropdown-trigger button: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-mainnavigation post-list-item post-megadropdown-trigger button:is(:focus-visible,:has(:focus-visible),.pretend-focus){outline-color:Highlight !important}}@supports not selector(:has(:focus-visible)){post-mainnavigation post-list-item post-megadropdown-trigger button: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-mainnavigation post-list-item post-megadropdown-trigger button:is(:focus-visible,:focus-within,.pretend-focus){outline-color:Highlight !important}}}post-mainnavigation post-list-item>a,post-mainnavigation post-list-item post-megadropdown-trigger button{flex:0 0 fit-content;white-space:nowrap;display:flex;align-items:center;justify-content:space-between}post-mainnavigation post-list-item>a:hover,post-mainnavigation post-list-item post-megadropdown-trigger button:hover{color:var(--post-scheme-color-interactive-primary-hover-fg1)}post-mainnavigation post-list-item>a:focus-visible,post-mainnavigation post-list-item post-megadropdown-trigger button:focus-visible{border-radius:4px}post-mainnavigation .back-button post-icon{transform:rotate(180deg)}@media screen and (max-width: 1023.98px){post-mainnavigation .back-button{font-size:16px}}@media screen and (max-width: 599.98px){post-mainnavigation .back-button{font-size:14px}}post-mainnavigation>button::after,post-mainnavigation post-megadropdown-trigger button::after{content:\"\";mask-image:url(\"data:image/svg+xml,%3Csvg viewBox='0 0 32 32' xmlns='http://www.w3.org/2000/svg'%3E%3Cpath d='m23.6 13.2-7.5 7.6-7.6-7.6.9-.9 6.6 6.6 6.6-6.6z'/%3E%3C/svg%3E\");background-color:currentColor;color:currentColor;forced-color-adjust:preserve-parent-color;height:24px;width:24px}@media screen and (min-width: 1024px){post-mainnavigation{display:block}post-mainnavigation nav{max-width:100%;background:#fff;max-height:var(--main-navigation-height);user-select:none;transition:margin 250ms cubic-bezier(0.4, 0, 0.2, 1)}post-mainnavigation .left-scroll-button,post-mainnavigation .right-scroll-button{z-index:4;position:absolute;inset-block-end:0;overflow:hidden}post-mainnavigation .left-scroll-button button,post-mainnavigation .right-scroll-button button{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;background:#fff;padding:16px;box-shadow:var(--post-device-elevation-500);line-height:100%;height:var(--main-navigation-height)}}@media screen and (min-width: 1024px)and (forced-colors: active),screen and (min-width: 1024px)and (-ms-high-contrast: active),screen and (min-width: 1024px)and (-ms-high-contrast: white-on-black){post-mainnavigation .left-scroll-button button,post-mainnavigation .right-scroll-button button{background-color:ButtonFace !important}post-mainnavigation .left-scroll-button button:hover,post-mainnavigation .right-scroll-button button:hover{background-color:Highlight !important}}@media screen and (min-width: 1024px){post-mainnavigation .left-scroll-button button post-icon,post-mainnavigation .right-scroll-button button post-icon{font-size:1rem}}@media screen and (min-width: 1024px){post-mainnavigation .left-scroll-button.d-none,post-mainnavigation .right-scroll-button.d-none{display:none}}@media screen and (min-width: 1024px){post-mainnavigation .left-scroll-button{inset-inline-start:0;padding-inline-end:2rem}}@media screen and (min-width: 1024px){post-mainnavigation .right-scroll-button{inset-inline-end:0;padding-inline-start:2rem}}@media screen and (min-width: 1024px){post-mainnavigation post-list>[role=list]{flex-direction:row;max-width:100vw}}@media screen and (min-width: 1024px){post-mainnavigation post-list-item>a,post-mainnavigation post-list-item>button,post-mainnavigation post-list-item post-megadropdown-trigger button{position:sticky;padding-inline:12px;height:var(--main-navigation-height);gap:4px;font-size:16px;z-index:4}post-mainnavigation post-list-item>a .nav-el-active,post-mainnavigation post-list-item>button .nav-el-active,post-mainnavigation post-list-item post-megadropdown-trigger button .nav-el-active{font-weight:700;text-align:center;opacity:0}post-mainnavigation post-list-item>a .nav-el-inactive,post-mainnavigation post-list-item>button .nav-el-inactive,post-mainnavigation post-list-item post-megadropdown-trigger button .nav-el-inactive{position:absolute;opacity:1;text-align:center;width:100%;left:0}post-mainnavigation post-list-item>a.selected,post-mainnavigation post-list-item>a[aria-expanded=true],post-mainnavigation post-list-item>button.selected,post-mainnavigation post-list-item>button[aria-expanded=true],post-mainnavigation post-list-item post-megadropdown-trigger button.selected,post-mainnavigation post-list-item post-megadropdown-trigger button[aria-expanded=true]{background-color:#050400;color:#fff;font-weight:700}post-mainnavigation post-list-item>a.selected .nav-el-active,post-mainnavigation post-list-item>a[aria-expanded=true] .nav-el-active,post-mainnavigation post-list-item>button.selected .nav-el-active,post-mainnavigation post-list-item>button[aria-expanded=true] .nav-el-active,post-mainnavigation post-list-item post-megadropdown-trigger button.selected .nav-el-active,post-mainnavigation post-list-item post-megadropdown-trigger button[aria-expanded=true] .nav-el-active{opacity:1}post-mainnavigation post-list-item>a.selected .nav-el-inactive,post-mainnavigation post-list-item>a[aria-expanded=true] .nav-el-inactive,post-mainnavigation post-list-item>button.selected .nav-el-inactive,post-mainnavigation post-list-item>button[aria-expanded=true] .nav-el-inactive,post-mainnavigation post-list-item post-megadropdown-trigger button.selected .nav-el-inactive,post-mainnavigation post-list-item post-megadropdown-trigger button[aria-expanded=true] .nav-el-inactive{opacity:0}post-mainnavigation post-list-item>a:hover,post-mainnavigation post-list-item>button:hover,post-mainnavigation post-list-item post-megadropdown-trigger button:hover{background-color:#504f4b;color:#fff}}@media screen and (min-width: 1024px)and (max-width: 599.98px){post-mainnavigation post-list-item>a,post-mainnavigation post-list-item>button,post-mainnavigation post-list-item post-megadropdown-trigger button{font-size:14px}}@media screen and (min-width: 1024px){post-mainnavigation post-list-item>button,post-mainnavigation post-list-item post-megadropdown-trigger button{padding-inline-end:12px;transition:border-block-end-color 250ms cubic-bezier(0.4, 0, 0.2, 1)}post-mainnavigation post-list-item>button .nav-el-inactive,post-mainnavigation post-list-item post-megadropdown-trigger button .nav-el-inactive{width:calc(100% - 28px)}post-mainnavigation post-list-item>button::after,post-mainnavigation post-list-item post-megadropdown-trigger button::after{transition:transform 250ms cubic-bezier(0.4, 0, 0.2, 1)}post-mainnavigation post-list-item>button.selected::after,post-mainnavigation post-list-item>button[aria-expanded=true]::after,post-mainnavigation post-list-item post-megadropdown-trigger button.selected::after,post-mainnavigation post-list-item post-megadropdown-trigger button[aria-expanded=true]::after{transform:rotate(180deg)}}@media screen and (min-width: 1024px){post-mainnavigation post-megadropdown button:not(.btn-icon-close),post-mainnavigation post-megadropdown a{width:100%;min-width:100%;height:48px;padding-inline:8px 12px;gap:16px;font-weight:400;position:relative}post-mainnavigation post-megadropdown button:not(.btn-icon-close)::before,post-mainnavigation post-megadropdown a::before{content:\"\";background-color:#050400;bottom:0;width:100%;height:1px;position:absolute;left:0}post-mainnavigation post-megadropdown button:not(.btn-icon-close).selected,post-mainnavigation post-megadropdown button:not(.btn-icon-close)[aria-expanded=true],post-mainnavigation post-megadropdown a.selected,post-mainnavigation post-megadropdown a[aria-expanded=true]{background-color:#050400;color:#fff}post-mainnavigation post-megadropdown button:not(.btn-icon-close):hover,post-mainnavigation post-megadropdown a:hover{background-color:#504f4b;color:#fff}post-mainnavigation post-megadropdown button:not(.btn-icon-close):hover::before,post-mainnavigation post-megadropdown a:hover::before{background-color:#504f4b}}@media screen and (min-width: 1024px){post-mainnavigation [slot=back-button]{display:none}}@media screen and (max-width: 1023.98px){post-mainnavigation nav{transform:none !important}post-mainnavigation .left-scroll-button,post-mainnavigation .right-scroll-button{display:none}post-mainnavigation post-list-item>a,post-mainnavigation post-list-item>button,post-mainnavigation post-list-item post-megadropdown-trigger button{width:100%;min-width:100%;height:48px;padding-inline:8px 12px;gap:16px;font-weight:400;position:relative}post-mainnavigation post-list-item>a::before,post-mainnavigation post-list-item>button::before,post-mainnavigation post-list-item post-megadropdown-trigger button::before{content:\"\";background-color:#050400;bottom:0;width:100%;height:1px;position:absolute;left:0}post-mainnavigation post-list-item>a.selected,post-mainnavigation post-list-item>a[aria-expanded=true],post-mainnavigation post-list-item>button.selected,post-mainnavigation post-list-item>button[aria-expanded=true],post-mainnavigation post-list-item post-megadropdown-trigger button.selected,post-mainnavigation post-list-item post-megadropdown-trigger button[aria-expanded=true]{background-color:#050400;color:#fff}post-mainnavigation post-list-item>a:hover,post-mainnavigation post-list-item>button:hover,post-mainnavigation post-list-item post-megadropdown-trigger button:hover{background-color:#504f4b;color:#fff}post-mainnavigation post-list-item>a:hover::before,post-mainnavigation post-list-item>button:hover::before,post-mainnavigation post-list-item post-megadropdown-trigger button:hover::before{background-color:#504f4b}post-mainnavigation post-list-item>a .nav-el-inactive,post-mainnavigation post-list-item>button .nav-el-inactive,post-mainnavigation post-list-item post-megadropdown-trigger button .nav-el-inactive{display:none}post-mainnavigation>button::after,post-mainnavigation post-megadropdown-trigger button::after{transform:rotate(-90deg)}}post-mainnavigation .back-button .btn{padding-inline:0}";
807
+ const postMainnavigationCss = "post-mainnavigation post-list-item>a{text-decoration:none;border-radius:0}post-mainnavigation post-list-item post-megadropdown-trigger button{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;text-align:start}@media (forced-colors: active),(-ms-high-contrast: active),(-ms-high-contrast: white-on-black){post-mainnavigation post-list-item post-megadropdown-trigger button{background-color:ButtonFace !important}post-mainnavigation post-list-item post-megadropdown-trigger button:hover{background-color:Highlight !important}}post-mainnavigation post-list-item post-megadropdown-trigger button{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-mainnavigation post-list-item post-megadropdown-trigger button: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-mainnavigation post-list-item post-megadropdown-trigger button:is(:focus-visible,:has(:focus-visible),.pretend-focus){outline-color:Highlight !important}}@supports not selector(:has(:focus-visible)){post-mainnavigation post-list-item post-megadropdown-trigger button: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-mainnavigation post-list-item post-megadropdown-trigger button:is(:focus-visible,:focus-within,.pretend-focus){outline-color:Highlight !important}}}post-mainnavigation post-list-item>a,post-mainnavigation post-list-item post-megadropdown-trigger button{flex:0 0 fit-content;white-space:nowrap;display:flex;align-items:center;justify-content:space-between}post-mainnavigation post-list-item>a:hover,post-mainnavigation post-list-item post-megadropdown-trigger button:hover{color:var(--post-scheme-color-interactive-primary-hover-fg1)}post-mainnavigation post-list-item>a:focus-visible,post-mainnavigation post-list-item post-megadropdown-trigger button:focus-visible{border-radius:4px}post-mainnavigation .back-button post-icon{transform:rotate(180deg)}@media screen and (max-width: 1023.98px){post-mainnavigation .back-button{font-size:16px}}@media screen and (max-width: 599.98px){post-mainnavigation .back-button{font-size:14px}}post-mainnavigation>button::after,post-mainnavigation post-megadropdown-trigger button::after{content:\"\";mask-image:url(\"data:image/svg+xml,%3Csvg viewBox='0 0 32 32' xmlns='http://www.w3.org/2000/svg'%3E%3Cpath d='m23.6 13.2-7.5 7.6-7.6-7.6.9-.9 6.6 6.6 6.6-6.6z'/%3E%3C/svg%3E\");background-color:currentColor;color:currentColor;forced-color-adjust:preserve-parent-color;height:24px;width:24px}@media screen and (min-width: 1024px){post-mainnavigation{display:block;overflow-x:hidden}post-mainnavigation nav{max-width:100%;background:#fff;max-height:var(--main-navigation-height);user-select:none;transition:margin 250ms cubic-bezier(0.4, 0, 0.2, 1)}post-mainnavigation .left-scroll-button,post-mainnavigation .right-scroll-button{z-index:4;position:absolute;inset-block-end:0;overflow:hidden}post-mainnavigation .left-scroll-button button,post-mainnavigation .right-scroll-button button{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;background:#fff;padding:16px;box-shadow:var(--post-device-elevation-500);line-height:100%;height:var(--main-navigation-height)}}@media screen and (min-width: 1024px)and (forced-colors: active),screen and (min-width: 1024px)and (-ms-high-contrast: active),screen and (min-width: 1024px)and (-ms-high-contrast: white-on-black){post-mainnavigation .left-scroll-button button,post-mainnavigation .right-scroll-button button{background-color:ButtonFace !important}post-mainnavigation .left-scroll-button button:hover,post-mainnavigation .right-scroll-button button:hover{background-color:Highlight !important}}@media screen and (min-width: 1024px){post-mainnavigation .left-scroll-button button post-icon,post-mainnavigation .right-scroll-button button post-icon{font-size:1rem}}@media screen and (min-width: 1024px){post-mainnavigation .left-scroll-button.d-none,post-mainnavigation .right-scroll-button.d-none{display:none}}@media screen and (min-width: 1024px){post-mainnavigation .left-scroll-button{inset-inline-start:0;padding-inline-end:2rem}}@media screen and (min-width: 1024px){post-mainnavigation .right-scroll-button{inset-inline-end:0;padding-inline-start:2rem}}@media screen and (min-width: 1024px){post-mainnavigation post-list>[role=list]{flex-direction:row;max-width:100vw}}@media screen and (min-width: 1024px){post-mainnavigation post-list-item>a,post-mainnavigation post-list-item>button,post-mainnavigation post-list-item post-megadropdown-trigger button{position:sticky;padding-inline:12px;height:var(--main-navigation-height);gap:4px;font-size:16px;z-index:4}post-mainnavigation post-list-item>a .nav-el-active,post-mainnavigation post-list-item>button .nav-el-active,post-mainnavigation post-list-item post-megadropdown-trigger button .nav-el-active{font-weight:700;text-align:center;opacity:0}post-mainnavigation post-list-item>a .nav-el-inactive,post-mainnavigation post-list-item>button .nav-el-inactive,post-mainnavigation post-list-item post-megadropdown-trigger button .nav-el-inactive{position:absolute;opacity:1;text-align:center;width:100%;left:0}post-mainnavigation post-list-item>a.selected,post-mainnavigation post-list-item>a[aria-expanded=true],post-mainnavigation post-list-item>button.selected,post-mainnavigation post-list-item>button[aria-expanded=true],post-mainnavigation post-list-item post-megadropdown-trigger button.selected,post-mainnavigation post-list-item post-megadropdown-trigger button[aria-expanded=true]{background-color:#050400;color:#fff;font-weight:700}post-mainnavigation post-list-item>a.selected .nav-el-active,post-mainnavigation post-list-item>a[aria-expanded=true] .nav-el-active,post-mainnavigation post-list-item>button.selected .nav-el-active,post-mainnavigation post-list-item>button[aria-expanded=true] .nav-el-active,post-mainnavigation post-list-item post-megadropdown-trigger button.selected .nav-el-active,post-mainnavigation post-list-item post-megadropdown-trigger button[aria-expanded=true] .nav-el-active{opacity:1}post-mainnavigation post-list-item>a.selected .nav-el-inactive,post-mainnavigation post-list-item>a[aria-expanded=true] .nav-el-inactive,post-mainnavigation post-list-item>button.selected .nav-el-inactive,post-mainnavigation post-list-item>button[aria-expanded=true] .nav-el-inactive,post-mainnavigation post-list-item post-megadropdown-trigger button.selected .nav-el-inactive,post-mainnavigation post-list-item post-megadropdown-trigger button[aria-expanded=true] .nav-el-inactive{opacity:0}post-mainnavigation post-list-item>a:hover,post-mainnavigation post-list-item>button:hover,post-mainnavigation post-list-item post-megadropdown-trigger button:hover{background-color:#504f4b;color:#fff}}@media screen and (min-width: 1024px)and (max-width: 599.98px){post-mainnavigation post-list-item>a,post-mainnavigation post-list-item>button,post-mainnavigation post-list-item post-megadropdown-trigger button{font-size:14px}}@media screen and (min-width: 1024px){post-mainnavigation post-list-item>button,post-mainnavigation post-list-item post-megadropdown-trigger button{padding-inline-end:12px;transition:border-block-end-color 250ms cubic-bezier(0.4, 0, 0.2, 1)}post-mainnavigation post-list-item>button .nav-el-inactive,post-mainnavigation post-list-item post-megadropdown-trigger button .nav-el-inactive{width:calc(100% - 28px)}post-mainnavigation post-list-item>button::after,post-mainnavigation post-list-item post-megadropdown-trigger button::after{transition:transform 250ms cubic-bezier(0.4, 0, 0.2, 1)}post-mainnavigation post-list-item>button.selected::after,post-mainnavigation post-list-item>button[aria-expanded=true]::after,post-mainnavigation post-list-item post-megadropdown-trigger button.selected::after,post-mainnavigation post-list-item post-megadropdown-trigger button[aria-expanded=true]::after{transform:rotate(180deg)}}@media screen and (min-width: 1024px){post-mainnavigation post-megadropdown button:not(.btn-icon-close),post-mainnavigation post-megadropdown a{width:100%;min-width:100%;height:48px;padding-inline:8px 12px;gap:16px;font-weight:400;position:relative}post-mainnavigation post-megadropdown button:not(.btn-icon-close)::before,post-mainnavigation post-megadropdown a::before{content:\"\";background-color:#050400;bottom:0;width:100%;height:1px;position:absolute;left:0}post-mainnavigation post-megadropdown button:not(.btn-icon-close).selected,post-mainnavigation post-megadropdown button:not(.btn-icon-close)[aria-expanded=true],post-mainnavigation post-megadropdown a.selected,post-mainnavigation post-megadropdown a[aria-expanded=true]{background-color:#050400;color:#fff}post-mainnavigation post-megadropdown button:not(.btn-icon-close):hover,post-mainnavigation post-megadropdown a:hover{background-color:#504f4b;color:#fff}post-mainnavigation post-megadropdown button:not(.btn-icon-close):hover::before,post-mainnavigation post-megadropdown a:hover::before{background-color:#504f4b}}@media screen and (min-width: 1024px){post-mainnavigation [slot=back-button]{display:none}}@media screen and (max-width: 1023.98px){post-mainnavigation nav{transform:none !important}post-mainnavigation .left-scroll-button,post-mainnavigation .right-scroll-button{display:none}post-mainnavigation post-list-item>a,post-mainnavigation post-list-item>button,post-mainnavigation post-list-item post-megadropdown-trigger button{width:100%;min-width:100%;height:48px;padding-inline:8px 12px;gap:16px;font-weight:400;position:relative}post-mainnavigation post-list-item>a::before,post-mainnavigation post-list-item>button::before,post-mainnavigation post-list-item post-megadropdown-trigger button::before{content:\"\";background-color:#050400;bottom:0;width:100%;height:1px;position:absolute;left:0}post-mainnavigation post-list-item>a.selected,post-mainnavigation post-list-item>a[aria-expanded=true],post-mainnavigation post-list-item>button.selected,post-mainnavigation post-list-item>button[aria-expanded=true],post-mainnavigation post-list-item post-megadropdown-trigger button.selected,post-mainnavigation post-list-item post-megadropdown-trigger button[aria-expanded=true]{background-color:#050400;color:#fff}post-mainnavigation post-list-item>a:hover,post-mainnavigation post-list-item>button:hover,post-mainnavigation post-list-item post-megadropdown-trigger button:hover{background-color:#504f4b;color:#fff}post-mainnavigation post-list-item>a:hover::before,post-mainnavigation post-list-item>button:hover::before,post-mainnavigation post-list-item post-megadropdown-trigger button:hover::before{background-color:#504f4b}post-mainnavigation post-list-item>a .nav-el-inactive,post-mainnavigation post-list-item>button .nav-el-inactive,post-mainnavigation post-list-item post-megadropdown-trigger button .nav-el-inactive{display:none}post-mainnavigation>button::after,post-mainnavigation post-megadropdown-trigger button::after{transform:rotate(-90deg)}}post-mainnavigation .back-button .btn{padding-inline:0}";
783
808
  const PostMainnavigationStyle0 = postMainnavigationCss;
784
809
 
785
810
  const SCROLL_REPEAT_INTERVAL = 100; // Interval for repeated scrolling when holding down scroll button
@@ -1,7 +1,7 @@
1
1
  'use strict';
2
2
 
3
3
  const index = require('./index-d6bf2c66.js');
4
- const _package = require('./package-be30a2ae.js');
4
+ const _package = require('./package-8dee32a7.js');
5
5
  const attributeObserver = require('./attribute-observer-6d8b886b.js');
6
6
  const index$1 = require('./index-23e36ff7.js');
7
7
 
@@ -2,9 +2,9 @@
2
2
 
3
3
  Object.defineProperty(exports, '__esModule', { value: true });
4
4
 
5
- const postTooltip = require('./post-tooltip-463eaaf6.js');
5
+ const postTooltip = require('./post-tooltip-0dfe7ecc.js');
6
6
  require('./index-d6bf2c66.js');
7
- require('./package-be30a2ae.js');
7
+ require('./package-8dee32a7.js');
8
8
  require('./attribute-observer-6d8b886b.js');
9
9
  require('./index-23e36ff7.js');
10
10
  require('./constants-238701d3.js');
@@ -3,20 +3,20 @@
3
3
  const easing = 'ease';
4
4
  const duration = 500;
5
5
  const fill = 'forwards';
6
- function slideUp(el, translateSize = '100%') {
6
+ function slideUp(el, translateSize = '-100%') {
7
7
  return el.animate([
8
- { transform: `translateY(${translateSize})` }, // Starting position (no translation)
9
- { transform: 'translateY(0)' }, // End position
8
+ { transform: 'translateY(0)' }, // Starting position (no translation)
9
+ { transform: `translateY(${translateSize})` }, // End position
10
10
  ], {
11
11
  duration: duration,
12
12
  easing,
13
13
  fill,
14
14
  });
15
15
  }
16
- function slideDown(el, translateSize = '100%') {
16
+ function slideDown(el, translateSize = '-100%') {
17
17
  return el.animate([
18
- { transform: 'translateY(0)' }, // Starting position (no translation)
19
- { transform: `translateY(${translateSize})` }, // End position
18
+ { transform: `translateY(${translateSize})` }, // Starting position (no translation)
19
+ { transform: 'translateY(0)' }, // End position
20
20
  ], {
21
21
  duration: duration,
22
22
  easing,
@@ -1,20 +1,20 @@
1
1
  const easing = 'ease';
2
2
  const duration = 500;
3
3
  const fill = 'forwards';
4
- export function slideUp(el, translateSize = '100%') {
4
+ export function slideUp(el, translateSize = '-100%') {
5
5
  return el.animate([
6
- { transform: `translateY(${translateSize})` }, // Starting position (no translation)
7
- { transform: 'translateY(0)' }, // End position
6
+ { transform: 'translateY(0)' }, // Starting position (no translation)
7
+ { transform: `translateY(${translateSize})` }, // End position
8
8
  ], {
9
9
  duration: duration,
10
10
  easing,
11
11
  fill,
12
12
  });
13
13
  }
14
- export function slideDown(el, translateSize = '100%') {
14
+ export function slideDown(el, translateSize = '-100%') {
15
15
  return el.animate([
16
- { transform: 'translateY(0)' }, // Starting position (no translation)
17
- { transform: `translateY(${translateSize})` }, // End position
16
+ { transform: `translateY(${translateSize})` }, // Starting position (no translation)
17
+ { transform: 'translateY(0)' }, // End position
18
18
  ], {
19
19
  duration: duration,
20
20
  easing,
@@ -18,10 +18,10 @@ export class PostBackToTop {
18
18
  // Watch for changes in belowFold
19
19
  watchBelowFold(newValue) {
20
20
  if (newValue) {
21
- slideUp(this.host, this.translateY);
21
+ slideDown(this.host, this.translateY);
22
22
  }
23
23
  else {
24
- slideDown(this.host, this.translateY);
24
+ slideUp(this.host, this.translateY);
25
25
  }
26
26
  }
27
27
  scrollToTop() {
@@ -1 +1 @@
1
- *,::before,::after{box-sizing:border-box}:host{z-index:1020;position:relative}:host(:not(:has([slot=title]))) .local-header{padding-block-start:0}:host(:not(:has([slot=title]))) .local-sub{display:none}.d-flex{display:flex}.space-between{justify-content:space-between}.global-header{background-color:#fc0;display:flex;justify-content:space-between;position:sticky;padding-inline:4px;height:var(--global-header-height)}@media screen and (max-width: 1023.98px){.global-header{z-index:3;inset-block-start:0}}@media screen and (min-width: 1024px){.global-header{z-index:5;padding-inline-end:12px;inset-block-start:calc((var(--global-header-height) - var(--global-header-reduced-height))*-1)}}.global-sub{display:flex;align-items:center;gap:24px}.align-end{align-items:flex-end}.logo{flex:1 0 auto;height:var(--global-header-height);width:var(--global-header-height);min-height:var(--global-header-reduced-height);align-self:flex-end}@media screen and (min-width: 1024px){.logo{height:calc(var(--global-header-height) - var(--header-scroll-top))}}::slotted(ul){margin-block:0 !important;list-style:none;display:flex;padding-left:0;gap:1rem;flex-shrink:0 !important}.local-header{display:flex;position:sticky;flex-wrap:wrap;align-items:center;justify-content:space-between;gap:4px;min-height:var(--local-header-min-height);background:#fff;transition:box-shadow .2s ease-in-out}.local-header::after{content:"";position:absolute;width:100%;height:1px;background-color:#e1e0dc;bottom:-1px;z-index:1}@media screen and (min-width: 1024px){.local-header{z-index:3;inset-block-start:calc(-1*(var(--local-header-height) - var(--main-navigation-height)) + var(--global-header-reduced-height));padding-block-start:18px;box-shadow:var(--post-device-elevation-300)}}@media screen and (max-width: 1023.98px){.local-header{z-index:2;inset-block-start:var(--global-header-height);padding-block:12px;flex-wrap:wrap;gap:16px}.local-header.local-header-mobile-extended::after{bottom:0}.local-header:not(.local-header-mobile-extended){box-shadow:var(--post-device-elevation-300)}}.local-sub{margin-inline-end:16px}::slotted(.list-inline){margin:0 !important;z-index:3 !important;position:relative !important}::slotted(h1){margin:0 !important;flex-shrink:10;z-index:3}@media screen and (min-width: 600px){::slotted(h1){margin-inline-start:12px !important}}@media screen and (max-width: 599.98px){::slotted(h1){margin-inline-start:8px !important}}@media screen and (min-width: 1024px){::slotted(h1){font-size:28px !important;line-height:34px !important}}@media screen and (max-width: 1023.98px){::slotted(h1){font-size:20px !important;max-width:calc(100vw - 8px - 16px)}}@media screen and (min-width: 1024px){.mobile-toggle{display:none}}.navigation{width:100%}@media screen and (min-width: 1024px){.navigation{inset-block-start:var(--global-header-reduced-height)}.navigation::before{display:block;content:"";position:absolute;inset:0;z-index:2;background:#fff}}@media screen and (max-width: 1023.98px){.navigation{position:fixed;z-index:1;inset-inline:0;background:#fff;inset-block-end:calc(100dvh - var(--header-height))}::slotted(post-mainnavigation),.navigation-footer{display:none;flex-direction:column;padding-block:16px 24px;padding-inline:32px}.navigation.extended ::slotted(post-mainnavigation),.navigation.extended .navigation-footer{display:flex}.navigation.extended{height:calc(100dvh - var(--header-height));display:flex;flex-direction:column}.navigation.extended.scroll-y{overflow-y:auto}.navigation.extended ::slotted(post-mainnavigation){flex-grow:1 !important}::slotted(post-mainnavigation){background-color:#fafafa;gap:32px}.navigation-footer{background-color:#f0efed;gap:24px}}@media screen and (max-width: 599.98px){::slotted(post-mainnavigation),.navigation-footer{padding-inline:16px}}
1
+ *,::before,::after{box-sizing:border-box}:host{z-index:1020;position:relative}:host(:not(:has([slot=title]))) .local-header{padding-block-start:0}:host(:not(:has([slot=title]))) .local-sub{display:none}.d-flex{display:flex}.space-between{justify-content:space-between}.global-header{background-color:#fc0;display:flex;justify-content:space-between;position:sticky;padding-inline:4px;height:var(--global-header-height)}@media screen and (max-width: 1023.98px){.global-header{z-index:3;inset-block-start:0}}@media screen and (min-width: 1024px){.global-header{z-index:5;padding-inline-end:12px;inset-block-start:calc((var(--global-header-height) - var(--global-header-reduced-height))*-1)}}.global-sub{display:flex;align-items:center;gap:24px}.align-end{align-items:flex-end}.logo{flex:1 0 auto;height:var(--global-header-height);width:var(--global-header-height);min-height:var(--global-header-reduced-height);align-self:flex-end}@media screen and (min-width: 1024px){.logo{height:calc(var(--global-header-height) - var(--header-scroll-top))}}::slotted(ul){margin-block:0 !important;list-style:none;display:flex;padding-left:0;gap:1rem;flex-shrink:0 !important}.local-header{display:flex;position:sticky;flex-wrap:wrap;align-items:center;justify-content:space-between;gap:4px;min-height:var(--local-header-min-height);background:#fff;transition:box-shadow .2s ease-in-out}.local-header::after{content:"";position:absolute;width:100%;height:1px;background-color:#e1e0dc;bottom:-1px;z-index:1}@media(forced-colors: active),(-ms-high-contrast: active),(-ms-high-contrast: white-on-black){.local-header::after{background-color:Highlight}}@media screen and (min-width: 1024px){.local-header{z-index:3;inset-block-start:calc(-1*(var(--local-header-height) - var(--main-navigation-height)) + var(--global-header-reduced-height));padding-block-start:18px;box-shadow:var(--post-device-elevation-300)}}@media screen and (max-width: 1023.98px){.local-header{z-index:2;inset-block-start:var(--global-header-height);padding-block:12px;flex-wrap:wrap;gap:16px}.local-header.local-header-mobile-extended::after{bottom:0}.local-header:not(.local-header-mobile-extended){box-shadow:var(--post-device-elevation-300)}}.local-sub{margin-inline-end:16px}::slotted(.list-inline){margin:0 !important;z-index:3 !important;position:relative !important}@media screen and (min-width: 1024px){.mobile-toggle{display:none}}.navigation{width:100%}@media screen and (min-width: 1024px){.navigation{inset-block-start:var(--global-header-reduced-height)}.navigation::before{display:block;content:"";position:absolute;inset:0;z-index:2;background:#fff}}@media screen and (max-width: 1023.98px){.navigation{position:fixed;z-index:1;inset-inline:0;inset-block-start:var(--header-height);overflow:hidden}::slotted(post-mainnavigation),.navigation-footer{display:none;flex-direction:column;padding-block:16px 24px;padding-inline:32px}.navigation.extended ::slotted(post-mainnavigation),.navigation.extended .navigation-footer{display:flex}.navigation.extended>div{display:flex;flex-direction:column;height:calc(100dvh - var(--header-height))}.navigation.extended.scroll-y>div{overflow-y:auto;overflow-x:hidden}.navigation.extended ::slotted(post-mainnavigation){flex-grow:1 !important}::slotted(post-mainnavigation){background-color:#fafafa;gap:32px}.navigation-footer{background-color:#f0efed;gap:24px}}@media screen and (max-width: 599.98px){::slotted(post-mainnavigation),.navigation-footer{padding-inline:16px}}
@@ -20,59 +20,79 @@ export class PostHeader {
20
20
  }
21
21
  firstFocusableEl;
22
22
  lastFocusableEl;
23
- scrollListenerElement = null;
24
- overflowElement = null;
25
23
  mobileMenu;
26
24
  mobileMenuAnimation;
27
- throttledScroll = () => this.handleScrollEvent();
28
25
  throttledResize = throttle(50, () => this.handleResize());
26
+ scrollParentResizeObserver;
27
+ localHeaderResizeObserver;
28
+ get scrollParent() {
29
+ const frozenScrollParent = document.querySelector('[data-is-post-header-scroll-parent]');
30
+ if (frozenScrollParent)
31
+ return frozenScrollParent;
32
+ let element = this.host.parentElement;
33
+ while (element) {
34
+ const overflow = getComputedStyle(element).overflowY;
35
+ if (['auto', 'scroll'].includes(overflow)) {
36
+ return element;
37
+ }
38
+ element = element.parentElement;
39
+ }
40
+ return document.documentElement;
41
+ }
42
+ host;
43
+ frozeBody(isMobileMenuExtended) {
44
+ const scrollParent = this.scrollParent;
45
+ if (isMobileMenuExtended) {
46
+ scrollParent.setAttribute('data-is-post-header-scroll-parent', '');
47
+ scrollParent.style.overflow = 'hidden';
48
+ this.host.addEventListener('keydown', this.keyboardHandler.bind(this));
49
+ }
50
+ else {
51
+ scrollParent.style.overflow = '';
52
+ scrollParent.removeAttribute('data-is-post-header-scroll-parent');
53
+ this.host.removeEventListener('keydown', this.keyboardHandler.bind(this));
54
+ }
55
+ }
56
+ /**
57
+ * An event emitted when the device has changed
58
+ */
59
+ postUpdateDevice;
29
60
  componentWillRender() {
30
- this.scrollListenerElement = this.getScrollParent();
31
- this.overflowElement =
32
- this.scrollListenerElement === document
33
- ? document.documentElement
34
- : this.scrollListenerElement;
35
- this.scrollListenerElement.addEventListener('scroll', this.throttledScroll, { passive: true });
36
61
  window.addEventListener('resize', this.throttledResize, { passive: true });
62
+ window.addEventListener('scroll', this.handleScrollEvent.bind(this), {
63
+ passive: true,
64
+ });
65
+ this.scrollParent.addEventListener('scroll', this.handleScrollEvent.bind(this), {
66
+ passive: true,
67
+ });
37
68
  this.handleResize();
38
69
  this.handleScrollEvent();
39
70
  this.getFocusableElements();
40
71
  }
41
72
  componentDidLoad() {
42
- this.updateLocalHeaderHeight();
43
73
  // Check if the mega dropdown is expanded
44
- document.addEventListener('postToggleMegadropdown', (event) => {
45
- this.megadropdownOpen = event.detail.isVisible;
46
- });
74
+ document.addEventListener('postToggleMegadropdown', this.megedropdownStateHandler.bind(this));
47
75
  this.host.addEventListener('click', this.handleLinkClick.bind(this));
76
+ this.handleScrollParentResize();
77
+ this.handleLocalHeaderResize();
48
78
  }
49
79
  // Clean up possible side effects when post-header is disconnected
50
80
  disconnectedCallback() {
81
+ const scrollParent = this.scrollParent;
51
82
  this.mobileMenuExtended = false;
52
- this.overflowElement.style.overflow = '';
53
- this.host.removeEventListener('keydown', e => {
54
- this.keyboardHandler(e);
55
- });
83
+ scrollParent.style.overflow = '';
84
+ scrollParent.removeAttribute('data-is-post-header-scroll-parent');
85
+ window.removeEventListener('resize', this.throttledResize);
86
+ window.removeEventListener('scroll', this.handleScrollEvent.bind(this));
87
+ scrollParent.removeEventListener('scroll', this.handleScrollEvent.bind(this));
88
+ document.removeEventListener('postToggleMegadropdown', this.megedropdownStateHandler.bind(this));
89
+ this.host.removeEventListener('keydown', this.keyboardHandler.bind(this));
56
90
  this.host.removeEventListener('click', this.handleLinkClick.bind(this));
91
+ if (this.scrollParentResizeObserver)
92
+ this.scrollParentResizeObserver.disconnect();
93
+ if (this.localHeaderResizeObserver)
94
+ this.localHeaderResizeObserver.disconnect();
57
95
  }
58
- host;
59
- frozeBody(isMobileMenuExtended) {
60
- this.overflowElement.style.overflow = isMobileMenuExtended ? 'hidden' : '';
61
- if (isMobileMenuExtended) {
62
- this.host.addEventListener('keydown', e => {
63
- this.keyboardHandler(e);
64
- });
65
- }
66
- else {
67
- this.host.removeEventListener('keydown', e => {
68
- this.keyboardHandler(e);
69
- });
70
- }
71
- }
72
- /**
73
- * An event emitted when the device has changed
74
- */
75
- postUpdateDevice;
76
96
  /**
77
97
  * Toggles the mobile navigation.
78
98
  */
@@ -92,6 +112,9 @@ export class PostHeader {
92
112
  if (!this.mobileMenuExtended)
93
113
  await this.mobileMenuAnimation.finished;
94
114
  }
115
+ megedropdownStateHandler(event) {
116
+ this.megadropdownOpen = event.detail.isVisible;
117
+ }
95
118
  // Get all the focusable elements in the post-header mobile menu
96
119
  getFocusableElements() {
97
120
  // Get elements in the correct order (different as the DOM order)
@@ -122,25 +145,15 @@ export class PostHeader {
122
145
  }
123
146
  }
124
147
  }
125
- getScrollParent() {
126
- let parent = this.host.parentElement;
127
- if (parent.tagName === 'BODY') {
128
- parent = document;
129
- }
130
- return parent;
131
- }
132
148
  handleScrollEvent() {
133
- // Credits: "https://github.com/qeremy/so/blob/master/so.dom.js#L426"
134
- const st = Math.max(0, this.scrollListenerElement instanceof Document
135
- ? this.scrollListenerElement.documentElement.scrollTop
136
- : this.scrollListenerElement.scrollTop);
137
- this.host.style.setProperty('--header-scroll-top', `${st}px`);
149
+ this.host.style.setProperty('--header-scroll-top', `${this.scrollParent.scrollTop}px`);
138
150
  }
139
151
  updateLocalHeaderHeight() {
140
- requestAnimationFrame(() => {
141
- const mhh = this.host.shadowRoot.querySelector('.local-header')?.clientHeight || 0;
142
- this.host.style.setProperty('--local-header-height', `${mhh}px`);
143
- });
152
+ const localHeaderHeight = this.host.shadowRoot.querySelector('.local-header')?.clientHeight || 0;
153
+ this.host.style.setProperty('--local-header-height', `${localHeaderHeight}px`);
154
+ }
155
+ updateScrollParentHeight() {
156
+ this.host.style.setProperty('--header-scroll-parent-height', `${this.scrollParent.clientHeight}px`);
144
157
  }
145
158
  handleLinkClick(event) {
146
159
  const target = event.target;
@@ -177,7 +190,6 @@ export class PostHeader {
177
190
  this.toggleMobileMenu();
178
191
  this.mobileMenuAnimation.finish(); // no animation
179
192
  }
180
- this.updateLocalHeaderHeight();
181
193
  // Apply only on change for doing work only when necessary
182
194
  if (newDevice !== previousDevice) {
183
195
  this.device = newDevice;
@@ -187,6 +199,19 @@ export class PostHeader {
187
199
  });
188
200
  }
189
201
  }
202
+ handleScrollParentResize() {
203
+ if (this.scrollParent) {
204
+ this.scrollParentResizeObserver = new ResizeObserver(this.updateScrollParentHeight.bind(this));
205
+ this.scrollParentResizeObserver.observe(this.scrollParent);
206
+ }
207
+ }
208
+ handleLocalHeaderResize() {
209
+ const localHeader = this.host.shadowRoot.querySelector('.local-header');
210
+ if (localHeader) {
211
+ this.localHeaderResizeObserver = new ResizeObserver(this.updateLocalHeaderHeight.bind(this));
212
+ this.localHeaderResizeObserver.observe(localHeader);
213
+ }
214
+ }
190
215
  switchLanguageSwitchMode() {
191
216
  const variant = this.device === 'desktop' ? 'menu' : 'list';
192
217
  Array.from(this.host.querySelectorAll('post-language-switch')).forEach(languageSwitch => {
@@ -201,10 +226,10 @@ export class PostHeader {
201
226
  if (!this.megadropdownOpen) {
202
227
  navigationClasses.push('scroll-y');
203
228
  }
204
- 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" })))));
229
+ return (h("div", { class: navigationClasses.join(' ') }, h("div", { ref: el => (this.mobileMenu = el) }, 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" }))))));
205
230
  }
206
231
  render() {
207
- return (h(Host, { key: 'd92b8f3fbf93f1defc6eff9d7283c7452962f1d9', version: version }, h("div", { key: '2d4d19e4aab0bb294c95b4ed672aaac0d0ad23e9', class: "global-header" }, h("div", { key: '069ae5f4ad46baa0245dd97966738a1d4be8d954', class: "global-sub" }, h("div", { key: 'f48c56b8dab12bc8e9a19628d4bc9f7a99ebfd8a', class: "logo" }, h("slot", { key: '663d5f7aa39ec7ff68dd90f24472740ab49d6838', name: "post-logo" }))), h("div", { key: '6a0c11629c5d58d63b49cf99f87fa5858d05c5b0', class: "global-sub" }, this.device === 'desktop' && h("slot", { key: 'ecc46275f314af761ab96fc209133e5f011d25e1', name: "meta-navigation" }), h("slot", { key: '92d41365424c09e07750be9f561d08d062d25c37', name: "global-controls" }), this.device === 'desktop' && h("slot", { key: '6c4d7640261933e939a0cde1cf73d26024e4fcfc', name: "post-language-switch" }), h("div", { key: '39e2ee687469c80f36559d3e50210203e20e2854', onClick: () => this.toggleMobileMenu(), class: "mobile-toggle" }, h("slot", { key: 'f8e746e4dfef7f2427a78ac40b81f4cfd9422d95', name: "post-togglebutton" })))), h("div", { key: '90ca0666714d3e87600bd0ba160dcec289d9ed98', class: 'local-header ' + (this.mobileMenuExtended ? 'local-header-mobile-extended' : '') }, h("slot", { key: '08eb843b431faceac96aaada6714bd86c26f41f5', name: "title" }), h("div", { key: '04542458a9e4aa804daf74d17471a3849e62071e', class: "local-sub" }, h("slot", { key: 'c8c2bc0a9d8433776241c1121a04feb13c34b30c', name: "local-controls" }), h("slot", { key: 'c0b60ab9499dbb9bf08a7e104bac218accd16861' })), this.device === 'desktop' && this.renderNavigation()), this.device !== 'desktop' && this.renderNavigation()));
232
+ return (h(Host, { key: '866b6378652ff5860c8b046f249411941e3510ca', version: version }, h("div", { key: '4f834e011faf12f0e9629c442172153a5d710f6a', class: "global-header" }, h("div", { key: '16acea9aa91b071f4ee25b00e19a0d23f5765ffa', class: "global-sub" }, h("div", { key: '1aea872a00166aeada3538f25c8d5b1afb0595a5', class: "logo" }, h("slot", { key: '343ed3f016295d025196841260fc501795f211ec', name: "post-logo" }))), h("div", { key: '47e2d3df5973d8cf542051c9da6b2b7f077d202c', class: "global-sub" }, this.device === 'desktop' && h("slot", { key: '2000cf588d06f28b1d25bca60842d05e01635e7c', name: "meta-navigation" }), h("slot", { key: '40d62c75e080bbee36b4a5f75ee0d6a727b0153a', name: "global-controls" }), this.device === 'desktop' && h("slot", { key: '531b27a3332a6f91491b0e04efce42037edf7384', name: "post-language-switch" }), h("div", { key: '427b869f050400509ec17b1ed8aa539a3efb8fef', onClick: () => this.toggleMobileMenu(), class: "mobile-toggle" }, h("slot", { key: '3d824c0b31cc55f4279944e02c4fa3f26bce9b7e', name: "post-togglebutton" })))), h("div", { key: 'bd23ea8c42abf93d343f4579b1a433d7224a3631', class: 'local-header ' + (this.mobileMenuExtended ? 'local-header-mobile-extended' : '') }, h("slot", { key: '25ee29386c66395371dd1fa7c61794fefc220b85', name: "title" }), h("div", { key: 'e8b11280d2664a8d19935fe7fc095830d0ff4a1c', class: "local-sub" }, h("slot", { key: 'af10ad2f82146d10af525dd6a83871f428d09953', name: "local-controls" }), h("slot", { key: '311f3b2ef20794fae57d8354bd4a06552e90703e' })), this.device === 'desktop' && this.renderNavigation()), this.device !== 'desktop' && this.renderNavigation()));
208
233
  }
209
234
  static get is() { return "post-header"; }
210
235
  static get encapsulation() { return "shadow"; }