@swisspost/design-system-components 10.4.0 → 10.6.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +2 -2
- package/dist/cjs/breakpoints-Kruvy8Dm.js +47 -0
- package/dist/cjs/{create-validator-decorator-BtgLWaMJ.js → create-validator-decorator-Cy5yN6u9.js} +1 -1
- package/dist/cjs/{event-from-CwMw19f8.js → event-from-CTcQxB9-.js} +19 -13
- package/dist/cjs/{index-CW10QvjR.js → index-B3PXzvDk.js} +1 -1
- package/dist/cjs/{breakpoints-B0Olgvgc.js → index-CggFmZ8n.js} +0 -42
- package/dist/cjs/loader.cjs.js +2 -2
- package/dist/cjs/{one-of-vJeW7S4_.js → one-of-CRFrfihj.js} +1 -1
- package/dist/cjs/{package-CL8OSAS4.js → package-pKyFPwiA.js} +1 -1
- package/dist/cjs/{pattern-Zmn3wpyp.js → pattern-D329DFcf.js} +1 -1
- package/dist/cjs/post-accordion_2.cjs.entry.js +7 -7
- package/dist/cjs/post-autocomplete.cjs.entry.js +70 -55
- package/dist/cjs/post-avatar.cjs.entry.js +7 -7
- package/dist/cjs/post-back-to-top.cjs.entry.js +25 -13
- package/dist/cjs/post-banner.cjs.entry.js +6 -13
- package/dist/cjs/post-breadcrumb-item.cjs.entry.js +42 -12
- package/dist/cjs/post-breadcrumbs.cjs.entry.js +222 -71
- package/dist/cjs/post-closebutton_14.cjs.entry.js +431 -233
- package/dist/cjs/post-collapsible_2.cjs.entry.js +9 -9
- package/dist/cjs/post-components.cjs.js +2 -2
- package/dist/cjs/post-date-picker.cjs.entry.js +18 -16
- package/dist/cjs/post-footer.cjs.entry.js +8 -8
- package/dist/cjs/post-linkarea.cjs.entry.js +3 -3
- package/dist/cjs/post-listbox-option.cjs.entry.js +4 -4
- package/dist/cjs/post-listbox.cjs.entry.js +6 -6
- package/dist/cjs/post-number-input.cjs.entry.js +7 -6
- package/dist/cjs/post-pagination.cjs.entry.js +6 -6
- package/dist/cjs/post-popover-trigger.cjs.entry.js +8 -8
- package/dist/cjs/post-popover.cjs.entry.js +11 -11
- package/dist/cjs/post-progressbar.cjs.entry.js +5 -5
- package/dist/cjs/post-rating.cjs.entry.js +7 -7
- package/dist/cjs/post-side-navigation-trigger.cjs.entry.js +8 -8
- package/dist/cjs/post-side-navigation.cjs.entry.js +9 -9
- package/dist/cjs/post-stepper-item.cjs.entry.js +3 -3
- package/dist/cjs/post-stepper.cjs.entry.js +8 -8
- package/dist/cjs/post-tab-item.cjs.entry.js +7 -7
- package/dist/cjs/post-tab-panel.cjs.entry.js +7 -7
- package/dist/cjs/post-tabs.cjs.entry.js +9 -9
- package/dist/cjs/post-tooltip-trigger.cjs.entry.js +8 -8
- package/dist/cjs/post-tooltip.cjs.entry.js +6 -6
- package/dist/cjs/{required-DRnPokVn.js → required-DhAEd0c7.js} +1 -1
- package/dist/cjs/{type-CNcU_-B2.js → type-2Ma9dvHs.js} +1 -1
- package/dist/cjs/{url-DgJ3lXQz.js → url-DePscsTj.js} +1 -1
- package/dist/collection/components/post-autocomplete/post-autocomplete.js +65 -50
- package/dist/collection/components/post-back-to-top/post-back-to-top.js +19 -7
- package/dist/collection/components/post-banner/post-banner.js +2 -17
- package/dist/collection/components/post-breadcrumb-item/post-breadcrumb-item.css +1 -1
- package/dist/collection/components/post-breadcrumb-item/post-breadcrumb-item.js +59 -4
- package/dist/collection/components/post-breadcrumbs/post-breadcrumbs.css +1 -1
- package/dist/collection/components/post-breadcrumbs/post-breadcrumbs.js +249 -71
- package/dist/collection/components/post-closebutton/post-closebutton.js +7 -8
- package/dist/collection/components/post-collapsible/post-collapsible.js +1 -1
- package/dist/collection/components/post-collapsible-trigger/post-collapsible-trigger.js +2 -2
- package/dist/collection/components/post-date-picker/native-mask-element.js +1 -1
- package/dist/collection/components/post-date-picker/post-date-picker.js +11 -9
- package/dist/collection/components/post-footer/post-footer.js +2 -2
- package/dist/collection/components/post-header/post-header.js +2 -2
- package/dist/collection/components/post-icon/post-icon.js +1 -1
- package/dist/collection/components/post-language-menu/post-language-menu.js +1 -1
- package/dist/collection/components/post-linkarea/post-linkarea.js +1 -1
- package/dist/collection/components/post-listbox/post-listbox.js +2 -2
- package/dist/collection/components/post-listbox-option/post-listbox-option.js +2 -2
- package/dist/collection/components/post-logo/post-logo.js +1 -1
- package/dist/collection/components/post-mainnavigation/post-mainnavigation.js +1 -1
- package/dist/collection/components/post-megadropdown/post-megadropdown.js +3 -3
- package/dist/collection/components/post-megadropdown-trigger/post-megadropdown-trigger.js +1 -1
- package/dist/collection/components/post-menu/post-menu.js +23 -8
- package/dist/collection/components/post-menu-item/post-menu-item.css +1 -1
- package/dist/collection/components/post-menu-trigger/post-menu-trigger.js +1 -1
- package/dist/collection/components/post-number-input/post-number-input.js +2 -2
- package/dist/collection/components/post-popover/post-popover.css +1 -1
- package/dist/collection/components/post-popover/post-popover.js +4 -4
- package/dist/collection/components/post-popover-trigger/post-popover-trigger.js +3 -3
- package/dist/collection/components/post-popovercontainer/post-popovercontainer.js +71 -43
- package/dist/collection/components/post-progressbar/post-progressbar.js +1 -1
- package/dist/collection/components/post-rating/post-rating.js +1 -1
- package/dist/collection/components/post-side-navigation/post-side-navigation.css +1 -1
- package/dist/collection/components/post-side-navigation/post-side-navigation.js +1 -1
- package/dist/collection/components/post-side-navigation-trigger/post-side-navigation-trigger.js +1 -1
- package/dist/collection/components/post-stepper/post-stepper.js +1 -1
- package/dist/collection/components/post-stepper-item/post-stepper-item.js +1 -1
- package/dist/collection/components/post-tab-item/post-tab-item.js +2 -2
- package/dist/collection/components/post-tab-panel/post-tab-panel.js +1 -1
- package/dist/collection/components/post-tabs/post-tabs.css +1 -1
- package/dist/collection/components/post-tabs/post-tabs.js +2 -2
- package/dist/collection/components/post-togglebutton/post-togglebutton.js +1 -1
- package/dist/collection/components/post-tooltip/post-tooltip.js +2 -2
- package/dist/collection/components/post-tooltip-trigger/post-tooltip-trigger.js +2 -2
- package/dist/collection/utils/breakpoints.js +11 -9
- package/dist/collection/utils/closable-target.js +38 -0
- package/dist/collection/utils/event-from.js +18 -13
- package/dist/collection/utils/floating-ui.js +72 -0
- package/dist/collection/utils/index.js +1 -0
- package/dist/components/breakpoints.js +1 -1
- package/dist/components/event-from.js +1 -1
- package/dist/components/index2.js +1 -0
- package/dist/components/package.js +1 -1
- package/dist/components/post-autocomplete.js +1 -1
- package/dist/components/post-back-to-top.js +1 -1
- package/dist/components/post-banner.js +1 -1
- package/dist/components/post-breadcrumb-item.js +1 -1
- package/dist/components/post-breadcrumbs.js +1 -1
- package/dist/components/post-closebutton2.js +1 -1
- package/dist/components/post-collapsible-trigger2.js +1 -1
- package/dist/components/post-collapsible2.js +1 -1
- package/dist/components/post-date-picker.js +1 -1
- package/dist/components/post-footer.js +1 -1
- package/dist/components/post-header.js +1 -1
- package/dist/components/post-icon2.js +1 -1
- package/dist/components/post-linkarea.js +1 -1
- package/dist/components/post-listbox-option.js +1 -1
- package/dist/components/post-listbox.js +1 -1
- package/dist/components/post-logo.js +1 -1
- package/dist/components/post-mainnavigation.js +1 -1
- package/dist/components/post-megadropdown-trigger.js +1 -1
- package/dist/components/post-megadropdown.js +1 -1
- package/dist/components/post-menu-item2.js +1 -1
- package/dist/components/post-menu-trigger2.js +1 -1
- package/dist/components/post-menu2.js +1 -1
- package/dist/components/post-number-input.js +1 -1
- package/dist/components/post-popover-trigger.js +1 -1
- package/dist/components/post-popover.js +1 -1
- package/dist/components/post-popovercontainer2.js +1 -1
- package/dist/components/post-progressbar.js +1 -1
- package/dist/components/post-rating.js +1 -1
- package/dist/components/post-side-navigation-trigger.js +1 -1
- package/dist/components/post-side-navigation.js +1 -1
- package/dist/components/post-stepper-item.js +1 -1
- package/dist/components/post-stepper.js +1 -1
- package/dist/components/post-tab-item.js +1 -1
- package/dist/components/post-tab-panel.js +1 -1
- package/dist/components/post-tabs.js +1 -1
- package/dist/components/post-togglebutton2.js +1 -1
- package/dist/components/post-tooltip-trigger.js +1 -1
- package/dist/components/post-tooltip.js +1 -1
- package/dist/components/react/index.js +1 -1
- package/dist/components/react/{p-Bwko4UKh.js → p-3RU9XwVO.js} +1 -1
- package/dist/components/react/p-5LuCes5o.js +1 -0
- package/dist/components/react/p-B1TcktiB.js +1 -0
- package/dist/components/react/{p-4wtxqxXu.js → p-B2jsM_Ov.js} +1 -1
- package/dist/components/react/p-BEcxHjuM.js +1 -0
- package/dist/components/react/p-BN2dfUQ0.js +1 -0
- package/dist/components/react/p-BPUhha1U.js +1 -0
- package/dist/{post-components/p-C-lLRsYC.js → components/react/p-BdLRXQqY.js} +1 -1
- package/dist/components/react/{p-BSb74xQy.js → p-Bnb_TyDh.js} +1 -1
- package/dist/components/react/p-CVVXnYLU.js +1 -0
- package/dist/components/react/{p-9RCG8BWM.js → p-CcDLIogT.js} +1 -1
- package/dist/components/react/{p-CSmrQ__L.js → p-CdggfEzz.js} +1 -1
- package/dist/components/react/p-CnN4Jdtv.js +1 -0
- package/dist/components/react/{p-D-imniYA.js → p-CzsG0uCA.js} +1 -1
- package/dist/components/react/p-DeO0rZ1T.js +1 -0
- package/dist/components/react/p-DffT6evQ.js +1 -0
- package/dist/components/react/p-T8T3po4z.js +1 -0
- package/dist/components/react/p-WXzzOdnl.js +1 -0
- package/dist/components/react/p-bR8vy6-s.js +1 -0
- package/dist/components/react/{p-B1kYo1K9.js → p-m1-sOx5T.js} +1 -1
- package/dist/components/react/post-accordion-item.js +1 -1
- package/dist/components/react/post-accordion.js +1 -1
- package/dist/components/react/post-autocomplete.js +1 -1
- package/dist/components/react/post-avatar.js +1 -1
- package/dist/components/react/post-back-to-top.js +1 -1
- package/dist/components/react/post-banner.js +1 -1
- package/dist/components/react/post-breadcrumb-item.js +1 -1
- package/dist/components/react/post-breadcrumbs.js +1 -1
- package/dist/components/react/post-closebutton.js +1 -1
- package/dist/components/react/post-collapsible-trigger.js +1 -1
- package/dist/components/react/post-collapsible.js +1 -1
- package/dist/components/react/post-date-picker.js +1 -1
- package/dist/components/react/post-footer.js +1 -1
- package/dist/components/react/post-header.js +1 -1
- package/dist/components/react/post-icon.js +1 -1
- package/dist/components/react/post-language-menu-item.js +1 -1
- package/dist/components/react/post-language-menu.js +1 -1
- package/dist/components/react/post-linkarea.js +1 -1
- package/dist/components/react/post-listbox-option.js +1 -1
- package/dist/components/react/post-listbox.js +1 -1
- package/dist/components/react/post-logo.js +1 -1
- package/dist/components/react/post-mainnavigation.js +1 -1
- package/dist/components/react/post-megadropdown-trigger.js +1 -1
- package/dist/components/react/post-megadropdown.js +1 -1
- package/dist/components/react/post-menu-item.js +1 -1
- package/dist/components/react/post-menu-trigger.js +1 -1
- package/dist/components/react/post-menu.js +1 -1
- package/dist/components/react/post-number-input.js +1 -1
- package/dist/components/react/post-pagination.js +1 -1
- package/dist/components/react/post-popover-trigger.js +1 -1
- package/dist/components/react/post-popover.js +1 -1
- package/dist/components/react/post-popovercontainer.js +1 -1
- package/dist/components/react/post-progressbar.js +1 -1
- package/dist/components/react/post-rating.js +1 -1
- package/dist/components/react/post-side-navigation-trigger.js +1 -1
- package/dist/components/react/post-side-navigation.js +1 -1
- package/dist/components/react/post-stepper-item.js +1 -1
- package/dist/components/react/post-stepper.js +1 -1
- package/dist/components/react/post-tab-item.js +1 -1
- package/dist/components/react/post-tab-panel.js +1 -1
- package/dist/components/react/post-tabs.js +1 -1
- package/dist/components/react/post-togglebutton.js +1 -1
- package/dist/components/react/post-tooltip-trigger.js +1 -1
- package/dist/components/react/post-tooltip.js +1 -1
- package/dist/docs.json +118 -27
- package/dist/esm/breakpoints-I1j7a0bW.js +45 -0
- package/dist/esm/{create-validator-decorator-CNUaQboh.js → create-validator-decorator-C2XlYkNB.js} +1 -1
- package/dist/esm/{event-from-rEfV4v4a.js → event-from-BEcxHjuM.js} +19 -14
- package/dist/esm/{index-sn7oKSwC.js → index-BjziJWh2.js} +1 -1
- package/dist/esm/{breakpoints-BQ3HlJPr.js → index-bR8vy6-s.js} +1 -42
- package/dist/esm/loader.js +3 -3
- package/dist/esm/{one-of-C6Ironyj.js → one-of-Do1iao-k.js} +1 -1
- package/dist/esm/{package-tTf1w3A9.js → package-T8T3po4z.js} +1 -1
- package/dist/esm/{pattern-57oD--q3.js → pattern-BZDucOTq.js} +1 -1
- package/dist/esm/post-accordion_2.entry.js +7 -7
- package/dist/esm/post-autocomplete.entry.js +70 -55
- package/dist/esm/post-avatar.entry.js +7 -7
- package/dist/esm/post-back-to-top.entry.js +25 -13
- package/dist/esm/post-banner.entry.js +6 -13
- package/dist/esm/post-breadcrumb-item.entry.js +42 -12
- package/dist/esm/post-breadcrumbs.entry.js +222 -71
- package/dist/esm/post-closebutton_14.entry.js +430 -232
- package/dist/esm/post-collapsible_2.entry.js +9 -9
- package/dist/esm/post-components.js +3 -3
- package/dist/esm/post-date-picker.entry.js +18 -16
- package/dist/esm/post-footer.entry.js +8 -8
- package/dist/esm/post-linkarea.entry.js +3 -3
- package/dist/esm/post-listbox-option.entry.js +4 -4
- package/dist/esm/post-listbox.entry.js +6 -6
- package/dist/esm/post-number-input.entry.js +6 -5
- package/dist/esm/post-pagination.entry.js +6 -6
- package/dist/esm/post-popover-trigger.entry.js +8 -8
- package/dist/esm/post-popover.entry.js +11 -11
- package/dist/esm/post-progressbar.entry.js +5 -5
- package/dist/esm/post-rating.entry.js +7 -7
- package/dist/esm/post-side-navigation-trigger.entry.js +8 -8
- package/dist/esm/post-side-navigation.entry.js +9 -9
- package/dist/esm/post-stepper-item.entry.js +3 -3
- package/dist/esm/post-stepper.entry.js +8 -8
- package/dist/esm/post-tab-item.entry.js +7 -7
- package/dist/esm/post-tab-panel.entry.js +7 -7
- package/dist/esm/post-tabs.entry.js +9 -9
- package/dist/esm/post-tooltip-trigger.entry.js +8 -8
- package/dist/esm/post-tooltip.entry.js +6 -6
- package/dist/esm/{required-D2rl2XZJ.js → required-B0X7uy13.js} +1 -1
- package/dist/esm/{type-CGynDrfh.js → type-CF1dOg6D.js} +1 -1
- package/dist/esm/{url-1wyUfUv-.js → url-BL7d6iWZ.js} +1 -1
- package/dist/post-components/{p-167191e5.entry.js → p-0e922531.entry.js} +1 -1
- package/dist/post-components/{p-cf6eacab.entry.js → p-1ec27142.entry.js} +1 -1
- package/dist/post-components/{p-da217dbc.entry.js → p-2005eb98.entry.js} +1 -1
- package/dist/post-components/p-2cff5b3a.entry.js +1 -0
- package/dist/post-components/p-53bd2128.entry.js +1 -0
- package/dist/post-components/{p-212c71e4.entry.js → p-59b30e90.entry.js} +1 -1
- package/dist/post-components/{p-beed9922.entry.js → p-60550edb.entry.js} +1 -1
- package/dist/post-components/p-655ded00.entry.js +1 -0
- package/dist/post-components/p-76cc3c9a.entry.js +1 -0
- package/dist/post-components/{p-3149d866.entry.js → p-8012cc3b.entry.js} +1 -1
- package/dist/post-components/p-819c93de.entry.js +1 -0
- package/dist/post-components/p-840acd3c.entry.js +1 -0
- package/dist/post-components/p-87b1034f.entry.js +1 -0
- package/dist/post-components/p-88f754e9.entry.js +1 -0
- package/dist/post-components/p-9S_5_Zh8.js +1 -0
- package/dist/post-components/p-BEcxHjuM.js +1 -0
- package/dist/post-components/p-BYfu3J2D.js +1 -0
- package/dist/post-components/p-BjziJWh2.js +2 -0
- package/dist/post-components/p-BoYe-VVx.js +1 -0
- package/dist/post-components/p-CbbADNiv.js +1 -0
- package/dist/post-components/p-DgnQe03V.js +1 -0
- package/dist/post-components/p-DlKbBdcP.js +1 -0
- package/dist/post-components/p-I1j7a0bW.js +1 -0
- package/dist/post-components/p-T8T3po4z.js +1 -0
- package/dist/post-components/{p-a01ea634.entry.js → p-a32d3050.entry.js} +1 -1
- package/dist/post-components/p-b4229624.entry.js +1 -0
- package/dist/post-components/{p-96bf6b01.entry.js → p-b9faa76b.entry.js} +1 -1
- package/dist/post-components/p-bR8vy6-s.js +1 -0
- package/dist/post-components/{p-70fbe469.entry.js → p-ba1b4ba0.entry.js} +1 -1
- package/dist/post-components/p-c0ae13b7.entry.js +1 -0
- package/dist/post-components/p-c9dcdebb.entry.js +1 -0
- package/dist/post-components/p-ccf8020b.entry.js +1 -0
- package/dist/post-components/p-cd68d3a2.entry.js +1 -0
- package/dist/post-components/p-cdc7b8d3.entry.js +1 -0
- package/dist/post-components/{p-1cf5bc67.entry.js → p-d7c9a969.entry.js} +1 -1
- package/dist/post-components/p-db11f781.entry.js +1 -0
- package/dist/post-components/{p-0323b0f3.entry.js → p-dc285087.entry.js} +1 -1
- package/dist/post-components/{p-e8d9723e.entry.js → p-de6f1816.entry.js} +1 -1
- package/dist/post-components/p-dec8bd99.entry.js +1 -0
- package/dist/post-components/p-f9a8ee94.entry.js +1 -0
- package/dist/post-components/post-components.css +2 -2
- package/dist/post-components/post-components.esm.js +1 -1
- package/dist/types/components/post-autocomplete/post-autocomplete.d.ts +18 -6
- package/dist/types/components/post-back-to-top/post-back-to-top.d.ts +2 -1
- package/dist/types/components/post-banner/post-banner.d.ts +0 -1
- package/dist/types/components/post-breadcrumb-item/post-breadcrumb-item.d.ts +12 -1
- package/dist/types/components/post-breadcrumbs/post-breadcrumbs.d.ts +54 -14
- package/dist/types/components/post-closebutton/post-closebutton.d.ts +1 -1
- package/dist/types/components/post-menu/post-menu.d.ts +1 -0
- package/dist/types/components/post-popovercontainer/post-popovercontainer.d.ts +8 -5
- package/dist/types/components.d.ts +38 -7
- package/dist/types/utils/breakpoints.d.ts +1 -0
- package/dist/types/utils/closable-target.d.ts +5 -0
- package/dist/types/utils/event-from.d.ts +8 -0
- package/dist/types/utils/floating-ui.d.ts +12 -0
- package/dist/types/utils/index.d.ts +1 -0
- package/hydrate/index.js +1085 -665
- package/hydrate/index.mjs +1085 -665
- package/package.json +31 -22
- package/dist/components/react/p-BXqGI600.js +0 -1
- package/dist/components/react/p-B_WnO-QF.js +0 -1
- package/dist/components/react/p-BaB8wJvk.js +0 -1
- package/dist/components/react/p-Bji_4dfL.js +0 -1
- package/dist/components/react/p-CX2E_IXB.js +0 -1
- package/dist/components/react/p-CwmQwirr.js +0 -1
- package/dist/components/react/p-D17tCsFk.js +0 -1
- package/dist/components/react/p-DD1c_IgL.js +0 -1
- package/dist/components/react/p-Df31eVdi.js +0 -1
- package/dist/components/react/p-I0dqoE80.js +0 -1
- package/dist/components/react/p-rEfV4v4a.js +0 -1
- package/dist/components/react/p-tTf1w3A9.js +0 -1
- package/dist/post-components/p-06ddd73b.entry.js +0 -1
- package/dist/post-components/p-090e52db.entry.js +0 -1
- package/dist/post-components/p-292a9784.entry.js +0 -1
- package/dist/post-components/p-2de6fe62.entry.js +0 -1
- package/dist/post-components/p-39ff8127.entry.js +0 -1
- package/dist/post-components/p-3a968b19.entry.js +0 -1
- package/dist/post-components/p-472_tiaS.js +0 -1
- package/dist/post-components/p-58422de1.entry.js +0 -1
- package/dist/post-components/p-5873a90c.entry.js +0 -1
- package/dist/post-components/p-986fa1c1.entry.js +0 -1
- package/dist/post-components/p-BQ3HlJPr.js +0 -1
- package/dist/post-components/p-B_FOhVrp.js +0 -1
- package/dist/post-components/p-CeNqFJV7.js +0 -1
- package/dist/post-components/p-DYDdaLz-.js +0 -1
- package/dist/post-components/p-DoNhJ2D7.js +0 -1
- package/dist/post-components/p-b1d2384a.entry.js +0 -1
- package/dist/post-components/p-b535fc10.entry.js +0 -1
- package/dist/post-components/p-b99e6621.entry.js +0 -1
- package/dist/post-components/p-bf83a3fb.entry.js +0 -1
- package/dist/post-components/p-c46bc56f.entry.js +0 -1
- package/dist/post-components/p-ce8132a9.entry.js +0 -1
- package/dist/post-components/p-d72e830b.entry.js +0 -1
- package/dist/post-components/p-e08d26f4.entry.js +0 -1
- package/dist/post-components/p-rEfV4v4a.js +0 -1
- package/dist/post-components/p-sn7oKSwC.js +0 -2
- package/dist/post-components/p-tTf1w3A9.js +0 -1
|
@@ -1,14 +1,15 @@
|
|
|
1
|
-
import { r as registerInstance, h, H as Host, a as getElement } from './index-
|
|
2
|
-
import
|
|
1
|
+
import { r as registerInstance, h, H as Host, a as getElement } from './index-BjziJWh2.js';
|
|
2
|
+
import './breakpoints-I1j7a0bW.js';
|
|
3
3
|
import { c as componentOnReady } from './component-on-ready-lpWRZjJp.js';
|
|
4
4
|
import { n as nanoid } from './nanoid-8LXe8Zt_.js';
|
|
5
|
-
import { v as version } from './package-
|
|
6
|
-
import {
|
|
7
|
-
import {
|
|
8
|
-
import {
|
|
9
|
-
import './
|
|
5
|
+
import { v as version } from './package-T8T3po4z.js';
|
|
6
|
+
import { t as throttle } from './index-bR8vy6-s.js';
|
|
7
|
+
import { R as Required } from './required-B0X7uy13.js';
|
|
8
|
+
import { U as Url } from './url-BL7d6iWZ.js';
|
|
9
|
+
import { T as Type } from './type-CF1dOg6D.js';
|
|
10
|
+
import './create-validator-decorator-C2XlYkNB.js';
|
|
10
11
|
|
|
11
|
-
const postBreadcrumbsCss = () => `:host{display:block;position:relative}nav{max-width:100%}nav.invisible{
|
|
12
|
+
const postBreadcrumbsCss = () => `:host{display:block;position:relative}nav{max-width:100%}nav.invisible{overflow:hidden;visibility:hidden;position:absolute;inset:0}nav.loading>div>:not(.home){display:none}[role=list]{display:flex;align-items:flex-start;gap:var(--post-device-spacing-gap-inline-4)}[role=list]>.menu:first-child::before{content:none}.breadcrumb-item{display:flex;align-items:flex-start;padding-block:var(--post-device-spacing-padding-block-6);gap:var(--post-device-spacing-gap-inline-5)}.breadcrumb-item :is(button,a){display:inline-flex;position:relative;align-items:center;justify-content:center;max-width:100%;overflow:hidden;transition:opacity 250ms,border-color 250ms,background-color 250ms,color 250ms;border-width:var(--post-device-border-width-default);border-style:solid;border-color:rgba(0,0,0,0);border-radius:var(--post-device-border-radius-round);background-color:rgba(0,0,0,0);box-shadow:none;font-family:inherit;font-size:var(--post-device-font-size-6);font-weight:var(--post-device-font-weight-bold);text-decoration:none;white-space:nowrap;cursor:pointer;font:inherit;padding:unset;border:unset;border-radius:var(--post-device-border-radius-focus);color:var(--post-scheme-color-interactive-primary-enabled-fg1);text-decoration:var(--post-core-text-decoration-none)}.breadcrumb-item :is(button,a):not(:disabled):hover{text-decoration:none}.breadcrumb-item :is(button,a):disabled{border-style:var(--post-core-border-style-dash);cursor:unset}.breadcrumb-item :is(button,a){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(button,a):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(button,a):is(:focus-visible,:has(:focus-visible),.pretend-focus){outline-color:Highlight !important}}@supports not selector(:has(:focus-visible)){.breadcrumb-item :is(button,a):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(button,a):is(:focus-visible,:focus-within,.pretend-focus){outline-color:Highlight !important}}}@media (forced-colors: active),(-ms-high-contrast: active),(-ms-high-contrast: white-on-black){.breadcrumb-item :is(button,a){border-width:1px !important;transition:none}.breadcrumb-item :is(button,a):is(button){background-color:ButtonFace !important;border-color:ButtonBorder !important}}.breadcrumb-item :is(button,a):hover{color:var(--post-scheme-color-interactive-primary-hover-fg1);text-decoration:var(--post-core-text-decoration-underline)}.breadcrumb-item::before{mask-image:var(--post-icon-chevronright);background-color:currentColor;flex:0 0 auto;content:"";display:block;height:var(--post-device-sizing-interactive-icon-size4);width:var(--post-device-sizing-interactive-icon-size4);margin-block:calc(var(--post-device-spacing-padding-35) - 1*var(--post-device-spacing-padding-block-6));margin-inline:var(--post-core-dimension-4)}:root,:host{--post-icon-chevronright:url("data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciPjxkZWZzPjxzeW1ib2wgaWQ9ImktY2hldnJvbnJpZ2h0Ij48c3ltYm9sIGlkPSJzMTYiIHZpZXdCb3g9IjAgMCAxNiAxNiI+PHBhdGggZD0iTTUuMzggMTRjLS4xOSAwLS4zOC0uMDctLjUzLS4yMmEuNzU0Ljc1NCAwIDAgMSAwLTEuMDZMOS41NyA4IDQuODUgMy4yOGMtLjI5LS4yOS0uMjktLjc3IDAtMS4wNnMuNzctLjI5IDEuMDYgMEwxMS42OSA4bC01Ljc4IDUuNzhjLS4xNS4xNS0uMzQuMjItLjUzLjIyIi8+PC9zeW1ib2w+PHN5bWJvbCBpZD0iczI0IiB2aWV3Qm94PSIwIDAgMjQgMjQiPjxwYXRoIGQ9Ik04LjA3IDIwLjcyYy0uMjIgMC0uNDUtLjA4LS42Mi0uMjZhLjg4Ljg4IDAgMCAxIDAtMS4yNGw3LjI2LTcuMjZMNy40NSA0LjdhLjg4Ljg4IDAgMCAxIDAtMS4yNGMuMzQtLjM0LjktLjM0IDEuMjQgMGw4LjUgOC41LTguNDkgOC40OWMtLjE3LjE3LS40LjI2LS42Mi4yNloiLz48L3N5bWJvbD48c3ltYm9sIGlkPSJzMzIiIHZpZXdCb3g9IjAgMCAzMiAzMiI+PHBhdGggZD0iTTEwLjc2IDI3LjVjLS4yNiAwLS41MS0uMS0uNzEtLjI5YS45OTYuOTk2IDAgMCAxIDAtMS40MWw5Ljc5LTkuNzktOS43OS05LjgxYS45OTYuOTk2IDAgMSAxIDEuNDEtMS40MUwyMi42NyAxNiAxMS40NiAyNy4yMWMtLjIuMi0uNDUuMjktLjcxLjI5WiIvPjwvc3ltYm9sPjxzeW1ib2wgaWQ9InM0MCIgdmlld0JveD0iMCAwIDQwIDQwIj48cGF0aCBkPSJNMTMuNSAzNC4yMmExLjEyMyAxLjEyMyAwIDAgMS0uOC0xLjkybDEyLjMzLTEyLjMzTDEyLjcgNy42M2MtLjQ0LS40NC0uNDQtMS4xNSAwLTEuNTlzMS4xNS0uNDQgMS41OSAwbDEzLjkzIDEzLjkzTDE0LjMgMzMuODljLS4yMi4yMi0uNTEuMzMtLjguMzMiLz48L3N5bWJvbD48c3ltYm9sIGlkPSJzNDgiIHZpZXdCb3g9IjAgMCA0OCA0OCI+PHBhdGggZD0iTTE2LjE0IDQxYy0uMzIgMC0uNjQtLjEyLS44OC0uMzdhMS4yNSAxLjI1IDAgMCAxIDAtMS43N2wxNC44Ny0xNC44N0wxNS4yNSA5LjExYy0uNDktLjQ5LS40OS0xLjI4IDAtMS43N3MxLjI4LS40OSAxLjc3IDBsMTYuNjQgMTYuNjQtMTYuNjMgMTYuNjNjLS4yNC4yNC0uNTYuMzctLjg4LjM3WiIvPjwvc3ltYm9sPjxzeW1ib2wgaWQ9InM2NCIgdmlld0JveD0iMCAwIDY0IDY0Ij48cGF0aCBkPSJNMjEuNTEgNTQuNGExLjM3NiAxLjM3NiAwIDAgMS0uOTctMi4zNWwyMC4wMy0yMC4wMy0yMC4wNC0yMC4wM2MtLjU0LS41NC0uNTQtMS40MSAwLTEuOTVzMS40MS0uNTQgMS45NSAwbDIxLjk4IDIxLjk5TDIyLjQ5IDU0Yy0uMjcuMjctLjYyLjQtLjk3LjRaIi8+PC9zeW1ib2w+PHVzZSBzdHlsZT0iZGlzcGxheTogdmFyKC0tczE2LCBub25lKSIgaHJlZj0iI3MxNiIvPjx1c2Ugc3R5bGU9ImRpc3BsYXk6IHZhcigtLXMyNCwgbm9uZSkiIGhyZWY9IiNzMjQiLz48dXNlIHN0eWxlPSJkaXNwbGF5OiB2YXIoLS1zMzIsIG5vbmUpIiBocmVmPSIjczMyIi8+PHVzZSBzdHlsZT0iZGlzcGxheTogdmFyKC0tczQwLCBub25lKSIgaHJlZj0iI3M0MCIvPjx1c2Ugc3R5bGU9ImRpc3BsYXk6IHZhcigtLXM0OCwgbm9uZSkiIGhyZWY9IiNzNDgiLz48dXNlIHN0eWxlPSJkaXNwbGF5OiB2YXIoLS1zNjQsIG5vbmUpIiBocmVmPSIjczY0Ii8+PC9zeW1ib2w+PC9kZWZzPjxzdHlsZT5AbWVkaWEgKG1heC13aWR0aDogMjMuOThweCkge2d7LS1zMTY6YmxvY2s7fX1AbWVkaWEgKG1pbi13aWR0aDogMjRweCkgYW5kIChtYXgtd2lkdGg6IDMxLjk4cHgpIHtney0tczI0OmJsb2NrO319QG1lZGlhIChtaW4td2lkdGg6IDMycHgpIGFuZCAobWF4LXdpZHRoOiAzOS45OHB4KSB7Z3stLXMzMjpibG9jazt9fUBtZWRpYSAobWluLXdpZHRoOiA0MHB4KSBhbmQgKG1heC13aWR0aDogNDcuOThweCkge2d7LS1zNDA6YmxvY2s7fX1AbWVkaWEgKG1pbi13aWR0aDogNDhweCkgYW5kIChtYXgtd2lkdGg6IDYzLjk4cHgpIHtney0tczQ4OmJsb2NrO319QG1lZGlhIChtaW4td2lkdGg6IDY0cHgpIHtney0tczY0OmJsb2NrO319PC9zdHlsZT48Zz48dXNlIGhyZWY9IiNpLWNoZXZyb25yaWdodCIvPjwvZz48L3N2Zz4=")}post-menu-item>slot[name=home]>a{position:relative;display:flex;align-items:center;padding:8px 12px 8px 16px;gap:12px;font-size:.875rem;color:#050400;border-radius:0;text-decoration:none;min-width:0;white-space:normal;overflow:visible;text-overflow:unset;justify-content:start;overflow-wrap:anywhere;hyphens:auto;line-break:strict}@media screen and (min-width: 780px){post-menu-item>slot[name=home]>a{font-size:1rem;padding-block:12px;gap:16px}}@media screen and (min-width: 1024px){post-menu-item>slot[name=home]>a{font-size:1.25rem;padding-block:13px}}post-menu-item>slot[name=home]>a:focus-visible{outline-offset:2px !important;border-radius:4px}post-menu-item>slot[name=home]>a:hover{background-color:#504f4b;color:#fff}.home{flex:none}.home::before{content:unset}.home.icon{padding-block:var(--post-device-spacing-padding-47)}.home.icon post-icon{width:var(--post-device-sizing-interactive-icon-size2);height:var(--post-device-sizing-interactive-icon-size2)}.menu{margin-inline-end:calc(-1*var(--post-device-spacing-gap-inline-4))}.menu.empty{display:none}.visually-hidden{position:absolute;width:1px;height:1px;margin:-1px;padding:0;overflow:hidden;clip:rect(0 0 0 0);border:0}`;
|
|
12
13
|
|
|
13
14
|
var __decorate = (undefined && undefined.__decorate) || function (decorators, target, key, desc) {
|
|
14
15
|
var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
|
|
@@ -20,103 +21,253 @@ var __decorate = (undefined && undefined.__decorate) || function (decorators, ta
|
|
|
20
21
|
r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;
|
|
21
22
|
return c > 3 && r && Object.defineProperty(target, key, r), r;
|
|
22
23
|
};
|
|
24
|
+
const MAX_VISIBLE_ITEMS = 6;
|
|
25
|
+
const MEASUREMENT_DEBOUNCE_MS = 50;
|
|
23
26
|
const PostBreadcrumbs = class {
|
|
24
27
|
constructor(hostRef) {
|
|
25
28
|
registerInstance(this, hostRef);
|
|
26
|
-
this.
|
|
29
|
+
this.debounceUpdateCollapsedItems = throttle(MEASUREMENT_DEBOUNCE_MS, this.updateCollapsedItems.bind(this));
|
|
30
|
+
this.resizeObserver = new ResizeObserver(this.debounceUpdateCollapsedItems);
|
|
31
|
+
this.mutationObserver = new MutationObserver(() => {
|
|
32
|
+
void this.updateAfterMutation();
|
|
33
|
+
});
|
|
34
|
+
this.loaded = false;
|
|
35
|
+
/** Whether the consumer slotted their own `<a>` into the `home` slot. When true, `home-url` is not required, since the internal fallback link is not rendered. */
|
|
36
|
+
this.hasSlottedHomeAnchor = false;
|
|
37
|
+
/** Whether the slotted home anchor contains a post-icon. */
|
|
38
|
+
this.hasSlottedHomeIcon = false;
|
|
39
|
+
/** The number of breadcrumb items, counted from the start, moved into the overflow menu. */
|
|
40
|
+
this.collapsed = 0;
|
|
41
|
+
/** Whether the home item is collapsed into its own overflow menu. */
|
|
42
|
+
this.homeCollapsed = false;
|
|
43
|
+
/** Whether the last (selected) item wraps onto multiple lines. */
|
|
44
|
+
this.lastItemWraps = false;
|
|
45
|
+
/** The visible breadcrumb navigation. */
|
|
46
|
+
this.nav = null;
|
|
47
|
+
/** An off-screen copy of the breadcrumb navigation used for measurement. */
|
|
48
|
+
this.hiddenNav = null;
|
|
49
|
+
/**
|
|
50
|
+
* Whether `text-home` content is displayed instead of the home icon, enabling segment specific
|
|
51
|
+
* breadcrumbs (like "Private customers" or "About us").
|
|
52
|
+
*/
|
|
53
|
+
this.homeTextOnly = false;
|
|
27
54
|
}
|
|
28
55
|
componentWillLoad() {
|
|
29
56
|
this.id = this.host.id || `b${nanoid(6)}`;
|
|
57
|
+
this.checkSlottedHomeAnchor();
|
|
30
58
|
}
|
|
31
|
-
componentDidLoad() {
|
|
32
|
-
this.
|
|
33
|
-
this.
|
|
34
|
-
}
|
|
35
|
-
disconnectedCallback() {
|
|
36
|
-
this.mutationObserver?.disconnect();
|
|
37
|
-
this.resizeObserver?.disconnect();
|
|
38
|
-
}
|
|
39
|
-
createMutationObserver() {
|
|
40
|
-
this.mutationObserver = new MutationObserver(this.duplicateNavElement.bind(this));
|
|
41
|
-
this.mutationObserver.observe(this.host, {
|
|
59
|
+
async componentDidLoad() {
|
|
60
|
+
this.resizeObserver?.observe(document.body);
|
|
61
|
+
this.mutationObserver?.observe(this.host, {
|
|
42
62
|
childList: true,
|
|
43
63
|
characterData: true,
|
|
44
64
|
subtree: true,
|
|
45
65
|
});
|
|
46
|
-
this.
|
|
66
|
+
await this.updateHiddenNav();
|
|
67
|
+
await this.updateCollapsedItems();
|
|
68
|
+
this.loaded = true;
|
|
47
69
|
}
|
|
48
|
-
|
|
49
|
-
this.resizeObserver
|
|
50
|
-
this.
|
|
70
|
+
disconnectedCallback() {
|
|
71
|
+
this.resizeObserver?.disconnect();
|
|
72
|
+
this.mutationObserver?.disconnect();
|
|
73
|
+
this.debounceUpdateCollapsedItems.cancel();
|
|
51
74
|
}
|
|
52
|
-
|
|
53
|
-
|
|
54
|
-
|
|
55
|
-
|
|
56
|
-
|
|
57
|
-
const nav = shadowRoot?.querySelector('nav');
|
|
58
|
-
if (!shadowRoot || !nav)
|
|
59
|
-
return;
|
|
60
|
-
this.prepareBreadcrumbItemsForClone();
|
|
61
|
-
const clone = nav.cloneNode(true);
|
|
62
|
-
clone.classList.add('invisible');
|
|
63
|
-
shadowRoot.querySelector('nav.invisible')?.remove();
|
|
64
|
-
shadowRoot.append(clone);
|
|
65
|
-
requestAnimationFrame(() => {
|
|
66
|
-
this.duplicateSlottedElements(clone, 'slot:not([name])');
|
|
67
|
-
this.duplicateSlottedElements(clone, 'slot[name="selected"]');
|
|
68
|
-
this.checkOverflow();
|
|
69
|
-
});
|
|
75
|
+
checkSlottedHomeAnchor() {
|
|
76
|
+
const homeSlotElement = Array.from(this.host.children).find(child => child.getAttribute('slot') === 'home');
|
|
77
|
+
this.hasSlottedHomeAnchor = homeSlotElement?.tagName === 'A';
|
|
78
|
+
this.hasSlottedHomeIcon =
|
|
79
|
+
this.hasSlottedHomeAnchor && !!homeSlotElement?.querySelector('post-icon');
|
|
70
80
|
}
|
|
71
|
-
|
|
72
|
-
|
|
73
|
-
const clonedSlot = clone.querySelector(slotSelector);
|
|
74
|
-
if (!originalSlot || !clonedSlot)
|
|
75
|
-
return;
|
|
76
|
-
originalSlot.assignedElements().forEach(element => {
|
|
77
|
-
clonedSlot.insertAdjacentElement('beforebegin', element.cloneNode(true));
|
|
78
|
-
});
|
|
79
|
-
clonedSlot.remove();
|
|
81
|
+
get usesHomeText() {
|
|
82
|
+
return this.hasSlottedHomeAnchor ? !this.hasSlottedHomeIcon : this.homeTextOnly;
|
|
80
83
|
}
|
|
81
|
-
|
|
82
|
-
|
|
83
|
-
|
|
84
|
+
// Degrade order: collapse middle items -> collapse home -> wrap the last item.
|
|
85
|
+
/** Measures the available space and updates all three degrade-stage states. */
|
|
86
|
+
async updateCollapsedItems() {
|
|
87
|
+
if (!this.nav)
|
|
84
88
|
return;
|
|
85
|
-
const
|
|
86
|
-
|
|
87
|
-
|
|
88
|
-
|
|
89
|
-
|
|
89
|
+
const { overflowing, homeOverflows, lastItemWraps } = await this.calculateCollapsedItems();
|
|
90
|
+
this.collapsed = overflowing;
|
|
91
|
+
this.homeCollapsed = homeOverflows;
|
|
92
|
+
this.lastItemWraps = lastItemWraps;
|
|
93
|
+
}
|
|
94
|
+
async calculateCollapsedItems() {
|
|
95
|
+
const items = this.host.querySelectorAll('post-breadcrumb-item');
|
|
96
|
+
const { overflowing, homeOverflows, lastItemWraps } = await this.calculateOverflowingItems();
|
|
97
|
+
// Never show more than `MAX_VISIBLE_ITEMS`, even if the nav is wide enough to fit them all.
|
|
98
|
+
return {
|
|
99
|
+
overflowing: Math.max(overflowing, items.length - MAX_VISIBLE_ITEMS),
|
|
100
|
+
homeOverflows,
|
|
101
|
+
lastItemWraps,
|
|
102
|
+
};
|
|
103
|
+
}
|
|
104
|
+
/** Runs the three degrade stages in order against the off-screen measurement clone. */
|
|
105
|
+
async calculateOverflowingItems() {
|
|
106
|
+
if (!this.hiddenNav)
|
|
107
|
+
return { overflowing: 0, homeOverflows: false, lastItemWraps: false };
|
|
108
|
+
const nav = this.hiddenNav;
|
|
109
|
+
const availableWidth = nav.clientWidth;
|
|
110
|
+
const gap = Number.parseFloat(getComputedStyle(nav.firstElementChild).gap);
|
|
111
|
+
const menuWidth = nav.querySelector('.menu')?.clientWidth ?? 0;
|
|
112
|
+
const homeWidth = nav.querySelector('.home')?.clientWidth ?? 0;
|
|
113
|
+
// Stage 1: collapse middle items, starting closest to home, until the rest fits.
|
|
114
|
+
const middleItems = Array.from(nav.querySelectorAll('post-breadcrumb-item')).slice(0, -1);
|
|
115
|
+
const { overflowing, remainingWidth } = this.collapseMiddleItems(middleItems, gap, menuWidth, availableWidth);
|
|
116
|
+
// Stage 2: home + last item, single-line. Text home can collapse into the menu, while the
|
|
117
|
+
// icon-only home remains visible and lets the last item wrap instead.
|
|
118
|
+
const homeOverflows = this.usesHomeText && remainingWidth > availableWidth;
|
|
119
|
+
// Stage 3: home joins the existing menu when middle items have collapsed. If no middle item
|
|
120
|
+
// collapsed, the menu needs to be added when home moves into it.
|
|
121
|
+
const widthWithHomeCollapsed = remainingWidth - homeWidth + (overflowing === 0 ? menuWidth : 0);
|
|
122
|
+
const lastItemWraps = this.usesHomeText
|
|
123
|
+
? homeOverflows && widthWithHomeCollapsed > availableWidth
|
|
124
|
+
: remainingWidth > availableWidth;
|
|
125
|
+
return { overflowing, homeOverflows, lastItemWraps };
|
|
126
|
+
}
|
|
127
|
+
/** Stage 1: collapses middle items until the rest fits, or none are left. */
|
|
128
|
+
collapseMiddleItems(items, gap, menuWidth, availableWidth) {
|
|
129
|
+
// Start from the assumption that all items fit and that no menu is shown, so subtract the
|
|
130
|
+
// overflow menu's width from the total.
|
|
131
|
+
let width = this.hiddenNav.scrollWidth - menuWidth + gap;
|
|
132
|
+
let overflowing = 0;
|
|
133
|
+
while (overflowing < items.length && width > availableWidth) {
|
|
134
|
+
// The overflow menu needs to be displayed as soon as the first item is moved into it, so its
|
|
135
|
+
// width needs to be taken into account when measuring the remaining items.
|
|
136
|
+
if (overflowing === 0)
|
|
137
|
+
width += menuWidth;
|
|
138
|
+
width -= items[overflowing++].clientWidth + gap;
|
|
139
|
+
}
|
|
140
|
+
return { overflowing, remainingWidth: width };
|
|
141
|
+
}
|
|
142
|
+
/** Applies the degrade states to the `<post-breadcrumb-item>` elements. */
|
|
143
|
+
updateItems(items, collapsed, lastItemWraps) {
|
|
144
|
+
items.forEach((item, index) => {
|
|
145
|
+
const isLast = index === items.length - 1;
|
|
146
|
+
item.setAttribute('variant', index < collapsed ? 'menuitem' : 'listitem');
|
|
147
|
+
item.setAttribute('selected', String(isLast));
|
|
148
|
+
item.setAttribute('standalone', String(isLast && index === collapsed && lastItemWraps));
|
|
90
149
|
});
|
|
91
150
|
}
|
|
92
|
-
|
|
93
|
-
|
|
94
|
-
this.
|
|
151
|
+
/** Rebuilds the off-screen copy of the breadcrumb navigation. */
|
|
152
|
+
async updateHiddenNav() {
|
|
153
|
+
this.hiddenNav?.remove();
|
|
154
|
+
this.hiddenNav = await this.renderHiddenNav();
|
|
155
|
+
}
|
|
156
|
+
async updateAfterMutation() {
|
|
157
|
+
await this.updateHiddenNav();
|
|
158
|
+
await this.updateCollapsedItems();
|
|
95
159
|
}
|
|
96
|
-
|
|
97
|
-
|
|
98
|
-
|
|
99
|
-
|
|
100
|
-
|
|
160
|
+
/**
|
|
161
|
+
* Renders an off-screen copy of the nav for measurements. `.home` is rebuilt independently (see
|
|
162
|
+
* `buildMeasurementHomeElement`) rather than cloned, since the live nav may show the home item
|
|
163
|
+
* in the overflow menu instead if it is already collapsed.
|
|
164
|
+
*/
|
|
165
|
+
async renderHiddenNav() {
|
|
166
|
+
const shadowRoot = this.host.shadowRoot;
|
|
167
|
+
if (!shadowRoot || !this.nav)
|
|
168
|
+
return null;
|
|
169
|
+
const clone = this.nav.cloneNode(true);
|
|
170
|
+
const slots = clone.querySelectorAll('slot');
|
|
171
|
+
// Deep clone the breadcrumb navigation and flatten its slots into the clone.
|
|
172
|
+
this.nav.querySelectorAll('slot').forEach((source, index) => {
|
|
173
|
+
const target = slots[index];
|
|
174
|
+
const assignedElements = source.assignedElements();
|
|
175
|
+
if (assignedElements.length > 0) {
|
|
176
|
+
// Insert the assigned elements where the slot used to be, then drop the now empty slot.
|
|
177
|
+
assignedElements.forEach(element => {
|
|
178
|
+
target.insertAdjacentElement('beforebegin', element.cloneNode(true));
|
|
179
|
+
});
|
|
180
|
+
target.remove();
|
|
181
|
+
}
|
|
182
|
+
else {
|
|
183
|
+
// Nothing assigned: keep the slot's own fallback content (e.g. the default home link) by
|
|
184
|
+
// unwrap the <slot> in place, move its children to where it was, then remove it.
|
|
185
|
+
const parent = target.parentNode;
|
|
186
|
+
if (parent) {
|
|
187
|
+
Array.from(target.childNodes).forEach(child => parent.insertBefore(child, target));
|
|
188
|
+
target.remove();
|
|
189
|
+
}
|
|
190
|
+
}
|
|
101
191
|
});
|
|
192
|
+
// Always measure the full, uncollapsed home item — see the method doc above. Uses
|
|
193
|
+
// replaceChild rather than replaceWith, since the latter isn't implemented by Stencil's
|
|
194
|
+
// mock-doc DOM used during SSR/hydration.
|
|
195
|
+
const existingHome = clone.querySelector('.home');
|
|
196
|
+
existingHome?.parentNode?.replaceChild(this.buildMeasurementHomeElement(), existingHome);
|
|
197
|
+
clone.classList.remove('loading');
|
|
198
|
+
clone.classList.add('invisible');
|
|
199
|
+
// Show the overflow menu so that we can include the space it takes up in the measurement.
|
|
200
|
+
clone.querySelector('.menu').classList.remove('empty');
|
|
201
|
+
shadowRoot.append(clone);
|
|
202
|
+
// Wait for all items to be fully hydrated before measuring.
|
|
203
|
+
const items = clone.querySelectorAll('post-breadcrumb-item');
|
|
204
|
+
await Promise.all(Array.from(items).map(item => componentOnReady(item)));
|
|
205
|
+
// Uncollapsed layout, both single-line, for measurement.
|
|
206
|
+
this.updateItems(items, 0, false);
|
|
207
|
+
return clone;
|
|
208
|
+
}
|
|
209
|
+
/** Builds `.home` in its full, uncollapsed form for measurement. Mirrors `renderHomeContent`, but as plain DOM since this runs outside the render cycle. */
|
|
210
|
+
buildMeasurementHomeElement() {
|
|
211
|
+
const home = document.createElement('div');
|
|
212
|
+
home.className = `breadcrumb-item home${this.usesHomeText ? '' : ' icon'}`;
|
|
213
|
+
home.setAttribute('role', 'listitem');
|
|
214
|
+
const slottedAnchor = this.hasSlottedHomeAnchor
|
|
215
|
+
? Array.from(this.host.children).find(child => child.getAttribute('slot') === 'home')
|
|
216
|
+
: null;
|
|
217
|
+
if (slottedAnchor) {
|
|
218
|
+
home.append(slottedAnchor.cloneNode(true));
|
|
219
|
+
return home;
|
|
220
|
+
}
|
|
221
|
+
const anchor = document.createElement('a');
|
|
222
|
+
if (this.homeUrl)
|
|
223
|
+
anchor.href = this.homeUrl;
|
|
224
|
+
const label = document.createElement('span');
|
|
225
|
+
if (!this.usesHomeText)
|
|
226
|
+
label.className = 'visually-hidden';
|
|
227
|
+
label.textContent = this.textHome;
|
|
228
|
+
anchor.append(label);
|
|
229
|
+
if (!this.usesHomeText) {
|
|
230
|
+
const icon = document.createElement('post-icon');
|
|
231
|
+
icon.setAttribute('aria-hidden', 'true');
|
|
232
|
+
icon.setAttribute('name', 'home');
|
|
233
|
+
anchor.append(icon);
|
|
234
|
+
}
|
|
235
|
+
home.append(anchor);
|
|
236
|
+
return home;
|
|
102
237
|
}
|
|
103
238
|
renderMenu() {
|
|
104
239
|
const menuId = `${this.id}-menu`;
|
|
105
|
-
return (h("div", {
|
|
240
|
+
return (h("div", { class: `breadcrumb-item menu ${this.collapsed === 0 && !this.homeCollapsed ? 'empty' : ''}`, role: "listitem" }, h("post-menu-trigger", { for: menuId }, h("button", null, h("span", { class: "visually-hidden" }, this.textMoreItems), h("span", { "aria-hidden": "true" }, "..."))), h("post-menu", { id: menuId, label: this.textMoreItems, placement: "bottom-start" }, this.homeCollapsed && this.usesHomeText && (h("post-menu-item", null, this.renderHomeContent())), h("slot", { name: "menu" }))));
|
|
241
|
+
}
|
|
242
|
+
/** Reused by the plain home item and the home menu — a slot can only be assigned once. */
|
|
243
|
+
renderHomeContent() {
|
|
244
|
+
return (h("slot", { name: "home", onSlotchange: () => this.checkSlottedHomeAnchor() }, h("a", { href: this.homeUrl }, h("span", { class: this.usesHomeText ? undefined : 'visually-hidden' }, this.textHome), !this.usesHomeText && h("post-icon", { "aria-hidden": "true", name: "home" }))));
|
|
245
|
+
}
|
|
246
|
+
/** Degrade stage 2: home renders in full, single-line, not yet collapsed. */
|
|
247
|
+
renderHome() {
|
|
248
|
+
return (h("div", { class: `breadcrumb-item home${this.usesHomeText ? '' : ' icon'}`, role: "listitem" }, this.renderHomeContent()));
|
|
106
249
|
}
|
|
107
250
|
render() {
|
|
108
|
-
|
|
251
|
+
if (this.loaded) {
|
|
252
|
+
const items = this.host.querySelectorAll('post-breadcrumb-item');
|
|
253
|
+
this.updateItems(items, this.collapsed, this.lastItemWraps);
|
|
254
|
+
}
|
|
255
|
+
return (h(Host, { key: '8d5f457a7c6a2df0cfaf5c31f3ffc6937de76e57', "data-version": version, class: this.homeCollapsed && this.usesHomeText ? 'home-collapsed' : undefined }, h("nav", { key: 'ce3fd7ad69060dd6968afaad6170e27eee72682f', "aria-label": this.textBreadcrumbs, ref: el => (this.nav = el), class: this.loaded ? '' : 'loading' }, h("div", { key: '1c400c8c1e1b625203876cc9804936782a2202c6', role: "list" }, (!this.homeCollapsed || !this.usesHomeText) && this.renderHome(), this.renderMenu(), h("slot", { key: '5cf6618b487961c0e7d70637f5396d023660ec55' }), h("slot", { key: 'f4fb662d04d9966c76a22444844d692611472b2d', name: "selected" })))));
|
|
109
256
|
}
|
|
110
257
|
get host() { return getElement(this); }
|
|
111
258
|
};
|
|
112
259
|
__decorate([
|
|
113
|
-
Required(),
|
|
260
|
+
Required({ when: 'hasSlottedHomeAnchor', truthy: false }),
|
|
114
261
|
Url()
|
|
115
262
|
], PostBreadcrumbs.prototype, "homeUrl", void 0);
|
|
116
263
|
__decorate([
|
|
117
|
-
Required(),
|
|
264
|
+
Required({ when: 'hasSlottedHomeAnchor', truthy: false }),
|
|
118
265
|
Type('string')
|
|
119
266
|
], PostBreadcrumbs.prototype, "textHome", void 0);
|
|
267
|
+
__decorate([
|
|
268
|
+
Required(),
|
|
269
|
+
Type('boolean')
|
|
270
|
+
], PostBreadcrumbs.prototype, "homeTextOnly", void 0);
|
|
120
271
|
__decorate([
|
|
121
272
|
Required(),
|
|
122
273
|
Type('string')
|