scb-wc 0.1.78 → 0.1.80
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 +41 -22
- package/all.js +0 -2
- package/index.js +88 -90
- package/mvc/components/all.js +0 -2
- package/mvc/components/scb-accordion/scb-accordion-item.js +3 -173
- package/mvc/components/scb-accordion/scb-accordion.js +4 -33
- package/mvc/components/scb-app-bar/scb-app-bar.js +2 -110
- package/mvc/components/scb-avatar/scb-avatar.js +2 -94
- package/mvc/components/scb-badge/scb-badge.js +2 -72
- package/mvc/components/scb-breadcrumb/scb-breadcrumb-item.js +2 -12
- package/mvc/components/scb-breadcrumb/scb-breadcrumb.js +4 -91
- package/mvc/components/scb-button/scb-button.js +47 -309
- package/mvc/components/scb-calendar/scb-calendar-event.js +2 -6
- package/mvc/components/scb-calendar/scb-calendar.js +6 -120
- package/mvc/components/scb-calendar-card/scb-calendar-card.js +21 -350
- package/mvc/components/scb-card/scb-card.js +54 -819
- package/mvc/components/scb-checkbox/scb-checkbox-group.js +3 -31
- package/mvc/components/scb-checkbox/scb-checkbox.js +5 -127
- package/mvc/components/scb-chip/scb-chip.js +2 -76
- package/mvc/components/scb-collapse/scb-collapse.js +2 -44
- package/mvc/components/scb-cookies-consent/scb-cookies-consent.js +7 -73
- package/mvc/components/scb-dialog/scb-dialog.js +2 -213
- package/mvc/components/scb-divider/scb-divider.js +1 -69
- package/mvc/components/scb-drawer/scb-drawer.js +6 -102
- package/mvc/components/scb-drop-zone/scb-drop-zone.js +2 -410
- package/mvc/components/scb-dropdown/scb-dropdown.js +17 -222
- package/mvc/components/scb-fab/scb-fab.js +7 -95
- package/mvc/components/scb-fact-card/scb-fact-card-content.js +2 -69
- package/mvc/components/scb-fact-card/scb-fact-card.js +2 -214
- package/mvc/components/scb-footer/scb-footer-section.js +1 -3
- package/mvc/components/scb-footer/scb-footer.js +3 -172
- package/mvc/components/scb-gallery-grid/scb-gallery-grid.js +2 -112
- package/mvc/components/scb-grid/scb-grid-item.js +1 -32
- package/mvc/components/scb-grid/scb-grid.js +1 -99
- package/mvc/components/scb-grid/scb-stack.js +1 -33
- package/mvc/components/scb-header/scb-header-menu-item.js +1 -5
- package/mvc/components/scb-header/scb-header-tab.js +1 -5
- package/mvc/components/scb-header/scb-header.js +75 -888
- package/mvc/components/scb-horizontal-scroller/scb-horizontal-scroller.js +43 -168
- package/mvc/components/scb-icon-button/scb-icon-button.js +59 -171
- package/mvc/components/scb-keyfigure-card/scb-keyfigure-card.js +17 -218
- package/mvc/components/scb-link/scb-link.js +4 -55
- package/mvc/components/scb-list/scb-list-item.js +23 -126
- package/mvc/components/scb-list/scb-list.js +5 -26
- package/mvc/components/scb-menu/scb-menu-item.js +16 -190
- package/mvc/components/scb-menu/scb-menu-section.js +4 -36
- package/mvc/components/scb-menu/scb-menu.js +5 -69
- package/mvc/components/scb-menu/scb-sub-menu.js +2 -7
- package/mvc/components/scb-nav/scb-nav-item.js +1 -28
- package/mvc/components/scb-nav/scb-nav.js +5 -98
- package/mvc/components/scb-notification-card/scb-notification-card.js +7 -364
- package/mvc/components/scb-options-menu/scb-options-menu-item.js +3 -50
- package/mvc/components/scb-options-menu/scb-options-menu.js +2 -82
- package/mvc/components/scb-options-menu/scb-options-sub-menu.js +2 -31
- package/mvc/components/scb-overlay/scb-overlay.js +3 -43
- package/mvc/components/scb-pagination/scb-pagination.js +19 -221
- package/mvc/components/scb-progress-indicator/scb-progress-indicator.js +2 -67
- package/mvc/components/scb-progress-stepper/scb-progress-step.js +4 -121
- package/mvc/components/scb-progress-stepper/scb-progress-stepper.js +2 -56
- package/mvc/components/scb-radio-button/scb-radio-button.js +5 -116
- package/mvc/components/scb-radio-button/scb-radio-group.js +2 -32
- package/mvc/components/scb-scrollspy/scb-scrollspy.js +2 -61
- package/mvc/components/scb-search/scb-search.js +5 -249
- package/mvc/components/scb-segmented-button/scb-segmented-button.js +1 -32
- package/mvc/components/scb-segmented-button/scb-segmented-item.js +2 -70
- package/mvc/components/scb-select/scb-select-option.js +2 -54
- package/mvc/components/scb-select/scb-select.js +4 -244
- package/mvc/components/scb-skeleton/scb-skeleton.js +2 -35
- package/mvc/components/scb-slider/scb-slider.js +5 -9
- package/mvc/components/scb-snackbar/scb-snackbar.js +9 -84
- package/mvc/components/scb-status-pill/scb-status-pill.js +2 -43
- package/mvc/components/scb-stepper/scb-step.js +8 -186
- package/mvc/components/scb-stepper/scb-stepper.js +2 -130
- package/mvc/components/scb-switch/scb-switch.js +4 -49
- package/mvc/components/scb-table/scb-table.js +2 -48
- package/mvc/components/scb-table-advanced/scb-table-advanced.js +2 -53
- package/mvc/components/scb-tabs/scb-primary-tab.js +2 -7
- package/mvc/components/scb-tabs/scb-secondary-tab.js +2 -7
- package/mvc/components/scb-tabs/scb-tabs.js +4 -31
- package/mvc/components/scb-textfield/scb-textfield.js +142 -388
- package/mvc/components/scb-toc/scb-toc-item.js +3 -251
- package/mvc/components/scb-toc/scb-toc.js +2 -16
- package/mvc/components/scb-tooltip/scb-tooltip.js +8 -155
- package/mvc/components/scb-viz/scb-viz.js +4 -619
- package/mvc/scb-wc-core.css +1 -1
- package/mvc/scb-wc-selfhost.css +1 -1
- package/mvc/scb-wc.css +1 -1
- package/mvc/vendor/assist-chip.js +3 -3
- package/mvc/vendor/chip-set.js +1 -1
- package/mvc/vendor/chip.js +2 -2
- package/mvc/vendor/elevation.js +2 -2
- package/mvc/vendor/filter-chip.js +1 -1
- package/mvc/vendor/focusable.js +1 -1
- package/mvc/vendor/form-associated.js +1 -1
- package/mvc/vendor/icon.js +2 -2
- package/mvc/vendor/lazy-focus-ring.js +2 -0
- package/mvc/vendor/lazy-ripple.js +2 -0
- package/mvc/vendor/md-focus-ring.js +2 -2
- package/mvc/vendor/ripple.js +2 -2
- package/mvc/vendor/scb-card-variants.internal.js +284 -0
- package/mvc/vendor/scb-chevron.js +10 -0
- package/mvc/vendor/scb-header-drawer.internal.js +71 -0
- package/mvc/vendor/shared-styles.js +1 -1
- package/mvc/vendor/tab-styles.js +3 -3
- package/mvc/vendor/validator.js +1 -1
- package/mvc/vendor/vendor.js +3 -4
- package/package.json +2 -2
- package/scb-accordion/scb-accordion-item.js +33 -32
- package/scb-app-bar/scb-app-bar.js +1 -1
- package/scb-button/scb-button.js +287 -259
- package/scb-calendar/scb-calendar.js +49 -49
- package/scb-calendar-card/scb-calendar-card.js +105 -59
- package/scb-card/scb-card-variants.internal.js +230 -0
- package/scb-card/scb-card.js +387 -528
- package/scb-checkbox/scb-checkbox.js +0 -1
- package/scb-chevron/scb-chevron.js +0 -1
- package/scb-components/scb-button/scb-button.d.ts +14 -2
- package/scb-components/scb-calendar/scb-calendar.d.ts +1 -0
- package/scb-components/scb-calendar-card/scb-calendar-card.d.ts +16 -4
- package/scb-components/scb-card/scb-card-variants.internal.d.ts +15 -0
- package/scb-components/scb-card/scb-card.d.ts +26 -9
- package/scb-components/scb-cookies-consent/scb-cookies-consent.d.ts +3 -0
- package/scb-components/scb-header/scb-header-drawer.internal.d.ts +31 -0
- package/scb-components/scb-header/scb-header.d.ts +1 -2
- package/scb-components/scb-horizontal-scroller/scb-horizontal-scroller.d.ts +6 -1
- package/scb-components/scb-icon-button/scb-icon-button.d.ts +28 -29
- package/scb-components/scb-keyfigure-card/scb-keyfigure-card.d.ts +13 -4
- package/scb-components/scb-list/scb-list-item.d.ts +20 -2
- package/scb-components/scb-list/scb-list.d.ts +1 -2
- package/scb-components/scb-nav/scb-nav.d.ts +2 -0
- package/scb-components/scb-segmented-button/scb-segmented-item.d.ts +1 -0
- package/scb-components/scb-select/scb-select-option.d.ts +2 -0
- package/scb-components/scb-toc/scb-toc-item.d.ts +1 -0
- package/scb-components/scb-tooltip/scb-tooltip.d.ts +2 -0
- package/scb-cookies-consent/scb-cookies-consent.js +43 -31
- package/scb-datepicker/scb-datepicker.js +27 -25
- package/scb-dialog/scb-dialog.js +1 -1
- package/scb-dropdown/scb-dropdown.js +29 -28
- package/scb-header/scb-header-drawer.internal.js +78 -0
- package/scb-header/scb-header.js +41 -89
- package/scb-horizontal-scroller/scb-horizontal-scroller.js +181 -88
- package/scb-icon-button/scb-icon-button.js +293 -205
- package/scb-keyfigure-card/scb-keyfigure-card.js +96 -43
- package/scb-list/scb-list-item.js +117 -52
- package/scb-list/scb-list.js +9 -9
- package/scb-nav/scb-nav.js +26 -23
- package/scb-notification-card/scb-notification-card.js +0 -2
- package/scb-options-menu/scb-options-menu-item.js +20 -20
- package/scb-pagination/scb-pagination.js +0 -1
- package/scb-progress-stepper/scb-progress-step.js +19 -17
- package/scb-radio-button/scb-radio-button.js +0 -1
- package/scb-search/scb-search.js +29 -28
- package/scb-segmented-button/scb-segmented-item.js +22 -19
- package/scb-select/scb-select-option.js +20 -14
- package/scb-select/scb-select.js +26 -26
- package/scb-stepper/scb-step.js +34 -31
- package/scb-textfield/scb-textfield.js +39 -39
- package/scb-toc/scb-toc-item.js +26 -26
- package/scb-tooltip/scb-tooltip.js +5 -4
- package/scb-viz/scb-viz.js +1 -1
- package/scb-wc-core.css +1 -1
- package/scb-wc-public-entry/index.d.ts +97 -0
- package/scb-wc-selfhost.css +1 -1
- package/scb-wc.bundle.js +1873 -1476
- package/scb-wc.css +1 -1
- package/scb-wc.d.ts +194 -198
- package/mvc/components/scb-chevron/scb-chevron.js +0 -41
- package/mvc/components/scb-datepicker/scb-datepicker.js +0 -296
- package/mvc/vendor/element-internals.js +0 -1
- package/mvc/vendor/filled-icon-button.js +0 -2
- package/mvc/vendor/filled-tonal-icon-button.js +0 -2
- package/mvc/vendor/form-label-activation.js +0 -1
- package/mvc/vendor/form-submitter.js +0 -1
- package/mvc/vendor/icon-button.js +0 -2
- package/mvc/vendor/list.js +0 -8
- package/mvc/vendor/outlined-icon-button.js +0 -2
- package/mvc/vendor/shared-styles2.js +0 -30
- package/scb-components/index.d.ts +0 -99
- package/scb-components/scb-chevron/scb-chevron.d.ts +0 -11
- package/scb-components/scb-datepicker/scb-datepicker.d.ts +0 -39
package/scb-header/scb-header.js
CHANGED
|
@@ -6,7 +6,7 @@ var c, l = 0;
|
|
|
6
6
|
(() => {
|
|
7
7
|
if (typeof window > "u" || typeof document > "u" || !("customElements" in window) || document.head.querySelector("style[data-scb-header-pre-upgrade]")) return;
|
|
8
8
|
let e = document.createElement("style");
|
|
9
|
-
e.setAttribute("data-scb-header-pre-upgrade", ""), e.textContent = "\n scb-header:not(:defined),\n scb-header[data-upgrading] {\n display: block;\n margin-block-start: var(--scb-header-spacing-block-start, 0);\n margin-block-end: var(--scb-header-spacing-block-end, 0);\n background: var(--scb-header-background, transparent);\n color: var(--md-sys-color-on-surface, #1b1b1f);\n\n --scb-header-pre-logo-w: var(--icon-size-extra-extra-large, 48px);\n --scb-header-pre-logo-h: var(\n --scb-header-pre-logo-img-h,\n calc(var(--scb-header-pre-logo-w) * 1.125)\n );\n\n --scb-header-pre-top-row: calc(\n (var(--spacing-5, 16px) * 2) +\n max(\n calc(var(--scb-header-pre-logo-h) + var(--spacing-2, 4px)),\n var(--scb-header-pre-control-size, 48px)\n )\n );\n --scb-header-pre-divider: var(--stroke-border, 1px);\n --scb-header-pre-tabs-row: var(--spacing-10, 40px);\n --scb-header-pre-block-size: calc(\n var(--scb-header-pre-top-row) + var(--scb-header-pre-divider)\n );\n\n min-block-size: var(--scb-header-pre-block-size);\n visibility: hidden;\n }\n\n scb-header:not(:defined) > *,\n scb-header[data-upgrading] > * {\n display: none;\n }\n\n @media (min-width: 840px) {\n scb-header:not(:defined)[data-pre-has-tabs],\n scb-header:not(:defined)[reserve-tabs],\n scb-header:not(:defined)[layout-pending],\n scb-header[data-upgrading][data-pre-has-tabs],\n scb-header[data-upgrading][reserve-tabs],\n scb-header[data-upgrading][layout-pending] {\n --scb-header-pre-block-size: calc(\n var(--scb-header-pre-top-row) +\n var(--scb-header-pre-tabs-row) +\n var(--scb-header-pre-divider)\n );\n }\n }\n ", document.head.appendChild(e);
|
|
9
|
+
e.setAttribute("data-scb-header-pre-upgrade", ""), e.textContent = "\n scb-header:not(:defined),\n scb-header[data-upgrading] {\n display: block;\n margin-block-start: var(--scb-header-spacing-block-start, 0);\n margin-block-end: var(--scb-header-spacing-block-end, 0);\n background: var(--scb-header-background, transparent);\n color: var(--md-sys-color-on-surface, #1b1b1f);\n\n --scb-header-pre-logo-w: var(--icon-size-extra-extra-large, 48px);\n --scb-header-pre-logo-h: var(\n --scb-header-pre-logo-img-h,\n calc(var(--scb-header-pre-logo-w) * 1.125)\n );\n\n --scb-header-pre-top-row: calc(\n (var(--spacing-5, 16px) * 2) +\n max(\n calc(var(--scb-header-pre-logo-h) + var(--spacing-2, 4px)),\n var(--scb-header-pre-control-size, 48px)\n )\n );\n --scb-header-pre-divider: var(--stroke-border, 1px);\n --scb-header-pre-tabs-row: var(--spacing-10, 40px);\n --scb-header-pre-block-size: calc(\n var(--scb-header-pre-top-row) + var(--scb-header-pre-divider) +\n var(--spacing-2, 4px)\n );\n\n min-block-size: var(--scb-header-pre-block-size);\n visibility: hidden;\n }\n\n scb-header:not(:defined) > *,\n scb-header[data-upgrading] > * {\n display: none;\n }\n\n @media (min-width: 840px) {\n scb-header:not(:defined)[data-pre-has-tabs],\n scb-header:not(:defined)[reserve-tabs],\n scb-header:not(:defined)[layout-pending],\n scb-header[data-upgrading][data-pre-has-tabs],\n scb-header[data-upgrading][reserve-tabs],\n scb-header[data-upgrading][layout-pending] {\n --scb-header-pre-block-size: calc(\n var(--scb-header-pre-top-row) +\n var(--scb-header-pre-tabs-row) +\n var(--scb-header-pre-divider) +\n var(--spacing-2, 4px)\n );\n }\n }\n ", document.head.appendChild(e);
|
|
10
10
|
let t = (e) => {
|
|
11
11
|
let t = String(e ?? "").trim();
|
|
12
12
|
if (t) return /^\d+$/.test(t) ? `var(--spacing-${Math.max(0, Math.min(14, parseInt(t, 10)))})` : t;
|
|
@@ -1130,6 +1130,7 @@ var u = {
|
|
|
1130
1130
|
.header-symbol {
|
|
1131
1131
|
display: inline-block;
|
|
1132
1132
|
inline-size: 1em;
|
|
1133
|
+
block-size: 1em;
|
|
1133
1134
|
overflow: hidden;
|
|
1134
1135
|
font-family: 'Material Symbols Outlined';
|
|
1135
1136
|
font-size: var(--icon-size-medium, 24px);
|
|
@@ -1144,6 +1145,10 @@ var u = {
|
|
|
1144
1145
|
-webkit-font-smoothing: antialiased;
|
|
1145
1146
|
-moz-osx-font-smoothing: grayscale;
|
|
1146
1147
|
}
|
|
1148
|
+
.header-symbol.scb-svg-icon {
|
|
1149
|
+
fill: currentColor;
|
|
1150
|
+
font: inherit;
|
|
1151
|
+
}
|
|
1147
1152
|
|
|
1148
1153
|
.header-search-icon.header-symbol {
|
|
1149
1154
|
display: inline-flex;
|
|
@@ -1401,13 +1406,18 @@ var u = {
|
|
|
1401
1406
|
e && (e.open = !0);
|
|
1402
1407
|
}
|
|
1403
1408
|
_ensureFocusRingReady() {
|
|
1404
|
-
customElements.get("md-focus-ring") || (this._focusRingImportPromise ??= import("
|
|
1409
|
+
customElements.get("md-focus-ring") || (this._focusRingImportPromise ??= import("../shared/lazy-focus-ring.js"), this._focusRingImportPromise.then(({ ensureFocusRingReady: e }) => {
|
|
1410
|
+
e();
|
|
1411
|
+
}));
|
|
1405
1412
|
}
|
|
1406
1413
|
async _ensureDrawerReady() {
|
|
1407
1414
|
this._drawerReady || (this._drawerImportPromise ??= Promise.all([
|
|
1408
1415
|
import("../scb-drawer/scb-drawer.js"),
|
|
1409
1416
|
import("../scb-menu/scb-menu.js"),
|
|
1410
1417
|
import("../scb-search/scb-search.js"),
|
|
1418
|
+
import("./scb-header-drawer.internal.js").then((e) => {
|
|
1419
|
+
this._drawerRenderer = e;
|
|
1420
|
+
}),
|
|
1411
1421
|
this._ensureDrawerSlotComponentsReady()
|
|
1412
1422
|
]).then(() => void 0), await this._drawerImportPromise, this._drawerReady = !0, this._syncDrawerCloseNodes());
|
|
1413
1423
|
}
|
|
@@ -1473,29 +1483,6 @@ var u = {
|
|
|
1473
1483
|
this.renderRoot.querySelector(`.tab-link[data-index="${e}"]`)?.focus?.();
|
|
1474
1484
|
}
|
|
1475
1485
|
}
|
|
1476
|
-
_renderMenuNodes(e) {
|
|
1477
|
-
return !e || e.length === 0 ? r`` : r`${e.map((e) => this._renderMenuNode(e))}`;
|
|
1478
|
-
}
|
|
1479
|
-
_renderMenuNode(e) {
|
|
1480
|
-
let t = Array.isArray(e.children) && e.children.length > 0, n = (e.href ?? "").trim(), a = (e.icon ?? "").trim(), o = t ? r`
|
|
1481
|
-
<scb-sub-menu label=${e.label}>
|
|
1482
|
-
${e.children.map((e) => this._renderMenuNode(e))}
|
|
1483
|
-
</scb-sub-menu>
|
|
1484
|
-
` : i;
|
|
1485
|
-
return a && n ? r`
|
|
1486
|
-
<scb-menu-item label=${e.label} ?selected=${!1} leading-icon=${a} item-href=${n}>
|
|
1487
|
-
${o}
|
|
1488
|
-
</scb-menu-item>
|
|
1489
|
-
` : a ? r`
|
|
1490
|
-
<scb-menu-item label=${e.label} ?selected=${!1} leading-icon=${a}>
|
|
1491
|
-
${o}
|
|
1492
|
-
</scb-menu-item>
|
|
1493
|
-
` : n ? r`
|
|
1494
|
-
<scb-menu-item label=${e.label} ?selected=${!1} item-href=${n}>
|
|
1495
|
-
${o}
|
|
1496
|
-
</scb-menu-item>
|
|
1497
|
-
` : r`<scb-menu-item label=${e.label} ?selected=${!1}>${o}</scb-menu-item>`;
|
|
1498
|
-
}
|
|
1499
1486
|
_syncFlags(e, t) {
|
|
1500
1487
|
this.toggleAttribute("data-no-utility", e), this.toggleAttribute("data-no-search", t);
|
|
1501
1488
|
}
|
|
@@ -1612,7 +1599,7 @@ var u = {
|
|
|
1612
1599
|
render() {
|
|
1613
1600
|
let e = this._getNavItems(), t = this._slotUtils.length ? this._slotUtils : this.utilityItems, n = this._slotMenu.length ? this._slotMenu : this.menuData ?? [], a = this.logoText || this.logotypeText, o = this.logoAlt || a || "Gå till startsidan", s = this.querySelector("[slot=\"drawer-menu\"]") !== null, c = this.querySelector("[slot=\"drawer-close\"]") !== null;
|
|
1614
1601
|
this._syncFlags(t.length === 0, !this.showSearch);
|
|
1615
|
-
let l = this.searchHeight && this.searchHeight.trim() ? `--scb-search-height:${this.searchHeight.trim()}` : "", u = e.length > 0 || this.reserveTabs || this.layoutPending, d = (this.reserveTabs || this.layoutPending) && (this.layoutPending || e.length === 0), f = this.
|
|
1602
|
+
let l = this.searchHeight && this.searchHeight.trim() ? `--scb-search-height:${this.searchHeight.trim()}` : "", u = e.length > 0 || this.reserveTabs || this.layoutPending, d = (this.reserveTabs || this.layoutPending) && (this.layoutPending || e.length === 0), f = this._drawerRenderer, p = this.showDrawer && this._drawerReady && f, m = typeof window < "u" && window.innerWidth >= this.BP_MD, h = this.showDrawer && (m ? this.alwaysShowMenuButton || this._collapsed : !0), g = h && !m, _ = h && m, v = (this.searchButtonLabel ?? "").trim() || "Sök", y = this.showSearch && !this._mobileSearchOpen;
|
|
1616
1603
|
return r`
|
|
1617
1604
|
<slot
|
|
1618
1605
|
id="data-slot"
|
|
@@ -1658,27 +1645,27 @@ var u = {
|
|
|
1658
1645
|
|
|
1659
1646
|
${this.showSearch ? r`
|
|
1660
1647
|
<div class="search" style=${l}>
|
|
1661
|
-
${this._renderSearchForm(
|
|
1648
|
+
${this._renderSearchForm(v, l)}
|
|
1662
1649
|
</div>
|
|
1663
1650
|
` : i}
|
|
1664
|
-
${
|
|
1651
|
+
${y ? r`
|
|
1665
1652
|
<button
|
|
1666
1653
|
type="button"
|
|
1667
1654
|
class="mobile-search-trigger header-icon-button"
|
|
1668
|
-
aria-label=${
|
|
1669
|
-
title=${
|
|
1655
|
+
aria-label=${v}
|
|
1656
|
+
title=${v}
|
|
1670
1657
|
@click=${this._onMobileSearchToggle}
|
|
1671
1658
|
>
|
|
1672
1659
|
<span class="header-symbol" aria-hidden="true">search</span>
|
|
1673
1660
|
<md-focus-ring aria-hidden="true"></md-focus-ring>
|
|
1674
1661
|
</button>
|
|
1675
1662
|
` : i}
|
|
1676
|
-
${
|
|
1663
|
+
${g ? this._renderMenuButton("", !0) : i}
|
|
1677
1664
|
</div>
|
|
1678
1665
|
|
|
1679
1666
|
${this.showSearch && this._mobileSearchOpen ? r`
|
|
1680
1667
|
<div class="mobile-search-panel" style=${l}>
|
|
1681
|
-
${this._renderSearchForm(
|
|
1668
|
+
${this._renderSearchForm(v, l, !1, !0)}
|
|
1682
1669
|
<button
|
|
1683
1670
|
type="button"
|
|
1684
1671
|
class="mobile-search-close header-icon-button"
|
|
@@ -1696,7 +1683,7 @@ var u = {
|
|
|
1696
1683
|
</div>
|
|
1697
1684
|
|
|
1698
1685
|
<div class="header-grid-item">
|
|
1699
|
-
<div class=${u ||
|
|
1686
|
+
<div class=${u || _ ? "tabs-row" : "tabs-row tabs-row--empty"}>
|
|
1700
1687
|
${u ? d ? r`
|
|
1701
1688
|
<div class="tabs-inset">
|
|
1702
1689
|
<div class="tabs-nav tabs-nav--skeleton" aria-hidden="true">
|
|
@@ -1746,68 +1733,33 @@ var u = {
|
|
|
1746
1733
|
</div>
|
|
1747
1734
|
` : i : i}
|
|
1748
1735
|
|
|
1749
|
-
${
|
|
1736
|
+
${_ ? this._renderMenuButton("menu-trigger--tabs-right") : i}
|
|
1750
1737
|
</div>
|
|
1751
1738
|
</div>
|
|
1752
1739
|
</div>
|
|
1753
1740
|
<div class="divider" role="presentation"></div>
|
|
1754
1741
|
</div>
|
|
1755
1742
|
|
|
1756
|
-
${
|
|
1757
|
-
|
|
1758
|
-
|
|
1759
|
-
|
|
1760
|
-
|
|
1761
|
-
|
|
1762
|
-
|
|
1763
|
-
|
|
1764
|
-
|
|
1765
|
-
|
|
1766
|
-
|
|
1767
|
-
|
|
1768
|
-
|
|
1769
|
-
|
|
1770
|
-
|
|
1771
|
-
|
|
1772
|
-
|
|
1773
|
-
|
|
1774
|
-
|
|
1775
|
-
|
|
1776
|
-
` : i}
|
|
1777
|
-
|
|
1778
|
-
<slot name="drawer-menu" @slotchange=${this._ensureDrawerSlotComponentsReady}></slot>
|
|
1779
|
-
|
|
1780
|
-
${s ? i : r`
|
|
1781
|
-
<scb-menu
|
|
1782
|
-
.label=${this.menuLabel ?? ""}
|
|
1783
|
-
.subLabel=${this.menuSubLabel ?? ""}
|
|
1784
|
-
>
|
|
1785
|
-
<scb-search
|
|
1786
|
-
.size=${this.size}
|
|
1787
|
-
.supportingText=${this.menuSearchPlaceholder ?? ""}
|
|
1788
|
-
></scb-search>
|
|
1789
|
-
|
|
1790
|
-
${this.menuSectionLabel ? r`
|
|
1791
|
-
<scb-menu-section
|
|
1792
|
-
.label=${this.menuSectionLabel}
|
|
1793
|
-
></scb-menu-section>
|
|
1794
|
-
` : i}
|
|
1795
|
-
|
|
1796
|
-
${this._renderMenuNodes(n)}
|
|
1797
|
-
|
|
1798
|
-
${this.includeUtilityInMenu && (t?.length ?? 0) > 0 ? r`
|
|
1799
|
-
<scb-menu-section label=''></scb-menu-section>
|
|
1800
|
-
${t.map((e) => r`
|
|
1801
|
-
<scb-menu-item
|
|
1802
|
-
label=${e.label}
|
|
1803
|
-
item-href=${e.href}
|
|
1804
|
-
></scb-menu-item>
|
|
1805
|
-
`)}
|
|
1806
|
-
` : i}
|
|
1807
|
-
</scb-menu>
|
|
1808
|
-
`}
|
|
1809
|
-
</scb-drawer>
|
|
1810
|
-
` : i}
|
|
1743
|
+
${p ? f.renderHeaderDrawer({
|
|
1744
|
+
drawerId: this._drawerId,
|
|
1745
|
+
drawerOverlay: this.drawerOverlay,
|
|
1746
|
+
size: this.size,
|
|
1747
|
+
menuLabel: this.menuLabel,
|
|
1748
|
+
menuSubLabel: this.menuSubLabel,
|
|
1749
|
+
menuSearchPlaceholder: this.menuSearchPlaceholder,
|
|
1750
|
+
menuSectionLabel: this.menuSectionLabel,
|
|
1751
|
+
includeUtilityInMenu: this.includeUtilityInMenu,
|
|
1752
|
+
menu: n,
|
|
1753
|
+
utils: t,
|
|
1754
|
+
hasDrawerCloseSlot: c,
|
|
1755
|
+
hasDrawerMenuSlot: s,
|
|
1756
|
+
onDrawerOpened: this._onDrawerOpened,
|
|
1757
|
+
onDrawerClosed: this._onDrawerClosed,
|
|
1758
|
+
onMenuSelect: this._onMenuSelect,
|
|
1759
|
+
onDrawerSlotChange: () => {
|
|
1760
|
+
this._ensureDrawerSlotComponentsReady();
|
|
1761
|
+
}
|
|
1762
|
+
}) : i}
|
|
1811
1763
|
`;
|
|
1812
1764
|
}
|
|
1813
1765
|
_renderTabSkeletons() {
|
|
@@ -1,22 +1,32 @@
|
|
|
1
1
|
import { __decorate as e } from "../_virtual/_@oxc-project_runtime@0.126.0/helpers/decorate.js";
|
|
2
|
-
import "../
|
|
3
|
-
import "
|
|
4
|
-
import {
|
|
5
|
-
import { customElement as i, property as a, state as o } from "lit/decorators.js";
|
|
6
|
-
import "@material/web/focus/md-focus-ring.js";
|
|
2
|
+
import { renderScbIcon as t } from "../shared/scb-icon-svg.js";
|
|
3
|
+
import { LitElement as n, css as r, html as i } from "lit";
|
|
4
|
+
import { customElement as a, property as o, state as s } from "lit/decorators.js";
|
|
7
5
|
//#region src/scb-components/scb-horizontal-scroller/scb-horizontal-scroller.ts
|
|
8
|
-
var
|
|
6
|
+
var c;
|
|
7
|
+
function l() {
|
|
8
|
+
return c ??= import("../shared/lazy-focus-ring.js"), c;
|
|
9
|
+
}
|
|
10
|
+
var u = class extends n {
|
|
9
11
|
constructor(...e) {
|
|
10
|
-
super(...e), this.variant = "standard", this.width = "100%", this.showScrollbar = !1, this.rightScrollButtonLabel = "Scrolla höger", this.leftScrollButtonLabel = "Scrolla vänster", this.spacing = void 0, this.spacingTop = void 0, this.spacingBottom = void 0, this.spacingLeft = void 0, this.spacingRight = void 0, this.contentFlex = !1, this.internalGap = "", this._canScrollLeft = !1, this._canScrollRight = !1, this.
|
|
12
|
+
super(...e), this.variant = "standard", this.width = "100%", this.showScrollbar = !1, this.rightScrollButtonLabel = "Scrolla höger", this.leftScrollButtonLabel = "Scrolla vänster", this.spacing = void 0, this.spacingTop = void 0, this.spacingBottom = void 0, this.spacingLeft = void 0, this.spacingRight = void 0, this.contentFlex = !1, this.internalGap = "", this._canScrollLeft = !1, this._canScrollRight = !1, this.__scrollLeft = () => {
|
|
13
|
+
this.doScrollBy(-this.getScrollStep());
|
|
14
|
+
}, this.__scrollRight = () => {
|
|
15
|
+
this.doScrollBy(this.getScrollStep());
|
|
16
|
+
}, this.updateScrollButtons = () => {
|
|
11
17
|
let e = this.scrollerEl || this.shadowRoot?.querySelector(".scb-horizontal-scroller");
|
|
12
18
|
if (!e) {
|
|
13
|
-
this._canScrollLeft
|
|
19
|
+
this._canScrollLeft = !1, this._canScrollRight = !1, this.toggleAttribute("data-scroll-left", !1), this.toggleAttribute("data-scroll-right", !1);
|
|
14
20
|
return;
|
|
15
21
|
}
|
|
16
22
|
let t = e.scrollLeft > 0, n = e.scrollLeft + e.clientWidth < e.scrollWidth - 1;
|
|
17
|
-
this._canScrollLeft
|
|
18
|
-
}, this.lastScrollLeft = 0, this.isScrolling = !1, this.scrollEndTimeout = null, this.scrollerEl = null, this.slotEl = null, this.sizeObserver = null, this.resizeRaf = null, this.
|
|
19
|
-
|
|
23
|
+
this._canScrollLeft = t, this._canScrollRight = n, this.toggleAttribute("data-scroll-left", t), this.toggleAttribute("data-scroll-right", n);
|
|
24
|
+
}, this.lastScrollLeft = 0, this.isScrolling = !1, this.scrollEndTimeout = null, this.scrollerEl = null, this.slotEl = null, this.sizeObserver = null, this.resizeRaf = null, this.__onFocusIn = () => {
|
|
25
|
+
l().then(({ ensureFocusRingReady: e }) => e());
|
|
26
|
+
}, this.__onLazyFocusRingKeydown = (e) => {
|
|
27
|
+
!(e instanceof KeyboardEvent) || e.key !== "Tab" || l().then(({ ensureFocusRingOnTab: t }) => t(e));
|
|
28
|
+
}, this.handleScroll = () => {
|
|
29
|
+
let e = this.scrollerEl;
|
|
20
30
|
e && (this.updateScrollButtons(), this.dispatchCustomEventWithAlias("scb-scroll", { scrollLeft: e.scrollLeft }), this.isScrolling || (this.isScrolling = !0, this.dispatchCustomEventWithAlias("scb-scroll-start", { scrollLeft: e.scrollLeft })), clearTimeout(this.scrollEndTimeout), this.scrollEndTimeout = setTimeout(() => {
|
|
21
31
|
this.isScrolling = !1, this.dispatchCustomEventWithAlias("scb-scroll-end", { scrollLeft: e.scrollLeft });
|
|
22
32
|
}, 120), e.scrollLeft > this.lastScrollLeft ? this.dispatchCustomEventWithAlias("scb-scroll-right", { scrollLeft: e.scrollLeft }) : e.scrollLeft < this.lastScrollLeft && this.dispatchCustomEventWithAlias("scb-scroll-left", { scrollLeft: e.scrollLeft }), this.lastScrollLeft = e.scrollLeft);
|
|
@@ -28,7 +38,7 @@ var s = class extends t {
|
|
|
28
38
|
};
|
|
29
39
|
}
|
|
30
40
|
static {
|
|
31
|
-
this.styles =
|
|
41
|
+
this.styles = r`
|
|
32
42
|
:host {
|
|
33
43
|
display: flex;
|
|
34
44
|
position: relative;
|
|
@@ -102,6 +112,98 @@ var s = class extends t {
|
|
|
102
112
|
position: absolute;
|
|
103
113
|
z-index: 3;
|
|
104
114
|
}
|
|
115
|
+
.scroll-control,
|
|
116
|
+
.scroll-text-button {
|
|
117
|
+
display: inline-flex;
|
|
118
|
+
align-items: center;
|
|
119
|
+
justify-content: center;
|
|
120
|
+
box-sizing: border-box;
|
|
121
|
+
border: 0;
|
|
122
|
+
font-family: var(--brand-font, var(--brand, "Inter"), sans-serif);
|
|
123
|
+
font-weight: var(--weight-semibold, 600);
|
|
124
|
+
cursor: pointer;
|
|
125
|
+
appearance: none;
|
|
126
|
+
-webkit-appearance: none;
|
|
127
|
+
-webkit-tap-highlight-color: transparent;
|
|
128
|
+
touch-action: manipulation;
|
|
129
|
+
}
|
|
130
|
+
.scroll-control {
|
|
131
|
+
inline-size: var(--scb-icon-button-container-size, 40px);
|
|
132
|
+
block-size: var(--scb-icon-button-container-size, 40px);
|
|
133
|
+
padding: 0;
|
|
134
|
+
overflow: hidden;
|
|
135
|
+
border-radius: var(--radius-full, 1000px);
|
|
136
|
+
background: var(--md-filled-tonal-icon-button-container-color, var(--md-sys-color-secondary-container, var(--p-90, #d6f1ff)));
|
|
137
|
+
color: var(--md-filled-tonal-icon-button-icon-color, var(--md-sys-color-on-secondary-container, var(--p-30, #1e00be)));
|
|
138
|
+
}
|
|
139
|
+
.scroll-text-button {
|
|
140
|
+
position: relative;
|
|
141
|
+
min-block-size: calc(
|
|
142
|
+
var(--md-sys-typescale-label-small-line-height, 20px) +
|
|
143
|
+
calc(var(--spacing-4, 12px) - var(--spacing-1, 2px)) +
|
|
144
|
+
calc(var(--spacing-4, 12px) - var(--spacing-1, 2px))
|
|
145
|
+
);
|
|
146
|
+
gap: var(--spacing-3, 8px);
|
|
147
|
+
padding-block: calc(var(--spacing-4, 12px) - var(--spacing-1, 2px));
|
|
148
|
+
padding-inline: var(--spacing-5, 16px);
|
|
149
|
+
border-radius: var(--radius-full, 1000px);
|
|
150
|
+
background: transparent;
|
|
151
|
+
color: var(--md-text-button-label-text-color, var(--md-sys-color-primary, var(--p-40, #1f44ff)));
|
|
152
|
+
font-size: var(--md-sys-typescale-label-small-size, 16px);
|
|
153
|
+
line-height: var(--md-sys-typescale-label-small-line-height, 20px);
|
|
154
|
+
letter-spacing: var(--md-sys-typescale-label-small-tracking, 0);
|
|
155
|
+
}
|
|
156
|
+
.scroll-control::before,
|
|
157
|
+
.scroll-text-button::before {
|
|
158
|
+
content: '';
|
|
159
|
+
position: absolute;
|
|
160
|
+
inset: 0;
|
|
161
|
+
border-radius: inherit;
|
|
162
|
+
background: currentColor;
|
|
163
|
+
opacity: 0;
|
|
164
|
+
pointer-events: none;
|
|
165
|
+
transition: opacity var(--motion-duration-short, 150ms) var(--motion-easing-standard, ease);
|
|
166
|
+
}
|
|
167
|
+
.scroll-control:hover::before,
|
|
168
|
+
.scroll-text-button:hover::before {
|
|
169
|
+
opacity: var(--md-sys-state-hover-state-layer-opacity, 0.08);
|
|
170
|
+
}
|
|
171
|
+
.scroll-control:active::before,
|
|
172
|
+
.scroll-text-button:active::before {
|
|
173
|
+
opacity: var(--md-sys-state-pressed-state-layer-opacity, 0.12);
|
|
174
|
+
}
|
|
175
|
+
.scroll-control:focus,
|
|
176
|
+
.scroll-text-button:focus {
|
|
177
|
+
outline: none;
|
|
178
|
+
}
|
|
179
|
+
.scroll-control:focus-visible,
|
|
180
|
+
.scroll-text-button:focus-visible {
|
|
181
|
+
outline: var(--stroke-border-m, 2px) solid var(--md-focus-ring-color, var(--md-sys-color-primary, var(--p-40, #1f44ff)));
|
|
182
|
+
outline-offset: var(--spacing-1, 2px);
|
|
183
|
+
}
|
|
184
|
+
.scroll-control-icon {
|
|
185
|
+
position: relative;
|
|
186
|
+
display: inline-block;
|
|
187
|
+
inline-size: var(--icon-size-medium, 24px);
|
|
188
|
+
block-size: var(--icon-size-medium, 24px);
|
|
189
|
+
overflow: hidden;
|
|
190
|
+
font-family: 'Material Symbols Outlined';
|
|
191
|
+
font-size: var(--icon-size-medium, 24px);
|
|
192
|
+
line-height: 1;
|
|
193
|
+
text-align: center;
|
|
194
|
+
white-space: nowrap;
|
|
195
|
+
text-transform: none;
|
|
196
|
+
word-wrap: normal;
|
|
197
|
+
direction: ltr;
|
|
198
|
+
font-feature-settings: 'liga' 1;
|
|
199
|
+
font-variation-settings: 'FILL' 0, 'wght' 400, 'GRAD' 0, 'opsz' 24;
|
|
200
|
+
-webkit-font-smoothing: antialiased;
|
|
201
|
+
-moz-osx-font-smoothing: grayscale;
|
|
202
|
+
}
|
|
203
|
+
.scroll-control-icon.scb-svg-icon {
|
|
204
|
+
fill: currentColor;
|
|
205
|
+
font: inherit;
|
|
206
|
+
}
|
|
105
207
|
.scroll-shadow-left,
|
|
106
208
|
.scroll-shadow-right {
|
|
107
209
|
position: absolute;
|
|
@@ -172,17 +274,16 @@ var s = class extends t {
|
|
|
172
274
|
return e ? Math.max(Math.round(e.clientWidth * .8), 120) : 200;
|
|
173
275
|
}
|
|
174
276
|
doScrollBy(e) {
|
|
175
|
-
|
|
176
|
-
t && t.scrollBy({
|
|
277
|
+
this.scrollerEl?.scrollBy({
|
|
177
278
|
left: e,
|
|
178
279
|
behavior: "smooth"
|
|
179
280
|
});
|
|
180
281
|
}
|
|
181
282
|
connectedCallback() {
|
|
182
|
-
super.connectedCallback(), this.style.setProperty("--scb-horizontal-scroller-width", this.width);
|
|
283
|
+
super.connectedCallback(), this.addEventListener("focusin", this.__onFocusIn), this.addEventListener("keydown", this.__onLazyFocusRingKeydown), this.style.setProperty("--scb-horizontal-scroller-width", this.width);
|
|
183
284
|
}
|
|
184
285
|
disconnectedCallback() {
|
|
185
|
-
super.disconnectedCallback(), this.scrollerEl && (this.scrollerEl.removeEventListener("scroll", this.handleScroll), this.scrollerEl.removeEventListener("wheel", this.handleWheel)), this.sizeObserver &&= (this.sizeObserver.disconnect(), null), this.resizeRaf !== null && (cancelAnimationFrame(this.resizeRaf), this.resizeRaf = null), this.scrollEndTimeout &&= (clearTimeout(this.scrollEndTimeout), null), this.scrollerEl = null, this.slotEl = null;
|
|
286
|
+
this.removeEventListener("focusin", this.__onFocusIn), this.removeEventListener("keydown", this.__onLazyFocusRingKeydown), this.renderRoot.removeEventListener("focusin", this.__onFocusIn), this.renderRoot.removeEventListener("keydown", this.__onLazyFocusRingKeydown), super.disconnectedCallback(), this.scrollerEl && (this.scrollerEl.removeEventListener("scroll", this.handleScroll), this.scrollerEl.removeEventListener("wheel", this.handleWheel)), this.sizeObserver &&= (this.sizeObserver.disconnect(), null), this.resizeRaf !== null && (cancelAnimationFrame(this.resizeRaf), this.resizeRaf = null), this.scrollEndTimeout &&= (clearTimeout(this.scrollEndTimeout), null), this.scrollerEl = null, this.slotEl = null;
|
|
186
287
|
}
|
|
187
288
|
dispatchCustomEvent(e, t = {}) {
|
|
188
289
|
this.dispatchEvent(new CustomEvent(e, {
|
|
@@ -198,156 +299,148 @@ var s = class extends t {
|
|
|
198
299
|
}
|
|
199
300
|
}
|
|
200
301
|
firstUpdated() {
|
|
201
|
-
this.scrollerEl = this.shadowRoot?.querySelector(".scb-horizontal-scroller"), this.slotEl = this.shadowRoot?.querySelector("slot");
|
|
202
|
-
let e =
|
|
203
|
-
this.scrollerEl && (this.scrollerEl.addEventListener("scroll", this.handleScroll), this.scrollerEl.addEventListener("wheel", this.handleWheel, { passive: !1 }));
|
|
204
|
-
let n = () => {
|
|
205
|
-
if (this.slotEl && e && t) {
|
|
206
|
-
let n = this.slotEl.getBoundingClientRect();
|
|
207
|
-
e.style.height = `${n.height}px`, t.style.height = `${n.height}px`;
|
|
208
|
-
}
|
|
209
|
-
}, r = () => {
|
|
210
|
-
n(), this.updateScrollButtons();
|
|
211
|
-
}, i = () => {
|
|
302
|
+
this.renderRoot.addEventListener("focusin", this.__onFocusIn), this.renderRoot.addEventListener("keydown", this.__onLazyFocusRingKeydown), this.scrollerEl = this.shadowRoot?.querySelector(".scb-horizontal-scroller"), this.slotEl = this.shadowRoot?.querySelector("slot"), this.scrollerEl && (this.scrollerEl.addEventListener("scroll", this.handleScroll), this.scrollerEl.addEventListener("wheel", this.handleWheel, { passive: !1 }));
|
|
303
|
+
let e = () => {
|
|
212
304
|
this.resizeRaf === null && (this.resizeRaf = requestAnimationFrame(() => {
|
|
213
|
-
this.resizeRaf = null,
|
|
305
|
+
this.resizeRaf = null, this.updateScrollButtons();
|
|
214
306
|
}));
|
|
215
307
|
};
|
|
216
308
|
requestAnimationFrame(() => {
|
|
217
|
-
|
|
309
|
+
this.updateScrollButtons();
|
|
218
310
|
}), this.slotEl && this.slotEl.addEventListener("slotchange", () => {
|
|
219
|
-
|
|
311
|
+
e();
|
|
220
312
|
}), this.sizeObserver = new ResizeObserver(() => {
|
|
221
|
-
|
|
222
|
-
}), this.scrollerEl && this.sizeObserver.observe(this.scrollerEl), this.slotEl && this.sizeObserver.observe(this.slotEl), this
|
|
313
|
+
e();
|
|
314
|
+
}), this.scrollerEl && this.sizeObserver.observe(this.scrollerEl), this.slotEl && this.sizeObserver.observe(this.slotEl), this.__applySpacing(), this.__applyInternalGap();
|
|
223
315
|
}
|
|
224
316
|
updated(e) {
|
|
225
|
-
e.has("width") && this.style.setProperty("--scb-horizontal-scroller-width", this.width), (e.has("spacing") || e.has("spacingTop") || e.has("spacingBottom") || e.has("spacingLeft") || e.has("spacingRight")) && this
|
|
317
|
+
e.has("width") && this.style.setProperty("--scb-horizontal-scroller-width", this.width), (e.has("spacing") || e.has("spacingTop") || e.has("spacingBottom") || e.has("spacingLeft") || e.has("spacingRight")) && this.__applySpacing(), (e.has("internalGap") || e.has("contentFlex")) && this.__applyInternalGap();
|
|
226
318
|
}
|
|
227
319
|
mapSpacingToken(e) {
|
|
228
320
|
if (!e) return;
|
|
229
321
|
let t = String(e).trim();
|
|
230
322
|
if (t) return /^\d+$/.test(t) ? `var(--spacing-${Math.max(0, Math.min(14, parseInt(t, 10)))})` : t;
|
|
231
323
|
}
|
|
232
|
-
|
|
324
|
+
__applySpacing() {
|
|
233
325
|
let e = this.mapSpacingToken(this.spacing), t = this.mapSpacingToken(this.spacingTop), n = this.mapSpacingToken(this.spacingBottom), r = this.mapSpacingToken(this.spacingLeft), i = this.mapSpacingToken(this.spacingRight), a = t ?? e, o = n ?? e;
|
|
234
326
|
a ? this.style.setProperty("--scb-horizontal-scroller-spacing-block-start", a) : this.style.removeProperty("--scb-horizontal-scroller-spacing-block-start"), o ? this.style.setProperty("--scb-horizontal-scroller-spacing-block-end", o) : this.style.removeProperty("--scb-horizontal-scroller-spacing-block-end"), r ? this.style.setProperty("--scb-horizontal-scroller-spacing-inline-start", r) : this.style.removeProperty("--scb-horizontal-scroller-spacing-inline-start"), i ? this.style.setProperty("--scb-horizontal-scroller-spacing-inline-end", i) : this.style.removeProperty("--scb-horizontal-scroller-spacing-inline-end");
|
|
235
327
|
}
|
|
236
|
-
|
|
328
|
+
__applyInternalGap() {
|
|
237
329
|
let e = this.mapSpacingToken(this.internalGap);
|
|
238
330
|
this.contentFlex && e ? this.style.setProperty("--scb-horizontal-scroller-internal-gap", e) : this.style.removeProperty("--scb-horizontal-scroller-internal-gap");
|
|
239
331
|
}
|
|
240
332
|
render() {
|
|
241
|
-
let e = this.variant,
|
|
333
|
+
let e = this.variant, n = this._canScrollLeft || this._canScrollRight;
|
|
242
334
|
switch (e) {
|
|
243
|
-
case "inline": return
|
|
244
|
-
<div class="scb-horizontal-scroller ${
|
|
245
|
-
${this.variant == "inline" ? "" : r`<div class="scroll-shadow-left"></div>`}
|
|
335
|
+
case "inline": return i`
|
|
336
|
+
<div class="scb-horizontal-scroller ${n ? "canScroll" : ""}" tabindex="0">
|
|
246
337
|
<slot></slot>
|
|
247
338
|
<md-focus-ring inward></md-focus-ring>
|
|
248
|
-
${this.variant == "inline" ? "" : r`<div class="scroll-shadow-right"></div>`}
|
|
249
339
|
</div>
|
|
250
|
-
${
|
|
340
|
+
${n ? i`
|
|
251
341
|
<div class="scroll-buttons">
|
|
252
|
-
${this._canScrollLeft ?
|
|
253
|
-
<
|
|
254
|
-
class="scroll-button-left"
|
|
255
|
-
|
|
256
|
-
label="${this.leftScrollButtonLabel}"
|
|
342
|
+
${this._canScrollLeft ? i`
|
|
343
|
+
<button
|
|
344
|
+
class="scroll-text-button scroll-button-left"
|
|
345
|
+
type="button"
|
|
257
346
|
aria-label="Scrolla vänster"
|
|
258
|
-
|
|
259
|
-
|
|
260
|
-
|
|
347
|
+
@click=${this.__scrollLeft}
|
|
348
|
+
>
|
|
349
|
+
${t("chevron_left", "scroll-control-icon")}
|
|
350
|
+
<span>${this.leftScrollButtonLabel}</span>
|
|
351
|
+
</button>
|
|
261
352
|
` : ""}
|
|
262
353
|
|
|
263
|
-
${this._canScrollRight ?
|
|
264
|
-
<
|
|
265
|
-
class="scroll-button-right"
|
|
266
|
-
|
|
267
|
-
label="${this.rightScrollButtonLabel}"
|
|
354
|
+
${this._canScrollRight ? i`
|
|
355
|
+
<button
|
|
356
|
+
class="scroll-text-button scroll-button-right"
|
|
357
|
+
type="button"
|
|
268
358
|
aria-label="Scrolla höger"
|
|
269
|
-
|
|
270
|
-
|
|
271
|
-
|
|
272
|
-
|
|
359
|
+
@click=${this.__scrollRight}
|
|
360
|
+
>
|
|
361
|
+
<span>${this.rightScrollButtonLabel}</span>
|
|
362
|
+
${t("chevron_right", "scroll-control-icon")}
|
|
363
|
+
</button>
|
|
273
364
|
` : ""}
|
|
274
365
|
</div>
|
|
275
366
|
` : ""}
|
|
276
367
|
`;
|
|
277
|
-
default: return
|
|
278
|
-
${this._canScrollLeft ?
|
|
279
|
-
<
|
|
280
|
-
class="scroll-button-left"
|
|
281
|
-
|
|
368
|
+
default: return i`
|
|
369
|
+
${this._canScrollLeft ? i`
|
|
370
|
+
<button
|
|
371
|
+
class="scroll-control scroll-button-left"
|
|
372
|
+
type="button"
|
|
282
373
|
aria-label="Scrolla vänster"
|
|
283
|
-
|
|
284
|
-
|
|
285
|
-
|
|
374
|
+
@click=${this.__scrollLeft}
|
|
375
|
+
>
|
|
376
|
+
${t("chevron_left", "scroll-control-icon")}
|
|
377
|
+
</button>
|
|
286
378
|
` : ""}
|
|
287
379
|
<div class="scroll-shadow-left"></div>
|
|
288
|
-
<div class="scb-horizontal-scroller ${
|
|
380
|
+
<div class="scb-horizontal-scroller ${n ? "canScroll" : ""}">
|
|
289
381
|
<slot></slot>
|
|
290
382
|
<md-focus-ring inward></md-focus-ring>
|
|
291
383
|
</div>
|
|
292
384
|
<div class="scroll-shadow-right"></div>
|
|
293
|
-
${this._canScrollRight ?
|
|
294
|
-
<
|
|
295
|
-
class="scroll-button-right"
|
|
296
|
-
|
|
385
|
+
${this._canScrollRight ? i`
|
|
386
|
+
<button
|
|
387
|
+
class="scroll-control scroll-button-right"
|
|
388
|
+
type="button"
|
|
297
389
|
aria-label="Scrolla höger"
|
|
298
|
-
|
|
299
|
-
|
|
300
|
-
|
|
390
|
+
@click=${this.__scrollRight}
|
|
391
|
+
>
|
|
392
|
+
${t("chevron_right", "scroll-control-icon")}
|
|
393
|
+
</button>
|
|
301
394
|
` : ""}
|
|
302
395
|
`;
|
|
303
396
|
}
|
|
304
397
|
}
|
|
305
398
|
};
|
|
306
|
-
e([
|
|
399
|
+
e([o({
|
|
307
400
|
type: String,
|
|
308
401
|
reflect: !0
|
|
309
|
-
})],
|
|
402
|
+
})], u.prototype, "variant", void 0), e([o({
|
|
310
403
|
type: String,
|
|
311
404
|
reflect: !0
|
|
312
|
-
})],
|
|
405
|
+
})], u.prototype, "width", void 0), e([o({
|
|
313
406
|
type: Boolean,
|
|
314
407
|
reflect: !0,
|
|
315
408
|
attribute: "show-scrollbar"
|
|
316
|
-
})],
|
|
409
|
+
})], u.prototype, "showScrollbar", void 0), e([o({
|
|
317
410
|
type: String,
|
|
318
411
|
reflect: !0,
|
|
319
412
|
attribute: "right-scroll-button-label"
|
|
320
|
-
})],
|
|
413
|
+
})], u.prototype, "rightScrollButtonLabel", void 0), e([o({
|
|
321
414
|
type: String,
|
|
322
415
|
reflect: !0,
|
|
323
416
|
attribute: "left-scroll-button-label"
|
|
324
|
-
})],
|
|
417
|
+
})], u.prototype, "leftScrollButtonLabel", void 0), e([o({
|
|
325
418
|
type: String,
|
|
326
419
|
reflect: !0
|
|
327
|
-
})],
|
|
420
|
+
})], u.prototype, "spacing", void 0), e([o({
|
|
328
421
|
type: String,
|
|
329
422
|
reflect: !0,
|
|
330
423
|
attribute: "spacing-top"
|
|
331
|
-
})],
|
|
424
|
+
})], u.prototype, "spacingTop", void 0), e([o({
|
|
332
425
|
type: String,
|
|
333
426
|
reflect: !0,
|
|
334
427
|
attribute: "spacing-bottom"
|
|
335
|
-
})],
|
|
428
|
+
})], u.prototype, "spacingBottom", void 0), e([o({
|
|
336
429
|
type: String,
|
|
337
430
|
reflect: !0,
|
|
338
431
|
attribute: "spacing-left"
|
|
339
|
-
})],
|
|
432
|
+
})], u.prototype, "spacingLeft", void 0), e([o({
|
|
340
433
|
type: String,
|
|
341
434
|
reflect: !0,
|
|
342
435
|
attribute: "spacing-right"
|
|
343
|
-
})],
|
|
436
|
+
})], u.prototype, "spacingRight", void 0), e([o({
|
|
344
437
|
type: Boolean,
|
|
345
438
|
reflect: !0,
|
|
346
439
|
attribute: "content-flex"
|
|
347
|
-
})],
|
|
440
|
+
})], u.prototype, "contentFlex", void 0), e([o({
|
|
348
441
|
type: String,
|
|
349
442
|
reflect: !0,
|
|
350
443
|
attribute: "internal-gap"
|
|
351
|
-
})],
|
|
444
|
+
})], u.prototype, "internalGap", void 0), e([s()], u.prototype, "_canScrollLeft", void 0), e([s()], u.prototype, "_canScrollRight", void 0), u = e([a("scb-horizontal-scroller")], u);
|
|
352
445
|
//#endregion
|
|
353
|
-
export {
|
|
446
|
+
export { u as ScbHorizontalScroller };
|