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,122 @@
|
|
|
1
|
+
import { css as d, LitElement as f, html as i } from "lit";
|
|
2
|
+
import { property as s, customElement as h } from "lit/decorators.js";
|
|
3
|
+
var g = Object.defineProperty, u = Object.getOwnPropertyDescriptor, t = (p, o, c, a) => {
|
|
4
|
+
for (var e = a > 1 ? void 0 : a ? u(o, c) : o, l = p.length - 1, n; l >= 0; l--)
|
|
5
|
+
(n = p[l]) && (e = (a ? n(o, c, e) : n(e)) || e);
|
|
6
|
+
return a && e && g(o, c, e), e;
|
|
7
|
+
};
|
|
8
|
+
let r = class extends f {
|
|
9
|
+
constructor() {
|
|
10
|
+
super(...arguments), this.label = "", this.type = "circular", this.color = "#1f44ff", this.progress = 25, this.isStatic = !0;
|
|
11
|
+
}
|
|
12
|
+
render() {
|
|
13
|
+
return console.log("scb-progress-indicator isStatic:", this.isStatic), i`
|
|
14
|
+
<div class="scb-progress-indicator">
|
|
15
|
+
${this.type === "circular" ? i`
|
|
16
|
+
<div class="circular">
|
|
17
|
+
<svg class="circular-spin" viewBox="0 0 40 40">
|
|
18
|
+
<circle class="circular-bg" cx="20" cy="20" r="16" fill="none" stroke-width="4" />
|
|
19
|
+
<circle
|
|
20
|
+
class="circular-fg"
|
|
21
|
+
cx="20" cy="20" r="16" fill="none" stroke-width="4"
|
|
22
|
+
stroke="${this.color}"
|
|
23
|
+
stroke-dasharray="${2 * Math.PI * 16}"
|
|
24
|
+
stroke-dashoffset="${(1 - this.progress / 100) * 2 * Math.PI * 16}"
|
|
25
|
+
/>
|
|
26
|
+
</svg>
|
|
27
|
+
</div>
|
|
28
|
+
` : i`
|
|
29
|
+
<div class="linear">
|
|
30
|
+
${this.isStatic ? i`<div class="linear-static" style="width: ${this.progress}%; background: ${this.color};"></div>` : i`<div class="linear-loader" style="background: ${this.color};"></div>`}
|
|
31
|
+
</div>
|
|
32
|
+
`}
|
|
33
|
+
</div>
|
|
34
|
+
`;
|
|
35
|
+
}
|
|
36
|
+
};
|
|
37
|
+
r.styles = [
|
|
38
|
+
d`
|
|
39
|
+
:host {
|
|
40
|
+
display: block;
|
|
41
|
+
font-family: var(--brand-font, sans-serif);
|
|
42
|
+
color: var(--md-sys-color-on-surface, #222);
|
|
43
|
+
}
|
|
44
|
+
.circular {
|
|
45
|
+
display: flex;
|
|
46
|
+
align-items: center;
|
|
47
|
+
justify-content: center;
|
|
48
|
+
width: 46px;
|
|
49
|
+
height: 46px;
|
|
50
|
+
position: relative;
|
|
51
|
+
}
|
|
52
|
+
.circular-spin {
|
|
53
|
+
animation: spin 1s linear infinite;
|
|
54
|
+
width: 46px;
|
|
55
|
+
height: 46px;
|
|
56
|
+
position: relative;
|
|
57
|
+
z-index: 1;
|
|
58
|
+
}
|
|
59
|
+
@keyframes spin {
|
|
60
|
+
0% { transform: rotate(0deg); }
|
|
61
|
+
100% { transform: rotate(360deg); }
|
|
62
|
+
}
|
|
63
|
+
.circular-bg {
|
|
64
|
+
stroke: #eee;
|
|
65
|
+
}
|
|
66
|
+
.circular-fg {
|
|
67
|
+
transition: stroke-dashoffset 0.3s ease;
|
|
68
|
+
}
|
|
69
|
+
.circular-bg {
|
|
70
|
+
stroke: #eee;
|
|
71
|
+
}
|
|
72
|
+
.circular-fg {
|
|
73
|
+
transition: stroke-dashoffset 0.3s ease;
|
|
74
|
+
}
|
|
75
|
+
.linear {
|
|
76
|
+
width: 100%;
|
|
77
|
+
height: 6px;
|
|
78
|
+
background: #eee;
|
|
79
|
+
border-radius: 3px;
|
|
80
|
+
overflow: hidden;
|
|
81
|
+
position: relative;
|
|
82
|
+
}
|
|
83
|
+
.linear-loader {
|
|
84
|
+
height: 100%;
|
|
85
|
+
width: 40%;
|
|
86
|
+
background: var(--p-40, #1f44ff);
|
|
87
|
+
border-radius: 3px;
|
|
88
|
+
animation: linear-progress 1.2s cubic-bezier(.4,0,.2,1) infinite;
|
|
89
|
+
}
|
|
90
|
+
.linear-static {
|
|
91
|
+
height: 100%;
|
|
92
|
+
border-radius: 3px;
|
|
93
|
+
transition: width 0.3s ease;
|
|
94
|
+
}
|
|
95
|
+
@keyframes linear-progress {
|
|
96
|
+
0% { margin-left: -40%; width: 40%; }
|
|
97
|
+
50% { margin-left: 30%; width: 60%; }
|
|
98
|
+
100% { margin-left: 100%; width: 40%; }
|
|
99
|
+
}
|
|
100
|
+
`
|
|
101
|
+
];
|
|
102
|
+
t([
|
|
103
|
+
s({ type: String })
|
|
104
|
+
], r.prototype, "label", 2);
|
|
105
|
+
t([
|
|
106
|
+
s({ type: String, reflect: !0 })
|
|
107
|
+
], r.prototype, "type", 2);
|
|
108
|
+
t([
|
|
109
|
+
s({ type: String, reflect: !0 })
|
|
110
|
+
], r.prototype, "color", 2);
|
|
111
|
+
t([
|
|
112
|
+
s({ type: Number, reflect: !0 })
|
|
113
|
+
], r.prototype, "progress", 2);
|
|
114
|
+
t([
|
|
115
|
+
s({ type: Boolean, reflect: !0 })
|
|
116
|
+
], r.prototype, "isStatic", 2);
|
|
117
|
+
r = t([
|
|
118
|
+
h("scb-progress-indicator")
|
|
119
|
+
], r);
|
|
120
|
+
export {
|
|
121
|
+
r as ScbProgressIndicator
|
|
122
|
+
};
|
|
@@ -0,0 +1,19 @@
|
|
|
1
|
+
import { LitElement, TemplateResult, PropertyValues } from 'lit';
|
|
2
|
+
|
|
3
|
+
export declare class ScbRadioButton extends LitElement {
|
|
4
|
+
disabled: boolean;
|
|
5
|
+
checked: boolean;
|
|
6
|
+
name: string;
|
|
7
|
+
value: string;
|
|
8
|
+
label: string;
|
|
9
|
+
supportingText: string;
|
|
10
|
+
private _radioId;
|
|
11
|
+
connectedCallback(): void;
|
|
12
|
+
disconnectedCallback(): void;
|
|
13
|
+
private _onMdRadioChange;
|
|
14
|
+
private _onRadioChange;
|
|
15
|
+
protected firstUpdated(): void;
|
|
16
|
+
protected updated(changed: PropertyValues): void;
|
|
17
|
+
static styles: import('lit').CSSResult;
|
|
18
|
+
render(): TemplateResult;
|
|
19
|
+
}
|
|
@@ -0,0 +1,176 @@
|
|
|
1
|
+
import { LitElement as c, html as p, css as h } from "lit";
|
|
2
|
+
import { property as s, customElement as u } from "lit/decorators.js";
|
|
3
|
+
import "@material/web/radio/radio.js";
|
|
4
|
+
var b = Object.defineProperty, g = Object.getOwnPropertyDescriptor, a = (e, t, n, o) => {
|
|
5
|
+
for (var i = o > 1 ? void 0 : o ? g(t, n) : t, d = e.length - 1, l; d >= 0; d--)
|
|
6
|
+
(l = e[d]) && (i = (o ? l(t, n, i) : l(i)) || i);
|
|
7
|
+
return o && i && b(t, n, i), i;
|
|
8
|
+
};
|
|
9
|
+
let r = class extends c {
|
|
10
|
+
constructor() {
|
|
11
|
+
super(...arguments), this.disabled = !1, this.checked = !1, this.name = "", this.value = "", this.label = "", this.supportingText = "", this._radioId = "", this._onMdRadioChange = (e) => {
|
|
12
|
+
if (this.disabled) return;
|
|
13
|
+
const t = e.target;
|
|
14
|
+
t && t.checked && (this.checked = !0, this.dispatchEvent(
|
|
15
|
+
new CustomEvent("scb-radio-change", {
|
|
16
|
+
detail: { name: this.name, source: this },
|
|
17
|
+
bubbles: !0,
|
|
18
|
+
composed: !0
|
|
19
|
+
})
|
|
20
|
+
), this.dispatchEvent(
|
|
21
|
+
new CustomEvent("change", {
|
|
22
|
+
detail: { checked: this.checked, value: this.value },
|
|
23
|
+
bubbles: !0,
|
|
24
|
+
composed: !0
|
|
25
|
+
})
|
|
26
|
+
));
|
|
27
|
+
}, this._onRadioChange = (e) => {
|
|
28
|
+
e.detail.name === this.name && e.detail.source !== this && (this.checked = !1);
|
|
29
|
+
};
|
|
30
|
+
}
|
|
31
|
+
connectedCallback() {
|
|
32
|
+
super.connectedCallback(), this._radioId = this.id || `scb-radio-${Math.random().toString(36).substr(2, 9)}`, document.addEventListener(
|
|
33
|
+
"scb-radio-change",
|
|
34
|
+
this._onRadioChange
|
|
35
|
+
);
|
|
36
|
+
}
|
|
37
|
+
disconnectedCallback() {
|
|
38
|
+
super.disconnectedCallback(), document.removeEventListener(
|
|
39
|
+
"scb-radio-change",
|
|
40
|
+
this._onRadioChange
|
|
41
|
+
);
|
|
42
|
+
}
|
|
43
|
+
firstUpdated() {
|
|
44
|
+
var t;
|
|
45
|
+
const e = (t = this.shadowRoot) == null ? void 0 : t.querySelector("md-radio");
|
|
46
|
+
e && e.addEventListener("input", () => {
|
|
47
|
+
this.dispatchEvent(new Event("input", { bubbles: !0, composed: !0 }));
|
|
48
|
+
});
|
|
49
|
+
}
|
|
50
|
+
updated(e) {
|
|
51
|
+
super.updated(e), e.has("disabled") && this.toggleAttribute("aria-disabled", this.disabled);
|
|
52
|
+
}
|
|
53
|
+
render() {
|
|
54
|
+
const e = this.supportingText ? `${this._radioId}-supporting-text` : void 0;
|
|
55
|
+
return p`
|
|
56
|
+
<label class="wrap">
|
|
57
|
+
<div class="radio-wrap">
|
|
58
|
+
<md-radio
|
|
59
|
+
id="${this._radioId}"
|
|
60
|
+
?disabled=${this.disabled}
|
|
61
|
+
?checked=${this.checked}
|
|
62
|
+
name="${this.name}"
|
|
63
|
+
value="${this.value}"
|
|
64
|
+
aria-describedby=${e}
|
|
65
|
+
@change=${this._onMdRadioChange}
|
|
66
|
+
></md-radio>
|
|
67
|
+
</div>
|
|
68
|
+
${this.label ? p`<span class="lbl">${this.label}</span>` : ""}
|
|
69
|
+
</label>
|
|
70
|
+
${this.supportingText ? p`<div
|
|
71
|
+
id="${this._radioId}-supporting-text"
|
|
72
|
+
class="supporting-text"
|
|
73
|
+
>
|
|
74
|
+
${this.supportingText}
|
|
75
|
+
</div>` : ""}
|
|
76
|
+
<slot></slot>
|
|
77
|
+
`;
|
|
78
|
+
}
|
|
79
|
+
};
|
|
80
|
+
r.styles = h`
|
|
81
|
+
/* layout med inline-grid */
|
|
82
|
+
:host {
|
|
83
|
+
display: inline-grid;
|
|
84
|
+
grid-template-columns: auto;
|
|
85
|
+
grid-template-rows: auto auto;
|
|
86
|
+
row-gap: 4px;
|
|
87
|
+
font-family: var(--brand-font, 'Inter', sans-serif);
|
|
88
|
+
}
|
|
89
|
+
|
|
90
|
+
/* Wrapper för md-radio + label */
|
|
91
|
+
.wrap {
|
|
92
|
+
display: inline-flex;
|
|
93
|
+
align-items: center;
|
|
94
|
+
gap: 12px;
|
|
95
|
+
cursor: pointer;
|
|
96
|
+
/* låt ripple/state-layer synas */
|
|
97
|
+
overflow: visible;
|
|
98
|
+
}
|
|
99
|
+
:host([disabled]) .wrap {
|
|
100
|
+
cursor: default;
|
|
101
|
+
}
|
|
102
|
+
|
|
103
|
+
/* Hit-yta runt md-radio (styr via variabel) */
|
|
104
|
+
.radio-wrap {
|
|
105
|
+
height: var(--scb-radio-target, 48px);
|
|
106
|
+
width: var(--scb-radio-target, 48px);
|
|
107
|
+
align-items: center;
|
|
108
|
+
display: flex;
|
|
109
|
+
justify-content: center;
|
|
110
|
+
overflow: visible;
|
|
111
|
+
}
|
|
112
|
+
|
|
113
|
+
/* Nollställ md-radio marginal */
|
|
114
|
+
md-radio {
|
|
115
|
+
margin: 0;
|
|
116
|
+
}
|
|
117
|
+
|
|
118
|
+
/* Label-styling */
|
|
119
|
+
.lbl {
|
|
120
|
+
color: var(--md-sys-color-on-surface);
|
|
121
|
+
line-height: 1.2;
|
|
122
|
+
margin-top: 2px;
|
|
123
|
+
}
|
|
124
|
+
:host([disabled]) .lbl {
|
|
125
|
+
color: var(--n-60);
|
|
126
|
+
}
|
|
127
|
+
|
|
128
|
+
/* Supporting text styling */
|
|
129
|
+
.supporting-text {
|
|
130
|
+
color: var(--md-sys-color-on-surface-variant);
|
|
131
|
+
line-height: 1.2;
|
|
132
|
+
/* 12px gap + wrapperbredd (inte ikonstorlek) så texten linjerar med labeln */
|
|
133
|
+
margin-left: calc(12px + var(--scb-radio-target, 48px));
|
|
134
|
+
}
|
|
135
|
+
:host([disabled]) .supporting-text {
|
|
136
|
+
color: var(--n-60);
|
|
137
|
+
}
|
|
138
|
+
|
|
139
|
+
:host([orientation="horizontal"]) {
|
|
140
|
+
margin-inline-end: var(--scb-radio-gap, 24px); /* tweakable */
|
|
141
|
+
}
|
|
142
|
+
|
|
143
|
+
/* Anpassning för mörkt läge */
|
|
144
|
+
@media (prefers-color-scheme: dark) {
|
|
145
|
+
.lbl {
|
|
146
|
+
color: var(--md-sys-color-on-surface);
|
|
147
|
+
}
|
|
148
|
+
.supporting-text {
|
|
149
|
+
color: var(--md-sys-color-on-surface-variant);
|
|
150
|
+
}
|
|
151
|
+
}
|
|
152
|
+
`;
|
|
153
|
+
a([
|
|
154
|
+
s({ type: Boolean, reflect: !0 })
|
|
155
|
+
], r.prototype, "disabled", 2);
|
|
156
|
+
a([
|
|
157
|
+
s({ type: Boolean, reflect: !0 })
|
|
158
|
+
], r.prototype, "checked", 2);
|
|
159
|
+
a([
|
|
160
|
+
s({ type: String, reflect: !0 })
|
|
161
|
+
], r.prototype, "name", 2);
|
|
162
|
+
a([
|
|
163
|
+
s({ type: String, reflect: !0 })
|
|
164
|
+
], r.prototype, "value", 2);
|
|
165
|
+
a([
|
|
166
|
+
s({ type: String })
|
|
167
|
+
], r.prototype, "label", 2);
|
|
168
|
+
a([
|
|
169
|
+
s({ type: String, attribute: "supporting-text" })
|
|
170
|
+
], r.prototype, "supportingText", 2);
|
|
171
|
+
r = a([
|
|
172
|
+
u("scb-radio-button")
|
|
173
|
+
], r);
|
|
174
|
+
export {
|
|
175
|
+
r as ScbRadioButton
|
|
176
|
+
};
|
|
@@ -0,0 +1,20 @@
|
|
|
1
|
+
import { LitElement } from 'lit';
|
|
2
|
+
|
|
3
|
+
export declare class ScbRadioGroup extends LitElement {
|
|
4
|
+
#private;
|
|
5
|
+
name: string;
|
|
6
|
+
orientation: 'vertical' | 'horizontal';
|
|
7
|
+
disabled: boolean;
|
|
8
|
+
ariaLabel: string | null;
|
|
9
|
+
/** "item" (default) = radios äger spacing; "group" = gruppen äger spacing */
|
|
10
|
+
spacing: 'item' | 'group';
|
|
11
|
+
static styles: import('lit').CSSResult;
|
|
12
|
+
render(): import('lit-html').TemplateResult<1>;
|
|
13
|
+
firstUpdated(): void;
|
|
14
|
+
updated(changed: Map<string, unknown>): void;
|
|
15
|
+
}
|
|
16
|
+
declare global {
|
|
17
|
+
interface HTMLElementTagNameMap {
|
|
18
|
+
'scb-radio-group': ScbRadioGroup;
|
|
19
|
+
}
|
|
20
|
+
}
|
|
@@ -0,0 +1,81 @@
|
|
|
1
|
+
import { css as g, LitElement as u, html as f } from "lit";
|
|
2
|
+
import { property as l, customElement as b } from "lit/decorators.js";
|
|
3
|
+
var v = Object.defineProperty, y = Object.getOwnPropertyDescriptor, h = (t) => {
|
|
4
|
+
throw TypeError(t);
|
|
5
|
+
}, o = (t, e, a, r) => {
|
|
6
|
+
for (var s = r > 1 ? void 0 : r ? y(e, a) : e, p = t.length - 1, d; p >= 0; p--)
|
|
7
|
+
(d = t[p]) && (s = (r ? d(e, a, s) : d(s)) || s);
|
|
8
|
+
return r && s && v(e, a, s), s;
|
|
9
|
+
}, m = (t, e, a) => e.has(t) || h("Cannot " + a), c = (t, e, a) => (m(t, e, "read from private field"), a ? a.call(t) : e.get(t)), _ = (t, e, a) => e.has(t) ? h("Cannot add the same private member more than once") : e instanceof WeakSet ? e.add(t) : e.set(t, a), n;
|
|
10
|
+
let i = class extends u {
|
|
11
|
+
constructor() {
|
|
12
|
+
super(...arguments), this.name = "", this.orientation = "vertical", this.disabled = !1, this.ariaLabel = null, this.spacing = "item", _(this, n, () => {
|
|
13
|
+
var a;
|
|
14
|
+
const t = (a = this.shadowRoot) == null ? void 0 : a.querySelector("slot");
|
|
15
|
+
if (!t) return;
|
|
16
|
+
const e = t.assignedElements({ flatten: !0 }).filter((r) => r.tagName.toLowerCase() === "scb-radio-button");
|
|
17
|
+
for (const r of e)
|
|
18
|
+
this.name && r.setAttribute("name", this.name), this.disabled ? r.setAttribute("disabled", "") : r.removeAttribute("disabled"), this.orientation === "horizontal" ? r.setAttribute("orientation", "horizontal") : r.removeAttribute("orientation"), this.spacing === "group" ? r.style.setProperty("--scb-radio-gap", "0") : r.style.removeProperty("--scb-radio-gap");
|
|
19
|
+
});
|
|
20
|
+
}
|
|
21
|
+
render() {
|
|
22
|
+
const t = this.orientation === "horizontal" ? "row" : "column";
|
|
23
|
+
return f`
|
|
24
|
+
<div
|
|
25
|
+
class="g"
|
|
26
|
+
role="radiogroup"
|
|
27
|
+
aria-disabled=${String(this.disabled)}
|
|
28
|
+
aria-label=${this.ariaLabel ?? ""}
|
|
29
|
+
style=${`--_dir:${t}`}
|
|
30
|
+
>
|
|
31
|
+
<slot @slotchange=${c(this, n)}></slot>
|
|
32
|
+
</div>
|
|
33
|
+
`;
|
|
34
|
+
}
|
|
35
|
+
firstUpdated() {
|
|
36
|
+
c(this, n).call(this);
|
|
37
|
+
}
|
|
38
|
+
updated(t) {
|
|
39
|
+
(t.has("name") || t.has("disabled") || t.has("orientation")) && c(this, n).call(this);
|
|
40
|
+
}
|
|
41
|
+
};
|
|
42
|
+
n = /* @__PURE__ */ new WeakMap();
|
|
43
|
+
i.styles = g`
|
|
44
|
+
:host { display: block; }
|
|
45
|
+
|
|
46
|
+
.g {
|
|
47
|
+
display: flex;
|
|
48
|
+
flex-direction: var(--_dir, column);
|
|
49
|
+
gap: 0; /* default: inget extra gap */
|
|
50
|
+
align-items: flex-start;
|
|
51
|
+
}
|
|
52
|
+
|
|
53
|
+
/* Om gruppen ska äga spacing: använder gap och nollar radios egen syskonmarginal */
|
|
54
|
+
:host([spacing="group"]) .g {
|
|
55
|
+
gap: var(--scb-radio-gap, 12px);
|
|
56
|
+
}
|
|
57
|
+
:host([spacing="group"]) ::slotted(scb-radio-button) {
|
|
58
|
+
--scb-radio-gap: 0;
|
|
59
|
+
}
|
|
60
|
+
`;
|
|
61
|
+
o([
|
|
62
|
+
l({ type: String })
|
|
63
|
+
], i.prototype, "name", 2);
|
|
64
|
+
o([
|
|
65
|
+
l({ type: String, reflect: !0 })
|
|
66
|
+
], i.prototype, "orientation", 2);
|
|
67
|
+
o([
|
|
68
|
+
l({ type: Boolean, reflect: !0 })
|
|
69
|
+
], i.prototype, "disabled", 2);
|
|
70
|
+
o([
|
|
71
|
+
l({ type: String, attribute: "aria-label" })
|
|
72
|
+
], i.prototype, "ariaLabel", 2);
|
|
73
|
+
o([
|
|
74
|
+
l({ type: String, reflect: !0 })
|
|
75
|
+
], i.prototype, "spacing", 2);
|
|
76
|
+
i = o([
|
|
77
|
+
b("scb-radio-group")
|
|
78
|
+
], i);
|
|
79
|
+
export {
|
|
80
|
+
i as ScbRadioGroup
|
|
81
|
+
};
|
|
@@ -0,0 +1,45 @@
|
|
|
1
|
+
import { LitElement, TemplateResult } from 'lit';
|
|
2
|
+
|
|
3
|
+
export declare class ScbSearch extends LitElement {
|
|
4
|
+
trailingIcon?: string;
|
|
5
|
+
supportingText: string;
|
|
6
|
+
value: string;
|
|
7
|
+
size: 'default' | 'compact';
|
|
8
|
+
fullScreen: boolean;
|
|
9
|
+
private _inputFocused;
|
|
10
|
+
private _visibleSuggestions;
|
|
11
|
+
private _activeIndex;
|
|
12
|
+
private _listboxId;
|
|
13
|
+
private _boundNativeKeydown?;
|
|
14
|
+
private _kbMode;
|
|
15
|
+
static styles: import('lit').CSSResult;
|
|
16
|
+
connectedCallback(): void;
|
|
17
|
+
disconnectedCallback(): void;
|
|
18
|
+
firstUpdated(): void;
|
|
19
|
+
updated(): void;
|
|
20
|
+
render(): TemplateResult;
|
|
21
|
+
submit(): void;
|
|
22
|
+
private get _hasSuggestions();
|
|
23
|
+
private _onSlotChange;
|
|
24
|
+
private _onInput;
|
|
25
|
+
private _onFocus;
|
|
26
|
+
private _onBlur;
|
|
27
|
+
private _handleKey;
|
|
28
|
+
private _clearInput;
|
|
29
|
+
private _filterSuggestions;
|
|
30
|
+
private _inputEl;
|
|
31
|
+
private _listEl;
|
|
32
|
+
private _getVisibleItems;
|
|
33
|
+
private _getActiveItem;
|
|
34
|
+
private _moveActive;
|
|
35
|
+
private _scrollActiveIntoView;
|
|
36
|
+
private _itemPayload;
|
|
37
|
+
private _ensureListboxA11y;
|
|
38
|
+
private _ensureOptionA11y;
|
|
39
|
+
private _updateComboboxA11y;
|
|
40
|
+
}
|
|
41
|
+
declare global {
|
|
42
|
+
interface HTMLElementTagNameMap {
|
|
43
|
+
'scb-search': ScbSearch;
|
|
44
|
+
}
|
|
45
|
+
}
|