@duetds/components 5.4.1 → 5.4.2
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/hydrate/index.js +69 -52
- package/lib/cjs/duet-action-button.cjs.entry.js +2 -2
- package/lib/cjs/duet-alert.cjs.entry.js +1 -1
- package/lib/cjs/duet-badge.cjs.entry.js +1 -1
- package/lib/cjs/duet-breadcrumb.cjs.entry.js +1 -1
- package/lib/cjs/duet-breadcrumbs.cjs.entry.js +1 -1
- package/lib/cjs/duet-button_2.cjs.entry.js +1 -1
- package/lib/cjs/duet-caption_4.cjs.entry.js +1 -1
- package/lib/cjs/duet-card.cjs.entry.js +1 -1
- package/lib/cjs/duet-checkbox.cjs.entry.js +1 -1
- package/lib/cjs/duet-choice_2.cjs.entry.js +2 -2
- package/lib/cjs/duet-collapsible.cjs.entry.js +1 -1
- package/lib/cjs/duet-combobox.cjs.entry.js +2 -2
- package/lib/cjs/duet-cookie-consent.cjs.entry.js +1 -1
- package/lib/cjs/duet-date-picker.cjs.entry.js +2 -2
- package/lib/cjs/duet-divider_2.cjs.entry.js +1 -1
- package/lib/cjs/duet-editable-table_3.cjs.entry.js +8 -3
- package/lib/cjs/duet-empty-state.cjs.entry.js +1 -1
- package/lib/cjs/duet-fieldset.cjs.entry.js +1 -1
- package/lib/cjs/duet-footer.cjs.entry.js +1 -1
- package/lib/cjs/duet-grid_2.cjs.entry.js +1 -1
- package/lib/cjs/duet-header_2.cjs.entry.js +51 -49
- package/lib/cjs/duet-hero.cjs.entry.js +1 -1
- package/lib/cjs/duet-icon.cjs.entry.js +1 -1
- package/lib/cjs/duet-input_2.cjs.entry.js +1 -1
- package/lib/cjs/duet-layout.cjs.entry.js +1 -1
- package/lib/cjs/duet-list_2.cjs.entry.js +1 -1
- package/lib/cjs/duet-modal.cjs.entry.js +2 -2
- package/lib/cjs/duet-notification_2.cjs.entry.js +1 -1
- package/lib/cjs/duet-number-input.cjs.entry.js +1 -1
- package/lib/cjs/duet-pagination_2.cjs.entry.js +2 -2
- package/lib/cjs/duet-progress.cjs.entry.js +1 -1
- package/lib/cjs/duet-radio_2.cjs.entry.js +1 -1
- package/lib/cjs/duet-range-slider.cjs.entry.js +1 -1
- package/lib/cjs/duet-scrollable_3.cjs.entry.js +1 -1
- package/lib/cjs/duet-select.cjs.entry.js +1 -1
- package/lib/cjs/duet-step_2.cjs.entry.js +1 -1
- package/lib/cjs/duet-textarea.cjs.entry.js +1 -1
- package/lib/cjs/duet-toggle.cjs.entry.js +1 -1
- package/lib/cjs/duet-tooltip.cjs.entry.js +1 -1
- package/lib/cjs/duet-tray.cjs.entry.js +1 -1
- package/lib/cjs/duet-upload-aria-status.cjs.entry.js +1 -1
- package/lib/cjs/duet-visually-hidden.cjs.entry.js +1 -1
- package/lib/cjs/duet.cjs.js +1 -1
- package/lib/cjs/{focus-utils-61a69e27.js → focus-utils-9226aef7.js} +1 -1
- package/lib/cjs/{index-e68830a0.js → index-60a8ec8a.js} +8 -1
- package/lib/cjs/{js-utils-be1d29ae.js → js-utils-134e0318.js} +11 -0
- package/lib/cjs/loader.cjs.js +1 -1
- package/lib/collection/components/duet-header/duet-header-icon.js +1 -1
- package/lib/collection/components/duet-header/duet-header.css +69 -43
- package/lib/collection/components/duet-header/duet-header.js +117 -114
- package/lib/collection/components/duet-upload/upload-validators.js +6 -1
- package/lib/collection/utils/js-utils.js +11 -0
- package/lib/custom-elements-bundle/index.js +74 -50
- package/lib/duet/duet.esm.js +1 -1
- package/lib/duet/duet.js +1 -1
- package/lib/duet/p-07a2ad03.entry.js +4 -0
- package/lib/duet/{p-dbb4a588.js → p-0b3f675e.js} +0 -0
- package/lib/duet/{p-985cad9f.system.entry.js → p-0dbd00e1.system.entry.js} +1 -1
- package/lib/duet/{p-5ae9988c.entry.js → p-12606a4b.entry.js} +1 -1
- package/lib/duet/p-21321528.system.entry.js +4 -0
- package/lib/duet/{p-18d48e33.entry.js → p-28f87990.entry.js} +1 -1
- package/lib/duet/{p-13f46ee7.entry.js → p-2ac07ac9.entry.js} +1 -1
- package/lib/duet/{p-16952e4c.entry.js → p-2b155bd9.entry.js} +1 -1
- package/lib/duet/{p-1b17eaf5.system.js → p-309e3417.system.js} +3 -3
- package/lib/duet/{p-e89aeabf.system.entry.js → p-30fc343d.system.entry.js} +1 -1
- package/lib/duet/{p-bd6a7d90.system.entry.js → p-322676e3.system.entry.js} +1 -1
- package/lib/duet/{p-cec93899.system.entry.js → p-33a0c070.system.entry.js} +1 -1
- package/lib/duet/{p-92639d0b.system.js → p-34ea0849.system.js} +0 -0
- package/lib/duet/{p-8d16d52d.entry.js → p-440e2c47.entry.js} +1 -1
- package/lib/duet/{p-2d865c6b.entry.js → p-451adbf4.entry.js} +1 -1
- package/lib/duet/{p-25b2f6c4.system.entry.js → p-46b83696.system.entry.js} +1 -1
- package/lib/duet/{p-656c6565.entry.js → p-46d9a853.entry.js} +1 -1
- package/lib/duet/{p-11cab757.system.entry.js → p-48a036c1.system.entry.js} +1 -1
- package/lib/duet/{p-86aacc6c.system.entry.js → p-4dd79e38.system.entry.js} +1 -1
- package/lib/duet/{p-930ef39a.system.entry.js → p-526e6d8e.system.entry.js} +1 -1
- package/lib/duet/{p-0d100aa6.system.entry.js → p-56a80c32.system.entry.js} +1 -1
- package/lib/duet/{p-025d4390.entry.js → p-56f17656.entry.js} +1 -1
- package/lib/duet/{p-fe47e5d0.entry.js → p-590e8508.entry.js} +1 -1
- package/lib/duet/{p-3262c779.entry.js → p-5a5117d4.entry.js} +1 -1
- package/lib/duet/{p-9b558995.entry.js → p-5c1646f2.entry.js} +1 -1
- package/lib/duet/{p-6c6bd25f.entry.js → p-5ea398eb.entry.js} +1 -1
- package/lib/duet/{p-a90075e7.entry.js → p-5f528fa2.entry.js} +1 -1
- package/lib/duet/{p-1f70eb19.system.entry.js → p-62303524.system.entry.js} +1 -1
- package/lib/duet/{p-3f60c823.system.entry.js → p-6255147e.system.entry.js} +1 -1
- package/lib/duet/{p-78ae6f30.system.entry.js → p-63aea0dc.system.entry.js} +1 -1
- package/lib/duet/{p-d3d948a3.system.entry.js → p-64cbe9b7.system.entry.js} +1 -1
- package/lib/duet/{p-d828722e.entry.js → p-65821960.entry.js} +1 -1
- package/lib/duet/{p-ba362a52.entry.js → p-675d713b.entry.js} +1 -1
- package/lib/duet/{p-652b1bad.entry.js → p-67734fad.entry.js} +1 -1
- package/lib/duet/{p-895bbb3c.system.entry.js → p-67ed94fa.system.entry.js} +1 -1
- package/lib/duet/{p-49060f77.system.entry.js → p-6ab6ce4f.system.entry.js} +1 -1
- package/lib/duet/{p-38316d12.entry.js → p-6c5d3def.entry.js} +1 -1
- package/lib/duet/{p-19ae7dfc.system.entry.js → p-6e3f764f.system.entry.js} +1 -1
- package/lib/duet/{p-3d7ab631.js → p-6e64cd02.js} +2 -2
- package/lib/duet/{p-af5ad080.entry.js → p-6f1d6649.entry.js} +1 -1
- package/lib/duet/{p-1f411205.entry.js → p-70e567e9.entry.js} +1 -1
- package/lib/duet/{p-a290738e.entry.js → p-77e3591e.entry.js} +1 -1
- package/lib/duet/{p-f1ed2527.system.entry.js → p-79948b47.system.entry.js} +1 -1
- package/lib/duet/{p-8e9bd0bb.entry.js → p-7d0051ea.entry.js} +1 -1
- package/lib/duet/p-7dfc475d.entry.js +4 -0
- package/lib/duet/{p-ea1e9c21.system.entry.js → p-80d16341.system.entry.js} +1 -1
- package/lib/duet/{p-62a74682.system.entry.js → p-817ef07d.system.entry.js} +1 -1
- package/lib/duet/{p-5f4253e1.system.entry.js → p-838ef01e.system.entry.js} +1 -1
- package/lib/duet/{p-81365c09.system.entry.js → p-84310e48.system.entry.js} +1 -1
- package/lib/duet/{p-6d8b50c4.system.js → p-89f50fd8.system.js} +1 -1
- package/lib/duet/{p-0fe5d208.system.entry.js → p-8bf92f1e.system.entry.js} +1 -1
- package/lib/duet/{p-fc4fd026.system.entry.js → p-8e1cf2fb.system.entry.js} +1 -1
- package/lib/duet/{p-30d9f5f4.system.entry.js → p-9205c79a.system.entry.js} +1 -1
- package/lib/duet/{p-27af3967.entry.js → p-97130a4c.entry.js} +1 -1
- package/lib/duet/{p-2c8c61ce.entry.js → p-97631cdc.entry.js} +1 -1
- package/lib/duet/{p-46364bc6.system.entry.js → p-98ca5a08.system.entry.js} +2 -2
- package/lib/duet/p-99bf8545.js +4 -0
- package/lib/duet/{p-61a46581.system.entry.js → p-9c9fbda5.system.entry.js} +1 -1
- package/lib/duet/{p-b9955a11.system.entry.js → p-9df52009.system.entry.js} +1 -1
- package/lib/duet/{p-932bf52a.entry.js → p-a03485f8.entry.js} +1 -1
- package/lib/duet/p-a806d616.entry.js +4 -0
- package/lib/duet/{p-7169f6c1.entry.js → p-a91bb73d.entry.js} +1 -1
- package/lib/duet/{p-a35ad2c1.system.entry.js → p-ac86999f.system.entry.js} +1 -1
- package/lib/duet/{p-d134b0b3.entry.js → p-aefb80e3.entry.js} +1 -1
- package/lib/duet/{p-9d9c2b86.entry.js → p-b004cbd3.entry.js} +1 -1
- package/lib/duet/{p-3753f57c.system.entry.js → p-b28e6872.system.entry.js} +1 -1
- package/lib/duet/{p-c12f6508.system.entry.js → p-b2ac632f.system.entry.js} +1 -1
- package/lib/duet/{p-72428669.system.entry.js → p-b70f2ae2.system.entry.js} +1 -1
- package/lib/duet/{p-e2f2be10.entry.js → p-bc24eeda.entry.js} +1 -1
- package/lib/duet/{p-b6959e10.system.entry.js → p-bec4d094.system.entry.js} +1 -1
- package/lib/duet/{p-00e1e70f.entry.js → p-bf8f3b14.entry.js} +1 -1
- package/lib/duet/{p-c8cdb936.system.entry.js → p-c383ceb4.system.entry.js} +1 -1
- package/lib/duet/{p-138dc194.system.entry.js → p-c694e7fb.system.entry.js} +1 -1
- package/lib/duet/p-c918ce45.system.entry.js +4 -0
- package/lib/duet/{p-36c2321d.entry.js → p-c9f244f6.entry.js} +1 -1
- package/lib/duet/{p-cffc34b3.entry.js → p-d3d6e75d.entry.js} +1 -1
- package/lib/duet/{p-6daec143.entry.js → p-dfd9a9ff.entry.js} +1 -1
- package/lib/duet/{p-514d1b2d.entry.js → p-e3017ffc.entry.js} +1 -1
- package/lib/duet/{p-c6c6518c.entry.js → p-e358c599.entry.js} +1 -1
- package/lib/duet/{p-76b9d26f.entry.js → p-e5b22358.entry.js} +1 -1
- package/lib/duet/{p-0230f7c1.system.entry.js → p-ea12c081.system.entry.js} +1 -1
- package/lib/duet/{p-aa09f585.entry.js → p-ef2f6881.entry.js} +1 -1
- package/lib/duet/{p-4f12201d.system.entry.js → p-f2831cda.system.entry.js} +1 -1
- package/lib/duet/{p-4651626c.entry.js → p-f2dce86d.entry.js} +1 -1
- package/lib/duet/{p-634fbfc5.entry.js → p-f30eb0fd.entry.js} +1 -1
- package/lib/duet/{p-111d9c07.system.entry.js → p-f661ebf9.system.entry.js} +1 -1
- package/lib/duet/{p-fcecdd10.system.entry.js → p-f6f30fb7.system.entry.js} +1 -1
- package/lib/duet/{p-ab7ab38c.entry.js → p-faf6cfe8.entry.js} +1 -1
- package/lib/duet/{p-0ba86e25.system.entry.js → p-fdb0277c.system.entry.js} +1 -1
- package/lib/duet/{p-d073feef.system.js → p-fe03f359.system.js} +1 -1
- package/lib/duet/{p-aaf68044.system.entry.js → p-ffadc9ea.system.entry.js} +1 -1
- package/lib/esm/duet-action-button.entry.js +2 -2
- package/lib/esm/duet-alert.entry.js +1 -1
- package/lib/esm/duet-badge.entry.js +1 -1
- package/lib/esm/duet-breadcrumb.entry.js +1 -1
- package/lib/esm/duet-breadcrumbs.entry.js +1 -1
- package/lib/esm/duet-button_2.entry.js +1 -1
- package/lib/esm/duet-caption_4.entry.js +1 -1
- package/lib/esm/duet-card.entry.js +1 -1
- package/lib/esm/duet-checkbox.entry.js +1 -1
- package/lib/esm/duet-choice_2.entry.js +2 -2
- package/lib/esm/duet-collapsible.entry.js +1 -1
- package/lib/esm/duet-combobox.entry.js +2 -2
- package/lib/esm/duet-cookie-consent.entry.js +1 -1
- package/lib/esm/duet-date-picker.entry.js +2 -2
- package/lib/esm/duet-divider_2.entry.js +1 -1
- package/lib/esm/duet-editable-table_3.entry.js +8 -3
- package/lib/esm/duet-empty-state.entry.js +1 -1
- package/lib/esm/duet-fieldset.entry.js +1 -1
- package/lib/esm/duet-footer.entry.js +1 -1
- package/lib/esm/duet-grid_2.entry.js +1 -1
- package/lib/esm/duet-header_2.entry.js +51 -49
- package/lib/esm/duet-hero.entry.js +1 -1
- package/lib/esm/duet-icon.entry.js +1 -1
- package/lib/esm/duet-input_2.entry.js +1 -1
- package/lib/esm/duet-layout.entry.js +1 -1
- package/lib/esm/duet-list_2.entry.js +1 -1
- package/lib/esm/duet-modal.entry.js +2 -2
- package/lib/esm/duet-notification_2.entry.js +1 -1
- package/lib/esm/duet-number-input.entry.js +1 -1
- package/lib/esm/duet-pagination_2.entry.js +2 -2
- package/lib/esm/duet-progress.entry.js +1 -1
- package/lib/esm/duet-radio_2.entry.js +1 -1
- package/lib/esm/duet-range-slider.entry.js +1 -1
- package/lib/esm/duet-scrollable_3.entry.js +1 -1
- package/lib/esm/duet-select.entry.js +1 -1
- package/lib/esm/duet-step_2.entry.js +1 -1
- package/lib/esm/duet-textarea.entry.js +1 -1
- package/lib/esm/duet-toggle.entry.js +1 -1
- package/lib/esm/duet-tooltip.entry.js +1 -1
- package/lib/esm/duet-tray.entry.js +1 -1
- package/lib/esm/duet-upload-aria-status.entry.js +1 -1
- package/lib/esm/duet-visually-hidden.entry.js +1 -1
- package/lib/esm/duet.js +1 -1
- package/lib/esm/{focus-utils-f28f7d53.js → focus-utils-8dc04c1c.js} +1 -1
- package/lib/esm/{index-1e42fd5c.js → index-e1964887.js} +8 -2
- package/lib/esm/{js-utils-52e0944c.js → js-utils-fa98b8cd.js} +11 -0
- package/lib/esm/loader.js +1 -1
- package/lib/esm-es5/duet-action-button.entry.js +1 -1
- package/lib/esm-es5/duet-alert.entry.js +1 -1
- package/lib/esm-es5/duet-badge.entry.js +1 -1
- package/lib/esm-es5/duet-breadcrumb.entry.js +1 -1
- package/lib/esm-es5/duet-breadcrumbs.entry.js +1 -1
- package/lib/esm-es5/duet-button_2.entry.js +1 -1
- package/lib/esm-es5/duet-caption_4.entry.js +1 -1
- package/lib/esm-es5/duet-card.entry.js +1 -1
- package/lib/esm-es5/duet-checkbox.entry.js +1 -1
- package/lib/esm-es5/duet-choice_2.entry.js +1 -1
- package/lib/esm-es5/duet-collapsible.entry.js +1 -1
- package/lib/esm-es5/duet-combobox.entry.js +1 -1
- package/lib/esm-es5/duet-cookie-consent.entry.js +1 -1
- package/lib/esm-es5/duet-date-picker.entry.js +1 -1
- package/lib/esm-es5/duet-divider_2.entry.js +1 -1
- package/lib/esm-es5/duet-editable-table_3.entry.js +1 -1
- package/lib/esm-es5/duet-empty-state.entry.js +1 -1
- package/lib/esm-es5/duet-fieldset.entry.js +1 -1
- package/lib/esm-es5/duet-footer.entry.js +1 -1
- package/lib/esm-es5/duet-grid_2.entry.js +1 -1
- package/lib/esm-es5/duet-header_2.entry.js +2 -2
- package/lib/esm-es5/duet-hero.entry.js +1 -1
- package/lib/esm-es5/duet-icon.entry.js +1 -1
- package/lib/esm-es5/duet-input_2.entry.js +1 -1
- package/lib/esm-es5/duet-layout.entry.js +1 -1
- package/lib/esm-es5/duet-list_2.entry.js +1 -1
- package/lib/esm-es5/duet-modal.entry.js +1 -1
- package/lib/esm-es5/duet-notification_2.entry.js +1 -1
- package/lib/esm-es5/duet-number-input.entry.js +1 -1
- package/lib/esm-es5/duet-pagination_2.entry.js +1 -1
- package/lib/esm-es5/duet-progress.entry.js +1 -1
- package/lib/esm-es5/duet-radio_2.entry.js +1 -1
- package/lib/esm-es5/duet-range-slider.entry.js +1 -1
- package/lib/esm-es5/duet-scrollable_3.entry.js +1 -1
- package/lib/esm-es5/duet-select.entry.js +1 -1
- package/lib/esm-es5/duet-step_2.entry.js +1 -1
- package/lib/esm-es5/duet-textarea.entry.js +2 -2
- package/lib/esm-es5/duet-toggle.entry.js +1 -1
- package/lib/esm-es5/duet-tooltip.entry.js +1 -1
- package/lib/esm-es5/duet-tray.entry.js +1 -1
- package/lib/esm-es5/duet-upload-aria-status.entry.js +1 -1
- package/lib/esm-es5/duet-visually-hidden.entry.js +1 -1
- package/lib/esm-es5/duet.js +1 -1
- package/lib/esm-es5/{focus-utils-f28f7d53.js → focus-utils-8dc04c1c.js} +1 -1
- package/lib/esm-es5/{index-1e42fd5c.js → index-e1964887.js} +3 -3
- package/lib/esm-es5/{js-utils-52e0944c.js → js-utils-fa98b8cd.js} +0 -0
- package/lib/esm-es5/loader.js +1 -1
- package/lib/types/components/duet-header/duet-header-icon.d.ts +1 -0
- package/lib/types/components/duet-header/duet-header.d.ts +2 -2
- package/lib/types/components.d.ts +2 -2
- package/lib/types/utils/js-utils.d.ts +11 -0
- package/package.json +5 -5
- package/lib/duet/p-1d6e11db.entry.js +0 -4
- package/lib/duet/p-358583f9.system.entry.js +0 -4
- package/lib/duet/p-6842301e.entry.js +0 -4
- package/lib/duet/p-7b6f2f71.js +0 -4
- package/lib/duet/p-983ce052.system.entry.js +0 -4
- package/lib/duet/p-d3443dea.entry.js +0 -4
|
@@ -25,7 +25,7 @@ const createEvent = (ev, data) => ({
|
|
|
25
25
|
});
|
|
26
26
|
/**
|
|
27
27
|
* @slot utility - A slot for utilities, such as a notification drawer or shopping basket.
|
|
28
|
-
* @slot logo-utility - A slot to place elements alongside the logo. This takes precedence over the **region** prop. Note: not available in
|
|
28
|
+
* @slot logo-utility - A slot to place elements alongside the logo. This takes precedence over the **region** prop. Note: not available in multilevel header.
|
|
29
29
|
* @part header - piercing selector for styling the header element.
|
|
30
30
|
*/
|
|
31
31
|
export class DuetHeader {
|
|
@@ -57,7 +57,7 @@ export class DuetHeader {
|
|
|
57
57
|
this.processedSearch = null;
|
|
58
58
|
this.processedUser = null;
|
|
59
59
|
this.processedBack = null;
|
|
60
|
-
this.renderDesktopNav = (_a = this.mql[0]) === null || _a === void 0 ? void 0 : _a.matches;
|
|
60
|
+
this.renderDesktopNav = Build.isServer ? true : (_a = this.mql[0]) === null || _a === void 0 ? void 0 : _a.matches;
|
|
61
61
|
/**
|
|
62
62
|
* Theme of the header.
|
|
63
63
|
*/
|
|
@@ -173,7 +173,7 @@ export class DuetHeader {
|
|
|
173
173
|
this.skipToId = "";
|
|
174
174
|
/**
|
|
175
175
|
* Region that is shown next to the logo. If empty, region will be hidden.
|
|
176
|
-
* Note: not available in
|
|
176
|
+
* Note: not available in multilevel header.
|
|
177
177
|
*/
|
|
178
178
|
this.region = "";
|
|
179
179
|
/**
|
|
@@ -418,8 +418,9 @@ export class DuetHeader {
|
|
|
418
418
|
* Local methods.
|
|
419
419
|
*/
|
|
420
420
|
async refresh() {
|
|
421
|
-
|
|
422
|
-
|
|
421
|
+
var _a, _b;
|
|
422
|
+
if (this.renderDesktopNav !== Build.isServer ? true : (_a = this.mql[0]) === null || _a === void 0 ? void 0 : _a.matches) {
|
|
423
|
+
this.renderDesktopNav = Build.isServer ? true : (_b = this.mql[0]) === null || _b === void 0 ? void 0 : _b.matches;
|
|
423
424
|
this.openMenu = null;
|
|
424
425
|
if (this.isSlideOutOpen) {
|
|
425
426
|
this.toggleMenu(document.createEvent("UIEvents"), "mobile");
|
|
@@ -492,10 +493,10 @@ export class DuetHeader {
|
|
|
492
493
|
*/
|
|
493
494
|
render() {
|
|
494
495
|
const { skipLabel, changeLanguage, activeLanguage } = this.accessibleI18nLabels;
|
|
495
|
-
const skipToLabel = this.skipToId ? (h("a", { href: this.skipToId, class: "duet-header-skip", onClick: this.handleSkipClick }, skipLabel)) : null;
|
|
496
|
-
const logo = (h("duet-logo", { href: this.logoHref, size: "medium", ref: el => (this.logoEl = el), language: this.language, theme: this.theme, onClick: this.handleLogoClick }));
|
|
497
|
-
const largeLogo = (h("duet-logo", { href: this.logoHref, size: "large", ref: el => (this.logoEl = el), language: this.language, theme: this.theme, onClick: this.handleLogoClick }));
|
|
498
|
-
const contactDropdown = this.contact && this.processedContactItems ? (h(DuetHeaderDropdown, { id: "duet-header-contact", label: this.contact, icon: contactDropdownIcon.svg, active: this.isContactOpen, isOpen: this.isContactOpen, badge: false, toggleRef: el => (this.contactItemsButtonEl = el), itemsRef: el => (this.contactItemsEl = el), onToggle: event => this.toggleMenu(event, "contact") }, this.processedContactItems.map(item => (h("a", { role: "menuitem", href: item.href || "#", id: item.id, onClick: event => this.handleContactClick(event, item), onKeyDown: ev => this.handleArrowKeys(ev), target: item.external ? "_blank" : "_self" },
|
|
496
|
+
const skipToLabel = () => this.skipToId ? (h("a", { href: this.skipToId, class: "duet-header-skip", onClick: this.handleSkipClick }, skipLabel)) : null;
|
|
497
|
+
const logo = () => (h("duet-logo", { href: this.logoHref, size: "medium", ref: el => (this.logoEl = el), language: this.language, theme: this.theme, onClick: this.handleLogoClick }));
|
|
498
|
+
const largeLogo = () => (h("duet-logo", { href: this.logoHref, size: "large", ref: el => (this.logoEl = el), language: this.language, theme: this.theme, onClick: this.handleLogoClick }));
|
|
499
|
+
const contactDropdown = () => this.contact && this.processedContactItems ? (h(DuetHeaderDropdown, { id: "duet-header-contact", label: this.contact, icon: contactDropdownIcon.svg, active: this.isContactOpen, isOpen: this.isContactOpen, badge: false, toggleRef: el => (this.contactItemsButtonEl = el), itemsRef: el => (this.contactItemsEl = el), onToggle: event => this.toggleMenu(event, "contact") }, this.processedContactItems.map(item => (h("a", { role: "menuitem", href: item.href || "#", id: item.id, onClick: event => this.handleContactClick(event, item), onKeyDown: ev => this.handleArrowKeys(ev), target: item.external ? "_blank" : "_self" },
|
|
499
500
|
item.label,
|
|
500
501
|
Build.isBrowser && item.external && (h(Fragment, null,
|
|
501
502
|
h("duet-visually-hidden", null,
|
|
@@ -503,25 +504,25 @@ export class DuetHeader {
|
|
|
503
504
|
this.accessibleLabelExternal),
|
|
504
505
|
h("span", { class: "duet-header-link-external" },
|
|
505
506
|
h("duet-icon", { name: "action-new-window-small", size: "xx-small", margin: "none", color: this.theme === "turva" ? "primary-turva" : "primary" }))))))))) : null;
|
|
506
|
-
const languageDropdown = this.language && this.processedLanguageItems ? (h(DuetHeaderDropdown, { id: "duet-header-language", label: this.language, icon: languageIcon.svg, accessibleText: `${changeLanguage}${this.hasLanguageChanged ? `, ${activeLanguage}` : ""}`, active: this.isLanguageOpen, isOpen: this.isLanguageOpen, badge: false, toggleRef: el => (this.languageItemsButtonEl = el), itemsRef: el => (this.languageItemsEl = el), onToggle: event => this.toggleMenu(event, "language") }, this.processedLanguageItems.map(item => (h("a", { class: { active: this.language === item.country }, "aria-selected": this.language === item.country, role: "menuitem", id: item.id, lang: item.country, href: item.href || "#", onClick: event => this.handleLanguageClick(event, item), onKeyDown: this.handleArrowKeys }, item.label))))) : null;
|
|
507
|
-
const processedUserWithLink = this.processedUser && this.processedUser.href ? (h("a", { href: this.processedUser.href || "#", id: this.processedUser.id, class: "duet-header-user duet-header-button", onClick: this.handleUserClick },
|
|
507
|
+
const languageDropdown = () => this.language && this.processedLanguageItems ? (h(DuetHeaderDropdown, { id: "duet-header-language", label: this.language, icon: languageIcon.svg, accessibleText: `${changeLanguage}${this.hasLanguageChanged ? `, ${activeLanguage}` : ""}`, active: this.isLanguageOpen, isOpen: this.isLanguageOpen, badge: false, toggleRef: el => (this.languageItemsButtonEl = el), itemsRef: el => (this.languageItemsEl = el), onToggle: event => this.toggleMenu(event, "language") }, this.processedLanguageItems.map(item => (h("a", { class: { active: this.language === item.country }, "aria-selected": this.language === item.country, role: "menuitem", id: item.id, lang: item.country, href: item.href || "#", onClick: event => this.handleLanguageClick(event, item), onKeyDown: this.handleArrowKeys }, item.label))))) : null;
|
|
508
|
+
const processedUserWithLink = () => this.processedUser && this.processedUser.href ? (h("a", { href: this.processedUser.href || "#", id: this.processedUser.id, class: "duet-header-user duet-header-button", onClick: this.handleUserClick },
|
|
508
509
|
h(DuetHeaderIcon, { icon: userIcon.svg }),
|
|
509
510
|
h("span", { class: "duet-header-user-label" }, this.processedUser.label))) : null;
|
|
510
|
-
const processedUserWithoutLink = this.processedUser && !this.processedUser.href ? (h("span", { id: this.processedUser.id, class: "duet-header-user duet-header-button duet-header-no-action" },
|
|
511
|
+
const processedUserWithoutLink = () => this.processedUser && !this.processedUser.href ? (h("span", { id: this.processedUser.id, class: "duet-header-user duet-header-button duet-header-no-action" },
|
|
511
512
|
h(DuetHeaderIcon, { icon: userIcon.svg }),
|
|
512
513
|
h("span", { class: "duet-header-user-label" }, this.processedUser.label))) : null;
|
|
513
|
-
const
|
|
514
|
-
|
|
515
|
-
h(DuetHeaderIcon, { icon: this.processedSession.type === "logout" ? logoutIcon.svg : loginIcon.svg, iconSize:
|
|
514
|
+
const processedSession = () => this.processedSession ? (h("a", { href: this.processedSession.href || "#", id: this.processedSession.id, class: "duet-header-logout duet-header-button", onClick: this.handleSessionClick },
|
|
515
|
+
h(DuetHeaderIcon, { class: "desktop", icon: this.processedSession.type === "logout" ? logoutIcon.svg : loginIcon.svg, iconSize: "x-small" }),
|
|
516
|
+
h(DuetHeaderIcon, { class: "mobile", icon: this.processedSession.type === "logout" ? logoutIcon.svg : loginIcon.svg, iconSize: "small" }),
|
|
516
517
|
h("span", { class: "duet-header-button-label" }, this.processedSession.label))) : null;
|
|
517
|
-
const processedSessionDropdown = this.processedSession && this.processedSession.sessionItems ? (h(DuetHeaderDropdown, { className: "duet-header-session", id: "duet-header-session", label: this.processedSession.label, icon: this.processedSession.type === "logout" ? logoutIcon.svg : loginIcon.svg, active: this.isSessionOpen, isOpen: this.isSessionOpen, badge: false, toggleRef: el => (this.sessionItemsButtonEl = el), itemsRef: el => (this.sessionItemsEl = el), onToggle: event => this.toggleMenu(event, "session") }, this.processedSession.sessionItems.map((sessionItem, index) => (h(Fragment, null,
|
|
518
|
+
const processedSessionDropdown = () => this.processedSession && this.processedSession.sessionItems ? (h(DuetHeaderDropdown, { className: "duet-header-session", id: "duet-header-session", label: this.processedSession.label, icon: this.processedSession.type === "logout" ? logoutIcon.svg : loginIcon.svg, active: this.isSessionOpen, isOpen: this.isSessionOpen, badge: false, toggleRef: el => (this.sessionItemsButtonEl = el), itemsRef: el => (this.sessionItemsEl = el), onToggle: event => this.toggleMenu(event, "session") }, this.processedSession.sessionItems.map((sessionItem, index) => (h(Fragment, null,
|
|
518
519
|
sessionItem.label && h("span", { class: "duet-header-session-label" }, sessionItem.label),
|
|
519
520
|
h("duet-spacer", { size: "small", "aria-hidden": "true" }),
|
|
520
521
|
sessionItem.items.map(item => (h("a", { role: "menuitem", "aria-label": sessionItem.label ? `${sessionItem.label} ${item.label}` : item.label, id: item.id, href: item.href || "#", onClick: event => this.handleSessionItemClick(event, item), onKeyDown: this.handleArrowKeys }, item.label))),
|
|
521
522
|
index !== this.processedSession.sessionItems.length - 1 && (h(Fragment, null,
|
|
522
523
|
h("duet-spacer", { size: "x-small", "aria-hidden": "true" }),
|
|
523
524
|
h("duet-divider", { margin: "none", "aria-hidden": "true" })))))))) : null;
|
|
524
|
-
const processedSearch = this.processedSearch ? (h("a", { href: this.processedSearch.href || "#", id: this.processedSearch.id, class: "duet-header-search duet-header-button", onClick: this.handleSearchClick },
|
|
525
|
+
const processedSearch = () => this.processedSearch ? (h("a", { href: this.processedSearch.href || "#", id: this.processedSearch.id, class: "duet-header-search duet-header-button", onClick: this.handleSearchClick },
|
|
525
526
|
h(DuetHeaderIcon, { icon: searchIcon.svg }),
|
|
526
527
|
h("span", { class: "duet-header-button-label" }, this.processedSearch.label))) : null;
|
|
527
528
|
// Back variation
|
|
@@ -535,23 +536,104 @@ export class DuetHeader {
|
|
|
535
536
|
"duet-header-inactive": true,
|
|
536
537
|
}, part: "header" },
|
|
537
538
|
h("div", { class: "duet-header-top" },
|
|
538
|
-
skipToLabel,
|
|
539
|
+
skipToLabel(),
|
|
539
540
|
h("duet-button", { url: this.processedBack.href, id: this.processedBack.id, theme: this.theme, variation: "plain", color: this.theme === "turva" ? "secondary-turva" : "secondary", icon: "navigation-arrow-left", iconSize: "large", onClick: this.handleBackClick }, this.processedBack.label),
|
|
540
|
-
logo,
|
|
541
|
+
logo(),
|
|
541
542
|
h("slot", { name: "logo-utility" }))))));
|
|
542
543
|
}
|
|
543
|
-
// multi level desktop variation
|
|
544
544
|
const itemsHaveSubItems = this.processedItems && this.processedItems.some(item => item.items && item.items.length > 0);
|
|
545
|
-
|
|
545
|
+
const isSecondLevelActive = this.processedItems &&
|
|
546
|
+
this.processedItems.some(item => item.items && item.items.some(secondLevelItem => secondLevelItem.active === true));
|
|
547
|
+
const isThirdLevelActive = this.processedItems &&
|
|
548
|
+
this.processedItems.some(item => item.items &&
|
|
549
|
+
item.items.some(secondLevelItem => secondLevelItem.items && secondLevelItem.items.some(thirdLevelItem => thirdLevelItem.active === true)));
|
|
550
|
+
const defaultVariationContent = (h("div", { class: {
|
|
551
|
+
"duet-header-reserved-space": true,
|
|
552
|
+
"duet-with-links": !!this.processedItems,
|
|
553
|
+
"duet-header-second-level-active": isSecondLevelActive,
|
|
554
|
+
"duet-header-third-level-active": isThirdLevelActive,
|
|
555
|
+
"duet-header-items-have-sub-items": itemsHaveSubItems,
|
|
556
|
+
} },
|
|
557
|
+
h("header", { class: {
|
|
558
|
+
"duet-header": true,
|
|
559
|
+
"duet-theme-turva": this.theme === "turva",
|
|
560
|
+
"duet-header-inactive": !this.processedItems,
|
|
561
|
+
}, part: "header" },
|
|
562
|
+
h("div", { class: "duet-header-top" },
|
|
563
|
+
skipToLabel(),
|
|
564
|
+
logo(),
|
|
565
|
+
h("slot", { name: "logo-utility" }, this.region && h("div", { class: "duet-header-region" }, this.region)),
|
|
566
|
+
(this.processedItems ||
|
|
567
|
+
languageDropdown() ||
|
|
568
|
+
contactDropdown() ||
|
|
569
|
+
this.processedSession ||
|
|
570
|
+
this.processedUser) && (h("button", { class: { "duet-header-toggle": true, active: this.isSlideOutOpen }, onClick: event => this.toggleMenu(event, "mobile"), type: "button" },
|
|
571
|
+
h("duet-visually-hidden", null, this.accessibleLabel),
|
|
572
|
+
h(DuetHeaderHamburger, null)))),
|
|
573
|
+
h("div", { ref: el => (this.navigationEl = el), class: {
|
|
574
|
+
"duet-header-bottom": true,
|
|
575
|
+
active: this.isSlideOutOpen,
|
|
576
|
+
inactive: !this.processedItems,
|
|
577
|
+
} },
|
|
578
|
+
h("nav", { class: "duet-header-items", role: "navigation" }, this.processedItems &&
|
|
579
|
+
this.processedItems.map((item, itemIndex) => (h("div", { class: "duet-header-item-container" },
|
|
580
|
+
h("a", { class: {
|
|
581
|
+
"duet-header-first-level": true,
|
|
582
|
+
"duet-header-item": true,
|
|
583
|
+
active: (!itemsHaveSubItems && this.currentHref === item.href) ||
|
|
584
|
+
(item.active === true &&
|
|
585
|
+
!this.openMenu &&
|
|
586
|
+
this.closedActives &&
|
|
587
|
+
this.closedActives.length === 1) ||
|
|
588
|
+
(item.active === true &&
|
|
589
|
+
!this.openMenu &&
|
|
590
|
+
item.items &&
|
|
591
|
+
!item.items.some(s => s.active === true)),
|
|
592
|
+
}, href: item.href || "#", id: item.id || `header-item-${itemIndex}`, onClick: event => this.handleItemClick(event, item) },
|
|
593
|
+
item.label,
|
|
594
|
+
item.badge && h("div", { class: "duet-header-badge" })),
|
|
595
|
+
item.items &&
|
|
596
|
+
item.items
|
|
597
|
+
.filter(secondLevelitem => secondLevelitem.items && secondLevelitem.items.length > 0)
|
|
598
|
+
.map((secondLevelItem, secondLevelItemIndex) => {
|
|
599
|
+
const id = secondLevelItem.id || `header-item-${itemIndex}-${secondLevelItemIndex}`;
|
|
600
|
+
const active = (!this.openMenu &&
|
|
601
|
+
secondLevelItem.active === true &&
|
|
602
|
+
!(this.closedActives && !!this.closedActives.find(i => i === id))) ||
|
|
603
|
+
this.openMenu === id;
|
|
604
|
+
const activeBar = active && !(secondLevelItem.items && secondLevelItem.items.some(s => s.active === true));
|
|
605
|
+
return (h(DuetHeaderDropdown, { id: id, className: "duet-header-second-level", label: secondLevelItem.label, icon: `${secondLevelItem.icon}.svg`, active: activeBar, isOpen: active, badge: secondLevelItem.badge, toggleRef: el => (this.subMenuButtonRefs[id] = el), itemsRef: el => (this.subMenuItemRefs[id] = el), onToggle: event => this.toggleMenu(event, "sub", id, secondLevelItem.active === true) },
|
|
606
|
+
h("div", { class: "duet-header-third-level" }, secondLevelItem.items &&
|
|
607
|
+
secondLevelItem.items.map(thirdLevelItem => (h("a", { class: {
|
|
608
|
+
"duet-header-item": true,
|
|
609
|
+
active: thirdLevelItem.active === true,
|
|
610
|
+
}, role: "menuitem", href: thirdLevelItem.href || "#", id: thirdLevelItem.id, onClick: event => this.handleItemClick(event, thirdLevelItem), onKeyDown: ev => this.handleArrowKeys(ev), target: thirdLevelItem.external ? "_blank" : "_self" },
|
|
611
|
+
thirdLevelItem.icon && (h("div", { class: "duet-header-icon" },
|
|
612
|
+
h("duet-icon", { margin: "none", size: "medium", name: thirdLevelItem.icon, color: "currentColor" }))),
|
|
613
|
+
h("span", null, thirdLevelItem.label),
|
|
614
|
+
thirdLevelItem.badge && h("div", { class: "duet-header-badge" })))))));
|
|
615
|
+
}))))),
|
|
616
|
+
h("div", { class: "duet-header-bottom-utils" },
|
|
617
|
+
h("slot", { name: "utility" })),
|
|
618
|
+
h("div", { class: "duet-header-utils" },
|
|
619
|
+
!itemsHaveSubItems && contactDropdown(),
|
|
620
|
+
languageDropdown(),
|
|
621
|
+
!itemsHaveSubItems && (h(Fragment, null,
|
|
622
|
+
processedUserWithLink(),
|
|
623
|
+
processedUserWithoutLink())),
|
|
624
|
+
processedSearch(),
|
|
625
|
+
processedSession())))));
|
|
626
|
+
// multi level variation
|
|
627
|
+
if (itemsHaveSubItems) {
|
|
546
628
|
const activeSegment = this.processedItems.find(item => item.active);
|
|
547
629
|
const isThirdLevelActive = this.processedItems &&
|
|
548
630
|
this.processedItems.some(item => item.items &&
|
|
549
631
|
item.items.some(secondLevelItem => secondLevelItem.items && secondLevelItem.items.some(thirdLevelItem => thirdLevelItem.active === true)));
|
|
550
632
|
const segmentId = "duet-header-segment";
|
|
551
|
-
return (h(Host, { class: "duet-header-multi-level-
|
|
633
|
+
return (h(Host, { class: "duet-header-multi-level-variation" },
|
|
552
634
|
h("div", { class: {
|
|
553
|
-
"duet-header-multi-level
|
|
554
|
-
"duet-header-multi-level-
|
|
635
|
+
"duet-header-multi-level": true,
|
|
636
|
+
"duet-header-multi-level-third-level-is-open": isThirdLevelActive,
|
|
555
637
|
} },
|
|
556
638
|
h("header", { class: {
|
|
557
639
|
"duet-header": true,
|
|
@@ -559,15 +641,15 @@ export class DuetHeader {
|
|
|
559
641
|
"duet-header-inactive": !this.processedItems,
|
|
560
642
|
}, part: "header" },
|
|
561
643
|
h("div", { class: "duet-header-top" },
|
|
562
|
-
skipToLabel,
|
|
644
|
+
skipToLabel(),
|
|
563
645
|
h("div", { class: "logo-and-segment" },
|
|
564
|
-
h("div", null, largeLogo),
|
|
646
|
+
h("div", null, largeLogo()),
|
|
565
647
|
this.processedItems && (h(DuetHeaderDropdown, { id: segmentId, label: activeSegment.label, active: this.isSegmentOpen, isOpen: this.isSegmentOpen, badge: false, toggleRef: el => (this.segmentItemsButtonEl = el), itemsRef: el => (this.segmentItemsEl = el), onToggle: event => this.toggleMenu(event, "segment") }, this.processedItems.map(item => (h("a", { class: { active: activeSegment === item }, role: "menuitem", href: item.href || "#", id: item.id, onClick: event => this.handleItemClick(event, item), onKeyDown: ev => this.handleArrowKeys(ev), target: item.external ? "_blank" : "_self" },
|
|
566
648
|
item.icon && (h("div", { class: "duet-header-icon" },
|
|
567
649
|
h("duet-icon", { margin: "none", size: "x-small", name: item.icon, color: "currentColor" }))),
|
|
568
650
|
h("span", null, item.label),
|
|
569
651
|
item.badge && h("div", { class: "duet-header-badge" }))))))),
|
|
570
|
-
h("nav", { class: "duet-header-multi-level-
|
|
652
|
+
h("nav", { class: "duet-header-multi-level-nav" }, activeSegment.items &&
|
|
571
653
|
activeSegment.items
|
|
572
654
|
.filter(secondLevelItem => secondLevelItem.items && secondLevelItem.items.length > 0)
|
|
573
655
|
.map((secondLevelItem, secondLevelItemIndex) => {
|
|
@@ -579,96 +661,17 @@ export class DuetHeader {
|
|
|
579
661
|
h("span", null, thirdLevelItem.label),
|
|
580
662
|
thirdLevelItem.badge && h("div", { class: "duet-header-badge" }))))));
|
|
581
663
|
})),
|
|
582
|
-
h("div", { class: "duet-header-multi-level-
|
|
583
|
-
processedSearch,
|
|
584
|
-
languageDropdown,
|
|
585
|
-
processedSessionDropdown != null ? processedSessionDropdown : processedSession),
|
|
586
|
-
h("slot", { name: "utility" }))))
|
|
664
|
+
h("div", { class: "duet-header-multi-level-utils" },
|
|
665
|
+
processedSearch(),
|
|
666
|
+
languageDropdown(),
|
|
667
|
+
processedSessionDropdown() != null ? processedSessionDropdown() : processedSession()),
|
|
668
|
+
h("slot", { name: "utility" })))),
|
|
669
|
+
defaultVariationContent));
|
|
587
670
|
}
|
|
588
671
|
// Default variation
|
|
589
|
-
const isSecondLevelActive = this.processedItems &&
|
|
590
|
-
this.processedItems.some(item => item.items && item.items.some(secondLevelItem => secondLevelItem.active === true));
|
|
591
|
-
const isThirdLevelActive = this.processedItems &&
|
|
592
|
-
this.processedItems.some(item => item.items &&
|
|
593
|
-
item.items.some(secondLevelItem => secondLevelItem.items && secondLevelItem.items.some(thirdLevelItem => thirdLevelItem.active === true)));
|
|
594
672
|
return (h(Host, { class: {
|
|
595
673
|
"duet-header-default-variation": true,
|
|
596
|
-
} },
|
|
597
|
-
h("div", { class: {
|
|
598
|
-
"duet-header-reserved-space": true,
|
|
599
|
-
"duet-with-links": !!this.processedItems,
|
|
600
|
-
"duet-header-second-level-active": isSecondLevelActive,
|
|
601
|
-
"duet-header-third-level-active": isThirdLevelActive,
|
|
602
|
-
} },
|
|
603
|
-
h("header", { class: {
|
|
604
|
-
"duet-header": true,
|
|
605
|
-
"duet-theme-turva": this.theme === "turva",
|
|
606
|
-
"duet-header-inactive": !this.processedItems,
|
|
607
|
-
}, part: "header" },
|
|
608
|
-
h("div", { class: "duet-header-top" },
|
|
609
|
-
skipToLabel,
|
|
610
|
-
logo,
|
|
611
|
-
h("slot", { name: "logo-utility" }, this.region && h("div", { class: "duet-header-region" }, this.region)),
|
|
612
|
-
(this.processedItems ||
|
|
613
|
-
languageDropdown ||
|
|
614
|
-
contactDropdown ||
|
|
615
|
-
this.processedSession ||
|
|
616
|
-
this.processedUser) && (h("button", { class: { "duet-header-toggle": true, active: this.isSlideOutOpen }, onClick: event => this.toggleMenu(event, "mobile"), type: "button" },
|
|
617
|
-
h("duet-visually-hidden", null, this.accessibleLabel),
|
|
618
|
-
h(DuetHeaderHamburger, null)))),
|
|
619
|
-
h("div", { ref: el => (this.navigationEl = el), class: {
|
|
620
|
-
"duet-header-bottom": true,
|
|
621
|
-
active: this.isSlideOutOpen,
|
|
622
|
-
inactive: !this.processedItems,
|
|
623
|
-
} },
|
|
624
|
-
h("nav", { class: "duet-header-items", role: "navigation" }, this.processedItems &&
|
|
625
|
-
this.processedItems.map((item, itemIndex) => (h("div", { class: "duet-header-item-container" },
|
|
626
|
-
h("a", { class: {
|
|
627
|
-
"duet-header-first-level": true,
|
|
628
|
-
"duet-header-item": true,
|
|
629
|
-
active: (!itemsHaveSubItems && this.currentHref === item.href) ||
|
|
630
|
-
(item.active === true &&
|
|
631
|
-
!this.openMenu &&
|
|
632
|
-
this.closedActives &&
|
|
633
|
-
this.closedActives.length === 1) ||
|
|
634
|
-
(item.active === true &&
|
|
635
|
-
!this.openMenu &&
|
|
636
|
-
item.items &&
|
|
637
|
-
!item.items.some(s => s.active === true)),
|
|
638
|
-
}, href: item.href || "#", id: item.id || `header-item-${itemIndex}`, onClick: event => this.handleItemClick(event, item) },
|
|
639
|
-
item.label,
|
|
640
|
-
item.badge && h("div", { class: "duet-header-badge" })),
|
|
641
|
-
item.items &&
|
|
642
|
-
item.items
|
|
643
|
-
.filter(secondLevelitem => secondLevelitem.items && secondLevelitem.items.length > 0)
|
|
644
|
-
.map((secondLevelItem, secondLevelItemIndex) => {
|
|
645
|
-
const id = secondLevelItem.id || `header-item-${itemIndex}-${secondLevelItemIndex}`;
|
|
646
|
-
const active = (!this.openMenu &&
|
|
647
|
-
secondLevelItem.active === true &&
|
|
648
|
-
!(this.closedActives && !!this.closedActives.find(i => i === id))) ||
|
|
649
|
-
this.openMenu === id;
|
|
650
|
-
const activeBar = active && !(secondLevelItem.items && secondLevelItem.items.some(s => s.active === true));
|
|
651
|
-
return (h(DuetHeaderDropdown, { id: id, className: "duet-header-second-level", label: secondLevelItem.label, icon: `${secondLevelItem.icon}.svg`, active: activeBar, isOpen: active, badge: secondLevelItem.badge, toggleRef: el => (this.subMenuButtonRefs[id] = el), itemsRef: el => (this.subMenuItemRefs[id] = el), onToggle: event => this.toggleMenu(event, "sub", id, secondLevelItem.active === true) },
|
|
652
|
-
h("div", { class: "duet-header-third-level" }, secondLevelItem.items &&
|
|
653
|
-
secondLevelItem.items.map(thirdLevelItem => (h("a", { class: {
|
|
654
|
-
"duet-header-item": true,
|
|
655
|
-
active: thirdLevelItem.active === true,
|
|
656
|
-
}, role: "menuitem", href: thirdLevelItem.href || "#", id: thirdLevelItem.id, onClick: event => this.handleItemClick(event, thirdLevelItem), onKeyDown: ev => this.handleArrowKeys(ev), target: thirdLevelItem.external ? "_blank" : "_self" },
|
|
657
|
-
thirdLevelItem.icon && (h("div", { class: "duet-header-icon" },
|
|
658
|
-
h("duet-icon", { margin: "none", size: "medium", name: thirdLevelItem.icon, color: "currentColor" }))),
|
|
659
|
-
h("span", null, thirdLevelItem.label),
|
|
660
|
-
thirdLevelItem.badge && h("div", { class: "duet-header-badge" })))))));
|
|
661
|
-
}))))),
|
|
662
|
-
h("div", { class: "duet-header-bottom-utils" },
|
|
663
|
-
h("slot", { name: "utility" })),
|
|
664
|
-
h("div", { class: "duet-header-utils" },
|
|
665
|
-
!itemsHaveSubItems && contactDropdown,
|
|
666
|
-
languageDropdown,
|
|
667
|
-
!itemsHaveSubItems && (h(Fragment, null,
|
|
668
|
-
processedUserWithLink,
|
|
669
|
-
processedUserWithoutLink)),
|
|
670
|
-
processedSearch,
|
|
671
|
-
processedSession))))));
|
|
674
|
+
} }, defaultVariationContent));
|
|
672
675
|
}
|
|
673
676
|
static get is() { return "duet-header"; }
|
|
674
677
|
static get encapsulation() { return "shadow"; }
|
|
@@ -977,7 +980,7 @@ export class DuetHeader {
|
|
|
977
980
|
"optional": false,
|
|
978
981
|
"docs": {
|
|
979
982
|
"tags": [],
|
|
980
|
-
"text": "Region that is shown next to the logo. If empty, region will be hidden.\nNote: not available in
|
|
983
|
+
"text": "Region that is shown next to the logo. If empty, region will be hidden.\nNote: not available in multilevel header."
|
|
981
984
|
},
|
|
982
985
|
"attribute": "region",
|
|
983
986
|
"reflect": false,
|
|
@@ -40,7 +40,12 @@ export const validateFile = (item, validators, errorCodes) => {
|
|
|
40
40
|
if (item) {
|
|
41
41
|
const { name, type, size } = item;
|
|
42
42
|
const mime = validateFileMime(type, allowedMimetypes);
|
|
43
|
-
const ext =
|
|
43
|
+
const ext = allowedExtensions === "all" ||
|
|
44
|
+
allowedExtensions === "" ||
|
|
45
|
+
allowedExtensions === " " ||
|
|
46
|
+
allowedExtensions === undefined
|
|
47
|
+
? true
|
|
48
|
+
: validateFileExtension(name.toLowerCase(), allowedExtensions);
|
|
44
49
|
const bytes = validateFileSize(size, maxBytes);
|
|
45
50
|
if (!mime) {
|
|
46
51
|
errorMessage = getError("duet-upload-101", errorCodes);
|
|
@@ -10,6 +10,17 @@ export const debounce = (func, timeout = 250) => {
|
|
|
10
10
|
}, timeout);
|
|
11
11
|
};
|
|
12
12
|
};
|
|
13
|
+
/**
|
|
14
|
+
* The fieldSorter function is a helper function that takes an array of objects and returns
|
|
15
|
+
* a function that can be used to sort those objects. The returned sorting function takes two
|
|
16
|
+
* parameters, which are compared using the field values in the object. If one object's field value is greater than another's, then 1 is returned; if they're equal, 0 is returned; and if one object's field value is less than another's, - 1 will be returned. This allows for easy sorting by multiple fields in any order desired (e.g., first by name ascending and then by age descending).
|
|
17
|
+
*
|
|
18
|
+
*
|
|
19
|
+
* @param fields Sort the table
|
|
20
|
+
*
|
|
21
|
+
* @return A function that takes two objects and returns an integer
|
|
22
|
+
*
|
|
23
|
+
*/
|
|
13
24
|
export function fieldSorter(fields) {
|
|
14
25
|
return function (a, b) {
|
|
15
26
|
return fields
|