@boostdev/design-system-components 2.7.1 → 2.8.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/client.cjs +52 -52
- package/dist/client.css +546 -546
- package/dist/client.js +52 -52
- package/dist/index.cjs +52 -52
- package/dist/index.css +546 -546
- package/dist/index.js +52 -52
- package/dist/web-components/{chunk-7FMR53BW.js → chunk-7YURXHTS.js} +35 -15
- package/dist/web-components/{chunk-5TFWOPLH.js → chunk-A3RLT3AS.js} +3 -3
- package/dist/web-components/{chunk-CM3KYZ6Z.js → chunk-ARMKC4BQ.js} +1 -1
- package/dist/web-components/{chunk-QBB6ZX4R.js → chunk-DZOEPVFT.js} +1 -1
- package/dist/web-components/{chunk-57TRNCWQ.js → chunk-FSZRP43R.js} +1 -1
- package/dist/web-components/{chunk-IYGF6CD5.js → chunk-JYYRJS2D.js} +2 -2
- package/dist/web-components/chunk-OF6FFGOT.js +167 -0
- package/dist/web-components/{chunk-F5E3IT7G.js → chunk-ORC56MDY.js} +5 -5
- package/dist/web-components/{chunk-5R6IFELV.js → chunk-QLT6MTZF.js} +1 -1
- package/dist/web-components/{chunk-CZBIVR4V.js → chunk-UUKSDCYS.js} +1 -1
- package/dist/web-components/{chunk-ITHLKR7Q.js → chunk-X3NQMBAQ.js} +2 -2
- package/dist/web-components/index.js +18 -18
- package/dist/web-components/interaction/bds-button.js +1 -1
- package/dist/web-components/interaction/form/bds-combobox.js +1 -1
- package/dist/web-components/interaction/form/bds-radio.js +1 -1
- package/dist/web-components/interaction/form/bds-select.js +1 -1
- package/dist/web-components/interaction/form/bds-slider.js +1 -1
- package/dist/web-components/interaction/form/bds-switch.js +1 -1
- package/dist/web-components/interaction/form/bds-textarea.js +1 -1
- package/dist/web-components/ui/bds-avatar.js +1 -1
- package/dist/web-components/ui/bds-icon-wrapper.js +1 -1
- package/dist/web-components/ui/bds-loading.js +1 -1
- package/dist/web-components/ui/bds-progress.js +1 -1
- package/package.json +1 -1
- package/src/web-components/interaction/bds-button.ts +5 -5
- package/src/web-components/interaction/form/bds-combobox.ts +1 -1
- package/src/web-components/interaction/form/bds-radio.ts +2 -2
- package/src/web-components/interaction/form/bds-select.ts +1 -1
- package/src/web-components/interaction/form/bds-slider.ts +35 -15
- package/src/web-components/interaction/form/bds-switch.ts +73 -39
- package/src/web-components/interaction/form/bds-textarea.ts +1 -1
- package/src/web-components/ui/bds-avatar.ts +1 -1
- package/src/web-components/ui/bds-carousel.ts +7 -7
- package/src/web-components/ui/bds-icon-wrapper.ts +3 -3
- package/src/web-components/ui/bds-loading.ts +1 -1
- package/src/web-components/ui/bds-progress.ts +2 -2
- package/dist/web-components/chunk-Y3POAKGS.js +0 -133
|
@@ -41,44 +41,64 @@ export class BdsSlider extends LitElement {
|
|
|
41
41
|
}
|
|
42
42
|
|
|
43
43
|
.input {
|
|
44
|
+
--slider_track-height: var(--bds-space_xxs);
|
|
45
|
+
--slider_thumb-size: calc(var(--bds-space_s) * 2);
|
|
46
|
+
|
|
47
|
+
color: var(--slider_color, var(--bds-color_on-bg));
|
|
44
48
|
inline-size: 100%;
|
|
45
49
|
appearance: none;
|
|
46
|
-
block-size:
|
|
47
|
-
border-radius:
|
|
50
|
+
block-size: var(--slider_track-height);
|
|
51
|
+
border-radius: var(--slider_track-radius, var(--bds-border_radius--full));
|
|
48
52
|
background: linear-gradient(
|
|
49
53
|
to right,
|
|
50
|
-
var(--
|
|
51
|
-
var(--
|
|
54
|
+
var(--slider_color-active, var(--bdc-color_active)) 0%,
|
|
55
|
+
var(--slider_color-active, var(--bdc-color_active)) var(--slider_fill, 0%),
|
|
56
|
+
var(--slider_track-bg, var(--bds-color_bg--subtle)) var(--slider_fill, 0%),
|
|
57
|
+
var(--slider_track-bg, var(--bds-color_bg--subtle)) 100%
|
|
52
58
|
);
|
|
53
59
|
outline: none;
|
|
54
60
|
cursor: pointer;
|
|
61
|
+
transition: var(--bds-animation_transition);
|
|
55
62
|
}
|
|
56
63
|
|
|
57
64
|
.input::-webkit-slider-thumb {
|
|
58
65
|
appearance: none;
|
|
59
|
-
inline-size:
|
|
60
|
-
block-size:
|
|
61
|
-
border-radius:
|
|
62
|
-
background-color: var(--
|
|
63
|
-
box-shadow: var(--bds-
|
|
66
|
+
inline-size: var(--slider_thumb-size);
|
|
67
|
+
block-size: var(--slider_thumb-size);
|
|
68
|
+
border-radius: var(--slider_thumb-radius, var(--bds-border_radius--circle));
|
|
69
|
+
background-color: var(--slider_color-active, var(--bdc-color_active));
|
|
70
|
+
box-shadow: var(--bds-shadow_s);
|
|
64
71
|
cursor: pointer;
|
|
65
72
|
transition: var(--bds-animation_transition);
|
|
66
73
|
}
|
|
67
74
|
|
|
68
75
|
.input::-moz-range-thumb {
|
|
69
|
-
inline-size:
|
|
70
|
-
block-size:
|
|
71
|
-
border-radius: 50%;
|
|
76
|
+
inline-size: var(--slider_thumb-size);
|
|
77
|
+
block-size: var(--slider_thumb-size);
|
|
72
78
|
border: none;
|
|
73
|
-
|
|
74
|
-
|
|
79
|
+
border-radius: var(--slider_thumb-radius, var(--bds-border_radius--circle));
|
|
80
|
+
background-color: var(--slider_color-active, var(--bdc-color_active));
|
|
81
|
+
box-shadow: var(--bds-shadow_s);
|
|
75
82
|
cursor: pointer;
|
|
76
83
|
}
|
|
77
84
|
|
|
85
|
+
.input:disabled {
|
|
86
|
+
opacity: 0.4;
|
|
87
|
+
cursor: not-allowed;
|
|
88
|
+
}
|
|
89
|
+
|
|
78
90
|
.input:focus-visible {
|
|
79
91
|
outline: var(--bds-outline_default);
|
|
80
92
|
outline-offset: var(--bds-outline_offset);
|
|
81
|
-
border-radius:
|
|
93
|
+
border-radius: var(--slider_track-radius, var(--bds-border_radius--full));
|
|
94
|
+
}
|
|
95
|
+
|
|
96
|
+
@media (prefers-reduced-motion: reduce) {
|
|
97
|
+
.input,
|
|
98
|
+
.input::-webkit-slider-thumb,
|
|
99
|
+
.input::-moz-range-thumb {
|
|
100
|
+
transition: none;
|
|
101
|
+
}
|
|
82
102
|
}
|
|
83
103
|
`;
|
|
84
104
|
|
|
@@ -31,7 +31,7 @@ export class BdsSwitch extends LitElement {
|
|
|
31
31
|
cursor: pointer;
|
|
32
32
|
font-size: var(--bds-font_size--body);
|
|
33
33
|
font-family: var(--bds-font_family--body);
|
|
34
|
-
color: var(--bds-color_on-bg);
|
|
34
|
+
color: var(--switch_color, var(--bds-color_on-bg));
|
|
35
35
|
}
|
|
36
36
|
|
|
37
37
|
:host([disabled]) {
|
|
@@ -40,53 +40,87 @@ export class BdsSwitch extends LitElement {
|
|
|
40
40
|
pointer-events: none;
|
|
41
41
|
}
|
|
42
42
|
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
background-color: var(--switch_color_bg, var(--bds-color_bg--subtle));
|
|
49
|
-
--bdc_color: var(--switch_border-color, currentcolor);
|
|
50
|
-
|
|
51
|
-
box-shadow: inset 0 0 0 var(--bdc-outline_width) var(--bdc_color);
|
|
52
|
-
transition: background-color 0.2s ease;
|
|
53
|
-
flex-shrink: 0;
|
|
54
|
-
}
|
|
55
|
-
|
|
56
|
-
.thumb {
|
|
57
|
-
position: absolute;
|
|
58
|
-
inset-block-start: 0.2rem;
|
|
59
|
-
inset-inline-start: 0.2rem;
|
|
60
|
-
inline-size: 1.1rem;
|
|
61
|
-
block-size: 1.1rem;
|
|
62
|
-
border-radius: 50%;
|
|
63
|
-
background-color: var(--switch_thumb_color, var(--bds-color_interactive));
|
|
64
|
-
transition: inset-inline-start 0.2s ease;
|
|
43
|
+
label {
|
|
44
|
+
display: inline-flex;
|
|
45
|
+
align-items: center;
|
|
46
|
+
gap: var(--bds-space_xs);
|
|
47
|
+
cursor: pointer;
|
|
65
48
|
}
|
|
66
49
|
|
|
67
50
|
.input {
|
|
68
51
|
position: absolute;
|
|
52
|
+
inset: 0;
|
|
53
|
+
appearance: none;
|
|
69
54
|
opacity: 0;
|
|
70
|
-
inline-size:
|
|
71
|
-
block-size:
|
|
55
|
+
inline-size: 100%;
|
|
56
|
+
block-size: 100%;
|
|
72
57
|
margin: 0;
|
|
58
|
+
cursor: pointer;
|
|
59
|
+
z-index: 1;
|
|
60
|
+
}
|
|
61
|
+
|
|
62
|
+
.input:disabled {
|
|
63
|
+
cursor: not-allowed;
|
|
64
|
+
}
|
|
65
|
+
|
|
66
|
+
.track {
|
|
67
|
+
--switch_thumb-size: 1.25em;
|
|
68
|
+
--switch_track-pad: var(--bds-space_xxxs);
|
|
69
|
+
--switch_track-height: calc(var(--switch_thumb-size) + var(--switch_track-pad) * 2);
|
|
70
|
+
--switch_track-width: calc(var(--switch_thumb-size) * 2 + var(--switch_track-pad) * 2);
|
|
71
|
+
|
|
72
|
+
position: relative;
|
|
73
|
+
display: inline-flex;
|
|
74
|
+
align-items: center;
|
|
75
|
+
inline-size: var(--switch_track-width);
|
|
76
|
+
block-size: var(--switch_track-height);
|
|
77
|
+
border-radius: var(--switch_track-radius, var(--bds-border_radius--full));
|
|
78
|
+
background-color: var(--switch_track-bg, var(--bds-color_grey--subtle));
|
|
79
|
+
padding-inline: var(--switch_track-pad);
|
|
80
|
+
--bdc_color: var(--switch_thumb-bg, var(--bds-color_interactive));
|
|
81
|
+
box-shadow: inset 0 0 0 var(--bdc-outline_width) var(--bdc_color), var(--switch_shadow, var(--bdc-outline_shadow));
|
|
82
|
+
transition: --bdc_color var(--bds-animation_transition-duration) var(--bds-animation_easing),
|
|
83
|
+
background-color var(--bds-animation_transition-duration) var(--bds-animation_easing);
|
|
84
|
+
flex-shrink: 0;
|
|
85
|
+
pointer-events: none;
|
|
86
|
+
}
|
|
87
|
+
|
|
88
|
+
.thumb {
|
|
89
|
+
display: block;
|
|
90
|
+
inline-size: var(--switch_thumb-size);
|
|
91
|
+
block-size: var(--switch_thumb-size);
|
|
92
|
+
border-radius: var(--switch_thumb-radius, var(--bds-border_radius--circle));
|
|
93
|
+
background-color: var(--switch_thumb-bg, var(--bds-color_interactive));
|
|
94
|
+
box-shadow: var(--bds-shadow_s);
|
|
95
|
+
transition: var(--bds-animation_transition);
|
|
96
|
+
transform: translateX(0);
|
|
73
97
|
}
|
|
74
98
|
|
|
75
99
|
.input:checked + .track {
|
|
76
|
-
background-color: var(--
|
|
100
|
+
background-color: var(--switch_track-bg--active, var(--bdc-color_active--subtle));
|
|
101
|
+
--bdc_color: var(--switch_thumb-bg--active, var(--bds-color_interactive));
|
|
77
102
|
}
|
|
78
103
|
|
|
79
104
|
.input:checked + .track .thumb {
|
|
80
|
-
|
|
105
|
+
background-color: var(--switch_thumb-bg--active, var(--bds-color_interactive));
|
|
106
|
+
transform: translateX(var(--switch_thumb-size));
|
|
81
107
|
}
|
|
82
108
|
|
|
83
109
|
.input:focus-visible + .track {
|
|
84
110
|
outline: var(--bds-outline_default);
|
|
85
111
|
outline-offset: var(--bds-outline_offset);
|
|
112
|
+
border-radius: var(--switch_track-radius, var(--bds-border_radius--full));
|
|
86
113
|
}
|
|
87
114
|
|
|
88
|
-
|
|
89
|
-
|
|
115
|
+
.input:disabled + .track {
|
|
116
|
+
opacity: 0.4;
|
|
117
|
+
}
|
|
118
|
+
|
|
119
|
+
@media (prefers-reduced-motion: reduce) {
|
|
120
|
+
.track,
|
|
121
|
+
.thumb {
|
|
122
|
+
transition: none;
|
|
123
|
+
}
|
|
90
124
|
}
|
|
91
125
|
`;
|
|
92
126
|
|
|
@@ -136,17 +170,17 @@ export class BdsSwitch extends LitElement {
|
|
|
136
170
|
render() {
|
|
137
171
|
const id = `bds-switch-${this._uid}`;
|
|
138
172
|
return html`
|
|
139
|
-
<input
|
|
140
|
-
id=${id}
|
|
141
|
-
type="checkbox"
|
|
142
|
-
role="switch"
|
|
143
|
-
class="input"
|
|
144
|
-
.checked=${this.checked}
|
|
145
|
-
?required=${this.required}
|
|
146
|
-
?disabled=${this.disabled}
|
|
147
|
-
@change=${this._handleChange}
|
|
148
|
-
/>
|
|
149
173
|
<label for=${id}>
|
|
174
|
+
<input
|
|
175
|
+
id=${id}
|
|
176
|
+
type="checkbox"
|
|
177
|
+
role="switch"
|
|
178
|
+
class="input"
|
|
179
|
+
.checked=${this.checked}
|
|
180
|
+
?required=${this.required}
|
|
181
|
+
?disabled=${this.disabled}
|
|
182
|
+
@change=${this._handleChange}
|
|
183
|
+
/>
|
|
150
184
|
<span class="track">
|
|
151
185
|
<span class="thumb"></span>
|
|
152
186
|
</span>
|
|
@@ -42,7 +42,7 @@ export class BdsTextarea extends LitElement {
|
|
|
42
42
|
padding: var(--bds-space_s);
|
|
43
43
|
border: none;
|
|
44
44
|
--bdc_color: var(--textarea_border-color, currentcolor);
|
|
45
|
-
--bdc-outline_radius: var(--
|
|
45
|
+
--bdc-outline_radius: var(--bdc-outline_radius--l);
|
|
46
46
|
|
|
47
47
|
border-radius: var(--textarea_radius, var(--bdc-outline_radius));
|
|
48
48
|
box-shadow: inset 0 0 0 var(--bdc-outline_width) var(--bdc_color), var(--textarea_shadow, var(--bdc-outline_shadow));
|
|
@@ -23,7 +23,7 @@ export class BdsAvatar extends LitElement {
|
|
|
23
23
|
justify-content: center;
|
|
24
24
|
inline-size: var(--avatar_size, 3em);
|
|
25
25
|
block-size: var(--avatar_size, 3em);
|
|
26
|
-
border-radius:
|
|
26
|
+
border-radius: var(--avatar_radius, var(--bds-border_radius--circle));
|
|
27
27
|
overflow: hidden;
|
|
28
28
|
flex-shrink: 0;
|
|
29
29
|
}
|
|
@@ -63,8 +63,8 @@ export class BdsCarousel extends LitElement {
|
|
|
63
63
|
inline-size: 2.5rem;
|
|
64
64
|
block-size: 2.5rem;
|
|
65
65
|
border: none;
|
|
66
|
-
border-radius: var(--bds-border_radius--
|
|
67
|
-
background-color: var(--bds-color_bg--subtle);
|
|
66
|
+
border-radius: var(--carousel_navBtn-radius, var(--bds-border_radius--circle));
|
|
67
|
+
background-color: var(--carousel_navBtn-bg, var(--bds-color_bg--subtle));
|
|
68
68
|
color: var(--bds-color_on-bg);
|
|
69
69
|
cursor: pointer;
|
|
70
70
|
transition: var(--bds-animation_transition);
|
|
@@ -77,7 +77,7 @@ export class BdsCarousel extends LitElement {
|
|
|
77
77
|
|
|
78
78
|
@media (hover: hover) and (pointer: fine) {
|
|
79
79
|
.nav-btn:hover {
|
|
80
|
-
background-color: var(--bds-color_bg--strong);
|
|
80
|
+
background-color: var(--carousel_navBtn-bg--hover, var(--bds-color_bg--strong));
|
|
81
81
|
}
|
|
82
82
|
}
|
|
83
83
|
|
|
@@ -102,18 +102,18 @@ export class BdsCarousel extends LitElement {
|
|
|
102
102
|
.dot {
|
|
103
103
|
inline-size: 0.5rem;
|
|
104
104
|
block-size: 0.5rem;
|
|
105
|
-
border-radius:
|
|
105
|
+
border-radius: var(--carousel_indicator-radius, var(--bds-border_radius--circle));
|
|
106
106
|
border: none;
|
|
107
107
|
padding: 0;
|
|
108
|
-
background-color: var(--bds-color_bg--strong);
|
|
108
|
+
background-color: var(--carousel_indicator-bg, var(--bds-color_bg--strong));
|
|
109
109
|
cursor: pointer;
|
|
110
110
|
transition: var(--bds-animation_transition);
|
|
111
111
|
}
|
|
112
112
|
|
|
113
113
|
.dot.--active {
|
|
114
|
-
background-color: var(--bds-color_interactive);
|
|
114
|
+
background-color: var(--carousel_indicator-bg--active, var(--bds-color_interactive));
|
|
115
115
|
inline-size: 1rem;
|
|
116
|
-
border-radius:
|
|
116
|
+
border-radius: var(--carousel_indicator-radius--active, var(--bds-border_radius--full));
|
|
117
117
|
}
|
|
118
118
|
|
|
119
119
|
.dot:focus-visible {
|
|
@@ -26,14 +26,14 @@ export class BdsIconWrapper extends LitElement {
|
|
|
26
26
|
inline-size: 2em;
|
|
27
27
|
block-size: 2em;
|
|
28
28
|
font-size: 3em;
|
|
29
|
-
border-radius:
|
|
29
|
+
border-radius: var(--icon-wrapper-radius, var(--bds-border_radius--circle));
|
|
30
30
|
display: flex;
|
|
31
31
|
align-items: center;
|
|
32
32
|
justify-content: center;
|
|
33
33
|
margin: var(--bds-space_l) auto var(--bds-space_m);
|
|
34
34
|
background: var(--icon-wrapper-color, var(--bds-color_bg));
|
|
35
|
-
color: var(--bds-on-icon-wrapper-color, var(--bds-color_on-bg));
|
|
36
|
-
fill:
|
|
35
|
+
color: var(--icon-wrapper_on-color, var(--bds-on-icon-wrapper-color, var(--bds-color_on-bg)));
|
|
36
|
+
fill: currentcolor;
|
|
37
37
|
position: relative;
|
|
38
38
|
transition: var(--bds-animation_transition);
|
|
39
39
|
}
|
|
@@ -23,7 +23,7 @@ export class BdsLoading extends LitElement {
|
|
|
23
23
|
block-size: 2.5em;
|
|
24
24
|
border: 4px solid var(--bds-color_bg);
|
|
25
25
|
border-block-start: 4px solid var(--bds-color_interactive);
|
|
26
|
-
border-radius:
|
|
26
|
+
border-radius: var(--loading_radius, var(--bds-border_radius--circle));
|
|
27
27
|
animation: spin 1s linear infinite;
|
|
28
28
|
}
|
|
29
29
|
|
|
@@ -42,7 +42,7 @@ export class BdsProgress extends LitElement {
|
|
|
42
42
|
inline-size: 100%;
|
|
43
43
|
block-size: var(--progress_height, var(--bds-space_xs));
|
|
44
44
|
background-color: var(--bds-color_bg--subtle);
|
|
45
|
-
border-radius:
|
|
45
|
+
border-radius: var(--progress_radius, var(--bds-border_radius--full));
|
|
46
46
|
overflow: hidden;
|
|
47
47
|
}
|
|
48
48
|
|
|
@@ -53,7 +53,7 @@ export class BdsProgress extends LitElement {
|
|
|
53
53
|
.fill {
|
|
54
54
|
block-size: 100%;
|
|
55
55
|
background-color: var(--progress_color-active, var(--bdc-color_active));
|
|
56
|
-
border-radius:
|
|
56
|
+
border-radius: var(--progress_radius, var(--bds-border_radius--full));
|
|
57
57
|
transition: inline-size var(--bds-animation_transition-duration) var(--bds-animation_easing);
|
|
58
58
|
}
|
|
59
59
|
|
|
@@ -1,133 +0,0 @@
|
|
|
1
|
-
import {
|
|
2
|
-
T,
|
|
3
|
-
i,
|
|
4
|
-
i2
|
|
5
|
-
} from "./chunk-LGEZYFUU.js";
|
|
6
|
-
|
|
7
|
-
// src/web-components/interaction/form/bds-switch.ts
|
|
8
|
-
var BdsSwitch = class extends i2 {
|
|
9
|
-
static formAssociated = true;
|
|
10
|
-
static styles = i`
|
|
11
|
-
:host {
|
|
12
|
-
display: inline-flex;
|
|
13
|
-
align-items: center;
|
|
14
|
-
gap: var(--bds-space_xs);
|
|
15
|
-
cursor: pointer;
|
|
16
|
-
font-size: var(--bds-font_size--body);
|
|
17
|
-
font-family: var(--bds-font_family--body);
|
|
18
|
-
color: var(--bds-color_on-bg);
|
|
19
|
-
}
|
|
20
|
-
|
|
21
|
-
:host([disabled]) {
|
|
22
|
-
opacity: 0.5;
|
|
23
|
-
cursor: not-allowed;
|
|
24
|
-
pointer-events: none;
|
|
25
|
-
}
|
|
26
|
-
|
|
27
|
-
.track {
|
|
28
|
-
position: relative;
|
|
29
|
-
inline-size: 2.75rem;
|
|
30
|
-
block-size: 1.5rem;
|
|
31
|
-
border-radius: 999px;
|
|
32
|
-
background-color: var(--switch_color_bg, var(--bds-color_bg--subtle));
|
|
33
|
-
--bdc_color: var(--switch_border-color, currentcolor);
|
|
34
|
-
|
|
35
|
-
box-shadow: inset 0 0 0 var(--bdc-outline_width) var(--bdc_color);
|
|
36
|
-
transition: background-color 0.2s ease;
|
|
37
|
-
flex-shrink: 0;
|
|
38
|
-
}
|
|
39
|
-
|
|
40
|
-
.thumb {
|
|
41
|
-
position: absolute;
|
|
42
|
-
inset-block-start: 0.2rem;
|
|
43
|
-
inset-inline-start: 0.2rem;
|
|
44
|
-
inline-size: 1.1rem;
|
|
45
|
-
block-size: 1.1rem;
|
|
46
|
-
border-radius: 50%;
|
|
47
|
-
background-color: var(--switch_thumb_color, var(--bds-color_interactive));
|
|
48
|
-
transition: inset-inline-start 0.2s ease;
|
|
49
|
-
}
|
|
50
|
-
|
|
51
|
-
.input {
|
|
52
|
-
position: absolute;
|
|
53
|
-
opacity: 0;
|
|
54
|
-
inline-size: 0;
|
|
55
|
-
block-size: 0;
|
|
56
|
-
margin: 0;
|
|
57
|
-
}
|
|
58
|
-
|
|
59
|
-
.input:checked + .track {
|
|
60
|
-
background-color: var(--switch_color-active, var(--bdc-color_active--subtle));
|
|
61
|
-
}
|
|
62
|
-
|
|
63
|
-
.input:checked + .track .thumb {
|
|
64
|
-
inset-inline-start: calc(100% - 1.3rem);
|
|
65
|
-
}
|
|
66
|
-
|
|
67
|
-
.input:focus-visible + .track {
|
|
68
|
-
outline: var(--bds-outline_default);
|
|
69
|
-
outline-offset: var(--bds-outline_offset);
|
|
70
|
-
}
|
|
71
|
-
|
|
72
|
-
label {
|
|
73
|
-
cursor: pointer;
|
|
74
|
-
}
|
|
75
|
-
`;
|
|
76
|
-
static properties = {
|
|
77
|
-
name: { type: String, reflect: true },
|
|
78
|
-
value: { type: String },
|
|
79
|
-
checked: { type: Boolean, reflect: true },
|
|
80
|
-
required: { type: Boolean, reflect: true },
|
|
81
|
-
disabled: { type: Boolean, reflect: true }
|
|
82
|
-
};
|
|
83
|
-
_internals;
|
|
84
|
-
_uid = Math.random().toString(36).slice(2, 8);
|
|
85
|
-
constructor() {
|
|
86
|
-
super();
|
|
87
|
-
this._internals = this.attachInternals();
|
|
88
|
-
this.name = "";
|
|
89
|
-
this.value = "on";
|
|
90
|
-
this.checked = false;
|
|
91
|
-
this.required = false;
|
|
92
|
-
this.disabled = false;
|
|
93
|
-
}
|
|
94
|
-
updated(changed) {
|
|
95
|
-
super.updated(changed);
|
|
96
|
-
if (changed.has("checked") || changed.has("value")) {
|
|
97
|
-
this._internals.setFormValue?.(this.checked ? this.value : null);
|
|
98
|
-
}
|
|
99
|
-
}
|
|
100
|
-
formResetCallback() {
|
|
101
|
-
this.checked = false;
|
|
102
|
-
this._internals.setFormValue?.(null);
|
|
103
|
-
}
|
|
104
|
-
_handleChange(e) {
|
|
105
|
-
this.checked = e.target.checked;
|
|
106
|
-
}
|
|
107
|
-
render() {
|
|
108
|
-
const id = `bds-switch-${this._uid}`;
|
|
109
|
-
return T`
|
|
110
|
-
<input
|
|
111
|
-
id=${id}
|
|
112
|
-
type="checkbox"
|
|
113
|
-
role="switch"
|
|
114
|
-
class="input"
|
|
115
|
-
.checked=${this.checked}
|
|
116
|
-
?required=${this.required}
|
|
117
|
-
?disabled=${this.disabled}
|
|
118
|
-
@change=${this._handleChange}
|
|
119
|
-
/>
|
|
120
|
-
<label for=${id}>
|
|
121
|
-
<span class="track">
|
|
122
|
-
<span class="thumb"></span>
|
|
123
|
-
</span>
|
|
124
|
-
<slot></slot>
|
|
125
|
-
</label>
|
|
126
|
-
`;
|
|
127
|
-
}
|
|
128
|
-
};
|
|
129
|
-
customElements.define("bds-switch", BdsSwitch);
|
|
130
|
-
|
|
131
|
-
export {
|
|
132
|
-
BdsSwitch
|
|
133
|
-
};
|