@swisspost/design-system-components 10.5.0 → 10.7.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/{create-validator-decorator-u-Byhihe.js → create-validator-decorator-D7nAb9KJ.js} +1 -1
- package/dist/cjs/{index-CXnlZiX8.js → index-DWIlRT6N.js} +1 -1
- package/dist/cjs/loader.cjs.js +2 -2
- package/dist/cjs/{one-of-LGG0uEIi.js → one-of-B8RUgrZk.js} +1 -1
- package/dist/cjs/{package-DdU-rENe.js → package-BtKYhTNj.js} +1 -1
- package/dist/cjs/{pattern-B-csvfNt.js → pattern-B6VoDk_m.js} +1 -1
- package/dist/cjs/post-accordion_2.cjs.entry.js +5 -5
- package/dist/cjs/post-autocomplete.cjs.entry.js +5 -5
- package/dist/cjs/post-avatar.cjs.entry.js +6 -6
- package/dist/cjs/post-back-to-top.cjs.entry.js +5 -5
- package/dist/cjs/post-banner.cjs.entry.js +4 -4
- package/dist/cjs/post-breadcrumb-item.cjs.entry.js +32 -10
- package/dist/cjs/post-breadcrumbs.cjs.entry.js +158 -58
- package/dist/cjs/post-closebutton_14.cjs.entry.js +63 -53
- package/dist/cjs/post-collapsible_2.cjs.entry.js +7 -7
- package/dist/cjs/post-components.cjs.js +2 -2
- package/dist/cjs/post-date-picker.cjs.entry.js +38 -34
- 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 +3 -3
- package/dist/cjs/post-number-input.cjs.entry.js +4 -4
- package/dist/cjs/post-pagination.cjs.entry.js +5 -5
- package/dist/cjs/post-popover-trigger.cjs.entry.js +6 -6
- package/dist/cjs/post-popover.cjs.entry.js +9 -9
- package/dist/cjs/post-progressbar.cjs.entry.js +4 -4
- package/dist/cjs/post-rating.cjs.entry.js +6 -6
- package/dist/cjs/post-side-navigation-trigger.cjs.entry.js +6 -6
- package/dist/cjs/post-side-navigation.cjs.entry.js +7 -7
- package/dist/cjs/post-stepper-item.cjs.entry.js +3 -3
- package/dist/cjs/post-stepper.cjs.entry.js +7 -7
- package/dist/cjs/post-tab-item.cjs.entry.js +6 -6
- package/dist/cjs/post-tab-panel.cjs.entry.js +6 -6
- package/dist/cjs/post-tabs.cjs.entry.js +8 -8
- package/dist/cjs/post-tooltip-trigger.cjs.entry.js +7 -7
- package/dist/cjs/post-tooltip.cjs.entry.js +5 -5
- package/dist/cjs/{required-bJzxBV-V.js → required-bXtlqqaA.js} +1 -1
- package/dist/cjs/{type-CGPnqGY1.js → type-BqLE7Uui.js} +1 -1
- package/dist/cjs/{url-Dxdd6tWj.js → url-CUy3C3sH.js} +1 -1
- package/dist/collection/components/post-breadcrumb-item/post-breadcrumb-item.css +1 -1
- package/dist/collection/components/post-breadcrumb-item/post-breadcrumb-item.js +30 -3
- package/dist/collection/components/post-breadcrumbs/post-breadcrumbs.css +1 -1
- package/dist/collection/components/post-breadcrumbs/post-breadcrumbs.js +184 -57
- package/dist/collection/components/post-closebutton/post-closebutton.js +1 -1
- 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 +31 -29
- package/dist/collection/components/post-footer/post-footer.css +1 -1
- package/dist/collection/components/post-footer/post-footer.js +2 -2
- package/dist/collection/components/post-header/post-header.css +1 -1
- package/dist/collection/components/post-header/post-header.js +14 -8
- package/dist/collection/components/post-icon/post-icon.js +1 -1
- package/dist/collection/components/post-linkarea/post-linkarea.js +1 -1
- package/dist/collection/components/post-listbox/post-listbox.js +1 -1
- 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.css +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 +1 -1
- 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.js +3 -3
- package/dist/collection/components/post-popover-trigger/post-popover-trigger.js +2 -2
- package/dist/collection/components/post-popovercontainer/post-popovercontainer.js +26 -22
- 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.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 +1 -1
- package/dist/collection/components/post-tooltip-trigger/post-tooltip-trigger.js +2 -2
- package/dist/collection/utils/floating-ui.js +1 -1
- package/dist/components/package.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-CLeWLMJn.js → p-1y1rv5Tw.js} +1 -1
- package/dist/components/react/{p-D3rq_-Qk.js → p-BBv5JYsW.js} +1 -1
- package/dist/components/react/p-BBz9PVf0.js +1 -0
- package/dist/components/react/{p-DasK590W.js → p-BgEY7xhT.js} +1 -1
- package/dist/components/react/{p-DiFAKI9o.js → p-C3J7fIWx.js} +1 -1
- package/dist/components/react/p-C5ibTdH5.js +1 -0
- package/dist/components/react/{p-DD-Sl3Ji.js → p-C8_zqgAP.js} +1 -1
- package/dist/components/react/{p-PYoaz_Xl.js → p-CUKzje9q.js} +1 -1
- package/dist/components/react/{p-C8vlYfD-.js → p-DS46v3ju.js} +1 -1
- package/dist/components/react/{p-CoCua20S.js → p-DTBtJCjk.js} +1 -1
- package/dist/components/react/{p-CuVhOs8F.js → p-XUkUhxaz.js} +1 -1
- package/dist/components/react/p-ialuSSl2.js +1 -0
- 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 +57 -12
- package/dist/esm/{create-validator-decorator-CbYxqPSB.js → create-validator-decorator-DFpQtJzK.js} +1 -1
- package/dist/esm/{index-D3NdvMgy.js → index-Bs0zeM5Q.js} +1 -1
- package/dist/esm/loader.js +3 -3
- package/dist/esm/{one-of-Mx4vYjem.js → one-of-DQCfaZpw.js} +1 -1
- package/dist/esm/{package-Ny5VnydI.js → package-BBz9PVf0.js} +1 -1
- package/dist/esm/{pattern-CqQVrJPN.js → pattern-3lnaFlkk.js} +1 -1
- package/dist/esm/post-accordion_2.entry.js +5 -5
- package/dist/esm/post-autocomplete.entry.js +5 -5
- package/dist/esm/post-avatar.entry.js +6 -6
- package/dist/esm/post-back-to-top.entry.js +5 -5
- package/dist/esm/post-banner.entry.js +4 -4
- package/dist/esm/post-breadcrumb-item.entry.js +32 -10
- package/dist/esm/post-breadcrumbs.entry.js +158 -58
- package/dist/esm/post-closebutton_14.entry.js +63 -53
- package/dist/esm/post-collapsible_2.entry.js +7 -7
- package/dist/esm/post-components.js +3 -3
- package/dist/esm/post-date-picker.entry.js +38 -34
- 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 +3 -3
- package/dist/esm/post-number-input.entry.js +4 -4
- package/dist/esm/post-pagination.entry.js +5 -5
- package/dist/esm/post-popover-trigger.entry.js +6 -6
- package/dist/esm/post-popover.entry.js +9 -9
- package/dist/esm/post-progressbar.entry.js +4 -4
- package/dist/esm/post-rating.entry.js +6 -6
- package/dist/esm/post-side-navigation-trigger.entry.js +6 -6
- package/dist/esm/post-side-navigation.entry.js +7 -7
- package/dist/esm/post-stepper-item.entry.js +3 -3
- package/dist/esm/post-stepper.entry.js +7 -7
- package/dist/esm/post-tab-item.entry.js +6 -6
- package/dist/esm/post-tab-panel.entry.js +6 -6
- package/dist/esm/post-tabs.entry.js +8 -8
- package/dist/esm/post-tooltip-trigger.entry.js +7 -7
- package/dist/esm/post-tooltip.entry.js +5 -5
- package/dist/esm/{required-CxvSCYJj.js → required-NuzPg5jZ.js} +1 -1
- package/dist/esm/{type-CYB7_Yi8.js → type-ChnksJ25.js} +1 -1
- package/dist/esm/{url-DOwgyBfp.js → url-BCk3ZU-x.js} +1 -1
- package/dist/post-components/{p-c7a39444.entry.js → p-10e430c3.entry.js} +1 -1
- package/dist/post-components/{p-e463e7ac.entry.js → p-31550a50.entry.js} +1 -1
- package/dist/post-components/{p-2cb843f4.entry.js → p-31a97aae.entry.js} +1 -1
- package/dist/post-components/p-32e1e951.entry.js +1 -0
- package/dist/post-components/{p-b856263a.entry.js → p-43240818.entry.js} +1 -1
- package/dist/post-components/{p-44718c1a.entry.js → p-451ec8ee.entry.js} +1 -1
- package/dist/post-components/{p-2379e498.entry.js → p-4f08b99b.entry.js} +1 -1
- package/dist/post-components/{p-5a44b217.entry.js → p-54432b47.entry.js} +1 -1
- package/dist/post-components/{p-e7f97f6d.entry.js → p-58b66607.entry.js} +1 -1
- package/dist/post-components/{p-1d67c427.entry.js → p-5d7de657.entry.js} +1 -1
- package/dist/post-components/p-61a45246.entry.js +1 -0
- package/dist/post-components/p-63dd9a76.entry.js +1 -0
- package/dist/post-components/{p-665d877f.entry.js → p-63e570c4.entry.js} +1 -1
- package/dist/post-components/{p-ffec1880.entry.js → p-64480e3a.entry.js} +1 -1
- package/dist/post-components/p-6a2f47af.entry.js +1 -0
- package/dist/post-components/p-96d07f2b.entry.js +1 -0
- package/dist/post-components/p-9a1e8b1d.entry.js +1 -0
- package/dist/post-components/p-BBz9PVf0.js +1 -0
- package/dist/post-components/p-Bl-_v3aT.js +1 -0
- package/dist/post-components/p-Bs0zeM5Q.js +2 -0
- package/dist/post-components/{p-sgCfAEQU.js → p-BwhzbRIR.js} +1 -1
- package/dist/post-components/p-D1s6tESz.js +1 -0
- package/dist/post-components/p-DH-eJVHZ.js +1 -0
- package/dist/post-components/p-DeUk3rcv.js +1 -0
- package/dist/post-components/p-Dk-DtPZn.js +1 -0
- package/dist/post-components/p-aa33141b.entry.js +1 -0
- package/dist/post-components/p-aff180f5.entry.js +1 -0
- package/dist/post-components/{p-781efeb8.entry.js → p-bd128657.entry.js} +1 -1
- package/dist/post-components/{p-b6e231a8.entry.js → p-c2de3702.entry.js} +1 -1
- package/dist/post-components/{p-4e2bb082.entry.js → p-d5327dd1.entry.js} +1 -1
- package/dist/post-components/{p-030bfaa1.entry.js → p-e1817744.entry.js} +1 -1
- package/dist/post-components/{p-e8c19f72.entry.js → p-e6a4146b.entry.js} +1 -1
- package/dist/post-components/{p-e8268a8d.entry.js → p-f275b872.entry.js} +1 -1
- package/dist/post-components/{p-894b20dd.entry.js → p-f566768e.entry.js} +1 -1
- package/dist/post-components/{p-2ee255c1.entry.js → p-f6da5e69.entry.js} +1 -1
- package/dist/post-components/{p-a9223467.entry.js → p-f784e149.entry.js} +1 -1
- package/dist/post-components/p-f917527c.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-breadcrumb-item/post-breadcrumb-item.d.ts +8 -1
- package/dist/types/components/post-breadcrumbs/post-breadcrumbs.d.ts +39 -22
- package/dist/types/components/post-date-picker/post-date-picker.d.ts +2 -1
- package/dist/types/components/post-header/post-header.d.ts +3 -1
- package/dist/types/components.d.ts +18 -7
- package/hydrate/index.js +308 -165
- package/hydrate/index.mjs +308 -165
- package/package.json +28 -20
- package/dist/components/react/p-0nNMdSBr.js +0 -1
- package/dist/components/react/p-Ny5VnydI.js +0 -1
- package/dist/components/react/p-SBBBSmJM.js +0 -1
- package/dist/post-components/p-29e6c2a4.entry.js +0 -1
- package/dist/post-components/p-3a75186d.entry.js +0 -1
- package/dist/post-components/p-65e12f2c.entry.js +0 -1
- package/dist/post-components/p-795eb5ad.entry.js +0 -1
- package/dist/post-components/p-9ad2216e.entry.js +0 -1
- package/dist/post-components/p-BmpkvdQk.js +0 -1
- package/dist/post-components/p-C-FunIfQ.js +0 -1
- package/dist/post-components/p-CCciE4QO.js +0 -1
- package/dist/post-components/p-D3NdvMgy.js +0 -2
- package/dist/post-components/p-Ny5VnydI.js +0 -1
- package/dist/post-components/p-X1vWfzMK.js +0 -1
- package/dist/post-components/p-cGcyMrvx.js +0 -1
- package/dist/post-components/p-cde00944.entry.js +0 -1
- package/dist/post-components/p-cf7493ab.entry.js +0 -1
- package/dist/post-components/p-ecfc494e.entry.js +0 -1
- package/dist/post-components/p-eda4a376.entry.js +0 -1
|
@@ -1,17 +1,17 @@
|
|
|
1
1
|
'use strict';
|
|
2
2
|
|
|
3
|
-
var index = require('./index-
|
|
3
|
+
var index = require('./index-DWIlRT6N.js');
|
|
4
4
|
require('./breakpoints-Kruvy8Dm.js');
|
|
5
5
|
var componentOnReady = require('./component-on-ready-CifOTqw1.js');
|
|
6
6
|
var nanoid = require('./nanoid-CmjyF1Cm.js');
|
|
7
|
-
var _package = require('./package-
|
|
7
|
+
var _package = require('./package-BtKYhTNj.js');
|
|
8
8
|
var index$1 = require('./index-CggFmZ8n.js');
|
|
9
|
-
var required = require('./required-
|
|
10
|
-
var url = require('./url-
|
|
11
|
-
var type = require('./type-
|
|
12
|
-
require('./create-validator-decorator-
|
|
9
|
+
var required = require('./required-bXtlqqaA.js');
|
|
10
|
+
var url = require('./url-CUy3C3sH.js');
|
|
11
|
+
var type = require('./type-BqLE7Uui.js');
|
|
12
|
+
require('./create-validator-decorator-D7nAb9KJ.js');
|
|
13
13
|
|
|
14
|
-
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)}.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;
|
|
14
|
+
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}`;
|
|
15
15
|
|
|
16
16
|
var __decorate = (undefined && undefined.__decorate) || function (decorators, target, key, desc) {
|
|
17
17
|
var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
|
|
@@ -30,17 +30,33 @@ const PostBreadcrumbs = class {
|
|
|
30
30
|
index.registerInstance(this, hostRef);
|
|
31
31
|
this.debounceUpdateCollapsedItems = index$1.throttle(MEASUREMENT_DEBOUNCE_MS, this.updateCollapsedItems.bind(this));
|
|
32
32
|
this.resizeObserver = new ResizeObserver(this.debounceUpdateCollapsedItems);
|
|
33
|
-
this.mutationObserver = new MutationObserver(
|
|
33
|
+
this.mutationObserver = new MutationObserver(() => {
|
|
34
|
+
void this.updateAfterMutation();
|
|
35
|
+
});
|
|
34
36
|
this.loaded = false;
|
|
35
|
-
/**
|
|
37
|
+
/** 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. */
|
|
38
|
+
this.hasSlottedHomeAnchor = false;
|
|
39
|
+
/** Whether the slotted home anchor contains a post-icon. */
|
|
40
|
+
this.hasSlottedHomeIcon = false;
|
|
41
|
+
/** The number of breadcrumb items, counted from the start, moved into the overflow menu. */
|
|
36
42
|
this.collapsed = 0;
|
|
43
|
+
/** Whether the home item is collapsed into its own overflow menu. */
|
|
44
|
+
this.homeCollapsed = false;
|
|
45
|
+
/** Whether the last (selected) item wraps onto multiple lines. */
|
|
46
|
+
this.lastItemWraps = false;
|
|
37
47
|
/** The visible breadcrumb navigation. */
|
|
38
48
|
this.nav = null;
|
|
39
49
|
/** An off-screen copy of the breadcrumb navigation used for measurement. */
|
|
40
50
|
this.hiddenNav = null;
|
|
51
|
+
/**
|
|
52
|
+
* Whether `text-home` content is displayed instead of the home icon, enabling segment specific
|
|
53
|
+
* breadcrumbs (like "Private customers" or "About us").
|
|
54
|
+
*/
|
|
55
|
+
this.homeTextOnly = false;
|
|
41
56
|
}
|
|
42
57
|
componentWillLoad() {
|
|
43
58
|
this.id = this.host.id || `b${nanoid.nanoid(6)}`;
|
|
59
|
+
this.checkSlottedHomeAnchor();
|
|
44
60
|
}
|
|
45
61
|
async componentDidLoad() {
|
|
46
62
|
this.resizeObserver?.observe(document.body);
|
|
@@ -58,69 +74,95 @@ const PostBreadcrumbs = class {
|
|
|
58
74
|
this.mutationObserver?.disconnect();
|
|
59
75
|
this.debounceUpdateCollapsedItems.cancel();
|
|
60
76
|
}
|
|
61
|
-
|
|
62
|
-
|
|
63
|
-
|
|
64
|
-
|
|
77
|
+
checkSlottedHomeAnchor() {
|
|
78
|
+
const homeSlotElement = Array.from(this.host.children).find(child => child.getAttribute('slot') === 'home');
|
|
79
|
+
this.hasSlottedHomeAnchor = homeSlotElement?.tagName === 'A';
|
|
80
|
+
this.hasSlottedHomeIcon =
|
|
81
|
+
this.hasSlottedHomeAnchor && !!homeSlotElement?.querySelector('post-icon');
|
|
82
|
+
}
|
|
83
|
+
get usesHomeText() {
|
|
84
|
+
return this.hasSlottedHomeAnchor ? !this.hasSlottedHomeIcon : this.homeTextOnly;
|
|
85
|
+
}
|
|
86
|
+
// Degrade order: collapse middle items -> collapse home -> wrap the last item.
|
|
87
|
+
/** Measures the available space and updates all three degrade-stage states. */
|
|
65
88
|
async updateCollapsedItems() {
|
|
66
89
|
if (!this.nav)
|
|
67
90
|
return;
|
|
68
|
-
|
|
91
|
+
const { overflowing, homeOverflows, lastItemWraps } = await this.calculateCollapsedItems();
|
|
92
|
+
this.collapsed = overflowing;
|
|
93
|
+
this.homeCollapsed = homeOverflows;
|
|
94
|
+
this.lastItemWraps = lastItemWraps;
|
|
69
95
|
}
|
|
70
|
-
/**
|
|
71
|
-
* Determines how many items have to be collapsed, either because they do not fit the breadcrumb
|
|
72
|
-
* navigation or because they exceed the maximum number of visible items.
|
|
73
|
-
*/
|
|
74
96
|
async calculateCollapsedItems() {
|
|
75
97
|
const items = this.host.querySelectorAll('post-breadcrumb-item');
|
|
76
|
-
const overflowing = await this.calculateOverflowingItems();
|
|
98
|
+
const { overflowing, homeOverflows, lastItemWraps } = await this.calculateOverflowingItems();
|
|
77
99
|
// Never show more than `MAX_VISIBLE_ITEMS`, even if the nav is wide enough to fit them all.
|
|
78
|
-
return
|
|
100
|
+
return {
|
|
101
|
+
overflowing: Math.max(overflowing, items.length - MAX_VISIBLE_ITEMS),
|
|
102
|
+
homeOverflows,
|
|
103
|
+
lastItemWraps,
|
|
104
|
+
};
|
|
79
105
|
}
|
|
80
|
-
/**
|
|
81
|
-
* Determines how many items overflow the width of the breadcrumb navigation.
|
|
82
|
-
*/
|
|
106
|
+
/** Runs the three degrade stages in order against the off-screen measurement clone. */
|
|
83
107
|
async calculateOverflowingItems() {
|
|
84
|
-
// Fallback to zero if the hidden nav is not available for measurement.
|
|
85
108
|
if (!this.hiddenNav)
|
|
86
|
-
return 0;
|
|
87
|
-
const
|
|
88
|
-
const
|
|
89
|
-
|
|
90
|
-
const
|
|
91
|
-
|
|
92
|
-
//
|
|
93
|
-
|
|
109
|
+
return { overflowing: 0, homeOverflows: false, lastItemWraps: false };
|
|
110
|
+
const nav = this.hiddenNav;
|
|
111
|
+
const availableWidth = nav.clientWidth;
|
|
112
|
+
const gap = Number.parseFloat(getComputedStyle(nav.firstElementChild).gap);
|
|
113
|
+
const menuWidth = nav.querySelector('.menu')?.clientWidth ?? 0;
|
|
114
|
+
const homeWidth = nav.querySelector('.home')?.clientWidth ?? 0;
|
|
115
|
+
// Stage 1: collapse middle items, starting closest to home, until the rest fits.
|
|
116
|
+
const middleItems = Array.from(nav.querySelectorAll('post-breadcrumb-item')).slice(0, -1);
|
|
117
|
+
const { overflowing, remainingWidth } = this.collapseMiddleItems(middleItems, gap, menuWidth, availableWidth);
|
|
118
|
+
// Stage 2: home + last item, single-line. Text home can collapse into the menu, while the
|
|
119
|
+
// icon-only home remains visible and lets the last item wrap instead.
|
|
120
|
+
const homeOverflows = this.usesHomeText && remainingWidth > availableWidth;
|
|
121
|
+
// Stage 3: home joins the existing menu when middle items have collapsed. If no middle item
|
|
122
|
+
// collapsed, the menu needs to be added when home moves into it.
|
|
123
|
+
const widthWithHomeCollapsed = remainingWidth - homeWidth + (overflowing === 0 ? menuWidth : 0);
|
|
124
|
+
const lastItemWraps = this.usesHomeText
|
|
125
|
+
? homeOverflows && widthWithHomeCollapsed > availableWidth
|
|
126
|
+
: remainingWidth > availableWidth;
|
|
127
|
+
return { overflowing, homeOverflows, lastItemWraps };
|
|
128
|
+
}
|
|
129
|
+
/** Stage 1: collapses middle items until the rest fits, or none are left. */
|
|
130
|
+
collapseMiddleItems(items, gap, menuWidth, availableWidth) {
|
|
131
|
+
// Start from the assumption that all items fit and that no menu is shown, so subtract the
|
|
132
|
+
// overflow menu's width from the total.
|
|
133
|
+
let width = this.hiddenNav.scrollWidth - menuWidth + gap;
|
|
94
134
|
let overflowing = 0;
|
|
95
|
-
|
|
96
|
-
while (overflowing < items.length && width > this.hiddenNav.clientWidth) {
|
|
135
|
+
while (overflowing < items.length && width > availableWidth) {
|
|
97
136
|
// The overflow menu needs to be displayed as soon as the first item is moved into it, so its
|
|
98
137
|
// width needs to be taken into account when measuring the remaining items.
|
|
99
138
|
if (overflowing === 0)
|
|
100
|
-
width +=
|
|
139
|
+
width += menuWidth;
|
|
101
140
|
width -= items[overflowing++].clientWidth + gap;
|
|
102
141
|
}
|
|
103
|
-
return overflowing;
|
|
142
|
+
return { overflowing, remainingWidth: width };
|
|
104
143
|
}
|
|
105
|
-
/**
|
|
106
|
-
|
|
107
|
-
*/
|
|
108
|
-
updateItems(items, collapsed) {
|
|
144
|
+
/** Applies the degrade states to the `<post-breadcrumb-item>` elements. */
|
|
145
|
+
updateItems(items, collapsed, lastItemWraps) {
|
|
109
146
|
items.forEach((item, index) => {
|
|
147
|
+
const isLast = index === items.length - 1;
|
|
110
148
|
item.setAttribute('variant', index < collapsed ? 'menuitem' : 'listitem');
|
|
111
|
-
item.setAttribute('selected', String(
|
|
112
|
-
item.setAttribute('standalone', String(
|
|
149
|
+
item.setAttribute('selected', String(isLast));
|
|
150
|
+
item.setAttribute('standalone', String(isLast && index === collapsed && lastItemWraps));
|
|
113
151
|
});
|
|
114
152
|
}
|
|
115
|
-
/**
|
|
116
|
-
* Rebuilds the off-screen copy of the breadcrumb navigation.
|
|
117
|
-
*/
|
|
153
|
+
/** Rebuilds the off-screen copy of the breadcrumb navigation. */
|
|
118
154
|
async updateHiddenNav() {
|
|
119
155
|
this.hiddenNav?.remove();
|
|
120
156
|
this.hiddenNav = await this.renderHiddenNav();
|
|
121
157
|
}
|
|
158
|
+
async updateAfterMutation() {
|
|
159
|
+
await this.updateHiddenNav();
|
|
160
|
+
await this.updateCollapsedItems();
|
|
161
|
+
}
|
|
122
162
|
/**
|
|
123
|
-
* Renders an off-screen copy of the
|
|
163
|
+
* Renders an off-screen copy of the nav for measurements. `.home` is rebuilt independently (see
|
|
164
|
+
* `buildMeasurementHomeElement`) rather than cloned, since the live nav may show the home item
|
|
165
|
+
* in the overflow menu instead if it is already collapsed.
|
|
124
166
|
*/
|
|
125
167
|
async renderHiddenNav() {
|
|
126
168
|
const shadowRoot = this.host.shadowRoot;
|
|
@@ -131,12 +173,29 @@ const PostBreadcrumbs = class {
|
|
|
131
173
|
// Deep clone the breadcrumb navigation and flatten its slots into the clone.
|
|
132
174
|
this.nav.querySelectorAll('slot').forEach((source, index) => {
|
|
133
175
|
const target = slots[index];
|
|
134
|
-
|
|
135
|
-
|
|
136
|
-
|
|
137
|
-
|
|
138
|
-
|
|
176
|
+
const assignedElements = source.assignedElements();
|
|
177
|
+
if (assignedElements.length > 0) {
|
|
178
|
+
// Insert the assigned elements where the slot used to be, then drop the now empty slot.
|
|
179
|
+
assignedElements.forEach(element => {
|
|
180
|
+
target.insertAdjacentElement('beforebegin', element.cloneNode(true));
|
|
181
|
+
});
|
|
182
|
+
target.remove();
|
|
183
|
+
}
|
|
184
|
+
else {
|
|
185
|
+
// Nothing assigned: keep the slot's own fallback content (e.g. the default home link) by
|
|
186
|
+
// unwrap the <slot> in place, move its children to where it was, then remove it.
|
|
187
|
+
const parent = target.parentNode;
|
|
188
|
+
if (parent) {
|
|
189
|
+
Array.from(target.childNodes).forEach(child => parent.insertBefore(child, target));
|
|
190
|
+
target.remove();
|
|
191
|
+
}
|
|
192
|
+
}
|
|
139
193
|
});
|
|
194
|
+
// Always measure the full, uncollapsed home item — see the method doc above. Uses
|
|
195
|
+
// replaceChild rather than replaceWith, since the latter isn't implemented by Stencil's
|
|
196
|
+
// mock-doc DOM used during SSR/hydration.
|
|
197
|
+
const existingHome = clone.querySelector('.home');
|
|
198
|
+
existingHome?.parentNode?.replaceChild(this.buildMeasurementHomeElement(), existingHome);
|
|
140
199
|
clone.classList.remove('loading');
|
|
141
200
|
clone.classList.add('invisible');
|
|
142
201
|
// Show the overflow menu so that we can include the space it takes up in the measurement.
|
|
@@ -145,31 +204,72 @@ const PostBreadcrumbs = class {
|
|
|
145
204
|
// Wait for all items to be fully hydrated before measuring.
|
|
146
205
|
const items = clone.querySelectorAll('post-breadcrumb-item');
|
|
147
206
|
await Promise.all(Array.from(items).map(item => componentOnReady.componentOnReady(item)));
|
|
148
|
-
//
|
|
149
|
-
this.updateItems(items, 0);
|
|
207
|
+
// Uncollapsed layout, both single-line, for measurement.
|
|
208
|
+
this.updateItems(items, 0, false);
|
|
150
209
|
return clone;
|
|
151
210
|
}
|
|
211
|
+
/** Builds `.home` in its full, uncollapsed form for measurement. Mirrors `renderHomeContent`, but as plain DOM since this runs outside the render cycle. */
|
|
212
|
+
buildMeasurementHomeElement() {
|
|
213
|
+
const home = document.createElement('div');
|
|
214
|
+
home.className = `breadcrumb-item home${this.usesHomeText ? '' : ' icon'}`;
|
|
215
|
+
home.setAttribute('role', 'listitem');
|
|
216
|
+
const slottedAnchor = this.hasSlottedHomeAnchor
|
|
217
|
+
? Array.from(this.host.children).find(child => child.getAttribute('slot') === 'home')
|
|
218
|
+
: null;
|
|
219
|
+
if (slottedAnchor) {
|
|
220
|
+
home.append(slottedAnchor.cloneNode(true));
|
|
221
|
+
return home;
|
|
222
|
+
}
|
|
223
|
+
const anchor = document.createElement('a');
|
|
224
|
+
if (this.homeUrl)
|
|
225
|
+
anchor.href = this.homeUrl;
|
|
226
|
+
const label = document.createElement('span');
|
|
227
|
+
if (!this.usesHomeText)
|
|
228
|
+
label.className = 'visually-hidden';
|
|
229
|
+
label.textContent = this.textHome;
|
|
230
|
+
anchor.append(label);
|
|
231
|
+
if (!this.usesHomeText) {
|
|
232
|
+
const icon = document.createElement('post-icon');
|
|
233
|
+
icon.setAttribute('aria-hidden', 'true');
|
|
234
|
+
icon.setAttribute('name', 'home');
|
|
235
|
+
anchor.append(icon);
|
|
236
|
+
}
|
|
237
|
+
home.append(anchor);
|
|
238
|
+
return home;
|
|
239
|
+
}
|
|
152
240
|
renderMenu() {
|
|
153
241
|
const menuId = `${this.id}-menu`;
|
|
154
|
-
return (index.h("div", { class: `breadcrumb-item menu ${this.collapsed === 0 ? 'empty' : ''}`, role: "listitem" }, index.h("post-menu-trigger", { for: menuId }, index.h("button", null, index.h("span", { class: "visually-hidden" }, this.textMoreItems), index.h("span", { "aria-hidden": "true" }, "..."))), index.h("post-menu", { id: menuId, label: this.textMoreItems, placement: "bottom-start" }, index.h("slot", { name: "menu" }))));
|
|
242
|
+
return (index.h("div", { class: `breadcrumb-item menu ${this.collapsed === 0 && !this.homeCollapsed ? 'empty' : ''}`, role: "listitem" }, index.h("post-menu-trigger", { for: menuId }, index.h("button", null, index.h("span", { class: "visually-hidden" }, this.textMoreItems), index.h("span", { "aria-hidden": "true" }, "..."))), index.h("post-menu", { id: menuId, label: this.textMoreItems, placement: "bottom-start" }, this.homeCollapsed && this.usesHomeText && (index.h("post-menu-item", null, this.renderHomeContent())), index.h("slot", { name: "menu" }))));
|
|
243
|
+
}
|
|
244
|
+
/** Reused by the plain home item and the home menu — a slot can only be assigned once. */
|
|
245
|
+
renderHomeContent() {
|
|
246
|
+
return (index.h("slot", { name: "home", onSlotchange: () => this.checkSlottedHomeAnchor() }, index.h("a", { href: this.homeUrl }, index.h("span", { class: this.usesHomeText ? undefined : 'visually-hidden' }, this.textHome), !this.usesHomeText && index.h("post-icon", { "aria-hidden": "true", name: "home" }))));
|
|
247
|
+
}
|
|
248
|
+
/** Degrade stage 2: home renders in full, single-line, not yet collapsed. */
|
|
249
|
+
renderHome() {
|
|
250
|
+
return (index.h("div", { class: `breadcrumb-item home${this.usesHomeText ? '' : ' icon'}`, role: "listitem" }, this.renderHomeContent()));
|
|
155
251
|
}
|
|
156
252
|
render() {
|
|
157
253
|
if (this.loaded) {
|
|
158
254
|
const items = this.host.querySelectorAll('post-breadcrumb-item');
|
|
159
|
-
this.updateItems(items, this.collapsed);
|
|
255
|
+
this.updateItems(items, this.collapsed, this.lastItemWraps);
|
|
160
256
|
}
|
|
161
|
-
return (index.h(index.Host, { key: '
|
|
257
|
+
return (index.h(index.Host, { key: '8d5f457a7c6a2df0cfaf5c31f3ffc6937de76e57', "data-version": _package.version, class: this.homeCollapsed && this.usesHomeText ? 'home-collapsed' : undefined }, index.h("nav", { key: 'ce3fd7ad69060dd6968afaad6170e27eee72682f', "aria-label": this.textBreadcrumbs, ref: el => (this.nav = el), class: this.loaded ? '' : 'loading' }, index.h("div", { key: '1c400c8c1e1b625203876cc9804936782a2202c6', role: "list" }, (!this.homeCollapsed || !this.usesHomeText) && this.renderHome(), this.renderMenu(), index.h("slot", { key: '5cf6618b487961c0e7d70637f5396d023660ec55' }), index.h("slot", { key: 'f4fb662d04d9966c76a22444844d692611472b2d', name: "selected" })))));
|
|
162
258
|
}
|
|
163
259
|
get host() { return index.getElement(this); }
|
|
164
260
|
};
|
|
165
261
|
__decorate([
|
|
166
|
-
required.Required(),
|
|
262
|
+
required.Required({ when: 'hasSlottedHomeAnchor', truthy: false }),
|
|
167
263
|
url.Url()
|
|
168
264
|
], PostBreadcrumbs.prototype, "homeUrl", void 0);
|
|
169
265
|
__decorate([
|
|
170
|
-
required.Required(),
|
|
266
|
+
required.Required({ when: 'hasSlottedHomeAnchor', truthy: false }),
|
|
171
267
|
type.Type('string')
|
|
172
268
|
], PostBreadcrumbs.prototype, "textHome", void 0);
|
|
269
|
+
__decorate([
|
|
270
|
+
required.Required(),
|
|
271
|
+
type.Type('boolean')
|
|
272
|
+
], PostBreadcrumbs.prototype, "homeTextOnly", void 0);
|
|
173
273
|
__decorate([
|
|
174
274
|
required.Required(),
|
|
175
275
|
type.Type('string')
|