@swisspost/design-system-components 10.0.0-next.50 → 10.0.0-next.52

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 (208) hide show
  1. package/dist/cjs/focusable-D6snQLqS.js +5020 -0
  2. package/dist/cjs/get-focusable-children-Bx63XUQg.js +67 -0
  3. package/dist/cjs/{index-CpDyH7Ww.js → index-Cb8CTrOz.js} +13 -9
  4. package/dist/cjs/loader.cjs.js +2 -2
  5. package/dist/cjs/{package-qtH-QrKv.js → package-B7Ni5Tuu.js} +1 -1
  6. package/dist/cjs/post-accordion_2.cjs.entry.js +3 -3
  7. package/dist/cjs/post-avatar.cjs.entry.js +2 -2
  8. package/dist/cjs/post-back-to-top.cjs.entry.js +3 -3
  9. package/dist/cjs/post-banner.cjs.entry.js +2 -2
  10. package/dist/cjs/post-breadcrumb-item_2.cjs.entry.js +5 -5
  11. package/dist/cjs/post-breadcrumbs.cjs.entry.js +12 -11
  12. package/dist/cjs/post-card-control.cjs.entry.js +2 -2
  13. package/dist/cjs/post-closebutton_15.cjs.entry.js +128 -110
  14. package/dist/cjs/post-collapsible_2.cjs.entry.js +2 -2
  15. package/dist/cjs/post-components.cjs.js +2 -2
  16. package/dist/cjs/post-footer.cjs.entry.js +2 -2
  17. package/dist/cjs/post-linkarea.cjs.entry.js +2 -2
  18. package/dist/cjs/post-popover-trigger.cjs.entry.js +109 -0
  19. package/dist/cjs/post-popover.cjs.entry.js +22 -104
  20. package/dist/cjs/post-rating.cjs.entry.js +4 -8
  21. package/dist/cjs/post-tab-header.cjs.entry.js +3 -3
  22. package/dist/cjs/post-tab-panel.cjs.entry.js +3 -3
  23. package/dist/cjs/post-tabs.cjs.entry.js +3 -3
  24. package/dist/cjs/post-tooltip-trigger.cjs.entry.js +6 -5022
  25. package/dist/cjs/post-tooltip.cjs.entry.js +3 -3
  26. package/dist/collection/collection-manifest.json +1 -0
  27. package/dist/collection/components/post-accordion-item/post-accordion-item.js +1 -1
  28. package/dist/collection/components/post-back-to-top/post-back-to-top.js +1 -1
  29. package/dist/collection/components/post-breadcrumb-item/post-breadcrumb-item.js +1 -1
  30. package/dist/collection/components/post-breadcrumbs/post-breadcrumbs.js +34 -13
  31. package/dist/collection/components/post-closebutton/post-closebutton.css +1 -1
  32. package/dist/collection/components/post-mainnavigation/post-mainnavigation.css +1 -1
  33. package/dist/collection/components/post-megadropdown/post-megadropdown.css +1 -1
  34. package/dist/collection/components/post-megadropdown/post-megadropdown.js +9 -2
  35. package/dist/collection/components/post-megadropdown-trigger/post-megadropdown-trigger.js +1 -1
  36. package/dist/collection/components/post-menu/post-menu.js +29 -33
  37. package/dist/collection/components/post-menu-item/post-menu-item.css +1 -1
  38. package/dist/collection/components/post-menu-item/post-menu-item.js +1 -1
  39. package/dist/collection/components/post-menu-trigger/post-menu-trigger.js +1 -1
  40. package/dist/collection/components/post-popover/post-popover.js +21 -77
  41. package/dist/collection/components/post-popover-trigger/post-popover-trigger.css +1 -0
  42. package/dist/collection/components/post-popover-trigger/post-popover-trigger.js +145 -0
  43. package/dist/collection/components/post-popovercontainer/post-popovercontainer.js +153 -32
  44. package/dist/collection/components/post-rating/post-rating.js +4 -9
  45. package/dist/collection/components/post-tab-header/post-tab-header.js +1 -1
  46. package/dist/collection/components/post-tab-panel/post-tab-panel.js +1 -1
  47. package/dist/collection/components/post-tabs/post-tabs.js +1 -1
  48. package/dist/collection/components/post-togglebutton/post-togglebutton.js +1 -1
  49. package/dist/collection/components/post-tooltip/post-tooltip.js +2 -2
  50. package/dist/collection/components/post-tooltip-trigger/post-tooltip-trigger.css +1 -1
  51. package/dist/collection/components/post-tooltip-trigger/post-tooltip-trigger.js +1 -1
  52. package/dist/collection/utils/get-focusable-children.js +34 -5
  53. package/dist/component-names.json +1 -0
  54. package/dist/components/focusable.js +5018 -0
  55. package/dist/components/get-focusable-children.js +35 -6
  56. package/dist/components/index.d.ts +2 -0
  57. package/dist/components/index.js +1 -0
  58. package/dist/components/package.js +1 -1
  59. package/dist/components/post-accordion-item2.js +1 -1
  60. package/dist/components/post-back-to-top.js +1 -1
  61. package/dist/components/post-breadcrumb-item2.js +1 -1
  62. package/dist/components/post-breadcrumbs.js +14 -11
  63. package/dist/components/post-closebutton2.js +1 -1
  64. package/dist/components/post-mainnavigation.js +1 -1
  65. package/dist/components/post-megadropdown-trigger.js +1 -1
  66. package/dist/components/post-megadropdown.js +10 -3
  67. package/dist/components/post-menu-item2.js +2 -2
  68. package/dist/components/post-menu-trigger2.js +1 -1
  69. package/dist/components/post-menu2.js +27 -31
  70. package/dist/components/post-popover-trigger.d.ts +11 -0
  71. package/dist/components/post-popover-trigger.js +132 -0
  72. package/dist/components/post-popover.js +17 -99
  73. package/dist/components/post-popovercontainer2.js +82 -32
  74. package/dist/components/post-rating.js +2 -6
  75. package/dist/components/post-tab-header.js +1 -1
  76. package/dist/components/post-tab-panel.js +1 -1
  77. package/dist/components/post-tabs.js +1 -1
  78. package/dist/components/post-togglebutton.js +1 -1
  79. package/dist/components/post-tooltip-trigger.js +6 -5022
  80. package/dist/components/post-tooltip.js +1 -1
  81. package/dist/components/react/index.js +1 -1
  82. package/dist/components/react/{p-CDsgZHvX.js → p-B35HsBxh.js} +83 -33
  83. package/dist/components/react/{p-BuKAaKXE.js → p-BL8WEb6K.js} +3 -3
  84. package/dist/components/react/p-BVXiQdHq.js +64 -0
  85. package/dist/components/react/{p-BmpB1vs4.js → p-By7jk8fL.js} +1 -1
  86. package/dist/components/react/{p-BXPcgIqO.js → p-C4zJkcAb.js} +3 -3
  87. package/dist/components/react/{p-U9MTjvRU.js → p-CQhnMei5.js} +2 -2
  88. package/dist/components/react/{p-BlOv-NDA.js → p-CrEdcwed.js} +5 -5
  89. package/dist/components/react/{p-DnHwlsBi.js → p-Dl8clYLV.js} +3 -3
  90. package/dist/components/react/{p-B9Y7UQKI.js → p-DnhWNGb-.js} +1 -1
  91. package/dist/components/react/{p-BcVKzjda.js → p-DnqwBx5e.js} +1 -1
  92. package/dist/components/react/{p-Bw6vnK1I.js → p-Due3yZDR.js} +30 -34
  93. package/dist/components/react/p-HygIVKXC.js +5018 -0
  94. package/dist/components/react/p-kxuZ8mOU.js +3 -0
  95. package/dist/components/react/{p-B392lG2N.js → p-lC8Sp5tg.js} +1 -1
  96. package/dist/components/react/post-accordion-item.js +1 -1
  97. package/dist/components/react/post-accordion.js +1 -1
  98. package/dist/components/react/post-avatar.js +1 -1
  99. package/dist/components/react/post-back-to-top.js +3 -3
  100. package/dist/components/react/post-banner.js +1 -1
  101. package/dist/components/react/post-breadcrumb-item.js +1 -1
  102. package/dist/components/react/post-breadcrumbs.js +21 -18
  103. package/dist/components/react/post-card-control.js +2 -2
  104. package/dist/components/react/post-closebutton.js +1 -1
  105. package/dist/components/react/post-collapsible-trigger.js +1 -1
  106. package/dist/components/react/post-collapsible.js +1 -1
  107. package/dist/components/react/post-footer.js +6 -6
  108. package/dist/components/react/post-header.js +2 -2
  109. package/dist/components/react/post-icon.js +1 -1
  110. package/dist/components/react/post-language-option.js +1 -1
  111. package/dist/components/react/post-language-switch.js +5 -5
  112. package/dist/components/react/post-linkarea.js +1 -1
  113. package/dist/components/react/post-list-item.js +1 -1
  114. package/dist/components/react/post-list.js +1 -1
  115. package/dist/components/react/post-logo.js +1 -1
  116. package/dist/components/react/post-mainnavigation.js +3 -3
  117. package/dist/components/react/post-megadropdown-trigger.js +2 -2
  118. package/dist/components/react/post-megadropdown.js +12 -5
  119. package/dist/components/react/post-menu-item.js +1 -1
  120. package/dist/components/react/post-menu-trigger.js +1 -1
  121. package/dist/components/react/post-menu.js +1 -1
  122. package/dist/components/react/post-popover-trigger.d.ts +11 -0
  123. package/dist/components/react/post-popover-trigger.js +133 -0
  124. package/dist/components/react/post-popover.js +21 -103
  125. package/dist/components/react/post-popovercontainer.js +1 -1
  126. package/dist/components/react/post-rating.js +4 -8
  127. package/dist/components/react/post-tab-header.js +2 -2
  128. package/dist/components/react/post-tab-panel.js +2 -2
  129. package/dist/components/react/post-tabs.js +2 -2
  130. package/dist/components/react/post-togglebutton.js +2 -2
  131. package/dist/components/react/post-tooltip-trigger.js +4 -5020
  132. package/dist/components/react/post-tooltip.js +3 -3
  133. package/dist/docs.json +206 -42
  134. package/dist/esm/focusable-HygIVKXC.js +5018 -0
  135. package/dist/esm/get-focusable-children-D9ZHp2FP.js +64 -0
  136. package/dist/esm/{index-C8a0ddDa.js → index-CFNKgUjL.js} +13 -9
  137. package/dist/esm/loader.js +3 -3
  138. package/dist/esm/package-kxuZ8mOU.js +3 -0
  139. package/dist/esm/post-accordion_2.entry.js +3 -3
  140. package/dist/esm/post-avatar.entry.js +2 -2
  141. package/dist/esm/post-back-to-top.entry.js +3 -3
  142. package/dist/esm/post-banner.entry.js +2 -2
  143. package/dist/esm/post-breadcrumb-item_2.entry.js +5 -5
  144. package/dist/esm/post-breadcrumbs.entry.js +13 -12
  145. package/dist/esm/post-card-control.entry.js +2 -2
  146. package/dist/esm/post-closebutton_15.entry.js +125 -107
  147. package/dist/esm/post-collapsible_2.entry.js +2 -2
  148. package/dist/esm/post-components.js +3 -3
  149. package/dist/esm/post-footer.entry.js +2 -2
  150. package/dist/esm/post-linkarea.entry.js +2 -2
  151. package/dist/esm/post-popover-trigger.entry.js +107 -0
  152. package/dist/esm/post-popover.entry.js +19 -101
  153. package/dist/esm/post-rating.entry.js +4 -8
  154. package/dist/esm/post-tab-header.entry.js +3 -3
  155. package/dist/esm/post-tab-panel.entry.js +3 -3
  156. package/dist/esm/post-tabs.entry.js +3 -3
  157. package/dist/esm/post-tooltip-trigger.entry.js +5 -5021
  158. package/dist/esm/post-tooltip.entry.js +3 -3
  159. package/dist/post-components/{p-1253185c.entry.js → p-1096ed89.entry.js} +1 -1
  160. package/dist/post-components/{p-0a4d9f33.entry.js → p-12183522.entry.js} +1 -1
  161. package/dist/post-components/{p-b82e7cbe.entry.js → p-173dcaab.entry.js} +1 -1
  162. package/dist/post-components/p-1d7418ce.entry.js +1 -0
  163. package/dist/post-components/p-244a47db.entry.js +1 -0
  164. package/dist/post-components/p-264c5f97.entry.js +1 -0
  165. package/dist/post-components/{p-e7fbb03d.entry.js → p-290ea78f.entry.js} +1 -1
  166. package/dist/post-components/p-2f8cad6c.entry.js +1 -0
  167. package/dist/post-components/p-47e43863.entry.js +1 -0
  168. package/dist/post-components/{p-5ddde390.entry.js → p-50a5c57f.entry.js} +1 -1
  169. package/dist/post-components/p-6d8f95de.entry.js +1 -0
  170. package/dist/post-components/p-72e56701.entry.js +1 -0
  171. package/dist/post-components/p-81d78878.entry.js +1 -0
  172. package/dist/post-components/p-8a6467b4.entry.js +1 -0
  173. package/dist/post-components/{p-15e0d4b8.entry.js → p-9e461598.entry.js} +1 -1
  174. package/dist/post-components/p-CFNKgUjL.js +2 -0
  175. package/dist/post-components/p-D9ZHp2FP.js +1 -0
  176. package/dist/post-components/p-HygIVKXC.js +1 -0
  177. package/dist/post-components/p-a92b241a.entry.js +1 -0
  178. package/dist/post-components/{p-f9d044a3.entry.js → p-c84e7f02.entry.js} +1 -1
  179. package/dist/post-components/{p-048d2c1a.entry.js → p-e37d9a31.entry.js} +1 -1
  180. package/dist/post-components/p-f62f52d7.entry.js +1 -0
  181. package/dist/post-components/p-kxuZ8mOU.js +1 -0
  182. package/dist/post-components/post-components.css +1 -1
  183. package/dist/post-components/post-components.esm.js +1 -1
  184. package/dist/types/components/post-breadcrumbs/post-breadcrumbs.d.ts +6 -1
  185. package/dist/types/components/post-menu/post-menu.d.ts +4 -3
  186. package/dist/types/components/post-popover/post-popover.d.ts +5 -10
  187. package/dist/types/components/post-popover-trigger/post-popover-trigger.d.ts +37 -0
  188. package/dist/types/components/post-popovercontainer/post-popovercontainer.d.ts +34 -5
  189. package/dist/types/components.d.ts +66 -13
  190. package/dist/types/utils/get-focusable-children.d.ts +1 -0
  191. package/hydrate/index.js +6708 -6595
  192. package/hydrate/index.mjs +6708 -6595
  193. package/package.json +7 -7
  194. package/dist/components/react/p-C35MCWIp.js +0 -35
  195. package/dist/components/react/p-DimG3b3P.js +0 -3
  196. package/dist/esm/package-DimG3b3P.js +0 -3
  197. package/dist/post-components/p-11abb64f.entry.js +0 -1
  198. package/dist/post-components/p-1d4252ba.entry.js +0 -1
  199. package/dist/post-components/p-3d30eafa.entry.js +0 -1
  200. package/dist/post-components/p-4114fc83.entry.js +0 -1
  201. package/dist/post-components/p-89411986.entry.js +0 -1
  202. package/dist/post-components/p-9bbf7271.entry.js +0 -1
  203. package/dist/post-components/p-C8a0ddDa.js +0 -2
  204. package/dist/post-components/p-DimG3b3P.js +0 -1
  205. package/dist/post-components/p-b034d196.entry.js +0 -1
  206. package/dist/post-components/p-b36c129a.entry.js +0 -1
  207. package/dist/post-components/p-f1d53256.entry.js +0 -1
  208. package/dist/post-components/p-f97f3a19.entry.js +0 -1
