scb-wc-test 0.1.1
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 +130 -0
- package/all.js +54 -0
- package/dummy.png +0 -0
- package/index.d.ts +54 -0
- package/index.js +108 -0
- package/mvc/components/all.js +53 -0
- package/mvc/components/scb-accordion/scb-accordion-item.js +194 -0
- package/mvc/components/scb-accordion/scb-accordion.js +5 -0
- package/mvc/components/scb-app-bar/scb-app-bar.js +144 -0
- package/mvc/components/scb-avatar/scb-avatar.js +99 -0
- package/mvc/components/scb-breadcrumb/scb-breadcrumb-item.js +17 -0
- package/mvc/components/scb-breadcrumb/scb-breadcrumb.js +52 -0
- package/mvc/components/scb-button/scb-button.js +121 -0
- package/mvc/components/scb-calendar-card/scb-calendar-card.js +140 -0
- package/mvc/components/scb-card/scb-card.js +256 -0
- package/mvc/components/scb-checkbox/scb-checkbox-group.js +33 -0
- package/mvc/components/scb-checkbox/scb-checkbox.js +99 -0
- package/mvc/components/scb-chips/scb-chip.js +46 -0
- package/mvc/components/scb-dialog/scb-dialog.js +158 -0
- package/mvc/components/scb-divider/scb-divider.js +53 -0
- package/mvc/components/scb-drawer/scb-drawer-item.js +114 -0
- package/mvc/components/scb-drawer/scb-drawer-section.js +19 -0
- package/mvc/components/scb-drawer/scb-drawer.js +79 -0
- package/mvc/components/scb-drawer/scb-sub-drawer.js +10 -0
- package/mvc/components/scb-fact-card/scb-fact-card-content.js +44 -0
- package/mvc/components/scb-fact-card/scb-fact-card.js +66 -0
- package/mvc/components/scb-footer/scb-footer-section.js +3 -0
- package/mvc/components/scb-footer/scb-footer.js +205 -0
- package/mvc/components/scb-grid/scb-grid-item.js +9 -0
- package/mvc/components/scb-grid/scb-grid.js +81 -0
- package/mvc/components/scb-grid/scb-stack.js +16 -0
- package/mvc/components/scb-header/scb-header-drawer-group.js +1 -0
- package/mvc/components/scb-header/scb-header-drawer-item.js +1 -0
- package/mvc/components/scb-header/scb-header-tab.js +1 -0
- package/mvc/components/scb-header/scb-header-utility.js +1 -0
- package/mvc/components/scb-header/scb-header.js +240 -0
- package/mvc/components/scb-icon-button/scb-icon-button.js +95 -0
- package/mvc/components/scb-keyfigure-card/scb-keyfigure-card.js +69 -0
- package/mvc/components/scb-link/scb-link.js +31 -0
- package/mvc/components/scb-list/scb-list-item.js +38 -0
- package/mvc/components/scb-list/scb-list.js +10 -0
- package/mvc/components/scb-menu/scb-menu-item.js +44 -0
- package/mvc/components/scb-menu/scb-menu.js +17 -0
- package/mvc/components/scb-menu/scb-sub-menu.js +29 -0
- package/mvc/components/scb-notification/scb-notification.js +120 -0
- package/mvc/components/scb-progress-indicator/scb-progress-indicator.js +84 -0
- package/mvc/components/scb-radio-button/scb-radio-button.js +95 -0
- package/mvc/components/scb-radio-button/scb-radio-group.js +28 -0
- package/mvc/components/scb-search/scb-search.js +211 -0
- package/mvc/components/scb-snackbar/scb-snackbar.js +83 -0
- package/mvc/components/scb-status-pill/scb-status-pill.js +31 -0
- package/mvc/components/scb-switch/scb-switch.js +54 -0
- package/mvc/components/scb-tabs/scb-primary-tab.js +7 -0
- package/mvc/components/scb-tabs/scb-secondary-tab.js +7 -0
- package/mvc/components/scb-tabs/scb-tabs.js +23 -0
- package/mvc/components/scb-textfield/scb-textfield.js +135 -0
- package/mvc/components/scb-toc/scb-toc-item.js +84 -0
- package/mvc/components/scb-toc/scb-toc.js +6 -0
- package/mvc/components/scb-tooltip/scb-tooltip.js +216 -0
- package/mvc/scb-logo.svg +21 -0
- package/mvc/scb-wc-test.css +1 -0
- package/mvc/scb.svg +14 -0
- package/mvc/vendor/preload-helper.js +1 -0
- package/mvc/vendor/vendor-lit.js +1 -0
- package/mvc/vendor/vendor-material.js +764 -0
- package/mvc/vendor/vendor.js +68 -0
- package/package.json +248 -0
- package/scb-accordion/scb-accordion-item.d.ts +37 -0
- package/scb-accordion/scb-accordion-item.js +343 -0
- package/scb-accordion/scb-accordion.d.ts +6 -0
- package/scb-accordion/scb-accordion.js +33 -0
- package/scb-app-bar/scb-app-bar.d.ts +10 -0
- package/scb-app-bar/scb-app-bar.js +192 -0
- package/scb-avatar/scb-avatar.d.ts +30 -0
- package/scb-avatar/scb-avatar.js +169 -0
- package/scb-breadcrumb/scb-breadcrumb-item.d.ts +9 -0
- package/scb-breadcrumb/scb-breadcrumb-item.js +54 -0
- package/scb-breadcrumb/scb-breadcrumb.d.ts +16 -0
- package/scb-breadcrumb/scb-breadcrumb.js +105 -0
- package/scb-button/scb-button.d.ts +26 -0
- package/scb-button/scb-button.js +247 -0
- package/scb-calendar-card/scb-calendar-card.d.ts +20 -0
- package/scb-calendar-card/scb-calendar-card.js +191 -0
- package/scb-card/scb-card.d.ts +24 -0
- package/scb-card/scb-card.js +345 -0
- package/scb-checkbox/scb-checkbox-group.d.ts +17 -0
- package/scb-checkbox/scb-checkbox-group.js +80 -0
- package/scb-checkbox/scb-checkbox.d.ts +20 -0
- package/scb-checkbox/scb-checkbox.js +157 -0
- package/scb-chips/scb-chip.d.ts +24 -0
- package/scb-chips/scb-chip.js +150 -0
- package/scb-dialog/scb-dialog.d.ts +58 -0
- package/scb-dialog/scb-dialog.js +390 -0
- package/scb-divider/scb-divider.d.ts +9 -0
- package/scb-divider/scb-divider.js +85 -0
- package/scb-drawer/scb-drawer-item.d.ts +61 -0
- package/scb-drawer/scb-drawer-item.js +220 -0
- package/scb-drawer/scb-drawer-section.d.ts +7 -0
- package/scb-drawer/scb-drawer-section.js +44 -0
- package/scb-drawer/scb-drawer.d.ts +97 -0
- package/scb-drawer/scb-drawer.js +258 -0
- package/scb-drawer/scb-sub-drawer.d.ts +10 -0
- package/scb-drawer/scb-sub-drawer.js +43 -0
- package/scb-fact-card/scb-fact-card-content.d.ts +10 -0
- package/scb-fact-card/scb-fact-card-content.js +83 -0
- package/scb-fact-card/scb-fact-card.d.ts +15 -0
- package/scb-fact-card/scb-fact-card.js +110 -0
- package/scb-footer/scb-footer-section.d.ts +21 -0
- package/scb-footer/scb-footer-section.js +28 -0
- package/scb-footer/scb-footer.d.ts +27 -0
- package/scb-footer/scb-footer.js +326 -0
- package/scb-grid/scb-grid-item.d.ts +28 -0
- package/scb-grid/scb-grid-item.js +66 -0
- package/scb-grid/scb-grid.d.ts +33 -0
- package/scb-grid/scb-grid.js +152 -0
- package/scb-grid/scb-stack.d.ts +29 -0
- package/scb-grid/scb-stack.js +82 -0
- package/scb-header/scb-header-drawer-group.d.ts +13 -0
- package/scb-header/scb-header-drawer-group.js +28 -0
- package/scb-header/scb-header-drawer-item.d.ts +14 -0
- package/scb-header/scb-header-drawer-item.js +31 -0
- package/scb-header/scb-header-tab.d.ts +13 -0
- package/scb-header/scb-header-tab.js +28 -0
- package/scb-header/scb-header-utility.d.ts +14 -0
- package/scb-header/scb-header-utility.js +31 -0
- package/scb-header/scb-header.d.ts +105 -0
- package/scb-header/scb-header.js +618 -0
- package/scb-icon-button/scb-icon-button.d.ts +31 -0
- package/scb-icon-button/scb-icon-button.js +208 -0
- package/scb-keyfigure-card/scb-keyfigure-card.d.ts +13 -0
- package/scb-keyfigure-card/scb-keyfigure-card.js +119 -0
- package/scb-link/scb-link.d.ts +17 -0
- package/scb-link/scb-link.js +74 -0
- package/scb-list/scb-list-item.d.ts +32 -0
- package/scb-list/scb-list-item.js +144 -0
- package/scb-list/scb-list.d.ts +8 -0
- package/scb-list/scb-list.js +39 -0
- package/scb-logo.svg +21 -0
- package/scb-menu/scb-menu-item.d.ts +22 -0
- package/scb-menu/scb-menu-item.js +107 -0
- package/scb-menu/scb-menu.d.ts +21 -0
- package/scb-menu/scb-menu.js +98 -0
- package/scb-menu/scb-sub-menu.d.ts +12 -0
- package/scb-menu/scb-sub-menu.js +69 -0
- package/scb-notification/scb-notification.d.ts +16 -0
- package/scb-notification/scb-notification.js +187 -0
- package/scb-progress-indicator/scb-progress-indicator.d.ts +11 -0
- package/scb-progress-indicator/scb-progress-indicator.js +122 -0
- package/scb-radio-button/scb-radio-button.d.ts +19 -0
- package/scb-radio-button/scb-radio-button.js +176 -0
- package/scb-radio-button/scb-radio-group.d.ts +20 -0
- package/scb-radio-button/scb-radio-group.js +81 -0
- package/scb-search/scb-search.d.ts +45 -0
- package/scb-search/scb-search.js +410 -0
- package/scb-snackbar/scb-snackbar.d.ts +17 -0
- package/scb-snackbar/scb-snackbar.js +140 -0
- package/scb-status-pill/scb-status-pill.d.ts +9 -0
- package/scb-status-pill/scb-status-pill.js +62 -0
- package/scb-switch/scb-switch.d.ts +21 -0
- package/scb-switch/scb-switch.js +111 -0
- package/scb-tabs/scb-primary-tab.d.ts +17 -0
- package/scb-tabs/scb-primary-tab.js +93 -0
- package/scb-tabs/scb-secondary-tab.d.ts +17 -0
- package/scb-tabs/scb-secondary-tab.js +97 -0
- package/scb-tabs/scb-tabs.d.ts +10 -0
- package/scb-tabs/scb-tabs.js +66 -0
- package/scb-textfield/scb-textfield.d.ts +41 -0
- package/scb-textfield/scb-textfield.js +258 -0
- package/scb-toc/scb-toc-item.d.ts +21 -0
- package/scb-toc/scb-toc-item.js +196 -0
- package/scb-toc/scb-toc.d.ts +6 -0
- package/scb-toc/scb-toc.js +27 -0
- package/scb-tooltip/scb-tooltip.d.ts +32 -0
- package/scb-tooltip/scb-tooltip.js +329 -0
- package/scb-wc-test.bundle.js +5429 -0
- package/scb-wc-test.css +1 -0
- package/scb-wc-test.d.ts +106 -0
- package/scb.svg +14 -0
|
@@ -0,0 +1,618 @@
|
|
|
1
|
+
import { css as S, LitElement as M, html as c, nothing as u } from "lit";
|
|
2
|
+
import { property as n, state as p, customElement as A } from "lit/decorators.js";
|
|
3
|
+
import "../scb-grid/scb-grid-item.js";
|
|
4
|
+
import "../scb-grid/scb-grid.js";
|
|
5
|
+
import "../scb-link/scb-link.js";
|
|
6
|
+
import "../scb-search/scb-search.js";
|
|
7
|
+
import "../scb-tabs/scb-tabs.js";
|
|
8
|
+
import "../scb-tabs/scb-secondary-tab.js";
|
|
9
|
+
import "../scb-drawer/scb-drawer.js";
|
|
10
|
+
import "../scb-icon-button/scb-icon-button.js";
|
|
11
|
+
import "../scb-button/scb-button.js";
|
|
12
|
+
var k = Object.defineProperty, T = Object.getOwnPropertyDescriptor, i = (e, t, s, a) => {
|
|
13
|
+
for (var l = a > 1 ? void 0 : a ? T(t, s) : t, d = e.length - 1, o; d >= 0; d--)
|
|
14
|
+
(o = e[d]) && (l = (a ? o(t, s, l) : o(l)) || l);
|
|
15
|
+
return a && l && k(t, s, l), l;
|
|
16
|
+
};
|
|
17
|
+
const w = {
|
|
18
|
+
fromAttribute: (e) => e == null ? !0 : !/^(false|0|off|no)$/i.test(e),
|
|
19
|
+
toAttribute: (e) => String(!!e)
|
|
20
|
+
};
|
|
21
|
+
let r = class extends M {
|
|
22
|
+
constructor() {
|
|
23
|
+
super(...arguments), this.maxWidth = "1440px", this.logoText = "Statistikmyndigheten", this.logoHref = "/", this.banner = !1, this.tabs = [], this.activeTab = 0, this.utilityItems = [], this.showDrawer = !0, this.showSearch = !0, this.includeUtilityInDrawer = !1, this._drawerId = "main-drawer", this._paddingInline = "32px", this._drawerMounted = !1, this._drawerExpanded = !1, this._searchId = "header-search", this._slotTabs = [], this._slotUtils = [], this._slotMenu = [], this._measureScheduled = !1, this._scheduleMeasure = () => {
|
|
24
|
+
this._measureScheduled || (this._measureScheduled = !0, requestAnimationFrame(() => {
|
|
25
|
+
this._measureScheduled = !1, this._measure();
|
|
26
|
+
}));
|
|
27
|
+
}, this._onWindowResize = () => {
|
|
28
|
+
this._updatePadding(), this._scheduleMeasure();
|
|
29
|
+
}, this._onDrawerSelect = (e) => {
|
|
30
|
+
this.dispatchEvent(new CustomEvent("drawer-select", {
|
|
31
|
+
detail: e.detail,
|
|
32
|
+
bubbles: !0,
|
|
33
|
+
composed: !0
|
|
34
|
+
})), this._closeDrawerNow();
|
|
35
|
+
}, this._collapsed = !1, this._unlockAtWidth = 0, this._hideLogoText = !1, this._logoTextUnlockAt = 0, this._harvestPending = !1, this._harvest = () => {
|
|
36
|
+
const e = this._slotEl;
|
|
37
|
+
if (!e) return;
|
|
38
|
+
const t = e.assignedElements({ flatten: !0 }), s = [], a = [], l = [], d = (o) => ({
|
|
39
|
+
label: o.getAttribute("label") ?? "",
|
|
40
|
+
href: o.getAttribute("href") ?? void 0,
|
|
41
|
+
icon: o.getAttribute("icon") ?? void 0
|
|
42
|
+
});
|
|
43
|
+
for (const o of t) {
|
|
44
|
+
const h = o.tagName.toLowerCase();
|
|
45
|
+
if (h === "scb-header-tab") {
|
|
46
|
+
s.push({ label: o.getAttribute("label") ?? "", href: o.getAttribute("href") ?? "#" });
|
|
47
|
+
continue;
|
|
48
|
+
}
|
|
49
|
+
if (h === "scb-header-utility") {
|
|
50
|
+
a.push({
|
|
51
|
+
label: o.getAttribute("label") ?? "",
|
|
52
|
+
href: o.getAttribute("href") ?? "#",
|
|
53
|
+
target: o.getAttribute("target") ?? void 0
|
|
54
|
+
});
|
|
55
|
+
continue;
|
|
56
|
+
}
|
|
57
|
+
if (h === "scb-header-drawer-group") {
|
|
58
|
+
const b = {
|
|
59
|
+
label: o.getAttribute("label") ?? "",
|
|
60
|
+
icon: o.getAttribute("icon") ?? void 0,
|
|
61
|
+
children: []
|
|
62
|
+
};
|
|
63
|
+
o.querySelectorAll("scb-header-drawer-item").forEach((m) => b.children.push(d(m))), l.push(b);
|
|
64
|
+
continue;
|
|
65
|
+
}
|
|
66
|
+
h === "scb-header-drawer-item" && l.push(d(o));
|
|
67
|
+
}
|
|
68
|
+
this._slotTabs = s, this._slotUtils = a, this._slotMenu = l, queueMicrotask(() => {
|
|
69
|
+
this.updateComplete.then(() => {
|
|
70
|
+
this._applyActiveToTabs(), this._scheduleMeasure();
|
|
71
|
+
});
|
|
72
|
+
});
|
|
73
|
+
}, this._measure = () => {
|
|
74
|
+
var m, v, f;
|
|
75
|
+
const e = this._top, t = this._logoGroup;
|
|
76
|
+
if (!e || !t) return;
|
|
77
|
+
const s = window.innerWidth, a = e.clientWidth, l = this._overflows(this._util), d = this._overflows(this._tabsEl), o = s < this.BP_MD || l || d;
|
|
78
|
+
this._collapsed ? !o && a >= this._unlockAtWidth && this._setCollapsed(!1) : o && (this._unlockAtWidth = a + this._HYST, this._setCollapsed(!0));
|
|
79
|
+
let h = !1;
|
|
80
|
+
if (this.showSearch && s >= this.BP_SM && s < this.BP_MD && this._searchWrap) {
|
|
81
|
+
const _ = getComputedStyle(this._searchWrap), y = Math.max(
|
|
82
|
+
this._num(_.minWidth, this._tokenPx("--scb-header-search-min", 320)),
|
|
83
|
+
this._tokenPx("--scb-header-search-min", 320)
|
|
84
|
+
), g = this._num(getComputedStyle(e).gap, this._tokenPx("--spacing-7", 24)), C = this.showDrawer && (s < this.BP_MD || this._collapsed) ? ((m = this._menuBtn) == null ? void 0 : m.getBoundingClientRect().width) || this._tokenPx("--icon-size-large", 48) : 0;
|
|
85
|
+
h = t.getBoundingClientRect().width + g + y + g + C + 8 > a + 0.5;
|
|
86
|
+
}
|
|
87
|
+
this._setHideSearch(h);
|
|
88
|
+
let b = !1;
|
|
89
|
+
if (this.showDrawer && (s < this.BP_MD || this._collapsed) && !this._visible(this._util) && !this._visible(this._searchWrap)) {
|
|
90
|
+
const _ = this._num(getComputedStyle(e).gap, this._tokenPx("--spacing-7", 24)), y = ((v = this._menuBtn) == null ? void 0 : v.getBoundingClientRect().width) || this._tokenPx("--icon-size-large", 48), g = (((f = this._logoGroup) == null ? void 0 : f.getBoundingClientRect().width) || 0) + _ + y;
|
|
91
|
+
this._hideLogoText ? b = !(a >= this._logoTextUnlockAt) : g > a + 0.5 && (b = !0, this._logoTextUnlockAt = a + this._HYST);
|
|
92
|
+
} else
|
|
93
|
+
b = !1, this._logoTextUnlockAt = 0;
|
|
94
|
+
this._setHideLogoText(b);
|
|
95
|
+
}, this._updatePadding = () => {
|
|
96
|
+
const e = window.innerWidth || 0;
|
|
97
|
+
e <= 360 ? this._paddingInline = "16px" : e < this.BP_SM ? this._paddingInline = "24px" : this._paddingInline = "32px";
|
|
98
|
+
}, this._onMenuClick = async (e) => {
|
|
99
|
+
e.preventDefault(), e.stopPropagation(), this.showDrawer && (this.dispatchEvent(new CustomEvent("menu-click", { bubbles: !0, composed: !0 })), await this._ensureDrawerMounted(), await r._nextFrame(), await r._nextFrame(), this._openDrawerNow());
|
|
100
|
+
}, this._onSearchClick = (e) => {
|
|
101
|
+
var a;
|
|
102
|
+
const t = this._searchEl;
|
|
103
|
+
if (t != null && t.submit && typeof t.submit == "function") {
|
|
104
|
+
t.submit();
|
|
105
|
+
return;
|
|
106
|
+
}
|
|
107
|
+
const s = (t == null ? void 0 : t.value) ?? void 0;
|
|
108
|
+
this.dispatchEvent(new CustomEvent("search-click", {
|
|
109
|
+
detail: { value: s },
|
|
110
|
+
bubbles: !0,
|
|
111
|
+
composed: !0
|
|
112
|
+
})), (a = t == null ? void 0 : t.focus) == null || a.call(t);
|
|
113
|
+
}, this._onTabsChange = (e) => {
|
|
114
|
+
var d, o, h;
|
|
115
|
+
const t = e, s = ((d = t == null ? void 0 : t.detail) == null ? void 0 : d.activeTabIndex) ?? ((o = e.target) == null ? void 0 : o.activeTabIndex) ?? 0;
|
|
116
|
+
this.activeTab = s;
|
|
117
|
+
const l = ((h = (this._slotTabs.length ? this._slotTabs : this.tabs)[s]) == null ? void 0 : h.href) ?? "";
|
|
118
|
+
this.dispatchEvent(new CustomEvent("tab-change", {
|
|
119
|
+
detail: { index: s, href: l },
|
|
120
|
+
bubbles: !0,
|
|
121
|
+
composed: !0
|
|
122
|
+
}));
|
|
123
|
+
};
|
|
124
|
+
}
|
|
125
|
+
/* Hysteresis för respons – läses som spacing-token */
|
|
126
|
+
get _HYST() {
|
|
127
|
+
return this._tokenPx("--spacing-11", 64);
|
|
128
|
+
}
|
|
129
|
+
get BP_SM() {
|
|
130
|
+
return this._tokenPx("--bp-sm", r.BP_SM_DEFAULT);
|
|
131
|
+
}
|
|
132
|
+
get BP_MD() {
|
|
133
|
+
return this._tokenPx("--bp-md", r.BP_MD_DEFAULT);
|
|
134
|
+
}
|
|
135
|
+
_scheduleHarvest() {
|
|
136
|
+
this._harvestPending || (this._harvestPending = !0, queueMicrotask(() => {
|
|
137
|
+
this._harvestPending = !1, this._harvest();
|
|
138
|
+
}));
|
|
139
|
+
}
|
|
140
|
+
/* Hjälp-getters för att nå element i renderRoot/Shadow DOM. */
|
|
141
|
+
get _slotEl() {
|
|
142
|
+
var e;
|
|
143
|
+
return ((e = this.shadowRoot) == null ? void 0 : e.querySelector("slot#data-slot")) ?? null;
|
|
144
|
+
}
|
|
145
|
+
get _top() {
|
|
146
|
+
return this.renderRoot.querySelector(".top-row");
|
|
147
|
+
}
|
|
148
|
+
get _util() {
|
|
149
|
+
return this.renderRoot.querySelector(".utility");
|
|
150
|
+
}
|
|
151
|
+
get _tabsEl() {
|
|
152
|
+
return this.renderRoot.querySelector("scb-tabs");
|
|
153
|
+
}
|
|
154
|
+
get _logoGroup() {
|
|
155
|
+
return this.renderRoot.querySelector(".logo-group");
|
|
156
|
+
}
|
|
157
|
+
get _searchWrap() {
|
|
158
|
+
return this.renderRoot.querySelector(".search");
|
|
159
|
+
}
|
|
160
|
+
get _menuBtn() {
|
|
161
|
+
return this.renderRoot.querySelector(".menu-trigger");
|
|
162
|
+
}
|
|
163
|
+
get _searchEl() {
|
|
164
|
+
return this.renderRoot.querySelector(`#${this._searchId}`);
|
|
165
|
+
}
|
|
166
|
+
/* Kopplar in MutationObserver för slot-innehållet. */
|
|
167
|
+
_attachSlotObservers() {
|
|
168
|
+
var t;
|
|
169
|
+
(t = this._slotMo) == null || t.disconnect();
|
|
170
|
+
const e = new MutationObserver((s) => {
|
|
171
|
+
this._scheduleHarvest();
|
|
172
|
+
});
|
|
173
|
+
this._slotMo = e, e.observe(this, {
|
|
174
|
+
subtree: !0,
|
|
175
|
+
childList: !0,
|
|
176
|
+
attributes: !0,
|
|
177
|
+
attributeFilter: ["label", "href", "icon", "target"]
|
|
178
|
+
});
|
|
179
|
+
}
|
|
180
|
+
/* Data-attribut för CSS (collapsed / hide-search / hide-logo-text). */
|
|
181
|
+
_setCollapsed(e) {
|
|
182
|
+
this._collapsed !== e && (this._collapsed = e, e ? this.setAttribute("data-collapsed", "") : this.removeAttribute("data-collapsed"));
|
|
183
|
+
}
|
|
184
|
+
_setHideSearch(e) {
|
|
185
|
+
e ? this.setAttribute("data-hide-search", "") : this.removeAttribute("data-hide-search");
|
|
186
|
+
}
|
|
187
|
+
_setHideLogoText(e) {
|
|
188
|
+
this._hideLogoText !== e && (this._hideLogoText = e, e ? this.setAttribute("data-hide-logo-text", "") : this.removeAttribute("data-hide-logo-text"));
|
|
189
|
+
}
|
|
190
|
+
/* Helpers: hämta numeriskt tokenvärde (px) */
|
|
191
|
+
_num(e, t) {
|
|
192
|
+
const s = Number.parseFloat(String(e ?? "").trim());
|
|
193
|
+
return Number.isFinite(s) ? s : t;
|
|
194
|
+
}
|
|
195
|
+
_tokenPx(e, t) {
|
|
196
|
+
const s = getComputedStyle(this);
|
|
197
|
+
return this._num(s.getPropertyValue(e), t);
|
|
198
|
+
}
|
|
199
|
+
_visible(e) {
|
|
200
|
+
return e ? getComputedStyle(e).display !== "none" : !1;
|
|
201
|
+
}
|
|
202
|
+
_overflows(e) {
|
|
203
|
+
return !e || !this._visible(e) ? !1 : e.scrollWidth > e.clientWidth + 1;
|
|
204
|
+
}
|
|
205
|
+
firstUpdated() {
|
|
206
|
+
this._updatePadding(), this.updateComplete.then(() => {
|
|
207
|
+
this._harvest(), this._attachSlotObservers();
|
|
208
|
+
});
|
|
209
|
+
const e = this._top;
|
|
210
|
+
e && (this._ro = new ResizeObserver(() => this._scheduleMeasure()), this._ro.observe(e)), window.addEventListener("resize", this._onWindowResize, { passive: !0 });
|
|
211
|
+
const t = this._menuBtn, s = () => this._ensureDrawerMounted();
|
|
212
|
+
t == null || t.addEventListener("pointerenter", s, { once: !0 }), t == null || t.addEventListener("focusin", s, { once: !0 }), t == null || t.addEventListener("touchstart", s, { once: !0, passive: !0 });
|
|
213
|
+
}
|
|
214
|
+
updated(e) {
|
|
215
|
+
e.has("searchMax") && this.style.setProperty("--scb-header-search-max", this.searchMax ?? "480px"), e.has("searchMin") && this.style.setProperty("--scb-header-search-min", this.searchMin ?? "320px"), (e.has("utilityItems") || e.has("tabs") || e.has("logoText") || e.has("activeTab") || e.has("_slotTabs") || e.has("_slotUtils") || e.has("_slotMenu") || e.has("showDrawer") || e.has("showSearch") || e.has("searchMax") || e.has("searchMin")) && this.updateComplete.then(() => {
|
|
216
|
+
this._scheduleMeasure(), this._applyActiveToTabs();
|
|
217
|
+
});
|
|
218
|
+
}
|
|
219
|
+
disconnectedCallback() {
|
|
220
|
+
var e, t;
|
|
221
|
+
(e = this._ro) == null || e.disconnect(), (t = this._slotMo) == null || t.disconnect(), window.removeEventListener("resize", this._onWindowResize), super.disconnectedCallback();
|
|
222
|
+
}
|
|
223
|
+
/* Säkerställ att <scb-drawer> finns i DOM innan vi öppnar. */
|
|
224
|
+
async _ensureDrawerMounted() {
|
|
225
|
+
this._drawerMounted || (this._drawerMounted = !0, await this.updateComplete);
|
|
226
|
+
}
|
|
227
|
+
/* Öppna/stäng drawer + aria-expanded (+ nya event) */
|
|
228
|
+
_openDrawerNow() {
|
|
229
|
+
var t, s;
|
|
230
|
+
const e = this.renderRoot.querySelector(`#${this._drawerId}`);
|
|
231
|
+
e && (e.open = !0, e.setAttribute("open", ""), (t = e.show) == null || t.call(e), (s = e.openDrawer) == null || s.call(e), this._drawerExpanded = !0, this._syncMenuBtnAria(), this.dispatchEvent(new CustomEvent("drawer-open", { bubbles: !0, composed: !0 })));
|
|
232
|
+
}
|
|
233
|
+
_closeDrawerNow() {
|
|
234
|
+
const e = this.renderRoot.querySelector(`#${this._drawerId}`);
|
|
235
|
+
e && (e.open = !1), this._drawerExpanded = !1, this._syncMenuBtnAria(), this.dispatchEvent(new CustomEvent("drawer-close", { bubbles: !0, composed: !0 }));
|
|
236
|
+
}
|
|
237
|
+
_syncMenuBtnAria() {
|
|
238
|
+
const e = this.renderRoot.querySelector(".menu-trigger");
|
|
239
|
+
e && e.setAttribute("aria-expanded", String(this._drawerExpanded));
|
|
240
|
+
}
|
|
241
|
+
/* Synca selected på scb-secondary-tab */
|
|
242
|
+
_applyActiveToTabs() {
|
|
243
|
+
const e = this._tabsEl;
|
|
244
|
+
if (!e) return;
|
|
245
|
+
e.activeTabIndex = this.activeTab, e.querySelectorAll("scb-secondary-tab").forEach((s, a) => {
|
|
246
|
+
s.selected = a === this.activeTab;
|
|
247
|
+
});
|
|
248
|
+
}
|
|
249
|
+
/* Rendera drawer-träd */
|
|
250
|
+
_renderDrawerNodes(e) {
|
|
251
|
+
return !e || e.length === 0 ? c`` : c`${e.map((t) => {
|
|
252
|
+
const s = Array.isArray(t.children) && t.children.length > 0;
|
|
253
|
+
return c`
|
|
254
|
+
<scb-drawer-item
|
|
255
|
+
label=${t.label}
|
|
256
|
+
?selected=${!1}
|
|
257
|
+
leading-icon=${t.icon ?? ""}
|
|
258
|
+
item-href=${t.href ?? ""}
|
|
259
|
+
>
|
|
260
|
+
${s ? c`
|
|
261
|
+
<scb-sub-drawer label=${t.label}>
|
|
262
|
+
${t.children.map((a) => c`
|
|
263
|
+
<scb-drawer-item
|
|
264
|
+
label=${a.label}
|
|
265
|
+
item-href=${a.href ?? ""}
|
|
266
|
+
leading-icon=${a.icon ?? ""}
|
|
267
|
+
></scb-drawer-item>
|
|
268
|
+
`)}
|
|
269
|
+
</scb-sub-drawer>
|
|
270
|
+
` : u}
|
|
271
|
+
</scb-drawer-item>
|
|
272
|
+
`;
|
|
273
|
+
})}`;
|
|
274
|
+
}
|
|
275
|
+
/* Sätt data-attribut för layoutjusteringar (saknar utility / saknar sök). */
|
|
276
|
+
_syncFlags(e, t) {
|
|
277
|
+
this.toggleAttribute("data-no-utility", e), this.toggleAttribute("data-no-search", t);
|
|
278
|
+
}
|
|
279
|
+
render() {
|
|
280
|
+
const e = this._slotTabs.length ? this._slotTabs : this.tabs, t = this._slotUtils.length ? this._slotUtils : this.utilityItems, s = this._slotMenu.length ? this._slotMenu : this.menuData ?? [];
|
|
281
|
+
return this._syncFlags(t.length === 0, !this.showSearch), c`
|
|
282
|
+
<!-- Slot för wrapper-barn (osynliga; fungerar som datakällor) -->
|
|
283
|
+
<slot id="data-slot" @slotchange=${() => {
|
|
284
|
+
this._harvest(), this._attachSlotObservers();
|
|
285
|
+
}} hidden></slot>
|
|
286
|
+
|
|
287
|
+
<!-- Banner-landmark är opt-in och omsluter hela headerblocket -->
|
|
288
|
+
<div
|
|
289
|
+
class="header-landmark"
|
|
290
|
+
role=${this.banner ? "banner" : u}
|
|
291
|
+
aria-label=${this.banner && this.bannerLabel ? this.bannerLabel : u}
|
|
292
|
+
>
|
|
293
|
+
<scb-grid cols-compact="4" cols-medium="8" cols-expanded="12" padding-inline=${this._paddingInline} max-width=${this.maxWidth} gap="0">
|
|
294
|
+
<scb-grid-item col-span-compact="4" col-span-medium="8" col-span-expanded="12">
|
|
295
|
+
<div class="top-row">
|
|
296
|
+
<a class="logo-group" href=${this.logoHref} aria-label="Gå till startsidan">
|
|
297
|
+
${this._renderLogo()} <span class="logo-text">${this.logoText}</span>
|
|
298
|
+
</a>
|
|
299
|
+
|
|
300
|
+
<div class="actions">
|
|
301
|
+
<nav class="utility" aria-label="Funktionslänkar">
|
|
302
|
+
${t.map((a) => c`<scb-link .href=${a.href} .target=${a.target ?? void 0}>${a.label}</scb-link>`)}
|
|
303
|
+
</nav>
|
|
304
|
+
|
|
305
|
+
${this.showSearch ? c`
|
|
306
|
+
<div class="search">
|
|
307
|
+
<scb-search
|
|
308
|
+
id=${this._searchId}
|
|
309
|
+
size="compact"
|
|
310
|
+
.supportingText=${this.searchPlaceholder ?? ""}
|
|
311
|
+
></scb-search>
|
|
312
|
+
<scb-button
|
|
313
|
+
variant="filled-tonal"
|
|
314
|
+
label="Sök"
|
|
315
|
+
@click=${this._onSearchClick}
|
|
316
|
+
></scb-button>
|
|
317
|
+
</div>
|
|
318
|
+
` : u}
|
|
319
|
+
</div>
|
|
320
|
+
|
|
321
|
+
${this.showDrawer ? c`
|
|
322
|
+
<scb-icon-button
|
|
323
|
+
class="menu-trigger"
|
|
324
|
+
aria-label="Meny"
|
|
325
|
+
icon="menu"
|
|
326
|
+
variant="outlined"
|
|
327
|
+
aria-controls=${this._drawerMounted ? this._drawerId : u}
|
|
328
|
+
aria-haspopup="dialog"
|
|
329
|
+
aria-expanded=${String(this._drawerExpanded)}
|
|
330
|
+
data-drawer-toggle=${this._drawerId}
|
|
331
|
+
title="Öppna meny"
|
|
332
|
+
@click=${this._onMenuClick}
|
|
333
|
+
></scb-icon-button>
|
|
334
|
+
` : u}
|
|
335
|
+
</div>
|
|
336
|
+
</scb-grid-item>
|
|
337
|
+
|
|
338
|
+
<scb-grid-item col-span-compact="4" col-span-medium="8" col-span-expanded="12">
|
|
339
|
+
<div class="tabs-inset">
|
|
340
|
+
<scb-tabs aria-label="Huvudnavigering" .activeTabIndex=${this.activeTab} @change=${this._onTabsChange}>
|
|
341
|
+
${e.map((a, l) => c`<scb-secondary-tab ?selected=${l === this.activeTab}>${a.label}</scb-secondary-tab>`)}
|
|
342
|
+
</scb-tabs>
|
|
343
|
+
</div>
|
|
344
|
+
<div class="divider" role="presentation"></div>
|
|
345
|
+
</scb-grid-item>
|
|
346
|
+
</scb-grid>
|
|
347
|
+
</div>
|
|
348
|
+
|
|
349
|
+
${this.showDrawer && this._drawerMounted ? c`
|
|
350
|
+
<scb-drawer
|
|
351
|
+
id=${this._drawerId}
|
|
352
|
+
.label=${this.drawerLabel ?? ""}
|
|
353
|
+
.subLabel=${this.drawerSubLabel ?? ""}
|
|
354
|
+
floating right overlay lock-scroll modal
|
|
355
|
+
@scb-drawer-select=${this._onDrawerSelect}
|
|
356
|
+
>
|
|
357
|
+
<div style="padding: var(--spacing-4, 12px);">
|
|
358
|
+
<scb-search size="compact" .supportingText=${this.drawerSearchPlaceholder ?? ""}></scb-search>
|
|
359
|
+
</div>
|
|
360
|
+
|
|
361
|
+
${this.drawerSectionLabel ? c`<scb-drawer-section .label=${this.drawerSectionLabel}></scb-drawer-section>` : u}
|
|
362
|
+
|
|
363
|
+
${this._renderDrawerNodes(s)}
|
|
364
|
+
|
|
365
|
+
${this.includeUtilityInDrawer && ((t == null ? void 0 : t.length) ?? 0) > 0 ? c`
|
|
366
|
+
<scb-drawer-section label=''></scb-drawer-section>
|
|
367
|
+
${t.map((a) => c`<scb-drawer-item label=${a.label} item-href=${a.href}></scb-drawer-item>`)}
|
|
368
|
+
` : u}
|
|
369
|
+
</scb-drawer>
|
|
370
|
+
` : u}
|
|
371
|
+
`;
|
|
372
|
+
}
|
|
373
|
+
/* SCB-logotypens SVG */
|
|
374
|
+
_renderLogo() {
|
|
375
|
+
return c`
|
|
376
|
+
<svg class="logo" viewBox="0 0 48 54" xmlns="http://www.w3.org/2000/svg" aria-hidden="true" focusable="false">
|
|
377
|
+
<g clip-path="url(#clip0_scb_header)">
|
|
378
|
+
<path fill="currentColor" fill-rule="evenodd" clip-rule="evenodd"
|
|
379
|
+
d="M25.6527 6.07812C25.6527 5.15909 24.9076 4.41482 23.9877 4.41482C23.0677 4.41482 22.3226 5.15909 22.3226 6.07812V48.0391C22.3226 48.9601 23.0677 49.7061 23.9877 49.7061C24.9076 49.7061 25.6527 48.9601 25.6527 48.0391V32.9153C25.6527 32.8056 25.744 32.7163 25.8527 32.7163H31.3245C31.4342 32.7163 31.5245 32.8056 31.5245 32.9153V48.1711C31.5245 51.3899 28.1496 54 23.9877 54C19.8241 54 16.4501 51.3899 16.4501 48.1711V5.82708C16.4501 2.6103 19.8241 0 23.9877 0C28.1496 0 31.5245 2.6103 31.5245 5.82708V20.8893C31.5245 21.0009 31.4342 21.0883 31.3245 21.0883H25.8527C25.744 21.0883 25.6527 21.0009 25.6527 20.8893V6.07812Z" />
|
|
380
|
+
<path fill="currentColor" fill-rule="evenodd" clip-rule="evenodd"
|
|
381
|
+
d="M0.198901 10.8446C-0.152687 13.293 -0.0290117 17.3078 0.49751 19.5627C1.07611 22.0203 4.41288 26.9878 5.91609 29.2948C7.42127 31.5999 9.42869 34.0073 9.39892 37.2185V44.9097C9.39892 45.8287 8.65375 46.5748 7.73382 46.5748C6.81659 46.5748 6.0715 45.8287 6.0715 44.9097V33.1217C6.0715 33.012 5.9803 32.9208 5.86868 32.9208H0.39893C0.287311 32.9208 0.198901 33.012 0.198901 33.1217V45.2613C0.198901 48.4798 3.57282 51.0901 7.73382 51.0901C11.8975 51.0901 15.2714 48.4798 15.2714 45.2613V37.2185C15.2463 31.7023 13.7412 30.8985 11.7877 27.5906C10.3886 25.2148 6.94682 20.3143 6.37003 17.8566C5.8417 15.6018 5.86491 12.9916 6.0715 10.6194C6.0715 9.70039 6.81659 8.95432 7.73382 8.95432C8.65375 8.95432 9.39892 9.70039 9.39892 10.6194V21.1032C9.39892 21.2129 9.48913 21.3022 9.60166 21.3022H15.0706C15.183 21.3022 15.2714 21.2129 15.2714 21.1032V10.8446C15.2714 7.62408 11.8975 5.01575 7.73382 5.01575C3.57282 5.01575 0.198901 7.62408 0.198901 10.8446Z" />
|
|
382
|
+
<path fill="currentColor" fill-rule="evenodd" clip-rule="evenodd"
|
|
383
|
+
d="M32.8911 5.46411H41.2883C44.7561 5.46411 47.5674 8.27534 47.5674 11.7414V20.547C47.5674 23.0158 45.9488 25.0995 43.7161 25.8139V25.933C45.9488 26.6456 47.5674 28.7312 47.5674 31.2018V44.6438C47.5674 47.6988 45.0873 50.1768 42.0344 50.1768L32.8911 50.1823C32.7786 50.1823 32.6892 50.0911 32.6892 49.9832V5.66324C32.6892 5.55539 32.7786 5.46411 32.8911 5.46411ZM38.7636 9.83067C38.6502 9.83067 38.5608 9.92179 38.5608 10.0316V23.9255C38.5608 24.039 38.6502 24.1284 38.7636 24.1284H39.5898C40.6948 24.1284 41.5916 23.2297 41.5916 22.1246V11.8343C41.5916 10.7293 40.6948 9.83067 39.5898 9.83067H38.7636ZM38.7636 28.5432C38.6502 28.5432 38.5608 28.6325 38.5608 28.7423V45.7971C38.5608 45.9088 38.6502 46 38.7636 46H39.7514C40.8584 46 41.7534 45.1014 41.7534 43.9962V30.5469C41.7534 29.4381 40.8584 28.5432 39.7514 28.5432H38.7636Z" />
|
|
384
|
+
</g>
|
|
385
|
+
<defs><clipPath id="clip0_scb_header"><rect width="48" height="54" fill="white" /></clipPath></defs>
|
|
386
|
+
</svg>
|
|
387
|
+
`;
|
|
388
|
+
}
|
|
389
|
+
};
|
|
390
|
+
r._JSON_ARRAY = {
|
|
391
|
+
fromAttribute: (e) => {
|
|
392
|
+
if (e == null || e === "") return [];
|
|
393
|
+
try {
|
|
394
|
+
const t = JSON.parse(e);
|
|
395
|
+
return Array.isArray(t) ? t : [];
|
|
396
|
+
} catch {
|
|
397
|
+
return [];
|
|
398
|
+
}
|
|
399
|
+
},
|
|
400
|
+
toAttribute: (e) => e == null ? null : JSON.stringify(e)
|
|
401
|
+
};
|
|
402
|
+
r.BP_SM_DEFAULT = 600;
|
|
403
|
+
r.BP_MD_DEFAULT = 840;
|
|
404
|
+
r.styles = S`
|
|
405
|
+
:host {
|
|
406
|
+
display:block;
|
|
407
|
+
background:var(--md-sys-color-surface,#fff);
|
|
408
|
+
color:var(--md-sys-color-on-surface,#1b1b1f);
|
|
409
|
+
--scb-header-search-max: 380px;
|
|
410
|
+
--scb-header-search-min: 250px;
|
|
411
|
+
|
|
412
|
+
/* Overridebara logo-mått (knutna till tokens) */
|
|
413
|
+
--scb-header-logo-w: var(--icon-size-large, 40px);
|
|
414
|
+
--scb-header-logo-h: calc(var(--scb-header-logo-w) * 1.125);
|
|
415
|
+
}
|
|
416
|
+
|
|
417
|
+
.top-row { display:flex; align-items:center; gap:var(--spacing-7,24px); padding-block:var(--spacing-7,24px); min-width:0; }
|
|
418
|
+
.logo-group { display:inline-flex; align-items:center; gap:var(--spacing-5,16px); text-decoration:none; color:inherit; flex-shrink:0; min-width:0; }
|
|
419
|
+
.logo-group svg { width:var(--scb-header-logo-w); height:var(--scb-header-logo-h); display:block; color:var(--md-sys-color-on-surface); }
|
|
420
|
+
.logo-text{
|
|
421
|
+
font-family: var(--brand-font, Inter), sans-serif;
|
|
422
|
+
font-size: var(--md-sys-typescale-body-medium-size, 1rem);
|
|
423
|
+
line-height: var(--md-sys-typescale-body-medium-line-height, 1.5rem);
|
|
424
|
+
font-weight: var(--weight-regular, 400);
|
|
425
|
+
letter-spacing: var(--md-sys-typescale-body-medium-tracking, -0.009375rem);
|
|
426
|
+
color: var(--md-sys-color-on-surface, var(--p-20));
|
|
427
|
+
white-space: nowrap;
|
|
428
|
+
}
|
|
429
|
+
@media (max-width:360px){ .logo-text{ margin-right: calc(var(--spacing-9, 40px) * -1); } }
|
|
430
|
+
|
|
431
|
+
.actions{ display:flex; align-items:center; gap:var(--spacing-7,24px); margin-left:auto; width:100%; justify-content:flex-end; min-width:0; }
|
|
432
|
+
|
|
433
|
+
.utility{ display:none; flex-wrap:nowrap; align-items:center; gap:var(--spacing-5,16px); min-width:0; }
|
|
434
|
+
.utility scb-link::part(anchor){
|
|
435
|
+
/* typografi och färg helt via tokens */
|
|
436
|
+
font-family: var(--md-sys-typescale-body-medium-font, var(--brand-font)), sans-serif;
|
|
437
|
+
font-size: var(--md-sys-typescale-body-medium-size);
|
|
438
|
+
line-height: var(--md-sys-typescale-body-medium-line-height);
|
|
439
|
+
font-weight: var(--md-sys-typescale-body-medium-weight);
|
|
440
|
+
letter-spacing: var(--md-sys-typescale-body-medium-tracking);
|
|
441
|
+
color: var(--md-sys-color-primary);
|
|
442
|
+
text-decoration: underline;
|
|
443
|
+
text-underline-offset: 3px;
|
|
444
|
+
text-decoration-thickness: 2px;
|
|
445
|
+
white-space: nowrap;
|
|
446
|
+
}
|
|
447
|
+
@media (min-width:840px){ .utility{ display:flex; } }
|
|
448
|
+
:host([data-collapsed]) .utility{ display:none !important; }
|
|
449
|
+
|
|
450
|
+
.menu-trigger{ display:none; }
|
|
451
|
+
@media (max-width:839.98px){ .menu-trigger{ display:inline-flex; } }
|
|
452
|
+
:host([data-collapsed]) .menu-trigger{ display:inline-flex; }
|
|
453
|
+
|
|
454
|
+
.search{
|
|
455
|
+
display:none;
|
|
456
|
+
align-items:stretch;
|
|
457
|
+
gap: var(--spacing-3, 8px);
|
|
458
|
+
flex: 0 1 var(--scb-header-search-max);
|
|
459
|
+
max-width: var(--scb-header-search-max);
|
|
460
|
+
min-width: var(--scb-header-search-min);
|
|
461
|
+
}
|
|
462
|
+
|
|
463
|
+
.search scb-search{ flex:1 1 auto; width:auto; }
|
|
464
|
+
.search scb-button{
|
|
465
|
+
flex:0 0 auto;
|
|
466
|
+
--scb-button-block-size: var(--scb-search-height);
|
|
467
|
+
}
|
|
468
|
+
|
|
469
|
+
scb-search{ width:100%; }
|
|
470
|
+
@media (min-width:600px){ .search{ display:flex; } }
|
|
471
|
+
@media (min-width:600px) and (max-width:839.98px){ :host([data-hide-search]) .search{ display:none !important; } }
|
|
472
|
+
|
|
473
|
+
:host([data-no-utility]) .actions{ gap:var(--spacing-5,16px); }
|
|
474
|
+
:host([data-no-utility]) .search{
|
|
475
|
+
flex: 1 1 var(--scb-header-search-max);
|
|
476
|
+
max-width: var(--scb-header-search-max);
|
|
477
|
+
min-width: var(--scb-header-search-min);
|
|
478
|
+
}
|
|
479
|
+
|
|
480
|
+
.tabs-inset{ display:inline-block; width:fit-content; max-width:100%; }
|
|
481
|
+
@media (max-width:839.98px){ .tabs-inset{ display:none; } }
|
|
482
|
+
scb-tabs, scb-tabs::part(divider){
|
|
483
|
+
--md-tabs-divider-color:transparent; --md-primary-tab-divider-color:transparent; --md-secondary-tab-divider-color:transparent;
|
|
484
|
+
border-bottom:0; box-shadow:none;
|
|
485
|
+
}
|
|
486
|
+
scb-tabs::part(divider){ display:none; height:0; }
|
|
487
|
+
scb-tabs{ margin-bottom:0; }
|
|
488
|
+
.divider{ border-bottom: var(--stroke-border, 1px) solid var(--md-sys-color-outline-variant,#e0e0e0); }
|
|
489
|
+
|
|
490
|
+
scb-tabs{
|
|
491
|
+
--md-secondary-tab-active-indicator-color:var(--md-sys-color-primary);
|
|
492
|
+
--md-secondary-tab-active-indicator-height:3px;
|
|
493
|
+
--md-secondary-tab-label-text-color:var(--md-sys-color-on-surface);
|
|
494
|
+
--md-secondary-tab-active-label-text-color:var(--md-sys-color-primary);
|
|
495
|
+
--md-secondary-tab-text-color:var(--md-sys-color-on-surface);
|
|
496
|
+
--md-secondary-tab-active-text-color:var(--md-sys-color-primary);
|
|
497
|
+
--md-secondary-tab-hover-label-text-color: var(--md-sys-color-primary);
|
|
498
|
+
--md-secondary-tab-pressed-label-text-color: var(--md-sys-color-primary);
|
|
499
|
+
--md-secondary-tab-focus-label-text-color: var(--md-sys-color-primary);
|
|
500
|
+
--md-secondary-tab-active-hover-label-text-color: var(--md-sys-color-primary);
|
|
501
|
+
--md-secondary-tab-active-pressed-label-text-color: var(--md-sys-color-primary);
|
|
502
|
+
--md-secondary-tab-active-focus-label-text-color: var(--md-sys-color-primary);
|
|
503
|
+
--md-secondary-tab-state-layer-color: transparent;
|
|
504
|
+
--md-secondary-tab-active-state-layer-color: transparent;
|
|
505
|
+
}
|
|
506
|
+
|
|
507
|
+
@media (prefers-color-scheme: dark) {
|
|
508
|
+
.tabs-inset scb-tabs {
|
|
509
|
+
--nv-20: transparent;
|
|
510
|
+
--md-primary-tab-container-color: transparent;
|
|
511
|
+
--md-secondary-tab-container-color: transparent;
|
|
512
|
+
background-color: transparent !important;
|
|
513
|
+
}
|
|
514
|
+
.tabs-inset scb-tabs::part(container),
|
|
515
|
+
.tabs-inset scb-tabs::part(base),
|
|
516
|
+
.tabs-inset scb-tabs::part(tabbar) {
|
|
517
|
+
background: transparent !important;
|
|
518
|
+
}
|
|
519
|
+
}
|
|
520
|
+
|
|
521
|
+
:host([data-hide-logo-text]) .logo-text {
|
|
522
|
+
display: none;
|
|
523
|
+
}
|
|
524
|
+
`;
|
|
525
|
+
r._nextFrame = () => new Promise((e) => requestAnimationFrame(() => e()));
|
|
526
|
+
i([
|
|
527
|
+
n({ type: String, attribute: "max-width" })
|
|
528
|
+
], r.prototype, "maxWidth", 2);
|
|
529
|
+
i([
|
|
530
|
+
n({ type: String, attribute: "logo-text" })
|
|
531
|
+
], r.prototype, "logoText", 2);
|
|
532
|
+
i([
|
|
533
|
+
n({ type: String, attribute: "logo-href" })
|
|
534
|
+
], r.prototype, "logoHref", 2);
|
|
535
|
+
i([
|
|
536
|
+
n({ type: Boolean, reflect: !0 })
|
|
537
|
+
], r.prototype, "banner", 2);
|
|
538
|
+
i([
|
|
539
|
+
n({ type: String, attribute: "banner-label" })
|
|
540
|
+
], r.prototype, "bannerLabel", 2);
|
|
541
|
+
i([
|
|
542
|
+
n({ attribute: "tabs", converter: r._JSON_ARRAY })
|
|
543
|
+
], r.prototype, "tabs", 2);
|
|
544
|
+
i([
|
|
545
|
+
n({ type: Number, attribute: "active-tab" })
|
|
546
|
+
], r.prototype, "activeTab", 2);
|
|
547
|
+
i([
|
|
548
|
+
n({ attribute: "utility-items", converter: r._JSON_ARRAY })
|
|
549
|
+
], r.prototype, "utilityItems", 2);
|
|
550
|
+
i([
|
|
551
|
+
n({ type: String, attribute: "search-placeholder" })
|
|
552
|
+
], r.prototype, "searchPlaceholder", 2);
|
|
553
|
+
i([
|
|
554
|
+
n({ type: String, attribute: "drawer-label" })
|
|
555
|
+
], r.prototype, "drawerLabel", 2);
|
|
556
|
+
i([
|
|
557
|
+
n({ type: String, attribute: "drawer-sub-label" })
|
|
558
|
+
], r.prototype, "drawerSubLabel", 2);
|
|
559
|
+
i([
|
|
560
|
+
n({ type: String, attribute: "drawer-section-label" })
|
|
561
|
+
], r.prototype, "drawerSectionLabel", 2);
|
|
562
|
+
i([
|
|
563
|
+
n({ type: String, attribute: "drawer-search-placeholder" })
|
|
564
|
+
], r.prototype, "drawerSearchPlaceholder", 2);
|
|
565
|
+
i([
|
|
566
|
+
n({ attribute: "menu-data", converter: r._JSON_ARRAY })
|
|
567
|
+
], r.prototype, "menuData", 2);
|
|
568
|
+
i([
|
|
569
|
+
n({ attribute: "show-drawer", reflect: !0, converter: w })
|
|
570
|
+
], r.prototype, "showDrawer", 2);
|
|
571
|
+
i([
|
|
572
|
+
n({ attribute: "show-search", reflect: !0, converter: w })
|
|
573
|
+
], r.prototype, "showSearch", 2);
|
|
574
|
+
i([
|
|
575
|
+
n({ attribute: "include-utility-in-drawer", reflect: !0, converter: w })
|
|
576
|
+
], r.prototype, "includeUtilityInDrawer", 2);
|
|
577
|
+
i([
|
|
578
|
+
n({ type: String, attribute: "search-max" })
|
|
579
|
+
], r.prototype, "searchMax", 2);
|
|
580
|
+
i([
|
|
581
|
+
n({ type: String, attribute: "search-min" })
|
|
582
|
+
], r.prototype, "searchMin", 2);
|
|
583
|
+
i([
|
|
584
|
+
p()
|
|
585
|
+
], r.prototype, "_drawerId", 2);
|
|
586
|
+
i([
|
|
587
|
+
p()
|
|
588
|
+
], r.prototype, "_paddingInline", 2);
|
|
589
|
+
i([
|
|
590
|
+
p()
|
|
591
|
+
], r.prototype, "_drawerMounted", 2);
|
|
592
|
+
i([
|
|
593
|
+
p()
|
|
594
|
+
], r.prototype, "_drawerExpanded", 2);
|
|
595
|
+
i([
|
|
596
|
+
p()
|
|
597
|
+
], r.prototype, "_searchId", 2);
|
|
598
|
+
i([
|
|
599
|
+
p()
|
|
600
|
+
], r.prototype, "_slotTabs", 2);
|
|
601
|
+
i([
|
|
602
|
+
p()
|
|
603
|
+
], r.prototype, "_slotUtils", 2);
|
|
604
|
+
i([
|
|
605
|
+
p()
|
|
606
|
+
], r.prototype, "_slotMenu", 2);
|
|
607
|
+
i([
|
|
608
|
+
p()
|
|
609
|
+
], r.prototype, "_collapsed", 2);
|
|
610
|
+
i([
|
|
611
|
+
p()
|
|
612
|
+
], r.prototype, "_hideLogoText", 2);
|
|
613
|
+
r = i([
|
|
614
|
+
A("scb-header")
|
|
615
|
+
], r);
|
|
616
|
+
export {
|
|
617
|
+
r as ScbHeader
|
|
618
|
+
};
|
|
@@ -0,0 +1,31 @@
|
|
|
1
|
+
import { LitElement, TemplateResult, PropertyValues } from 'lit';
|
|
2
|
+
|
|
3
|
+
export declare class ScbIconButton extends LitElement {
|
|
4
|
+
/** Accessible name för knappen; om inte satt fallbackar vi till `icon` */
|
|
5
|
+
ariaLabel: string;
|
|
6
|
+
/** Variant: "filled" | "outlined" | "filled-tonal" | "standard" */
|
|
7
|
+
variant: 'filled' | 'outlined' | 'filled-tonal' | 'standard';
|
|
8
|
+
/** Ikon när inte i toggle-läge */
|
|
9
|
+
icon: string;
|
|
10
|
+
/** Om true används toggle-läge */
|
|
11
|
+
toggle: boolean;
|
|
12
|
+
/** Ikon när toggle är off */
|
|
13
|
+
toggleofficon: string;
|
|
14
|
+
/** Ikon när toggle är on */
|
|
15
|
+
toggleonicon: string;
|
|
16
|
+
/** Inaktiverar knappen */
|
|
17
|
+
disabled: boolean;
|
|
18
|
+
/** Error-state */
|
|
19
|
+
error: boolean;
|
|
20
|
+
private __loadedVariants;
|
|
21
|
+
private __iconLoaded;
|
|
22
|
+
private __lastBtn?;
|
|
23
|
+
private __onChange;
|
|
24
|
+
private __attachChangeListener;
|
|
25
|
+
protected firstUpdated(): Promise<void>;
|
|
26
|
+
protected updated(changed: PropertyValues): void;
|
|
27
|
+
disconnectedCallback(): void;
|
|
28
|
+
private __ensureDepsLoaded;
|
|
29
|
+
static styles: import('lit').CSSResult;
|
|
30
|
+
render(): TemplateResult;
|
|
31
|
+
}
|