@@ -71,7 +71,7 @@ const PostTooltip$1 = /*@__PURE__*/ proxyCustomElement(class PostTooltip extends
71
71
  }
72
72
  render() {
73
73
  const popoverClass = `${this.arrow ? 'has-arrow' : ''}`;
74
- return (h(Host, { key: 'cdde276f07efb0916bb3b0cd7cf761788421e251', "data-version": version }, h("post-popovercontainer", { key: '06b4d472448d4083f717ce13e73ff9426f422ec4', safeSpace: "trapezoid", class: popoverClass, role: "tooltip", arrow: this.arrow, animation: this.animation, placement: this.placement, onPostToggle: e => this.handleToggle(e), ref: (el) => (this.popoverRef = el) }, h("slot", { key: 'c5efcac53b6c0fa207ceee34ee86580c7566f8a8' }))));
74
+ return (h(Host, { key: '0755eeba6f7be3cd0d94138369355df9767ca541', "data-version": version }, h("post-popovercontainer", { key: '1e1d71a4878e60f9e20b34b5f12588e09a8c7716', safeSpace: "trapezoid", class: popoverClass, role: "tooltip", arrow: this.arrow, animation: this.animation, placement: this.placement, onPostToggle: e => this.handleToggle(e), ref: (el) => (this.popoverRef = el) }, h("slot", { key: '25a69d406a91cb0ba8d4c5fadee44d937c84a266' }))));
75
75
  }
76
76
  get host() { return this; }
77
77
  static get watchers() { return {
@@ -1,4 +1,4 @@
1
- const globalStyles = ":where(post-accordion,post-accordion-item,post-avatar,post-back-to-top,post-banner,post-breadcrumb-item,post-breadcrumbs,post-card-control,post-closebutton,post-collapsible,post-collapsible-trigger,post-footer,post-header,post-icon,post-language-option,post-language-switch,post-linkarea,post-list,post-list-item,post-logo,post-mainnavigation,post-megadropdown,post-megadropdown-trigger,post-menu,post-menu-item,post-menu-trigger,post-popover,post-popovercontainer,post-rating,post-tab-header,post-tab-panel,post-tabs,post-togglebutton,post-tooltip,post-tooltip-trigger):not([data-hydrated],:defined){visibility:hidden}";
1
+ const globalStyles = ":where(post-accordion,post-accordion-item,post-avatar,post-back-to-top,post-banner,post-breadcrumb-item,post-breadcrumbs,post-card-control,post-closebutton,post-collapsible,post-collapsible-trigger,post-footer,post-header,post-icon,post-language-option,post-language-switch,post-linkarea,post-list,post-list-item,post-logo,post-mainnavigation,post-megadropdown,post-megadropdown-trigger,post-menu,post-menu-item,post-menu-trigger,post-popover,post-popover-trigger,post-popovercontainer,post-rating,post-tab-header,post-tab-panel,post-tabs,post-togglebutton,post-tooltip,post-tooltip-trigger):not([data-hydrated],:defined){visibility:hidden}";
2
2
 
3
3
  const NAMESPACE = 'post-components';
4
4
  const BUILD = /* post-components */ { hydratedSelectorName: "data-hydrated", lazyLoad: false, slotRelocation: true, updatable: true};
@@ -1,7 +1,7 @@
1
1
  import { p as proxyCustomElement, H, c as createEvent, h, a as Host } from './index.js';
2
2
  import { I as IS_BROWSER } from './p-CJ80BZ06.js';
3
3
  import { d as checkEmptyOrOneOf, e as checkEmptyOrType } from './p-CV7fm1rW.js';
4
- import { v as version } from './p-DimG3b3P.js';
4
+ import { v as version } from './p-kxuZ8mOU.js';
5
5
 
6
6
  const PLACEMENT_TYPES = [
7
7
  'top',
@@ -1323,14 +1323,9 @@ function getWindowScrollBarX(element, rect) {
1323
1323
  return rect.left + leftScroll;
1324
1324
  }
1325
1325
 
1326
- function getHTMLOffset(documentElement, scroll, ignoreScrollbarX) {
1327
- if (ignoreScrollbarX === void 0) {
1328
- ignoreScrollbarX = false;
1329
- }
1326
+ function getHTMLOffset(documentElement, scroll) {
1330
1327
  const htmlRect = documentElement.getBoundingClientRect();
1331
- const x = htmlRect.left + scroll.scrollLeft - (ignoreScrollbarX ? 0 :
1332
- // RTL <body> scrollbar.
1333
- getWindowScrollBarX(documentElement, htmlRect));
1328
+ const x = htmlRect.left + scroll.scrollLeft - getWindowScrollBarX(documentElement, htmlRect);
1334
1329
  const y = htmlRect.top + scroll.scrollTop;
1335
1330
  return {
1336
1331
  x,
@@ -1369,7 +1364,7 @@ function convertOffsetParentRelativeRectToViewportRelativeRect(_ref) {
1369
1364
  offsets.y = offsetRect.y + offsetParent.clientTop;
1370
1365
  }
1371
1366
  }
1372
- const htmlOffset = documentElement && !isOffsetParentAnElement && !isFixed ? getHTMLOffset(documentElement, scroll, true) : createCoords(0);
1367
+ const htmlOffset = documentElement && !isOffsetParentAnElement && !isFixed ? getHTMLOffset(documentElement, scroll) : createCoords(0);
1373
1368
  return {
1374
1369
  width: rect.width * scale.x,
1375
1370
  height: rect.height * scale.y,
@@ -1403,6 +1398,10 @@ function getDocumentRect(element) {
1403
1398
  };
1404
1399
  }
1405
1400
 
1401
+ // Safety check: ensure the scrollbar space is reasonable in case this
1402
+ // calculation is affected by unusual styles.
1403
+ // Most scrollbars leave 15-18px of space.
1404
+ const SCROLLBAR_MAX = 25;
1406
1405
  function getViewportRect(element, strategy) {
1407
1406
  const win = getWindow(element);
1408
1407
  const html = getDocumentElement(element);
@@ -1420,6 +1419,24 @@ function getViewportRect(element, strategy) {
1420
1419
  y = visualViewport.offsetTop;
1421
1420
  }
1422
1421
  }
1422
+ const windowScrollbarX = getWindowScrollBarX(html);
1423
+ // <html> `overflow: hidden` + `scrollbar-gutter: stable` reduces the
1424
+ // visual width of the <html> but this is not considered in the size
1425
+ // of `html.clientWidth`.
1426
+ if (windowScrollbarX <= 0) {
1427
+ const doc = html.ownerDocument;
1428
+ const body = doc.body;
1429
+ const bodyStyles = getComputedStyle(body);
1430
+ const bodyMarginInline = doc.compatMode === 'CSS1Compat' ? parseFloat(bodyStyles.marginLeft) + parseFloat(bodyStyles.marginRight) || 0 : 0;
1431
+ const clippingStableScrollbarWidth = Math.abs(html.clientWidth - body.clientWidth - bodyMarginInline);
1432
+ if (clippingStableScrollbarWidth <= SCROLLBAR_MAX) {
1433
+ width -= clippingStableScrollbarWidth;
1434
+ }
1435
+ } else if (windowScrollbarX <= SCROLLBAR_MAX) {
1436
+ // If the <body> scrollbar is on the left, the width needs to be extended
1437
+ // by the scrollbar amount so there isn't extra space on the right.
1438
+ width += windowScrollbarX;
1439
+ }
1423
1440
  return {
1424
1441
  width,
1425
1442
  height,
@@ -2728,8 +2745,12 @@ const PostPopovercontainer = /*@__PURE__*/ proxyCustomElement(class PostPopoverc
2728
2745
  constructor() {
2729
2746
  super();
2730
2747
  this.__registerHost();
2748
+ this.postBeforeShow = createEvent(this, "postBeforeShow");
2749
+ this.postShow = createEvent(this, "postShow");
2750
+ this.postHide = createEvent(this, "postHide");
2751
+ this.postBeforeToggle = createEvent(this, "postBeforeToggle");
2731
2752
  this.postToggle = createEvent(this, "postToggle");
2732
- this.firstOpen = true;
2753
+ this.hasOpenedOnce = true;
2733
2754
  /**
2734
2755
  * Defines the placement of the popovercontainer according to the floating-ui options available at https://floating-ui.com/docs/computePosition#placement.
2735
2756
  * Popovercontainers are automatically flipped to the opposite side if there is not enough available space and are shifted
@@ -2783,36 +2804,79 @@ const PostPopovercontainer = /*@__PURE__*/ proxyCustomElement(class PostPopoverc
2783
2804
  if (typeof this.clearAutoUpdate === 'function') {
2784
2805
  this.clearAutoUpdate();
2785
2806
  }
2807
+ this.host.removeEventListener('beforetoggle', this.handleToggle.bind(this));
2786
2808
  }
2787
2809
  /**
2788
2810
  * Programmatically display the popovercontainer
2789
- * @param target An element with [data-popover-target="id"] where the popovercontainer should be shown
2811
+ * @param target A focusable element inside the <post-popover-trigger> component that controls the popover
2790
2812
  */
2791
2813
  async show(target) {
2792
2814
  if (this.toggleTimeoutId)
2793
2815
  return;
2794
2816
  this.eventTarget = target;
2817
+ if (this.toggleTimeoutId)
2818
+ return;
2795
2819
  this.calculatePosition();
2796
2820
  this.host.showPopover();
2797
2821
  }
2822
+ /**
2823
+ * Handles the popover opening process and emits related events.
2824
+ */
2825
+ async open() {
2826
+ const content = this.host.querySelector('.popover-content');
2827
+ this.startAutoupdates();
2828
+ if (content) {
2829
+ const animation = popIn(content);
2830
+ if (animation?.playState === 'running') {
2831
+ this.postBeforeToggle.emit({ willOpen: true });
2832
+ this.postBeforeShow.emit({ first: this.hasOpenedOnce });
2833
+ }
2834
+ animation?.finished.then(() => {
2835
+ this.postToggle.emit({ isOpen: true });
2836
+ this.postShow.emit({ first: this.hasOpenedOnce });
2837
+ if (this.hasOpenedOnce)
2838
+ this.hasOpenedOnce = false;
2839
+ });
2840
+ }
2841
+ if (this.safeSpace) {
2842
+ window.addEventListener('mousemove', this.mouseTrackingHandler.bind(this));
2843
+ }
2844
+ }
2845
+ /**
2846
+ * Handles the popover closing process and emits related events.
2847
+ */
2848
+ async close() {
2849
+ if (typeof this.clearAutoUpdate === 'function') {
2850
+ this.clearAutoUpdate();
2851
+ }
2852
+ if (this.safeSpace) {
2853
+ window.removeEventListener('mousemove', this.mouseTrackingHandler.bind(this));
2854
+ }
2855
+ this.postToggle.emit({ isOpen: false });
2856
+ this.postHide.emit();
2857
+ }
2798
2858
  /**
2799
2859
  * Programmatically hide the popovercontainer
2800
2860
  */
2801
2861
  async hide() {
2802
2862
  if (!this.toggleTimeoutId) {
2863
+ if (this.eventTarget && this.eventTarget instanceof H) {
2864
+ this.eventTarget.focus();
2865
+ }
2803
2866
  this.eventTarget = null;
2804
2867
  this.host.hidePopover();
2868
+ this.postHide.emit();
2805
2869
  }
2806
2870
  }
2807
2871
  /**
2808
2872
  * Toggle popovercontainer display
2809
- * @param target An element with [data-popover-target="id"] where the popovercontainer should be shown
2873
+ * @param target A focusable element inside the <post-popover-trigger> component that controls the popover
2810
2874
  * @param force Pass true to always show or false to always hide
2811
2875
  */
2812
2876
  async toggle(target, force) {
2877
+ this.eventTarget = target;
2813
2878
  // Prevent instant double toggle
2814
2879
  if (!this.toggleTimeoutId) {
2815
- this.eventTarget = target;
2816
2880
  this.calculatePosition();
2817
2881
  this.host.togglePopover(force);
2818
2882
  this.toggleTimeoutId = null;
@@ -2829,27 +2893,11 @@ const PostPopovercontainer = /*@__PURE__*/ proxyCustomElement(class PostPopoverc
2829
2893
  this.toggleTimeoutId = window.setTimeout(() => (this.toggleTimeoutId = null), 10);
2830
2894
  const isOpen = e.newState === 'open';
2831
2895
  if (isOpen) {
2832
- const content = this.host.querySelector('.popover-content');
2833
- this.startAutoupdates();
2834
- if (content && this.animation === 'pop-in') {
2835
- popIn(content);
2836
- }
2837
- if (this.safeSpace)
2838
- window.addEventListener('mousemove', this.mouseTrackingHandler.bind(this));
2839
- // Emit event with `first` flag only true on the first open
2840
- if (this.firstOpen) {
2841
- this.postToggle.emit({ isOpen, first: this.firstOpen });
2842
- this.firstOpen = false;
2843
- return;
2844
- }
2896
+ this.open();
2845
2897
  }
2846
2898
  else {
2847
- if (typeof this.clearAutoUpdate === 'function')
2848
- this.clearAutoUpdate();
2849
- if (this.safeSpace)
2850
- window.removeEventListener('mousemove', this.mouseTrackingHandler.bind(this));
2899
+ this.close();
2851
2900
  }
2852
- this.postToggle.emit({ isOpen: isOpen, first: false });
2853
2901
  }
2854
2902
  /**
2855
2903
  * Start listening for DOM updates, scroll events etc. that have
@@ -2980,9 +3028,9 @@ const PostPopovercontainer = /*@__PURE__*/ proxyCustomElement(class PostPopoverc
2980
3028
  }
2981
3029
  }
2982
3030
  render() {
2983
- return (h(Host, { key: '493d032d16ace815b6c031e77dbcc673f26d149b', "data-version": version, popover: this.manualClose ? 'manual' : 'auto' }, h("div", { key: '97bb357cada0456b3aa458e12768d9ad5458ef24', class: "popover-content" }, this.arrow && (h("span", { key: 'f5f2256470edad5a8ca89c32b3a44ef0fe388eea', class: "arrow", ref: el => {
3031
+ return (h(Host, { key: 'cdb25a25fbd5e411e380175a8d3789cec83e2755', "data-version": version, popover: this.manualClose ? 'manual' : 'auto' }, h("div", { key: 'e99bcc4d5123b335b4b8be7044a80b2913ab6fce', class: "popover-content" }, this.arrow && (h("span", { key: '3c228829cc7e5bd83d7f1759ef163407ebcd10c5', class: "arrow", ref: el => {
2984
3032
  this.arrowRef = el;
2985
- } })), h("slot", { key: 'f259b6ad624cf392e0d41026b4eab586009cb3c7' }))));
3033
+ } })), h("slot", { key: '6a213deed5ccfec47d4dee903c7544d30a3f5748' }))));
2986
3034
  }
2987
3035
  get host() { return this; }
2988
3036
  static get watchers() { return {
@@ -2999,6 +3047,8 @@ const PostPopovercontainer = /*@__PURE__*/ proxyCustomElement(class PostPopoverc
2999
3047
  "manualClose": [4, "manual-close"],
3000
3048
  "safeSpace": [513, "safe-space"],
3001
3049
  "show": [64],
3050
+ "open": [64],
3051
+ "close": [64],
3002
3052
  "hide": [64],
3003
3053
  "toggle": [64]
3004
3054
  }, undefined, {
@@ -1,12 +1,12 @@
1
1
  import { p as proxyCustomElement, H, h, a as Host } from './index.js';
2
- import { v as version } from './p-DimG3b3P.js';
2
+ import { v as version } from './p-kxuZ8mOU.js';
3
3
  import { d as checkEmptyOrOneOf } from './p-CV7fm1rW.js';
4
4
  import './p-CJ80BZ06.js';
5
- import { d as defineCustomElement$1 } from './p-BcVKzjda.js';
5
+ import { d as defineCustomElement$1 } from './p-DnqwBx5e.js';
6
6
 
7
7
  const BUTTON_TYPES = ['button', 'submit', 'reset'];
8
8
 
9
- const postClosebuttonCss = ".visually-hidden{position:absolute;width:1px;height:1px;margin:-1px;padding:0;overflow:hidden;clip:rect(0 0 0 0);border:0}post-closebutton .btn{padding:0;border:unset;min-height:unset;min-width:unset;width:var(--post-device-sizing-notification-1);height:var(--post-device-sizing-notification-1);border-radius:var(--post-device-border-radius-round);background-color:var(--post-scheme-color-interactive-button-tertiary-enabled-bg);color:var(--post-scheme-color-interactive-button-tertiary-enabled-fg)}post-closebutton .btn>post-icon{min-width:var(--post-device-sizing-interactive-icon-size4);width:var(--post-device-sizing-interactive-icon-size4);height:var(--post-device-sizing-interactive-icon-size4)}post-closebutton .btn:not(:disabled):hover,post-closebutton .btn.pretend-hover{cursor:pointer;background-color:var(--post-scheme-color-interactive-button-tertiary-hover-bg);color:var(--post-scheme-color-interactive-button-tertiary-hover-fg)}@media (forced-colors: active),(-ms-high-contrast: active),(-ms-high-contrast: white-on-black){post-closebutton .btn:not(:disabled):hover,post-closebutton .btn.pretend-hover{color:HighlightText !important}}";
9
+ const postClosebuttonCss = ".visually-hidden{position:absolute;width:1px;height:1px;margin:-1px;padding:0;overflow:hidden;clip:rect(0 0 0 0);border:0}post-closebutton .btn{padding:0;border:unset;min-height:unset;min-width:unset;width:var(--post-device-sizing-notification-1);height:var(--post-device-sizing-notification-1);border-radius:var(--post-device-border-radius-round);background-color:var(--post-scheme-color-interactive-button-tertiary-enabled-bg);color:var(--post-scheme-color-interactive-button-tertiary-enabled-fg);display:flex;align-items:center;justify-content:center}post-closebutton .btn>post-icon{min-width:var(--post-device-sizing-interactive-icon-size4);width:var(--post-device-sizing-interactive-icon-size4);height:var(--post-device-sizing-interactive-icon-size4)}post-closebutton .btn:not(:disabled):hover,post-closebutton .btn.pretend-hover{cursor:pointer;background-color:var(--post-scheme-color-interactive-button-tertiary-hover-bg);color:var(--post-scheme-color-interactive-button-tertiary-hover-fg)}@media (forced-colors: active),(-ms-high-contrast: active),(-ms-high-contrast: white-on-black){post-closebutton .btn:not(:disabled):hover,post-closebutton .btn.pretend-hover{color:HighlightText !important}}";
10
10
 
11
11
  const PostClosebutton = /*@__PURE__*/ proxyCustomElement(class PostClosebutton extends H {
12
12
  constructor() {
@@ -0,0 +1,64 @@
1
+ const focusableSelector = `:where(${[
2
+ 'button',
3
+ 'input:not([type="hidden"])',
4
+ '[tabindex]',
5
+ 'select',
6
+ 'textarea',
7
+ '[contenteditable]',
8
+ 'a[href]',
9
+ 'iframe',
10
+ 'audio[controls]',
11
+ 'video[controls]',
12
+ 'area[href]',
13
+ 'details > summary:first-of-type',
14
+ ].join(',')})`;
15
+ const focusDisablingSelector = `:where(${[
16
+ '[inert]',
17
+ '[inert] *',
18
+ ':disabled',
19
+ 'dialog:not([open]) *',
20
+ '[popover]:not(:popover-open) *',
21
+ 'details:not([open]) > *:not(details > summary:first-of-type)',
22
+ 'details:not([open]) > *:not(details > summary:first-of-type) *',
23
+ '[tabindex^="-"]',
24
+ '[hidden]:not([hidden="false"])',
25
+ ].join(',')})`;
26
+ function getFocusableChildren(element) {
27
+ const focusableChildren = element.querySelectorAll(`${focusableSelector}:not(${focusDisablingSelector})`);
28
+ return Array.from(focusableChildren).filter(isVisible);
29
+ }
30
+ // Searches deeper accross shadowDom
31
+ function getDeepFocusableChildren(element) {
32
+ const results = [];
33
+ function traverse(node) {
34
+ if (isElementFocusable(node)) {
35
+ results.push(node);
36
+ }
37
+ if (node instanceof HTMLElement && node.shadowRoot) {
38
+ traverse(node.shadowRoot);
39
+ }
40
+ for (const child of Array.from(node.children)) {
41
+ traverse(child);
42
+ }
43
+ if (node instanceof HTMLElement) {
44
+ for (const slot of Array.from(node.querySelectorAll('slot'))) {
45
+ for (const el of slot.assignedElements({ flatten: true })) {
46
+ traverse(el);
47
+ }
48
+ }
49
+ }
50
+ }
51
+ traverse(element);
52
+ return results;
53
+ }
54
+ function isVisible(el) {
55
+ const style = window.getComputedStyle(el.parentElement);
56
+ return style.display !== 'none' && style.visibility !== 'hidden';
57
+ }
58
+ function isElementFocusable(node) {
59
+ return (node instanceof HTMLElement &&
60
+ node.matches(`${focusableSelector}:not(${focusDisablingSelector})`) &&
61
+ isVisible(node));
62
+ }
63
+
64
+ export { getDeepFocusableChildren as a, getFocusableChildren as g };
@@ -1,5 +1,5 @@
1
1
  import { p as proxyCustomElement, H, c as createEvent, h, a as Host } from './index.js';
2
- import { v as version } from './p-DimG3b3P.js';
2
+ import { v as version } from './p-kxuZ8mOU.js';
3
3
  import { I as IS_BROWSER } from './p-CJ80BZ06.js';
4
4
  import { e as checkEmptyOrType } from './p-CV7fm1rW.js';
5
5
 
@@ -1,7 +1,7 @@
1
1
  import { p as proxyCustomElement, H, h, a as Host } from './index.js';
2
- import { v as version } from './p-DimG3b3P.js';
2
+ import { v as version } from './p-kxuZ8mOU.js';
3
3
 
4
- const postMenuItemCss = "post-menu-item 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}@media (forced-colors: active),(-ms-high-contrast: active),(-ms-high-contrast: white-on-black){post-menu-item button{background-color:ButtonFace !important}post-menu-item button:hover{background-color:Highlight !important}}post-menu-item a{text-decoration:none}post-menu-item button,post-menu-item a{position:relative;display:flex;width:100%;align-items:center;padding:.5rem .75rem .5rem 1rem;gap:.5rem;font-size:.875rem;color:#050400;border-radius:0}post-menu-item button post-icon,post-menu-item a post-icon{width:1.25rem;height:1.25rem;margin:.125rem}@media screen and (min-width: 780px){post-menu-item button,post-menu-item a{font-size:1rem;padding-block:.75rem;gap:1rem}post-menu-item button post-icon,post-menu-item a post-icon{width:1.375rem;height:1.375rem;margin:0}}@media screen and (min-width: 1024px){post-menu-item button,post-menu-item a{font-size:1.25rem;padding-block:.8125rem}post-menu-item button post-icon,post-menu-item a post-icon{width:1.5rem;height:1.5rem}}post-menu-item button:focus-visible,post-menu-item a:focus-visible{outline-offset:2px !important;border-radius:4px}post-menu-item button:hover,post-menu-item a:hover{background-color:#504f4b;color:#fff}";
4
+ const postMenuItemCss = "post-menu-item 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}@media (forced-colors: active),(-ms-high-contrast: active),(-ms-high-contrast: white-on-black){post-menu-item button{background-color:ButtonFace !important}post-menu-item button:hover{background-color:Highlight !important}}post-menu-item a{text-decoration:none}post-menu-item button,post-menu-item a{position:relative;display:flex;width:100%;align-items:center;padding:.5rem .75rem .5rem 1rem;gap:.75rem;font-size:.875rem;color:#050400;border-radius:0}post-menu-item button post-icon,post-menu-item a post-icon{width:1rem;height:1rem;margin-block:.25rem}@media screen and (min-width: 780px){post-menu-item button,post-menu-item a{font-size:1rem;padding-block:.75rem;gap:1rem}post-menu-item button post-icon,post-menu-item a post-icon{width:1.5rem;height:1.5rem;margin:0}}@media screen and (min-width: 1024px){post-menu-item button,post-menu-item a{font-size:1.25rem;padding-block:.8125rem}}post-menu-item button:focus-visible,post-menu-item a:focus-visible{outline-offset:2px !important;border-radius:4px}post-menu-item button:hover,post-menu-item a:hover{background-color:#504f4b;color:#fff}";
5
5
 
6
6
  const PostMenuItem = /*@__PURE__*/ proxyCustomElement(class PostMenuItem extends H {
7
7
  constructor() {
@@ -9,7 +9,7 @@ const PostMenuItem = /*@__PURE__*/ proxyCustomElement(class PostMenuItem extends
9
9
  this.__registerHost();
10
10
  }
11
11
  render() {
12
- return (h(Host, { key: '6b2c8542aed22132c627fadb6be036124e37853e', "data-version": version }, h("slot", { key: '8059cb5112270641ef7ba860cdacb2cdaa75fd59' })));
12
+ return (h(Host, { key: 'd37c4eed483b46dedcccbc835017ff2415dbd22e', "data-version": version }, h("slot", { key: 'e13d1f35e7883a0aee4d08ceb39caeb97fb960ec' })));
13
13
  }
14
14
  static get style() { return postMenuItemCss; }
15
15
  }, [4, "post-menu-item"]);
@@ -1,5 +1,5 @@
1
1
  import { p as proxyCustomElement, H, h, a as Host } from './index.js';
2
- import { v as version } from './p-DimG3b3P.js';
2
+ import { v as version } from './p-kxuZ8mOU.js';
3
3
  import { c as checkRequiredAndType } from './p-CV7fm1rW.js';
4
4
  import './p-CJ80BZ06.js';
5
5
  import { g as getRoot } from './p-CBFgkSgY.js';
@@ -80,7 +80,7 @@ const PostMenuTrigger = /*@__PURE__*/ proxyCustomElement(class PostMenuTrigger e
80
80
  }
81
81
  }
82
82
  render() {
83
- return (h(Host, { key: 'e4ab1c0cd7227b83994cbd74f2bb3fe88c48126e', "data-version": version, "tab-index": "-1" }, h("slot", { key: '9c5aa5d42457f6716c7607b50b5453cdce8d50d0' })));
83
+ return (h(Host, { key: 'fc962802089652073c19cc35a511e48b0cab43b7', "data-version": version, "tab-index": "-1" }, h("slot", { key: 'd3a8b40c0a88c44092b56ca4aa1c74f880bebb20' })));
84
84
  }
85
85
  get host() { return this; }
86
86
  static get watchers() { return {
@@ -1,13 +1,13 @@
1
1
  import { p as proxyCustomElement, H, h, a as Host } from './index.js';
2
- import { v as version } from './p-DimG3b3P.js';
2
+ import { v as version } from './p-kxuZ8mOU.js';
3
3
  import { H as HEADING_LEVELS } from './p-r4txK0AC.js';
4
4
  import { d as checkEmptyOrOneOf } from './p-CV7fm1rW.js';
5
5
  import './p-CJ80BZ06.js';
6
6
  import { E as EventFrom } from './p-CzIKqBrS.js';
7
7
  import { n as nanoid } from './p-BLchVpF6.js';
8
- import { d as defineCustomElement$3 } from './p-BmpB1vs4.js';
9
- import { d as defineCustomElement$2 } from './p-B392lG2N.js';
10
- import { d as defineCustomElement$1 } from './p-BcVKzjda.js';
8
+ import { d as defineCustomElement$3 } from './p-By7jk8fL.js';
9
+ import { d as defineCustomElement$2 } from './p-lC8Sp5tg.js';
10
+ import { d as defineCustomElement$1 } from './p-DnqwBx5e.js';
11
11
 
12
12
  const postAccordionItemCss = ".accordion-item::after{display:block;content:\"\";margin-block-start:calc(var(--post-device-border-width-default)*-1);border-block-end:var(--post-device-border-width-default) var(--post-core-border-style-solid) var(--post-scheme-color-interactive-primary-enabled-stroke)}.accordion-item:has(.accordion-button:hover)::after{border-color:var(--post-scheme-color-interactive-primary-hover-stroke)}@media (forced-colors: active),(-ms-high-contrast: active),(-ms-high-contrast: white-on-black){.accordion-item:has(.accordion-button:hover)::after{border-color:Highlight}}.accordion-header{color:var(--post-scheme-color-interactive-primary-enabled-fg1);font-size:var(--post-device-font-size-5);margin:0;line-height:var(--post-device-line-height-heading);font-weight:var(--post-device-font-weight-extra-black)}.accordion-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;display:flex;position:relative;width:100%;align-items:center;text-align:start;gap:var(--post-device-spacing-gap-7);padding:calc(var(--post-device-spacing-padding-19) + var(--post-device-border-width-default)) calc(var(--post-device-spacing-padding-5) + var(--post-device-border-width-default));cursor:pointer}@media (forced-colors: active),(-ms-high-contrast: active),(-ms-high-contrast: white-on-black){.accordion-button{background-color:ButtonFace !important}.accordion-button:hover{background-color:Highlight !important}}.accordion-button::before{display:block;position:absolute;content:\"\";inset:0;inset-block-end:auto;border-block-start-width:var(--post-device-border-width-default);border-block-start-style:var(--post-core-border-style-solid);border-block-start-color:var(--post-scheme-color-interactive-primary-enabled-stroke)}.accordion-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}.accordion-button:is(:focus-visible,:has(:focus-visible),.pretend-focus){outline-style:var(--post-core-border-style-solid) !important;border-radius:var(--post-device-border-radius-focus)}@media (forced-colors: active),(-ms-high-contrast: active),(-ms-high-contrast: white-on-black){.accordion-button:is(:focus-visible,:has(:focus-visible),.pretend-focus){outline-color:Highlight !important}}@supports not selector(:has(:focus-visible)){.accordion-button:is(:focus-visible,:focus-within,.pretend-focus){outline-style:var(--post-core-border-style-solid) !important;border-radius:var(--post-device-border-radius-focus)}@media (forced-colors: active),(-ms-high-contrast: active),(-ms-high-contrast: white-on-black){.accordion-button:is(:focus-visible,:focus-within,.pretend-focus){outline-color:Highlight !important}}}.accordion-button slot::slotted(span[slot=header]){flex-grow:1}.accordion-button post-icon{flex:none;width:var(--post-core-dimension-24);aspect-ratio:1;transition:transform 250ms cubic-bezier(0.4, 0, 0.2, 1)}.accordion-button.collapsed{padding-block-start:calc(var(--post-device-spacing-padding-19) + var(--post-device-border-width-default));padding-block-end:calc(var(--post-device-spacing-padding-19) + var(--post-device-border-width-default))}.accordion-button.collapsed post-icon{transform:rotate(-180deg)}.accordion-button:hover{color:var(--post-scheme-color-interactive-primary-hover-fg1)}.accordion-button>::slotted(.text-truncate){display:block}@media (forced-colors: active),(-ms-high-contrast: active),(-ms-high-contrast: white-on-black){.accordion-button:hover,.accordion-button:focus-visible{color:Highlight}}.accordion-body{padding-block-start:var(--post-device-spacing-padding-15);padding-block-end:calc(var(--post-device-spacing-padding-block-25) + var(--post-device-border-width-default));padding-inline:var(--post-device-spacing-padding-5)}.logo-container{display:none;width:var(--post-device-sizing-logo-1);aspect-ratio:1}.logo-container.has-image{display:block}.logo-container slot::slotted(img){display:block;width:100%;height:100%;object-fit:cover}.accordion-button>::slotted(:first-child),.accordion-body>::slotted(:first-child){margin-block-start:0 !important}.accordion-button>::slotted(:last-child),.accordion-body>::slotted(:last-child){margin-block-end:0 !important}";
13
13
 
@@ -62,7 +62,7 @@ const PostAccordionItem = /*@__PURE__*/ proxyCustomElement(class PostAccordionIt
62
62
  return (h(Host, { key: 'b98847d19894430b6f65130aebf8673a45afd1e6', id: this.id, "data-version": version }, h("div", { key: 'f26f9d3a4a1f59db23b4698b321e28e112c3eed0', part: "accordion-item", class: "accordion-item" }, h("post-collapsible-trigger", { key: '14bdacce04d67a03655f600feeaeec065e0fc198', for: `${this.id}--collapse` }, h(HeadingTag, { key: '7a07a70d172306ce37f8bd0143b21ed7ec0cab8a', class: "accordion-header", id: `${this.id}--header` }, h("button", { key: '5ad0698a62df5c4b2c0a77ff622090b20f348e9c', type: "button", class: `accordion-button${this.collapsed ? ' collapsed' : ''}`, part: "button" }, h("span", { key: '6e5fcb0c9efa8a57e05fd162c72b9c170a8210c6', class: {
63
63
  'logo-container': true,
64
64
  'has-image': !!this.slottedLogo,
65
- } }, h("slot", { key: '41a1409f723bf52de893324ce45d4e7f31eb8908', name: "logo", onSlotchange: this.onSlotLogoChange.bind(this) })), h("slot", { key: '7186adfe4a4fe67f4dbaeb7569820d0d06c18428', name: "header" }), h("post-icon", { key: 'fbfcbdc9947a8c7cf80d861aba3a77be0dff91d1', name: "2051" })))), h("post-collapsible", { key: '5de19aab5eb0134b7c3e7f43e5c2da0cb8413908', id: `${this.id}--collapse`, collapsed: this.collapsed, ref: el => (this.collapsible = el) }, h("div", { key: '5112ba8604ea177af4d88033f682c2a4cc6c4ffd', class: "accordion-body", part: "body" }, h("slot", { key: 'd70ab76842fced3f7dec812471685071e377bc61' }))))));
65
+ } }, h("slot", { key: '41a1409f723bf52de893324ce45d4e7f31eb8908', name: "logo", onSlotchange: this.onSlotLogoChange.bind(this) })), h("slot", { key: '7186adfe4a4fe67f4dbaeb7569820d0d06c18428', name: "header" }), h("post-icon", { key: 'add240b0275b083c537efb28c4a2825ac22e1b47', name: "chevrondown" })))), h("post-collapsible", { key: '4231577c41c7633327c147d2b9adcd847ffc7261', id: `${this.id}--collapse`, collapsed: this.collapsed, ref: el => (this.collapsible = el) }, h("div", { key: '3f3cea3f5468e35f658f7d143db32391fa5fe2f1', class: "accordion-body", part: "body" }, h("slot", { key: '013f6cc755a04b880d91513059e36bcc2be5f412' }))))));
66
66
  }
67
67
  get host() { return this; }
68
68
  static get watchers() { return {
@@ -1,8 +1,8 @@
1
1
  import { p as proxyCustomElement, H, h, a as Host } from './index.js';
2
- import { v as version } from './p-DimG3b3P.js';
2
+ import { v as version } from './p-kxuZ8mOU.js';
3
3
  import { a as checkEmptyOrUrl } from './p-CV7fm1rW.js';
4
4
  import './p-CJ80BZ06.js';
5
- import { d as defineCustomElement$1 } from './p-BcVKzjda.js';
5
+ import { d as defineCustomElement$1 } from './p-DnqwBx5e.js';
6
6
 
7
7
  const postBreadcrumbItemCss = ":host{display:flex;align-items:center;justify-content:start;gap:var(--post-device-spacing-gap-inline-5)}:host post-icon{box-sizing:border-box;height:var(--post-core-dimension-24);width:var(--post-core-dimension-24);padding-block:var(--post-core-dimension-4);padding-inline:var(--post-core-dimension-4)}.breadcrumb-item{white-space:nowrap;line-height:150%;padding-block:var(--post-device-spacing-padding-block-7);color:var(--post-scheme-color-interactive-primary-enabled-fg1);text-decoration:var(--post-core-text-decoration-none)}.breadcrumb-item{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}.breadcrumb-item: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){.breadcrumb-item:is(:focus-visible,:has(:focus-visible),.pretend-focus){outline-color:Highlight !important}}@supports not selector(:has(:focus-visible)){.breadcrumb-item: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){.breadcrumb-item:is(:focus-visible,:focus-within,.pretend-focus){outline-color:Highlight !important}}}.breadcrumb-item:hover{color:var(--post-scheme-color-interactive-primary-hover-fg1);text-decoration:var(--post-core-text-decoration-underline)}.breadcrumb-item:focus-visible{border-radius:var(--post-device-border-radius-focus)}@media (forced-colors: active),(-ms-high-contrast: active),(-ms-high-contrast: white-on-black){.breadcrumb-item,.breadcrumb-item:focus,.breadcrumb-item:hover{color:LinkText !important}.breadcrumb-item:visited{color:VisitedText !important}}";
8
8
 
@@ -44,7 +44,7 @@ const PostBreadcrumbItem = /*@__PURE__*/ proxyCustomElement(class PostBreadcrumb
44
44
  }
45
45
  render() {
46
46
  const BreadcrumbTag = this.validUrl ? 'a' : 'span';
47
- return (h(Host, { key: '9ccdcf67335a106fd70e1d756a941736827454c0', "data-version": version }, h("post-icon", { key: 'e0c9479626737582764a4ecd55612d3d9ee4ae21', name: "2111", class: "breadcrumb-item-icon" }), h(BreadcrumbTag, { key: '75f7b88edee2dda2907429c3c1ab55efe9e5137b', class: "breadcrumb-item", ...(this.validUrl ? { href: this.validUrl } : {}), onKeyDown: event => this.handleKeyDown(event) }, h("slot", { key: '1e59f84b6a9fd8b73372371e79fff43e44bd88c6' }))));
47
+ return (h(Host, { key: '9ccdcf67335a106fd70e1d756a941736827454c0', "data-version": version }, h("post-icon", { key: 'c2061015e34cc3c37d343abd872bd8bd3cc82615', name: "chevronright", class: "breadcrumb-item-icon" }), h(BreadcrumbTag, { key: '3e9659ac705d801699167864a06cde461bc84185', class: "breadcrumb-item", ...(this.validUrl ? { href: this.validUrl } : {}), onKeyDown: event => this.handleKeyDown(event) }, h("slot", { key: 'e86e3333db8b0636a9a9635a5f11960c7d839e3d' }))));
48
48
  }
49
49
  get host() { return this; }
50
50
  static get watchers() { return {
@@ -1,5 +1,5 @@
1
1
  import { p as proxyCustomElement, H, h, a as Host } from './index.js';
2
- import { v as version } from './p-DimG3b3P.js';
2
+ import { v as version } from './p-kxuZ8mOU.js';
3
3
  import { H as HEADING_LEVELS } from './p-r4txK0AC.js';
4
4
  import { b as checkRequiredAndOneOf } from './p-CV7fm1rW.js';
5
5
  import './p-CJ80BZ06.js';
@@ -1,7 +1,7 @@
1
1
  import { p as proxyCustomElement, H, h, a as Host } from './index.js';
2
2
  import { I as IS_BROWSER } from './p-CJ80BZ06.js';
3
3
  import { d as checkEmptyOrOneOf, e as checkEmptyOrType, c as checkRequiredAndType } from './p-CV7fm1rW.js';
4
- import { v as version } from './p-DimG3b3P.js';
4
+ import { v as version } from './p-kxuZ8mOU.js';
5
5
 
6
6
  const postIconCss = ":host{display:inline-block;width:1em;height:1em;vertical-align:-0.15em}span{display:block;width:100%;height:100%;fill:currentColor;forced-color-adjust:preserve-parent-color;background-color:currentColor;-webkit-mask-position:center center;mask-position:center center;-webkit-mask-repeat:no-repeat;mask-repeat:no-repeat;-webkit-mask-size:100%;mask-size:100%}:host([flip-h]:not([flip-h=false])){scale:-1 1}:host([flip-v]:not([flip-v=false])){scale:1 -1}:host([flip-h][flip-v]:not([flip-h=false],[flip-v=false])){scale:-1}:host([animation]){transform-origin:center}:host([animation=cylon]){animation:icon-animation-cylon .75s ease-in-out infinite alternate}:host([animation=cylon-vertical]){animation:icon-animation-cylon-vertical .75s ease-in-out infinite alternate}:host([animation=spin]){animation:icon-animation-spin 2s linear infinite normal}:host([animation=spin-reverse]){animation:icon-animation-spin 2s linear infinite reverse}:host([animation=fade]){animation:icon-animation-fade .75s ease-in-out infinite alternate}:host([animation=throb]){animation:icon-animation-throb .75s ease-in-out infinite alternate}@keyframes icon-animation-cylon{from{transform:translateX(-25%)}to{transform:translateX(25%)}}@keyframes icon-animation-cylon-vertical{from{transform:translateY(25%)}to{transform:translateY(-25%)}}@keyframes icon-animation-fade{from{opacity:.1}to{opacity:1}}@keyframes icon-animation-spin{from{transform:rotate(0deg)}to{transform:rotate(359deg)}}@keyframes icon-animation-throb{from{opacity:.5;transform:scale(0.5)}to{opacity:1;transform:scale(1)}}";
7
7
 
@@ -1,7 +1,7 @@
1
1
  import { p as proxyCustomElement, H, c as createEvent, h, a as Host } from './index.js';
2
- import { a as PLACEMENT_TYPES, d as defineCustomElement$1 } from './p-CDsgZHvX.js';
3
- import { v as version } from './p-DimG3b3P.js';
4
- import { g as getFocusableChildren } from './p-C35MCWIp.js';
2
+ import { a as PLACEMENT_TYPES, d as defineCustomElement$1 } from './p-B35HsBxh.js';
3
+ import { v as version } from './p-kxuZ8mOU.js';
4
+ import { g as getFocusableChildren } from './p-BVXiQdHq.js';
5
5
  import { d as checkEmptyOrOneOf, c as checkRequiredAndType } from './p-CV7fm1rW.js';
6
6
  import './p-CJ80BZ06.js';
7
7
  import { E as EventFrom } from './p-CzIKqBrS.js';
@@ -58,35 +58,32 @@ const PostMenu = /*@__PURE__*/ proxyCustomElement(class PostMenu extends H {
58
58
  this.controlKeyDownHandler(e);
59
59
  }
60
60
  };
61
- this.handlePostToggle = (event) => {
61
+ this.handlePostShown = (event) => {
62
+ // Only for the first open
63
+ if (event.detail.first) {
64
+ // Add "menu" and "menuitem" aria roles and aria-label
65
+ this.host.setAttribute('role', 'menu');
66
+ const menuItems = this.getSlottedItems();
67
+ for (const item of menuItems) {
68
+ item.setAttribute('role', 'menuitem');
69
+ }
70
+ if (this.label)
71
+ this.host.setAttribute('aria-label', this.label);
72
+ }
73
+ };
74
+ this.handlePostToggled = (event) => {
62
75
  this.isVisible = event.detail.isOpen;
63
76
  this.toggleMenu.emit(this.isVisible);
64
- requestAnimationFrame(() => {
65
- if (this.isVisible) {
66
- this.lastFocusedElement = this.root?.activeElement;
67
- const menuItems = this.getSlottedItems();
68
- if (event.detail.first) {
69
- if (menuItems.length > 0) {
70
- // Add role="menu" to the popovercontainer
71
- this.host.setAttribute('role', 'menu');
72
- // Add role="menuitem" to the focusable elements
73
- menuItems.forEach(item => {
74
- item.setAttribute('role', 'menuitem');
75
- });
76
- // Add aria-label to the menu
77
- if (this.label)
78
- this.host.setAttribute('aria-label', this.label);
79
- }
80
- }
77
+ if (this.isVisible) {
78
+ this.lastFocusedElement = this.root?.activeElement;
79
+ const menuItems = this.getSlottedItems();
80
+ if (menuItems.length > 0) {
81
81
  menuItems[0].focus();
82
82
  }
83
- else if (this.lastFocusedElement) {
84
- setTimeout(() => {
85
- // This timeout is added for NVDA to announce the menu as collapsed
86
- this.lastFocusedElement.focus();
87
- }, 0);
88
- }
89
- });
83
+ }
84
+ else if (this.lastFocusedElement) {
85
+ this.lastFocusedElement.focus();
86
+ }
90
87
  };
91
88
  this.handleClick = (e) => {
92
89
  const target = e.target;
@@ -109,14 +106,10 @@ const PostMenu = /*@__PURE__*/ proxyCustomElement(class PostMenu extends H {
109
106
  disconnectedCallback() {
110
107
  this.host.removeEventListener('keydown', this.handleKeyDown);
111
108
  this.host.removeEventListener('click', this.handleClick);
112
- this.popoverRef?.removeEventListener('postToggle', this.handlePostToggle);
113
109
  }
114
110
  componentDidLoad() {
115
111
  this.validatePlacement();
116
112
  this.validateLabel();
117
- if (this.popoverRef) {
118
- this.popoverRef.addEventListener('postToggle', this.handlePostToggle);
119
- }
120
113
  }
121
114
  /**
122
115
  * Toggles the menu visibility based on its current state.
@@ -200,7 +193,7 @@ const PostMenu = /*@__PURE__*/ proxyCustomElement(class PostMenu extends H {
200
193
  .flatMap(el => Array.from(getFocusableChildren(el))));
201
194
  }
202
195
  render() {
203
- return (h(Host, { key: 'd98d7b0a1c607732ab12c94f8d872408a053c19b', "data-version": version }, h("post-popovercontainer", { key: '669e6062e5ff0dfac0d311cc8fdd0bb51735aac1', placement: this.placement, ref: e => (this.popoverRef = e) }, h("div", { key: '6bc1abb7b764e9e6985a839904ed5575ea20a519', part: "menu" }, h("slot", { key: '6b8670f2e80ed93761797b9161ddf54bb88f73ec', name: "header" }), h("slot", { key: '971f39ae63f22a503e36aeecb67575304ce14248' })))));
196
+ return (h(Host, { key: '092a180331d50cfe701ad440569e0e6bd4bcd0c8', "data-version": version }, h("post-popovercontainer", { key: '96f33df1a47d2fb1f6f862a7d7f97def5fd8b642', onPostShow: this.handlePostShown, onPostToggle: this.handlePostToggled, placement: this.placement, ref: e => (this.popoverRef = e) }, h("div", { key: '5d23d1059dd1cf68ac817acc8227129267a3c5a4', part: "menu" }, h("slot", { key: '020fbf8912393d85cd5a6fd9f65fdf264f2ba6f6', name: "header" }), h("slot", { key: '07cd9cb978ec85dd7fbbaed527520b97484e2030' })))));
204
197
  }
205
198
  get host() { return this; }
206
199
  static get watchers() { return {
@@ -221,7 +214,10 @@ const PostMenu = /*@__PURE__*/ proxyCustomElement(class PostMenu extends H {
221
214
  }]);
222
215
  __decorate([
223
216
  EventFrom('post-popovercontainer')
224
- ], PostMenu.prototype, "handlePostToggle", void 0);
217
+ ], PostMenu.prototype, "handlePostShown", void 0);
218
+ __decorate([
219
+ EventFrom('post-popovercontainer')
220
+ ], PostMenu.prototype, "handlePostToggled", void 0);
225
221
  function defineCustomElement() {
226
222
  if (typeof customElements === "undefined") {
227
223
  return;