@redvars/peacock 3.3.2 → 3.4.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/IndividualComponent-DUINtMGK.js +67 -0
- package/dist/IndividualComponent-DUINtMGK.js.map +1 -0
- package/dist/assets/images/empty-state/no-document.svg +11 -12
- package/dist/assets/images/empty-state/page.svg +15 -9
- package/dist/bottom-sheet.js +238 -0
- package/dist/bottom-sheet.js.map +1 -0
- package/dist/{button-ClzS8JLq.js → button-COYCtuA8.js} +306 -149
- package/dist/button-COYCtuA8.js.map +1 -0
- package/dist/button-group-DsXquZQn.js +440 -0
- package/dist/button-group-DsXquZQn.js.map +1 -0
- package/dist/button-group.js +6 -4
- package/dist/button-group.js.map +1 -1
- package/dist/button.js +5 -3
- package/dist/button.js.map +1 -1
- package/dist/card-content.js +29 -0
- package/dist/card-content.js.map +1 -0
- package/dist/card.js +418 -44
- package/dist/card.js.map +1 -1
- package/dist/{chart-bar-DbnXQgvS.js → chart-bar-cn6rrna-.js} +2 -2
- package/dist/{chart-bar-DbnXQgvS.js.map → chart-bar-cn6rrna-.js.map} +1 -1
- package/dist/chart-bar.js +4 -3
- package/dist/chart-bar.js.map +1 -1
- package/dist/chart-doughnut.js +2 -1
- package/dist/chart-doughnut.js.map +1 -1
- package/dist/chart-pie.js +2 -1
- package/dist/chart-pie.js.map +1 -1
- package/dist/chart-stacked-bar.js +4 -3
- package/dist/chart-stacked-bar.js.map +1 -1
- package/dist/{class-map-59YGWLnx.js → class-map-3TAnCMAX.js} +3 -9
- package/dist/class-map-3TAnCMAX.js.map +1 -0
- package/dist/clock.js +2 -1
- package/dist/clock.js.map +1 -1
- package/dist/code-editor.js +6 -4
- package/dist/code-editor.js.map +1 -1
- package/dist/code-highlighter.js +5 -3
- package/dist/code-highlighter.js.map +1 -1
- package/dist/custom-elements-jsdocs.json +2458 -2753
- package/dist/custom-elements.json +3185 -777
- package/dist/dispatch-event-utils-B4odODQf.js.map +1 -1
- package/dist/index.js +14 -10
- package/dist/index.js.map +1 -1
- package/dist/number-counter.js +3 -2
- package/dist/number-counter.js.map +1 -1
- package/dist/{observe-theme-change-pALI5fmV.js → observe-theme-change-DKAIv5BB.js} +3 -2
- package/dist/observe-theme-change-DKAIv5BB.js.map +1 -0
- package/dist/peacock-loader.js +37 -8
- package/dist/peacock-loader.js.map +1 -1
- package/dist/property-1psGvXOq.js +10 -0
- package/dist/property-1psGvXOq.js.map +1 -0
- package/dist/{snackbar-74YCdMPL.js → select-C3XAzenC.js} +2158 -191
- package/dist/select-C3XAzenC.js.map +1 -0
- package/dist/side-sheet.js +186 -0
- package/dist/side-sheet.js.map +1 -0
- package/dist/src/bottom-sheet/bottom-sheet.d.ts +42 -0
- package/dist/src/bottom-sheet/index.d.ts +1 -0
- package/dist/src/button/BaseButton.d.ts +4 -3
- package/dist/src/button/button/button.d.ts +4 -0
- package/dist/src/button/button-group/button-group.d.ts +32 -3
- package/dist/src/button/icon-button/icon-button.d.ts +4 -0
- package/dist/src/card/card-content.d.ts +15 -0
- package/dist/src/card/card.d.ts +37 -3
- package/dist/src/card/index.d.ts +1 -0
- package/dist/src/container/container.d.ts +1 -1
- package/dist/src/empty-state/empty-state.d.ts +1 -1
- package/dist/src/focus-ring/focus-ring.d.ts +4 -1
- package/dist/src/index.d.ts +7 -1
- package/dist/src/menu/menu/menu.d.ts +1 -0
- package/dist/src/menu/menu-item/menu-item.d.ts +0 -1
- package/dist/src/radio/index.d.ts +1 -0
- package/dist/src/radio/radio.d.ts +73 -0
- package/dist/src/ripple/ripple.d.ts +19 -3
- package/dist/src/segmented-button/index.d.ts +2 -0
- package/dist/src/segmented-button/segmented-button-group.d.ts +46 -0
- package/dist/src/segmented-button/segmented-button.d.ts +65 -0
- package/dist/src/select/index.d.ts +3 -0
- package/dist/src/select/option.d.ts +55 -0
- package/dist/src/select/select.d.ts +116 -0
- package/dist/src/side-sheet/index.d.ts +1 -0
- package/dist/src/side-sheet/side-sheet.d.ts +41 -0
- package/dist/src/tabs/tab-group.d.ts +0 -1
- package/dist/src/tabs/tab.d.ts +8 -2
- package/dist/src/tabs/tabs.d.ts +13 -1
- package/dist/state-DwbEjqVk.js +10 -0
- package/dist/state-DwbEjqVk.js.map +1 -0
- package/dist/{style-map-DcB52w-l.js → style-map-CRFEoCEg.js} +2 -2
- package/dist/{style-map-DcB52w-l.js.map → style-map-CRFEoCEg.js.map} +1 -1
- package/dist/tsconfig.tsbuildinfo +1 -1
- package/dist/{unsafe-html-C2r3PyzF.js → unsafe-html-D3GHRaGQ.js} +2 -2
- package/dist/{unsafe-html-C2r3PyzF.js.map → unsafe-html-D3GHRaGQ.js.map} +1 -1
- package/package.json +1 -1
- package/readme.md +2 -2
- package/src/bottom-sheet/bottom-sheet.scss +88 -0
- package/src/bottom-sheet/bottom-sheet.ts +135 -0
- package/src/bottom-sheet/index.ts +1 -0
- package/src/button/BaseButton.ts +16 -7
- package/src/button/button/button-colors.scss +76 -5
- package/src/button/button/button-sizes.scss +39 -19
- package/src/button/button/button.scss +117 -116
- package/src/button/button/button.ts +23 -1
- package/src/button/button-group/button-group.scss +25 -22
- package/src/button/button-group/button-group.ts +121 -4
- package/src/button/icon-button/icon-button-sizes.scss +35 -15
- package/src/button/icon-button/icon-button.ts +21 -1
- package/src/card/card-colors.scss +10 -0
- package/src/card/card-content.ts +26 -0
- package/src/card/card.scss +221 -41
- package/src/card/card.ts +240 -7
- package/src/card/index.ts +1 -0
- package/src/code-editor/code-editor.ts +1 -1
- package/src/container/container.ts +1 -1
- package/src/empty-state/empty-state.scss +8 -0
- package/src/empty-state/empty-state.ts +2 -2
- package/src/focus-ring/focus-ring.ts +37 -19
- package/src/index.ts +8 -1
- package/src/menu/menu/menu.scss +24 -3
- package/src/menu/menu/menu.ts +23 -2
- package/src/menu/menu-item/menu-item.scss +1 -0
- package/src/menu/menu-item/menu-item.ts +1 -9
- package/src/peacock-loader.ts +32 -0
- package/src/radio/index.ts +1 -0
- package/src/radio/radio.scss +181 -0
- package/src/radio/radio.ts +362 -0
- package/src/ripple/ripple.ts +19 -3
- package/src/segmented-button/index.ts +2 -0
- package/src/segmented-button/segmented-button-group.scss +21 -0
- package/src/segmented-button/segmented-button-group.ts +110 -0
- package/src/segmented-button/segmented-button.scss +115 -0
- package/src/segmented-button/segmented-button.ts +175 -0
- package/src/select/index.ts +3 -0
- package/src/select/option.ts +109 -0
- package/src/select/select.scss +120 -0
- package/src/select/select.ts +486 -0
- package/src/side-sheet/index.ts +1 -0
- package/src/side-sheet/side-sheet.scss +79 -0
- package/src/side-sheet/side-sheet.ts +100 -0
- package/src/slider/slider.scss +0 -1
- package/src/tabs/demo/index.html +90 -0
- package/src/tabs/tab-group.ts +0 -3
- package/src/tabs/tab.scss +237 -25
- package/src/tabs/tab.ts +86 -12
- package/src/tabs/tabs.scss +37 -3
- package/src/tabs/tabs.ts +118 -2
- package/src/utils/dispatch-event-utils.ts +1 -0
- package/dist/IndividualComponent-Dt5xirYG.js +0 -73
- package/dist/IndividualComponent-Dt5xirYG.js.map +0 -1
- package/dist/button-ClzS8JLq.js.map +0 -1
- package/dist/button-group-BMS5WvaF.js +0 -292
- package/dist/button-group-BMS5WvaF.js.map +0 -1
- package/dist/chart-donut.js +0 -309
- package/dist/chart-donut.js.map +0 -1
- package/dist/class-map-59YGWLnx.js.map +0 -1
- package/dist/observe-theme-change-pALI5fmV.js.map +0 -1
- package/dist/snackbar-74YCdMPL.js.map +0 -1
- package/dist/src/chart-donut/chart-donut.d.ts +0 -53
- package/dist/src/chart-donut/index.d.ts +0 -1
- package/dist/test/card.test.d.ts +0 -1
- package/src/chart-donut/chart-donut.scss +0 -37
- package/src/chart-donut/chart-donut.ts +0 -287
- package/src/chart-donut/demo/index.html +0 -51
- package/src/chart-donut/index.ts +0 -1
|
@@ -1,12 +1,14 @@
|
|
|
1
|
-
import { a as i, _ as __decorate,
|
|
2
|
-
import {
|
|
1
|
+
import { a as i, _ as __decorate, i as i$1, b, A, c as __classPrivateFieldGet, w } from './IndividualComponent-DUINtMGK.js';
|
|
2
|
+
import { n } from './property-1psGvXOq.js';
|
|
3
|
+
import { r } from './state-DwbEjqVk.js';
|
|
3
4
|
import { e as e$1 } from './directive-Cuw6h7YA.js';
|
|
4
|
-
import { e as e$2, o as o$4 } from './unsafe-html-
|
|
5
|
+
import { e as e$2, o as o$4 } from './unsafe-html-D3GHRaGQ.js';
|
|
5
6
|
import { c as createCacheFetch, s as sanitizeSvg, o as observerSlotChangesWithCallback, r as redispatchEvent, a as isDarkMode, i as isActivationClick, d as dispatchActivationClick, t as throttle } from './dispatch-event-utils-B4odODQf.js';
|
|
7
|
+
import { e as e$3 } from './class-map-3TAnCMAX.js';
|
|
6
8
|
import { a as e, e as e$4 } from './query-QBcUV-L_.js';
|
|
7
|
-
import { o as o$3 } from './style-map-
|
|
8
|
-
import { B as BaseInput, o as observeThemeChange } from './observe-theme-change-
|
|
9
|
-
import { s as spread } from './button-
|
|
9
|
+
import { o as o$3 } from './style-map-CRFEoCEg.js';
|
|
10
|
+
import { B as BaseInput, o as observeThemeChange } from './observe-theme-change-DKAIv5BB.js';
|
|
11
|
+
import { s as spread } from './button-COYCtuA8.js';
|
|
10
12
|
|
|
11
13
|
/**
|
|
12
14
|
* @license
|
|
@@ -39,7 +41,7 @@ async function fetchIcon(name, provider = 'material-symbols') {
|
|
|
39
41
|
return fetchSVG(PROVIDERS[provider](name));
|
|
40
42
|
}
|
|
41
43
|
|
|
42
|
-
var css_248z$
|
|
44
|
+
var css_248z$O = i`* {
|
|
43
45
|
box-sizing: border-box;
|
|
44
46
|
}
|
|
45
47
|
|
|
@@ -168,7 +170,7 @@ class Icon extends i$1 {
|
|
|
168
170
|
}
|
|
169
171
|
}
|
|
170
172
|
}
|
|
171
|
-
Icon.styles = [css_248z$
|
|
173
|
+
Icon.styles = [css_248z$O];
|
|
172
174
|
__decorate([
|
|
173
175
|
n({ type: String, reflect: true })
|
|
174
176
|
], Icon.prototype, "name", void 0);
|
|
@@ -188,7 +190,7 @@ __decorate([
|
|
|
188
190
|
r()
|
|
189
191
|
], Icon.prototype, "error", void 0);
|
|
190
192
|
|
|
191
|
-
var css_248z$
|
|
193
|
+
var css_248z$N = i`* {
|
|
192
194
|
box-sizing: border-box;
|
|
193
195
|
}
|
|
194
196
|
|
|
@@ -279,7 +281,7 @@ class Avatar extends i$1 {
|
|
|
279
281
|
return `${first.charAt(0)}${last.charAt(0)}`.toUpperCase();
|
|
280
282
|
}
|
|
281
283
|
}
|
|
282
|
-
Avatar.styles = [css_248z$
|
|
284
|
+
Avatar.styles = [css_248z$N];
|
|
283
285
|
__decorate([
|
|
284
286
|
n({ type: String, reflect: true })
|
|
285
287
|
], Avatar.prototype, "name", void 0);
|
|
@@ -287,7 +289,7 @@ __decorate([
|
|
|
287
289
|
n({ type: String, reflect: true })
|
|
288
290
|
], Avatar.prototype, "src", void 0);
|
|
289
291
|
|
|
290
|
-
var css_248z$
|
|
292
|
+
var css_248z$M = i`* {
|
|
291
293
|
box-sizing: border-box;
|
|
292
294
|
}
|
|
293
295
|
|
|
@@ -359,12 +361,12 @@ class Badge extends i$1 {
|
|
|
359
361
|
</div>`;
|
|
360
362
|
}
|
|
361
363
|
}
|
|
362
|
-
Badge.styles = [css_248z$
|
|
364
|
+
Badge.styles = [css_248z$M];
|
|
363
365
|
__decorate([
|
|
364
366
|
n({ type: String })
|
|
365
367
|
], Badge.prototype, "value", void 0);
|
|
366
368
|
|
|
367
|
-
var css_248z$
|
|
369
|
+
var css_248z$L = i`* {
|
|
368
370
|
box-sizing: border-box;
|
|
369
371
|
}
|
|
370
372
|
|
|
@@ -473,7 +475,7 @@ class Divider extends i$1 {
|
|
|
473
475
|
</div>`;
|
|
474
476
|
}
|
|
475
477
|
}
|
|
476
|
-
Divider.styles = [css_248z$
|
|
478
|
+
Divider.styles = [css_248z$L];
|
|
477
479
|
__decorate([
|
|
478
480
|
n({ type: Boolean, reflect: true })
|
|
479
481
|
], Divider.prototype, "vertical", void 0);
|
|
@@ -481,7 +483,7 @@ __decorate([
|
|
|
481
483
|
r()
|
|
482
484
|
], Divider.prototype, "slotHasContent", void 0);
|
|
483
485
|
|
|
484
|
-
var css_248z$
|
|
486
|
+
var css_248z$K = i`/**
|
|
485
487
|
* Derived from Material Design Elevation
|
|
486
488
|
* https://github.com/material-components/material-web/blob/main/elevation/internal/_elevation.scss
|
|
487
489
|
*/
|
|
@@ -554,9 +556,403 @@ class Elevation extends i$1 {
|
|
|
554
556
|
return b `<span class="shadow"></span>`;
|
|
555
557
|
}
|
|
556
558
|
}
|
|
557
|
-
Elevation.styles = [css_248z$
|
|
559
|
+
Elevation.styles = [css_248z$K];
|
|
560
|
+
|
|
561
|
+
var css_248z$J = i`* {
|
|
562
|
+
box-sizing: border-box;
|
|
563
|
+
}
|
|
564
|
+
|
|
565
|
+
.screen-reader-only {
|
|
566
|
+
display: none !important;
|
|
567
|
+
}
|
|
568
|
+
|
|
569
|
+
:host {
|
|
570
|
+
display: contents;
|
|
571
|
+
--_segmented-button-height: 2.5rem;
|
|
572
|
+
--_segmented-button-outline-color: var(--color-outline, #79747e);
|
|
573
|
+
--_segmented-button-selected-container-color: var(--color-secondary-container, #e8def8);
|
|
574
|
+
--_segmented-button-selected-label-text-color: var(--color-on-secondary-container, #1d192b);
|
|
575
|
+
--_segmented-button-unselected-label-text-color: var(--color-on-surface, #1c1b1f);
|
|
576
|
+
--_segmented-button-disabled-opacity: 0.38;
|
|
577
|
+
--_segmented-button-state-layer-color: var(--color-on-surface, #1c1b1f);
|
|
578
|
+
--_segmented-button-selected-state-layer-color: var(--color-on-secondary-container, #1d192b);
|
|
579
|
+
}
|
|
580
|
+
|
|
581
|
+
.segment {
|
|
582
|
+
position: relative;
|
|
583
|
+
display: flex;
|
|
584
|
+
align-items: center;
|
|
585
|
+
justify-content: center;
|
|
586
|
+
height: var(--segmented-button-height, var(--_segmented-button-height));
|
|
587
|
+
padding: 0 1.5rem;
|
|
588
|
+
cursor: pointer;
|
|
589
|
+
flex: 1;
|
|
590
|
+
min-width: 0;
|
|
591
|
+
outline: none;
|
|
592
|
+
user-select: none;
|
|
593
|
+
-webkit-user-select: none;
|
|
594
|
+
background: transparent;
|
|
595
|
+
overflow: hidden;
|
|
596
|
+
transition: background-color 200ms ease, color 200ms ease;
|
|
597
|
+
}
|
|
598
|
+
.segment .content {
|
|
599
|
+
position: relative;
|
|
600
|
+
z-index: 1;
|
|
601
|
+
display: flex;
|
|
602
|
+
align-items: center;
|
|
603
|
+
gap: 0.5rem;
|
|
604
|
+
font-family: var(--typography-label-large-font-family) !important;
|
|
605
|
+
font-size: var(--typography-label-large-font-size) !important;
|
|
606
|
+
font-weight: var(--typography-label-large-font-weight) !important;
|
|
607
|
+
line-height: var(--typography-label-large-line-height) !important;
|
|
608
|
+
letter-spacing: var(--typography-label-large-letter-spacing) !important;
|
|
609
|
+
color: var(--segmented-button-unselected-label-text-color, var(--_segmented-button-unselected-label-text-color));
|
|
610
|
+
}
|
|
611
|
+
.segment .content .check-icon,
|
|
612
|
+
.segment .content .leading-icon {
|
|
613
|
+
--icon-size: 1.125rem;
|
|
614
|
+
--icon-color: currentColor;
|
|
615
|
+
flex-shrink: 0;
|
|
616
|
+
}
|
|
617
|
+
.segment .content .label {
|
|
618
|
+
overflow: hidden;
|
|
619
|
+
text-overflow: ellipsis;
|
|
620
|
+
white-space: nowrap;
|
|
621
|
+
}
|
|
622
|
+
.segment .state-layer {
|
|
623
|
+
position: absolute;
|
|
624
|
+
inset: 0;
|
|
625
|
+
background: var(--_segmented-button-state-layer-color);
|
|
626
|
+
opacity: 0;
|
|
627
|
+
pointer-events: none;
|
|
628
|
+
transition: opacity 200ms ease;
|
|
629
|
+
}
|
|
630
|
+
.segment {
|
|
631
|
+
/* right-side divider between segments */
|
|
632
|
+
}
|
|
633
|
+
.segment .segment-outline {
|
|
634
|
+
position: absolute;
|
|
635
|
+
top: 0;
|
|
636
|
+
right: 0;
|
|
637
|
+
width: 1px;
|
|
638
|
+
height: 100%;
|
|
639
|
+
background: var(--segmented-button-outline-color, var(--_segmented-button-outline-color));
|
|
640
|
+
pointer-events: none;
|
|
641
|
+
}
|
|
642
|
+
.segment:hover:not(.disabled) .state-layer {
|
|
643
|
+
opacity: 0.08;
|
|
644
|
+
}
|
|
645
|
+
.segment.has-focus:not(.disabled) .state-layer {
|
|
646
|
+
opacity: 0.12;
|
|
647
|
+
}
|
|
648
|
+
.segment.active:not(.disabled) .state-layer {
|
|
649
|
+
opacity: 0.16;
|
|
650
|
+
}
|
|
651
|
+
.segment {
|
|
652
|
+
/* Selected state */
|
|
653
|
+
}
|
|
654
|
+
.segment.selected {
|
|
655
|
+
background-color: var(--segmented-button-selected-container-color, var(--_segmented-button-selected-container-color));
|
|
656
|
+
}
|
|
657
|
+
.segment.selected .content {
|
|
658
|
+
color: var(--segmented-button-selected-label-text-color, var(--_segmented-button-selected-label-text-color));
|
|
659
|
+
}
|
|
660
|
+
.segment.selected .state-layer {
|
|
661
|
+
background: var(--_segmented-button-selected-state-layer-color);
|
|
662
|
+
}
|
|
663
|
+
.segment {
|
|
664
|
+
/* Disabled state */
|
|
665
|
+
}
|
|
666
|
+
.segment.disabled {
|
|
667
|
+
cursor: not-allowed;
|
|
668
|
+
opacity: var(--segmented-button-disabled-opacity, var(--_segmented-button-disabled-opacity));
|
|
669
|
+
pointer-events: none;
|
|
670
|
+
}
|
|
671
|
+
|
|
672
|
+
:host(:last-child) .segment-outline {
|
|
673
|
+
display: none;
|
|
674
|
+
}`;
|
|
675
|
+
|
|
676
|
+
/**
|
|
677
|
+
* @label Segmented Button
|
|
678
|
+
* @tag wc-segmented-button
|
|
679
|
+
* @rawTag segmented-button
|
|
680
|
+
* @summary An individual segment within a segmented button group.
|
|
681
|
+
* @parentRawTag segmented-button-group
|
|
682
|
+
* @overview
|
|
683
|
+
* <p>Segmented buttons help people select options, switch views, or sort elements. They are used within a <code>wc-segmented-button-group</code>.</p>
|
|
684
|
+
*
|
|
685
|
+
* @cssprop --segmented-button-height: Height of the segmented button.
|
|
686
|
+
* @cssprop --segmented-button-selected-container-color: Background color when the segment is selected.
|
|
687
|
+
* @cssprop --segmented-button-selected-label-text-color: Text color when the segment is selected.
|
|
688
|
+
* @cssprop --segmented-button-unselected-label-text-color: Text color when the segment is unselected.
|
|
689
|
+
* @cssprop --segmented-button-outline-color: Outline / border color.
|
|
690
|
+
* @cssprop --segmented-button-disabled-opacity: Opacity when the segment is disabled.
|
|
691
|
+
*
|
|
692
|
+
* @fires {CustomEvent} segmented-button--change - Dispatched when the selected state changes.
|
|
693
|
+
*
|
|
694
|
+
* @example
|
|
695
|
+
* ```html
|
|
696
|
+
* <wc-segmented-button-group>
|
|
697
|
+
* <wc-segmented-button value="day">Day</wc-segmented-button>
|
|
698
|
+
* <wc-segmented-button value="week" selected>Week</wc-segmented-button>
|
|
699
|
+
* <wc-segmented-button value="month">Month</wc-segmented-button>
|
|
700
|
+
* </wc-segmented-button-group>
|
|
701
|
+
* ```
|
|
702
|
+
*
|
|
703
|
+
* @tags controls
|
|
704
|
+
*/
|
|
705
|
+
class SegmentedButton extends i$1 {
|
|
706
|
+
constructor() {
|
|
707
|
+
super(...arguments);
|
|
708
|
+
/**
|
|
709
|
+
* The value associated with this segment.
|
|
710
|
+
*/
|
|
711
|
+
this.value = '';
|
|
712
|
+
/**
|
|
713
|
+
* Whether this segment is currently selected.
|
|
714
|
+
*/
|
|
715
|
+
this.selected = false;
|
|
716
|
+
/**
|
|
717
|
+
* If true, the user cannot interact with this segment.
|
|
718
|
+
*/
|
|
719
|
+
this.disabled = false;
|
|
720
|
+
this.hasFocus = false;
|
|
721
|
+
this.isActive = false;
|
|
722
|
+
this._windowMouseUp = () => {
|
|
723
|
+
if (this.isActive) {
|
|
724
|
+
this.isActive = false;
|
|
725
|
+
}
|
|
726
|
+
};
|
|
727
|
+
this._mouseDownHandler = () => {
|
|
728
|
+
this.isActive = true;
|
|
729
|
+
};
|
|
730
|
+
this._keyDownHandler = (evt) => {
|
|
731
|
+
if (evt.key === ' ' || evt.key === 'Enter') {
|
|
732
|
+
evt.preventDefault();
|
|
733
|
+
this.isActive = true;
|
|
734
|
+
this._toggle(evt);
|
|
735
|
+
}
|
|
736
|
+
};
|
|
737
|
+
this._clickHandler = (ev) => {
|
|
738
|
+
this._toggle(ev);
|
|
739
|
+
};
|
|
740
|
+
this._blurHandler = (ev) => {
|
|
741
|
+
this.hasFocus = false;
|
|
742
|
+
this.dispatchEvent(new CustomEvent('blur', { detail: ev, bubbles: true, composed: true }));
|
|
743
|
+
};
|
|
744
|
+
this._focusHandler = (ev) => {
|
|
745
|
+
this.hasFocus = true;
|
|
746
|
+
this.dispatchEvent(new CustomEvent('focus', { detail: ev, bubbles: true, composed: true }));
|
|
747
|
+
};
|
|
748
|
+
}
|
|
749
|
+
connectedCallback() {
|
|
750
|
+
super.connectedCallback();
|
|
751
|
+
window.addEventListener('mouseup', this._windowMouseUp);
|
|
752
|
+
}
|
|
753
|
+
disconnectedCallback() {
|
|
754
|
+
super.disconnectedCallback();
|
|
755
|
+
window.removeEventListener('mouseup', this._windowMouseUp);
|
|
756
|
+
}
|
|
757
|
+
_toggle(ev) {
|
|
758
|
+
if (this.disabled)
|
|
759
|
+
return;
|
|
760
|
+
this.dispatchEvent(new CustomEvent('segmented-button--change', {
|
|
761
|
+
detail: {
|
|
762
|
+
value: this.value || this.textContent?.trim(),
|
|
763
|
+
selected: !this.selected,
|
|
764
|
+
originalEvent: ev,
|
|
765
|
+
},
|
|
766
|
+
bubbles: true,
|
|
767
|
+
composed: true,
|
|
768
|
+
}));
|
|
769
|
+
}
|
|
770
|
+
/** Sets focus on the segment. */
|
|
771
|
+
focus() {
|
|
772
|
+
this.renderRoot.querySelector('.segment')?.focus();
|
|
773
|
+
}
|
|
774
|
+
/** Removes focus from the segment. */
|
|
775
|
+
blur() {
|
|
776
|
+
this.renderRoot.querySelector('.segment')?.blur();
|
|
777
|
+
}
|
|
778
|
+
render() {
|
|
779
|
+
const cssClasses = {
|
|
780
|
+
segment: true,
|
|
781
|
+
selected: this.selected,
|
|
782
|
+
disabled: this.disabled,
|
|
783
|
+
'has-focus': this.hasFocus,
|
|
784
|
+
active: this.isActive,
|
|
785
|
+
'has-icon': !!this.icon,
|
|
786
|
+
};
|
|
787
|
+
return b `
|
|
788
|
+
<div
|
|
789
|
+
class=${e$3(cssClasses)}
|
|
790
|
+
role="button"
|
|
791
|
+
tabindex=${this.disabled ? -1 : 0}
|
|
792
|
+
aria-pressed=${this.selected}
|
|
793
|
+
aria-disabled=${this.disabled}
|
|
794
|
+
@click=${this._clickHandler}
|
|
795
|
+
@mousedown=${this._mouseDownHandler}
|
|
796
|
+
@keydown=${this._keyDownHandler}
|
|
797
|
+
@blur=${this._blurHandler}
|
|
798
|
+
@focus=${this._focusHandler}
|
|
799
|
+
>
|
|
800
|
+
<div class="state-layer"></div>
|
|
801
|
+
<div class="content">
|
|
802
|
+
${this.selected
|
|
803
|
+
? b `<wc-icon class="check-icon" name="check"></wc-icon>`
|
|
804
|
+
: this.icon
|
|
805
|
+
? b `<wc-icon class="leading-icon" name=${this.icon}></wc-icon>`
|
|
806
|
+
: A}
|
|
807
|
+
<span class="label"><slot></slot></span>
|
|
808
|
+
</div>
|
|
809
|
+
<div class="segment-outline"></div>
|
|
810
|
+
</div>
|
|
811
|
+
`;
|
|
812
|
+
}
|
|
813
|
+
}
|
|
814
|
+
SegmentedButton.styles = [css_248z$J];
|
|
815
|
+
__decorate([
|
|
816
|
+
n({ type: String, reflect: true })
|
|
817
|
+
], SegmentedButton.prototype, "value", void 0);
|
|
818
|
+
__decorate([
|
|
819
|
+
n({ type: Boolean, reflect: true })
|
|
820
|
+
], SegmentedButton.prototype, "selected", void 0);
|
|
821
|
+
__decorate([
|
|
822
|
+
n({ type: Boolean, reflect: true })
|
|
823
|
+
], SegmentedButton.prototype, "disabled", void 0);
|
|
824
|
+
__decorate([
|
|
825
|
+
n({ type: String })
|
|
826
|
+
], SegmentedButton.prototype, "icon", void 0);
|
|
827
|
+
__decorate([
|
|
828
|
+
r()
|
|
829
|
+
], SegmentedButton.prototype, "hasFocus", void 0);
|
|
830
|
+
__decorate([
|
|
831
|
+
r()
|
|
832
|
+
], SegmentedButton.prototype, "isActive", void 0);
|
|
833
|
+
|
|
834
|
+
var css_248z$I = i`* {
|
|
835
|
+
box-sizing: border-box;
|
|
836
|
+
}
|
|
837
|
+
|
|
838
|
+
.screen-reader-only {
|
|
839
|
+
display: none !important;
|
|
840
|
+
}
|
|
841
|
+
|
|
842
|
+
:host {
|
|
843
|
+
display: inline-flex;
|
|
844
|
+
--_segmented-button-group-shape: var(--shape-corner-full, 9999px);
|
|
845
|
+
}
|
|
846
|
+
|
|
847
|
+
.segmented-button-group {
|
|
848
|
+
display: flex;
|
|
849
|
+
align-items: stretch;
|
|
850
|
+
border-radius: var(--segmented-button-group-shape, var(--_segmented-button-group-shape));
|
|
851
|
+
border: 1px solid var(--segmented-button-outline-color, var(--color-outline, #79747e));
|
|
852
|
+
overflow: hidden;
|
|
853
|
+
min-width: max-content;
|
|
854
|
+
}
|
|
855
|
+
.segmented-button-group ::slotted(wc-segmented-button) {
|
|
856
|
+
flex: 1;
|
|
857
|
+
}`;
|
|
858
|
+
|
|
859
|
+
/**
|
|
860
|
+
* @label Segmented Button Group
|
|
861
|
+
* @tag wc-segmented-button-group
|
|
862
|
+
* @rawTag segmented-button-group
|
|
863
|
+
* @summary A container for segmented buttons following Material Design 3.
|
|
864
|
+
* @overview
|
|
865
|
+
* <p>Segmented buttons help people select options, switch views, or sort elements. They follow the Material Design 3 specification.</p>
|
|
866
|
+
* <p>Use <code>multi-select</code> to allow more than one segment to be selected at a time. By default only one segment can be active (single-select).</p>
|
|
867
|
+
*
|
|
868
|
+
* @cssprop --segmented-button-group-shape: Border-radius of the group container.
|
|
869
|
+
*
|
|
870
|
+
* @fires {CustomEvent} change - Dispatched when the selection changes. Detail contains <code>{ value, values }</code>.
|
|
871
|
+
*
|
|
872
|
+
* @example
|
|
873
|
+
* ```html
|
|
874
|
+
* <wc-segmented-button-group>
|
|
875
|
+
* <wc-segmented-button value="day">Day</wc-segmented-button>
|
|
876
|
+
* <wc-segmented-button value="week" selected>Week</wc-segmented-button>
|
|
877
|
+
* <wc-segmented-button value="month">Month</wc-segmented-button>
|
|
878
|
+
* </wc-segmented-button-group>
|
|
879
|
+
* ```
|
|
880
|
+
*
|
|
881
|
+
* @tags controls
|
|
882
|
+
*/
|
|
883
|
+
class SegmentedButtonGroup extends i$1 {
|
|
884
|
+
constructor() {
|
|
885
|
+
super(...arguments);
|
|
886
|
+
/**
|
|
887
|
+
* When true, multiple segments can be selected simultaneously.
|
|
888
|
+
* Defaults to single-select mode.
|
|
889
|
+
*/
|
|
890
|
+
this.multiSelect = false;
|
|
891
|
+
/**
|
|
892
|
+
* When true, in single-select mode the currently selected segment can be
|
|
893
|
+
* deselected by clicking it again (allowing an empty selection).
|
|
894
|
+
* Defaults to `false`.
|
|
895
|
+
*/
|
|
896
|
+
this.nullable = false;
|
|
897
|
+
this._onSegmentChange = (ev) => {
|
|
898
|
+
ev.stopPropagation();
|
|
899
|
+
const target = ev.composedPath()[0];
|
|
900
|
+
const segments = this._getSegments();
|
|
901
|
+
if (this.multiSelect) {
|
|
902
|
+
target.selected = !target.selected;
|
|
903
|
+
}
|
|
904
|
+
else {
|
|
905
|
+
if (target.selected && this.nullable) {
|
|
906
|
+
target.selected = false;
|
|
907
|
+
}
|
|
908
|
+
else {
|
|
909
|
+
segments.forEach(seg => {
|
|
910
|
+
seg.selected = seg === target;
|
|
911
|
+
});
|
|
912
|
+
}
|
|
913
|
+
}
|
|
914
|
+
const selectedValues = segments
|
|
915
|
+
.filter(s => s.selected)
|
|
916
|
+
.map(s => s.value || s.textContent?.trim() || '');
|
|
917
|
+
this.dispatchEvent(new CustomEvent('change', {
|
|
918
|
+
detail: {
|
|
919
|
+
value: selectedValues[0] ?? null,
|
|
920
|
+
values: selectedValues,
|
|
921
|
+
},
|
|
922
|
+
bubbles: true,
|
|
923
|
+
composed: true,
|
|
924
|
+
}));
|
|
925
|
+
};
|
|
926
|
+
}
|
|
927
|
+
connectedCallback() {
|
|
928
|
+
super.connectedCallback();
|
|
929
|
+
this.addEventListener('segmented-button--change', this._onSegmentChange);
|
|
930
|
+
}
|
|
931
|
+
disconnectedCallback() {
|
|
932
|
+
super.disconnectedCallback();
|
|
933
|
+
this.removeEventListener('segmented-button--change', this._onSegmentChange);
|
|
934
|
+
}
|
|
935
|
+
_getSegments() {
|
|
936
|
+
return Array.from(this.querySelectorAll('wc-segmented-button'));
|
|
937
|
+
}
|
|
938
|
+
render() {
|
|
939
|
+
return b `
|
|
940
|
+
<div class="segmented-button-group" role="group">
|
|
941
|
+
<slot></slot>
|
|
942
|
+
</div>
|
|
943
|
+
`;
|
|
944
|
+
}
|
|
945
|
+
}
|
|
946
|
+
SegmentedButtonGroup.styles = [css_248z$I];
|
|
947
|
+
SegmentedButtonGroup.SegmentedButton = SegmentedButton;
|
|
948
|
+
__decorate([
|
|
949
|
+
n({ type: Boolean, reflect: true, attribute: 'multi-select' })
|
|
950
|
+
], SegmentedButtonGroup.prototype, "multiSelect", void 0);
|
|
951
|
+
__decorate([
|
|
952
|
+
n({ type: Boolean, reflect: true })
|
|
953
|
+
], SegmentedButtonGroup.prototype, "nullable", void 0);
|
|
558
954
|
|
|
559
|
-
var css_248z$
|
|
955
|
+
var css_248z$H = i`:host {
|
|
560
956
|
display: none;
|
|
561
957
|
pointer-events: none;
|
|
562
958
|
position: absolute;
|
|
@@ -593,7 +989,7 @@ class FocusRing extends i$1 {
|
|
|
593
989
|
constructor() {
|
|
594
990
|
super(...arguments);
|
|
595
991
|
this.visible = false;
|
|
596
|
-
this.
|
|
992
|
+
this.for = '';
|
|
597
993
|
}
|
|
598
994
|
render() {
|
|
599
995
|
return A;
|
|
@@ -609,6 +1005,15 @@ class FocusRing extends i$1 {
|
|
|
609
1005
|
this.detach();
|
|
610
1006
|
}
|
|
611
1007
|
}
|
|
1008
|
+
set forElement(value) {
|
|
1009
|
+
if (value) {
|
|
1010
|
+
this._focusTarget = value;
|
|
1011
|
+
this.attach();
|
|
1012
|
+
}
|
|
1013
|
+
else {
|
|
1014
|
+
this.detach();
|
|
1015
|
+
}
|
|
1016
|
+
}
|
|
612
1017
|
connectedCallback() {
|
|
613
1018
|
super.connectedCallback();
|
|
614
1019
|
this.attach();
|
|
@@ -618,8 +1023,8 @@ class FocusRing extends i$1 {
|
|
|
618
1023
|
super.disconnectedCallback();
|
|
619
1024
|
}
|
|
620
1025
|
__focusin() {
|
|
621
|
-
|
|
622
|
-
this.visible =
|
|
1026
|
+
const focusTarget = this.__getFocusTarget();
|
|
1027
|
+
this.visible = focusTarget?.matches(':focus-visible') ?? false;
|
|
623
1028
|
}
|
|
624
1029
|
__focusout() {
|
|
625
1030
|
this.visible = false;
|
|
@@ -627,37 +1032,41 @@ class FocusRing extends i$1 {
|
|
|
627
1032
|
__pointerdown() {
|
|
628
1033
|
this.visible = false;
|
|
629
1034
|
}
|
|
1035
|
+
__getFocusTarget() {
|
|
1036
|
+
if (this._focusTarget) {
|
|
1037
|
+
return this._focusTarget;
|
|
1038
|
+
}
|
|
1039
|
+
const focusTarget = document.getElementById(this.for);
|
|
1040
|
+
if (focusTarget) {
|
|
1041
|
+
return focusTarget;
|
|
1042
|
+
}
|
|
1043
|
+
return undefined;
|
|
1044
|
+
}
|
|
630
1045
|
attach() {
|
|
631
|
-
|
|
632
|
-
if (
|
|
633
|
-
|
|
634
|
-
|
|
635
|
-
|
|
636
|
-
this._control[this.element].addEventListener('focusout', this.__focusin.bind(this));
|
|
637
|
-
// @ts-ignore
|
|
638
|
-
this._control[this.element].addEventListener('pointerdown', this.__focusin.bind(this));
|
|
1046
|
+
const focusTarget = this.__getFocusTarget();
|
|
1047
|
+
if (focusTarget) {
|
|
1048
|
+
focusTarget.addEventListener('focusin', this.__focusin.bind(this));
|
|
1049
|
+
focusTarget.addEventListener('focusout', this.__focusout.bind(this));
|
|
1050
|
+
focusTarget.addEventListener('pointerdown', this.__pointerdown.bind(this));
|
|
639
1051
|
}
|
|
640
1052
|
}
|
|
641
1053
|
detach() {
|
|
642
|
-
|
|
643
|
-
if (
|
|
644
|
-
|
|
645
|
-
|
|
646
|
-
|
|
647
|
-
this._control[this.element].removeEventListener('focusout', this.__focusout);
|
|
648
|
-
// @ts-ignore
|
|
649
|
-
this._control[this.element].removeEventListener('pointerdown', this.__pointerdown);
|
|
1054
|
+
const focusTarget = this.__getFocusTarget();
|
|
1055
|
+
if (focusTarget) {
|
|
1056
|
+
focusTarget.removeEventListener('focusin', this.__focusin.bind(this));
|
|
1057
|
+
focusTarget.removeEventListener('focusout', this.__focusout.bind(this));
|
|
1058
|
+
focusTarget.removeEventListener('pointerdown', this.__pointerdown.bind(this));
|
|
650
1059
|
}
|
|
651
1060
|
this._control = undefined;
|
|
652
1061
|
}
|
|
653
1062
|
}
|
|
654
|
-
FocusRing.styles = [css_248z$
|
|
1063
|
+
FocusRing.styles = [css_248z$H];
|
|
655
1064
|
__decorate([
|
|
656
1065
|
n({ type: Boolean, reflect: true })
|
|
657
1066
|
], FocusRing.prototype, "visible", void 0);
|
|
658
1067
|
__decorate([
|
|
659
1068
|
n({ type: String })
|
|
660
|
-
], FocusRing.prototype, "
|
|
1069
|
+
], FocusRing.prototype, "for", void 0);
|
|
661
1070
|
|
|
662
1071
|
const PRESS_GROW_MS = 450;
|
|
663
1072
|
const MINIMUM_PRESS_MS = 225;
|
|
@@ -744,10 +1153,26 @@ const FORCED_COLORS = window.matchMedia('(forced-colors: active)');
|
|
|
744
1153
|
*
|
|
745
1154
|
* @example
|
|
746
1155
|
* ```html
|
|
747
|
-
* <
|
|
1156
|
+
* <style>
|
|
1157
|
+
* .ripple-surface {
|
|
1158
|
+
* position: relative;
|
|
1159
|
+
* display: inline-flex;
|
|
1160
|
+
* align-items: center;
|
|
1161
|
+
* justify-content: center;
|
|
1162
|
+
* width: 220px;
|
|
1163
|
+
* height: 64px;
|
|
1164
|
+
* border-radius: 12px;
|
|
1165
|
+
* background: var(--color-surface-container-high);
|
|
1166
|
+
* color: var(--color-on-surface);
|
|
1167
|
+
* overflow: hidden;
|
|
1168
|
+
* cursor: pointer;
|
|
1169
|
+
* user-select: none;
|
|
1170
|
+
* }
|
|
1171
|
+
* </style>
|
|
1172
|
+
* <div class="ripple-surface">
|
|
748
1173
|
* <wc-ripple></wc-ripple>
|
|
749
|
-
*
|
|
750
|
-
* </
|
|
1174
|
+
* Ripple Effect
|
|
1175
|
+
* </div>
|
|
751
1176
|
* ```
|
|
752
1177
|
* @tags display
|
|
753
1178
|
*/
|
|
@@ -1112,7 +1537,7 @@ __decorate([
|
|
|
1112
1537
|
e$4('.surface')
|
|
1113
1538
|
], Ripple.prototype, "mdRoot", void 0);
|
|
1114
1539
|
|
|
1115
|
-
var css_248z$
|
|
1540
|
+
var css_248z$G = i`* {
|
|
1116
1541
|
box-sizing: border-box;
|
|
1117
1542
|
}
|
|
1118
1543
|
|
|
@@ -1282,7 +1707,7 @@ class AccordionItem extends i$1 {
|
|
|
1282
1707
|
}
|
|
1283
1708
|
}
|
|
1284
1709
|
_AccordionItem_id = new WeakMap();
|
|
1285
|
-
AccordionItem.styles = [css_248z$
|
|
1710
|
+
AccordionItem.styles = [css_248z$G];
|
|
1286
1711
|
__decorate([
|
|
1287
1712
|
n({ type: String, reflect: true })
|
|
1288
1713
|
], AccordionItem.prototype, "heading", void 0);
|
|
@@ -1296,7 +1721,7 @@ __decorate([
|
|
|
1296
1721
|
e$4('.accordion-heading')
|
|
1297
1722
|
], AccordionItem.prototype, "buttonElement", void 0);
|
|
1298
1723
|
|
|
1299
|
-
var css_248z$
|
|
1724
|
+
var css_248z$F = i`* {
|
|
1300
1725
|
box-sizing: border-box;
|
|
1301
1726
|
}
|
|
1302
1727
|
|
|
@@ -1415,7 +1840,7 @@ class Accordion extends i$1 {
|
|
|
1415
1840
|
return b `<div class="accordion"><slot></slot></div>`;
|
|
1416
1841
|
}
|
|
1417
1842
|
}
|
|
1418
|
-
Accordion.styles = [css_248z$
|
|
1843
|
+
Accordion.styles = [css_248z$F];
|
|
1419
1844
|
Accordion.Item = AccordionItem;
|
|
1420
1845
|
__decorate([
|
|
1421
1846
|
n({ type: Boolean, attribute: 'allow-multiple' })
|
|
@@ -1424,7 +1849,7 @@ __decorate([
|
|
|
1424
1849
|
o$2({ selector: 'p-accordion-item' })
|
|
1425
1850
|
], Accordion.prototype, "items", void 0);
|
|
1426
1851
|
|
|
1427
|
-
var css_248z$
|
|
1852
|
+
var css_248z$E = i`* {
|
|
1428
1853
|
box-sizing: border-box;
|
|
1429
1854
|
}
|
|
1430
1855
|
|
|
@@ -1495,7 +1920,7 @@ class Link extends i$1 {
|
|
|
1495
1920
|
</a>`;
|
|
1496
1921
|
}
|
|
1497
1922
|
}
|
|
1498
|
-
Link.styles = [css_248z$
|
|
1923
|
+
Link.styles = [css_248z$E];
|
|
1499
1924
|
__decorate([
|
|
1500
1925
|
n({ reflect: true })
|
|
1501
1926
|
], Link.prototype, "href", void 0);
|
|
@@ -1506,7 +1931,7 @@ __decorate([
|
|
|
1506
1931
|
r()
|
|
1507
1932
|
], Link.prototype, "tabIndexValue", void 0);
|
|
1508
1933
|
|
|
1509
|
-
var css_248z$
|
|
1934
|
+
var css_248z$D = i`* {
|
|
1510
1935
|
box-sizing: border-box;
|
|
1511
1936
|
}
|
|
1512
1937
|
|
|
@@ -1643,7 +2068,7 @@ slot::slotted(*) {
|
|
|
1643
2068
|
--_container-state-opacity: 0.08;
|
|
1644
2069
|
}`;
|
|
1645
2070
|
|
|
1646
|
-
var css_248z$
|
|
2071
|
+
var css_248z$C = i`:host([color=default]) {
|
|
1647
2072
|
--filled-tag-container-color: var(--color-surface);
|
|
1648
2073
|
--filled-tag-label-text-color: var(--color-on-surface);
|
|
1649
2074
|
--tonal-tag-container-color: var(--color-surface-container);
|
|
@@ -1709,7 +2134,7 @@ var css_248z$A = i`:host([color=default]) {
|
|
|
1709
2134
|
--outlined-tag-label-text-color: var(--color-purple);
|
|
1710
2135
|
}`;
|
|
1711
2136
|
|
|
1712
|
-
var css_248z$
|
|
2137
|
+
var css_248z$B = i`.tag {
|
|
1713
2138
|
font-family: var(--font-family-sans) !important;
|
|
1714
2139
|
}
|
|
1715
2140
|
|
|
@@ -1808,7 +2233,7 @@ class Tag extends i$1 {
|
|
|
1808
2233
|
}
|
|
1809
2234
|
// Define styles (Lit handles Scoping via Shadow DOM by default)
|
|
1810
2235
|
// You would typically import your tag.scss.js here or use the css tag
|
|
1811
|
-
Tag.styles = [css_248z$
|
|
2236
|
+
Tag.styles = [css_248z$D, css_248z$C, css_248z$B];
|
|
1812
2237
|
__decorate([
|
|
1813
2238
|
n({ type: Boolean })
|
|
1814
2239
|
], Tag.prototype, "dismissible", void 0);
|
|
@@ -1822,7 +2247,7 @@ __decorate([
|
|
|
1822
2247
|
n()
|
|
1823
2248
|
], Tag.prototype, "size", void 0);
|
|
1824
2249
|
|
|
1825
|
-
var css_248z$
|
|
2250
|
+
var css_248z$A = i`* {
|
|
1826
2251
|
box-sizing: border-box;
|
|
1827
2252
|
}
|
|
1828
2253
|
|
|
@@ -1934,7 +2359,7 @@ var css_248z$y = i`* {
|
|
|
1934
2359
|
color: var(--background);
|
|
1935
2360
|
}`;
|
|
1936
2361
|
|
|
1937
|
-
var css_248z$
|
|
2362
|
+
var css_248z$z = i`:host([color=red]) {
|
|
1938
2363
|
--chip-container-color: var(--color-red-container);
|
|
1939
2364
|
--chip-outline-color: var(--color-on-red-container);
|
|
1940
2365
|
}
|
|
@@ -1963,7 +2388,7 @@ var css_248z$x = i`:host([color=red]) {
|
|
|
1963
2388
|
--chip-outline-color: var(--color-on-purple-container);
|
|
1964
2389
|
}`;
|
|
1965
2390
|
|
|
1966
|
-
var css_248z$
|
|
2391
|
+
var css_248z$y = i`.tag {
|
|
1967
2392
|
font-family: var(--font-family-sans) !important;
|
|
1968
2393
|
}
|
|
1969
2394
|
|
|
@@ -2101,7 +2526,7 @@ class Chip extends i$1 {
|
|
|
2101
2526
|
}
|
|
2102
2527
|
// Define styles (Lit handles Scoping via Shadow DOM by default)
|
|
2103
2528
|
// You would typically import your tag.scss.js here or use the css tag
|
|
2104
|
-
Chip.styles = [css_248z$
|
|
2529
|
+
Chip.styles = [css_248z$A, css_248z$z, css_248z$y];
|
|
2105
2530
|
__decorate([
|
|
2106
2531
|
n({ type: Boolean })
|
|
2107
2532
|
], Chip.prototype, "dismissible", void 0);
|
|
@@ -2118,7 +2543,7 @@ __decorate([
|
|
|
2118
2543
|
n({ type: String })
|
|
2119
2544
|
], Chip.prototype, "imageSrc", void 0);
|
|
2120
2545
|
|
|
2121
|
-
var css_248z$
|
|
2546
|
+
var css_248z$x = i`:host {
|
|
2122
2547
|
display: block;
|
|
2123
2548
|
--progress-height: 0.25rem;
|
|
2124
2549
|
--progress-container-color: var(--color-primary);
|
|
@@ -2324,9 +2749,9 @@ class LinearProgress extends BaseProgress {
|
|
|
2324
2749
|
}
|
|
2325
2750
|
}
|
|
2326
2751
|
// Lit components use static styles for better performance
|
|
2327
|
-
LinearProgress.styles = [css_248z$
|
|
2752
|
+
LinearProgress.styles = [css_248z$x];
|
|
2328
2753
|
|
|
2329
|
-
var css_248z$
|
|
2754
|
+
var css_248z$w = i`:host {
|
|
2330
2755
|
display: inline-block;
|
|
2331
2756
|
--progress-height: 1.5rem;
|
|
2332
2757
|
--progress-line-thickness: 4px;
|
|
@@ -2489,9 +2914,9 @@ class CircularProgress extends BaseProgress {
|
|
|
2489
2914
|
}
|
|
2490
2915
|
}
|
|
2491
2916
|
// Lit components use static styles for better performance
|
|
2492
|
-
CircularProgress.styles = [css_248z$
|
|
2917
|
+
CircularProgress.styles = [css_248z$w];
|
|
2493
2918
|
|
|
2494
|
-
var css_248z$
|
|
2919
|
+
var css_248z$v = i`:host {
|
|
2495
2920
|
--skeleton-container-color: var(--color-surface-container);
|
|
2496
2921
|
--skeleton-element: var(--color-on-surface);
|
|
2497
2922
|
display: inline-block;
|
|
@@ -2595,12 +3020,12 @@ class Skeleton extends i$1 {
|
|
|
2595
3020
|
return b ` <div class="skeleton"></div>`;
|
|
2596
3021
|
}
|
|
2597
3022
|
}
|
|
2598
|
-
Skeleton.styles = [css_248z$
|
|
3023
|
+
Skeleton.styles = [css_248z$v];
|
|
2599
3024
|
__decorate([
|
|
2600
3025
|
n({ type: Boolean, reflect: true })
|
|
2601
3026
|
], Skeleton.prototype, "visible", void 0);
|
|
2602
3027
|
|
|
2603
|
-
var css_248z$
|
|
3028
|
+
var css_248z$u = i`* {
|
|
2604
3029
|
box-sizing: border-box;
|
|
2605
3030
|
}
|
|
2606
3031
|
|
|
@@ -2773,7 +3198,7 @@ class Input extends BaseInput {
|
|
|
2773
3198
|
`;
|
|
2774
3199
|
}
|
|
2775
3200
|
}
|
|
2776
|
-
Input.styles = [css_248z$
|
|
3201
|
+
Input.styles = [css_248z$u];
|
|
2777
3202
|
__decorate([
|
|
2778
3203
|
n({ type: String })
|
|
2779
3204
|
], Input.prototype, "value", void 0);
|
|
@@ -2832,7 +3257,7 @@ __decorate([
|
|
|
2832
3257
|
e$4('.input-element')
|
|
2833
3258
|
], Input.prototype, "inputElement", void 0);
|
|
2834
3259
|
|
|
2835
|
-
var css_248z$
|
|
3260
|
+
var css_248z$t = i`* {
|
|
2836
3261
|
box-sizing: border-box;
|
|
2837
3262
|
}
|
|
2838
3263
|
|
|
@@ -3200,7 +3625,7 @@ class Field extends i$1 {
|
|
|
3200
3625
|
return b `<div class="text-count">${this.textCount}</div>`;
|
|
3201
3626
|
}
|
|
3202
3627
|
}
|
|
3203
|
-
Field.styles = [css_248z$
|
|
3628
|
+
Field.styles = [css_248z$t];
|
|
3204
3629
|
__decorate([
|
|
3205
3630
|
n({ type: String })
|
|
3206
3631
|
], Field.prototype, "label", void 0);
|
|
@@ -3256,7 +3681,7 @@ __decorate([
|
|
|
3256
3681
|
r()
|
|
3257
3682
|
], Field.prototype, "slotEndHasContent", void 0);
|
|
3258
3683
|
|
|
3259
|
-
var css_248z$
|
|
3684
|
+
var css_248z$s = i`* {
|
|
3260
3685
|
box-sizing: border-box;
|
|
3261
3686
|
}
|
|
3262
3687
|
|
|
@@ -3453,7 +3878,7 @@ class NumberField extends BaseInput {
|
|
|
3453
3878
|
}
|
|
3454
3879
|
}
|
|
3455
3880
|
_NumberField_id = new WeakMap();
|
|
3456
|
-
NumberField.styles = [css_248z$
|
|
3881
|
+
NumberField.styles = [css_248z$s];
|
|
3457
3882
|
__decorate([
|
|
3458
3883
|
n({ type: Number })
|
|
3459
3884
|
], NumberField.prototype, "value", void 0);
|
|
@@ -3515,7 +3940,7 @@ __decorate([
|
|
|
3515
3940
|
e$4('.input-element')
|
|
3516
3941
|
], NumberField.prototype, "inputElement", void 0);
|
|
3517
3942
|
|
|
3518
|
-
var css_248z$
|
|
3943
|
+
var css_248z$r = i`* {
|
|
3519
3944
|
box-sizing: border-box;
|
|
3520
3945
|
}
|
|
3521
3946
|
|
|
@@ -3682,7 +4107,7 @@ class DatePicker extends BaseInput {
|
|
|
3682
4107
|
`;
|
|
3683
4108
|
}
|
|
3684
4109
|
}
|
|
3685
|
-
DatePicker.styles = [css_248z$
|
|
4110
|
+
DatePicker.styles = [css_248z$r];
|
|
3686
4111
|
__decorate([
|
|
3687
4112
|
n({ type: String })
|
|
3688
4113
|
], DatePicker.prototype, "value", void 0);
|
|
@@ -3738,7 +4163,7 @@ __decorate([
|
|
|
3738
4163
|
e$4('.input-element')
|
|
3739
4164
|
], DatePicker.prototype, "inputElement", void 0);
|
|
3740
4165
|
|
|
3741
|
-
var css_248z$
|
|
4166
|
+
var css_248z$q = i`* {
|
|
3742
4167
|
box-sizing: border-box;
|
|
3743
4168
|
}
|
|
3744
4169
|
|
|
@@ -3905,7 +4330,7 @@ class TimePicker extends BaseInput {
|
|
|
3905
4330
|
`;
|
|
3906
4331
|
}
|
|
3907
4332
|
}
|
|
3908
|
-
TimePicker.styles = [css_248z$
|
|
4333
|
+
TimePicker.styles = [css_248z$q];
|
|
3909
4334
|
__decorate([
|
|
3910
4335
|
n({ type: String })
|
|
3911
4336
|
], TimePicker.prototype, "value", void 0);
|
|
@@ -3961,7 +4386,7 @@ __decorate([
|
|
|
3961
4386
|
e$4('.input-element')
|
|
3962
4387
|
], TimePicker.prototype, "inputElement", void 0);
|
|
3963
4388
|
|
|
3964
|
-
var css_248z$
|
|
4389
|
+
var css_248z$p = i`* {
|
|
3965
4390
|
box-sizing: border-box;
|
|
3966
4391
|
}
|
|
3967
4392
|
|
|
@@ -4121,7 +4546,7 @@ class Textarea extends BaseInput {
|
|
|
4121
4546
|
`;
|
|
4122
4547
|
}
|
|
4123
4548
|
}
|
|
4124
|
-
Textarea.styles = [css_248z$
|
|
4549
|
+
Textarea.styles = [css_248z$p];
|
|
4125
4550
|
__decorate([
|
|
4126
4551
|
n({ type: String })
|
|
4127
4552
|
], Textarea.prototype, "value", void 0);
|
|
@@ -4180,7 +4605,7 @@ __decorate([
|
|
|
4180
4605
|
e$4('.input-element')
|
|
4181
4606
|
], Textarea.prototype, "inputElement", void 0);
|
|
4182
4607
|
|
|
4183
|
-
var css_248z$
|
|
4608
|
+
var css_248z$o = i`* {
|
|
4184
4609
|
box-sizing: border-box;
|
|
4185
4610
|
}
|
|
4186
4611
|
|
|
@@ -4521,7 +4946,7 @@ class Switch extends BaseInput {
|
|
|
4521
4946
|
`;
|
|
4522
4947
|
}
|
|
4523
4948
|
}
|
|
4524
|
-
Switch.styles = [css_248z$
|
|
4949
|
+
Switch.styles = [css_248z$o];
|
|
4525
4950
|
__decorate([
|
|
4526
4951
|
n({ type: Boolean })
|
|
4527
4952
|
], Switch.prototype, "value", void 0);
|
|
@@ -4565,7 +4990,7 @@ __decorate([
|
|
|
4565
4990
|
e$4('.input-native')
|
|
4566
4991
|
], Switch.prototype, "nativeElement", void 0);
|
|
4567
4992
|
|
|
4568
|
-
var css_248z$
|
|
4993
|
+
var css_248z$n = i`* {
|
|
4569
4994
|
box-sizing: border-box;
|
|
4570
4995
|
}
|
|
4571
4996
|
|
|
@@ -5035,7 +5460,7 @@ class Checkbox extends i$1 {
|
|
|
5035
5460
|
`;
|
|
5036
5461
|
}
|
|
5037
5462
|
}
|
|
5038
|
-
Checkbox.styles = [css_248z$
|
|
5463
|
+
Checkbox.styles = [css_248z$n];
|
|
5039
5464
|
__decorate([
|
|
5040
5465
|
n({ type: String })
|
|
5041
5466
|
], Checkbox.prototype, "name", void 0);
|
|
@@ -5082,7 +5507,7 @@ __decorate([
|
|
|
5082
5507
|
e$4('.input-native')
|
|
5083
5508
|
], Checkbox.prototype, "nativeElement", void 0);
|
|
5084
5509
|
|
|
5085
|
-
var css_248z$
|
|
5510
|
+
var css_248z$m = i`* {
|
|
5086
5511
|
box-sizing: border-box;
|
|
5087
5512
|
}
|
|
5088
5513
|
|
|
@@ -5169,9 +5594,9 @@ class Spinner extends i$1 {
|
|
|
5169
5594
|
`;
|
|
5170
5595
|
}
|
|
5171
5596
|
}
|
|
5172
|
-
Spinner.styles = [css_248z$
|
|
5597
|
+
Spinner.styles = [css_248z$m];
|
|
5173
5598
|
|
|
5174
|
-
var css_248z$
|
|
5599
|
+
var css_248z$l = i`* {
|
|
5175
5600
|
box-sizing: border-box;
|
|
5176
5601
|
}
|
|
5177
5602
|
|
|
@@ -5265,7 +5690,7 @@ var css_248z$j = i`* {
|
|
|
5265
5690
|
*
|
|
5266
5691
|
* @example
|
|
5267
5692
|
* ```html
|
|
5268
|
-
* <wc-container size="
|
|
5693
|
+
* <wc-container style="width: 80%; border: 1px dotted black;" size="md">Content</wc-container>
|
|
5269
5694
|
* ```
|
|
5270
5695
|
*/
|
|
5271
5696
|
class Container extends i$1 {
|
|
@@ -5289,12 +5714,12 @@ class Container extends i$1 {
|
|
|
5289
5714
|
`;
|
|
5290
5715
|
}
|
|
5291
5716
|
}
|
|
5292
|
-
Container.styles = [css_248z$
|
|
5717
|
+
Container.styles = [css_248z$l];
|
|
5293
5718
|
__decorate([
|
|
5294
5719
|
n({ type: String, reflect: true })
|
|
5295
5720
|
], Container.prototype, "size", void 0);
|
|
5296
5721
|
|
|
5297
|
-
var css_248z$
|
|
5722
|
+
var css_248z$k = i`* {
|
|
5298
5723
|
box-sizing: border-box;
|
|
5299
5724
|
}
|
|
5300
5725
|
|
|
@@ -5365,6 +5790,13 @@ var css_248z$i = i`* {
|
|
|
5365
5790
|
.empty-state .content {
|
|
5366
5791
|
width: 50%;
|
|
5367
5792
|
}
|
|
5793
|
+
.empty-state .headline {
|
|
5794
|
+
font-family: var(--typography-title-medium-font-family) !important;
|
|
5795
|
+
font-size: var(--typography-title-medium-font-size) !important;
|
|
5796
|
+
font-weight: var(--typography-title-medium-font-weight) !important;
|
|
5797
|
+
line-height: var(--typography-title-medium-line-height) !important;
|
|
5798
|
+
letter-spacing: var(--typography-title-medium-letter-spacing) !important;
|
|
5799
|
+
}
|
|
5368
5800
|
}
|
|
5369
5801
|
@container emptystate (max-width: 671px) {
|
|
5370
5802
|
.empty-state .empty-state-container {
|
|
@@ -5376,6 +5808,13 @@ var css_248z$i = i`* {
|
|
|
5376
5808
|
width: 100%;
|
|
5377
5809
|
justify-content: center;
|
|
5378
5810
|
}
|
|
5811
|
+
.empty-state .headline {
|
|
5812
|
+
font-family: var(--typography-title-small-font-family) !important;
|
|
5813
|
+
font-size: var(--typography-title-small-font-size) !important;
|
|
5814
|
+
font-weight: var(--typography-title-small-font-weight) !important;
|
|
5815
|
+
line-height: var(--typography-title-small-line-height) !important;
|
|
5816
|
+
letter-spacing: var(--typography-title-small-letter-spacing) !important;
|
|
5817
|
+
}
|
|
5379
5818
|
}`;
|
|
5380
5819
|
|
|
5381
5820
|
/**
|
|
@@ -5387,7 +5826,7 @@ var css_248z$i = i`* {
|
|
|
5387
5826
|
*
|
|
5388
5827
|
* @example
|
|
5389
5828
|
* ```html
|
|
5390
|
-
* <wc-empty-state headline="No items found"></wc-empty-state>
|
|
5829
|
+
* <wc-empty-state width="80%" headline="No items found"></wc-empty-state>
|
|
5391
5830
|
* ```
|
|
5392
5831
|
*/
|
|
5393
5832
|
class EmptyState extends i$1 {
|
|
@@ -5417,7 +5856,7 @@ class EmptyState extends i$1 {
|
|
|
5417
5856
|
__renderTitle() {
|
|
5418
5857
|
if (!this.headline)
|
|
5419
5858
|
return A;
|
|
5420
|
-
return b `<div class="
|
|
5859
|
+
return b `<div class="headline">${this.headline}</div>`;
|
|
5421
5860
|
}
|
|
5422
5861
|
__renderDescription() {
|
|
5423
5862
|
if (!this.description)
|
|
@@ -5450,7 +5889,7 @@ class EmptyState extends i$1 {
|
|
|
5450
5889
|
}
|
|
5451
5890
|
}
|
|
5452
5891
|
// Lit handles styles in a static property for better performance
|
|
5453
|
-
EmptyState.styles = [css_248z$
|
|
5892
|
+
EmptyState.styles = [css_248z$k];
|
|
5454
5893
|
__decorate([
|
|
5455
5894
|
n({ type: String, reflect: true })
|
|
5456
5895
|
], EmptyState.prototype, "illustration", void 0);
|
|
@@ -5464,7 +5903,7 @@ __decorate([
|
|
|
5464
5903
|
r()
|
|
5465
5904
|
], EmptyState.prototype, "vertical", void 0);
|
|
5466
5905
|
|
|
5467
|
-
var css_248z$
|
|
5906
|
+
var css_248z$j = i`* {
|
|
5468
5907
|
box-sizing: border-box;
|
|
5469
5908
|
}
|
|
5470
5909
|
|
|
@@ -7290,7 +7729,7 @@ class Tooltip extends i$1 {
|
|
|
7290
7729
|
`;
|
|
7291
7730
|
}
|
|
7292
7731
|
}
|
|
7293
|
-
Tooltip.styles = [css_248z$
|
|
7732
|
+
Tooltip.styles = [css_248z$j];
|
|
7294
7733
|
Tooltip.CLOSE_OTHERS_EVENT = 'tooltip--open';
|
|
7295
7734
|
__decorate([
|
|
7296
7735
|
n()
|
|
@@ -7314,7 +7753,7 @@ __decorate([
|
|
|
7314
7753
|
e$4('#tooltip')
|
|
7315
7754
|
], Tooltip.prototype, "floatingEl", void 0);
|
|
7316
7755
|
|
|
7317
|
-
var css_248z$
|
|
7756
|
+
var css_248z$i = i`* {
|
|
7318
7757
|
box-sizing: border-box;
|
|
7319
7758
|
}
|
|
7320
7759
|
|
|
@@ -7356,7 +7795,7 @@ ol {
|
|
|
7356
7795
|
* SPDX-License-Identifier: BSD-3-Clause
|
|
7357
7796
|
*/const o=o=>o??A;
|
|
7358
7797
|
|
|
7359
|
-
var css_248z$
|
|
7798
|
+
var css_248z$h = i`* {
|
|
7360
7799
|
box-sizing: border-box;
|
|
7361
7800
|
}
|
|
7362
7801
|
|
|
@@ -7486,7 +7925,7 @@ class BreadcrumbItem extends i$1 {
|
|
|
7486
7925
|
`;
|
|
7487
7926
|
}
|
|
7488
7927
|
}
|
|
7489
|
-
BreadcrumbItem.styles = [css_248z$
|
|
7928
|
+
BreadcrumbItem.styles = [css_248z$h];
|
|
7490
7929
|
__decorate([
|
|
7491
7930
|
n({ reflect: true })
|
|
7492
7931
|
], BreadcrumbItem.prototype, "href", void 0);
|
|
@@ -7540,13 +7979,13 @@ class Breadcrumb extends i$1 {
|
|
|
7540
7979
|
</nav>`;
|
|
7541
7980
|
}
|
|
7542
7981
|
}
|
|
7543
|
-
Breadcrumb.styles = [css_248z$
|
|
7982
|
+
Breadcrumb.styles = [css_248z$i];
|
|
7544
7983
|
Breadcrumb.Item = BreadcrumbItem;
|
|
7545
7984
|
__decorate([
|
|
7546
7985
|
n({ type: String })
|
|
7547
7986
|
], Breadcrumb.prototype, "label", void 0);
|
|
7548
7987
|
|
|
7549
|
-
var css_248z$
|
|
7988
|
+
var css_248z$g = i`* {
|
|
7550
7989
|
box-sizing: border-box;
|
|
7551
7990
|
}
|
|
7552
7991
|
|
|
@@ -7556,22 +7995,34 @@ var css_248z$e = i`* {
|
|
|
7556
7995
|
|
|
7557
7996
|
.menu {
|
|
7558
7997
|
display: flex;
|
|
7559
|
-
position:
|
|
7998
|
+
position: fixed;
|
|
7560
7999
|
z-index: var(--menu-z-index, 1000);
|
|
7561
8000
|
min-width: 112px;
|
|
7562
8001
|
padding-block: var(--spacing-050);
|
|
8002
|
+
transform-origin: top center;
|
|
8003
|
+
--_menu-enter-duration: var(--duration-medium1, 250ms);
|
|
8004
|
+
--_menu-exit-duration: var(--duration-short4, 200ms);
|
|
8005
|
+
--_menu-enter-easing: cubic-bezier(0.05, 0.7, 0.1, 1);
|
|
8006
|
+
--_menu-exit-easing: cubic-bezier(0.3, 0, 0.8, 0.15);
|
|
8007
|
+
transition-property: opacity, transform, visibility;
|
|
8008
|
+
transition-duration: var(--_menu-exit-duration), var(--_menu-exit-duration), 0ms;
|
|
8009
|
+
transition-delay: 0ms, 0ms, var(--_menu-exit-duration);
|
|
8010
|
+
transition-timing-function: var(--_menu-exit-easing), var(--_menu-exit-easing), linear;
|
|
7563
8011
|
}
|
|
7564
8012
|
.menu.closed {
|
|
7565
|
-
display: none;
|
|
7566
8013
|
opacity: 0;
|
|
7567
8014
|
visibility: hidden;
|
|
7568
8015
|
pointer-events: none;
|
|
8016
|
+
transform: translateY(-4px) scale(0.97);
|
|
7569
8017
|
}
|
|
7570
8018
|
.menu.open {
|
|
7571
|
-
display: flex;
|
|
7572
8019
|
opacity: 1;
|
|
7573
8020
|
visibility: visible;
|
|
7574
8021
|
pointer-events: auto;
|
|
8022
|
+
transform: translateY(0) scale(1);
|
|
8023
|
+
transition-duration: var(--_menu-enter-duration), var(--_menu-enter-duration), 0ms;
|
|
8024
|
+
transition-delay: 0ms, 0ms, 0ms;
|
|
8025
|
+
transition-timing-function: var(--_menu-enter-easing), var(--_menu-enter-easing), linear;
|
|
7575
8026
|
}
|
|
7576
8027
|
.menu .menu-content {
|
|
7577
8028
|
display: flex;
|
|
@@ -7617,6 +8068,12 @@ var css_248z$e = i`* {
|
|
|
7617
8068
|
--elevation-container-shape-variant: var(--_container-corner-shape-variant);
|
|
7618
8069
|
}
|
|
7619
8070
|
|
|
8071
|
+
@media (prefers-reduced-motion: reduce) {
|
|
8072
|
+
.menu {
|
|
8073
|
+
transition: none;
|
|
8074
|
+
transform: none;
|
|
8075
|
+
}
|
|
8076
|
+
}
|
|
7620
8077
|
.menu {
|
|
7621
8078
|
--_container-shape-start-start: var(--shape-corner-large);
|
|
7622
8079
|
--_container-shape-start-end: var(--shape-corner-large);
|
|
@@ -7630,7 +8087,7 @@ var css_248z$e = i`* {
|
|
|
7630
8087
|
--_container-color: var(--color-tertiary-container);
|
|
7631
8088
|
}`;
|
|
7632
8089
|
|
|
7633
|
-
var css_248z$
|
|
8090
|
+
var css_248z$f = i`* {
|
|
7634
8091
|
box-sizing: border-box;
|
|
7635
8092
|
}
|
|
7636
8093
|
|
|
@@ -7640,6 +8097,7 @@ var css_248z$d = i`* {
|
|
|
7640
8097
|
|
|
7641
8098
|
:host {
|
|
7642
8099
|
padding-inline: var(--spacing-050);
|
|
8100
|
+
outline: none;
|
|
7643
8101
|
}
|
|
7644
8102
|
|
|
7645
8103
|
.menu-item {
|
|
@@ -7741,7 +8199,7 @@ var css_248z$d = i`* {
|
|
|
7741
8199
|
display: none;
|
|
7742
8200
|
}`;
|
|
7743
8201
|
|
|
7744
|
-
var css_248z$
|
|
8202
|
+
var css_248z$e = i`:host-context([variant=standard]) {
|
|
7745
8203
|
--menu-item-label-color: var(--color-on-surface-variant);
|
|
7746
8204
|
--menu-item-label-selected-color: var(--color-on-tertiary-container);
|
|
7747
8205
|
--menu-item-container-selected-color: var(--color-tertiary-container);
|
|
@@ -7855,9 +8313,6 @@ class MenuItem extends i$1 {
|
|
|
7855
8313
|
__isLink() {
|
|
7856
8314
|
return !!this.href;
|
|
7857
8315
|
}
|
|
7858
|
-
get focusTarget() {
|
|
7859
|
-
return this;
|
|
7860
|
-
}
|
|
7861
8316
|
render() {
|
|
7862
8317
|
const isLink = this.__isLink();
|
|
7863
8318
|
const cssClasses = {
|
|
@@ -7891,11 +8346,7 @@ class MenuItem extends i$1 {
|
|
|
7891
8346
|
}
|
|
7892
8347
|
renderContent() {
|
|
7893
8348
|
return b `
|
|
7894
|
-
<wc-focus-ring
|
|
7895
|
-
class="focus-ring"
|
|
7896
|
-
.control=${this}
|
|
7897
|
-
element="focusTarget"
|
|
7898
|
-
></wc-focus-ring>
|
|
8349
|
+
<wc-focus-ring class="focus-ring" .control=${this} .forElement=${this}></wc-focus-ring>
|
|
7899
8350
|
<div class="background"></div>
|
|
7900
8351
|
<wc-ripple class="ripple"></wc-ripple>
|
|
7901
8352
|
|
|
@@ -7909,7 +8360,7 @@ class MenuItem extends i$1 {
|
|
|
7909
8360
|
`;
|
|
7910
8361
|
}
|
|
7911
8362
|
}
|
|
7912
|
-
MenuItem.styles = [css_248z$
|
|
8363
|
+
MenuItem.styles = [css_248z$f, css_248z$e];
|
|
7913
8364
|
__decorate([
|
|
7914
8365
|
n({ type: Boolean, reflect: true })
|
|
7915
8366
|
], MenuItem.prototype, "disabled", void 0);
|
|
@@ -8005,8 +8456,13 @@ class Menu extends i$1 {
|
|
|
8005
8456
|
this._closeReason = { kind: 'programmatic' };
|
|
8006
8457
|
this._onItemActivate = (event) => {
|
|
8007
8458
|
const customEvent = event;
|
|
8459
|
+
const { item } = customEvent.detail;
|
|
8460
|
+
const ownedItems = this.items;
|
|
8461
|
+
if (!ownedItems.includes(item)) {
|
|
8462
|
+
return;
|
|
8463
|
+
}
|
|
8008
8464
|
const enabledItems = this._enabledItems();
|
|
8009
|
-
const nextIndex = enabledItems.indexOf(
|
|
8465
|
+
const nextIndex = enabledItems.indexOf(item);
|
|
8010
8466
|
if (nextIndex >= 0) {
|
|
8011
8467
|
this.activeIndex = nextIndex;
|
|
8012
8468
|
this._syncRovingTabIndex();
|
|
@@ -8014,6 +8470,9 @@ class Menu extends i$1 {
|
|
|
8014
8470
|
};
|
|
8015
8471
|
this._onItemRequestClose = (event) => {
|
|
8016
8472
|
const customEvent = event;
|
|
8473
|
+
if (!this.items.includes(customEvent.detail.item)) {
|
|
8474
|
+
return;
|
|
8475
|
+
}
|
|
8017
8476
|
if (customEvent.defaultPrevented) {
|
|
8018
8477
|
return;
|
|
8019
8478
|
}
|
|
@@ -8027,6 +8486,9 @@ class Menu extends i$1 {
|
|
|
8027
8486
|
if (!this.open) {
|
|
8028
8487
|
return;
|
|
8029
8488
|
}
|
|
8489
|
+
if (!this._ownsKeyboardEvent(event)) {
|
|
8490
|
+
return;
|
|
8491
|
+
}
|
|
8030
8492
|
switch (event.key) {
|
|
8031
8493
|
case 'ArrowDown':
|
|
8032
8494
|
event.preventDefault();
|
|
@@ -8175,7 +8637,6 @@ class Menu extends i$1 {
|
|
|
8175
8637
|
for (let index = 0; index < enabledItems.length; index += 1) {
|
|
8176
8638
|
const currentItem = enabledItems[index];
|
|
8177
8639
|
currentItem.tabIndex = index === this.activeIndex ? 0 : -1;
|
|
8178
|
-
currentItem.selected = index === this.activeIndex;
|
|
8179
8640
|
}
|
|
8180
8641
|
}
|
|
8181
8642
|
_setActiveByOffset(offset) {
|
|
@@ -8212,6 +8673,11 @@ class Menu extends i$1 {
|
|
|
8212
8673
|
_getFirstEnabledItem() {
|
|
8213
8674
|
return this._enabledItems()[0] ?? null;
|
|
8214
8675
|
}
|
|
8676
|
+
_ownsKeyboardEvent(event) {
|
|
8677
|
+
const path = event.composedPath();
|
|
8678
|
+
const ownedItems = this.items;
|
|
8679
|
+
return path.some(target => target instanceof MenuItem && ownedItems.includes(target));
|
|
8680
|
+
}
|
|
8215
8681
|
_isWithinMenuTree(node) {
|
|
8216
8682
|
if (!node) {
|
|
8217
8683
|
return false;
|
|
@@ -8309,7 +8775,7 @@ class Menu extends i$1 {
|
|
|
8309
8775
|
</div>`;
|
|
8310
8776
|
}
|
|
8311
8777
|
}
|
|
8312
|
-
Menu.styles = [css_248z$
|
|
8778
|
+
Menu.styles = [css_248z$g];
|
|
8313
8779
|
Menu.Item = MenuItem;
|
|
8314
8780
|
__decorate([
|
|
8315
8781
|
n({ type: Boolean, reflect: true })
|
|
@@ -8342,7 +8808,7 @@ __decorate([
|
|
|
8342
8808
|
e$4('.menu')
|
|
8343
8809
|
], Menu.prototype, "menuListElement", void 0);
|
|
8344
8810
|
|
|
8345
|
-
var css_248z$
|
|
8811
|
+
var css_248z$d = i`* {
|
|
8346
8812
|
box-sizing: border-box;
|
|
8347
8813
|
}
|
|
8348
8814
|
|
|
@@ -8536,7 +9002,7 @@ class SubMenu extends i$1 {
|
|
|
8536
9002
|
`;
|
|
8537
9003
|
}
|
|
8538
9004
|
}
|
|
8539
|
-
SubMenu.styles = [css_248z$
|
|
9005
|
+
SubMenu.styles = [css_248z$d];
|
|
8540
9006
|
__decorate([
|
|
8541
9007
|
n({ type: Number, attribute: 'hover-open-delay' })
|
|
8542
9008
|
], SubMenu.prototype, "hoverOpenDelay", void 0);
|
|
@@ -8556,7 +9022,7 @@ __decorate([
|
|
|
8556
9022
|
o$2({ slot: 'menu' })
|
|
8557
9023
|
], SubMenu.prototype, "_menus", void 0);
|
|
8558
9024
|
|
|
8559
|
-
var css_248z$
|
|
9025
|
+
var css_248z$c = i`@charset "UTF-8";
|
|
8560
9026
|
:host {
|
|
8561
9027
|
display: block;
|
|
8562
9028
|
height: 100%;
|
|
@@ -8713,7 +9179,7 @@ class Image extends i$1 {
|
|
|
8713
9179
|
`;
|
|
8714
9180
|
}
|
|
8715
9181
|
}
|
|
8716
|
-
Image.styles = [css_248z$
|
|
9182
|
+
Image.styles = [css_248z$c];
|
|
8717
9183
|
__decorate([
|
|
8718
9184
|
n({ reflect: true })
|
|
8719
9185
|
], Image.prototype, "src", void 0);
|
|
@@ -8736,7 +9202,7 @@ __decorate([
|
|
|
8736
9202
|
r()
|
|
8737
9203
|
], Image.prototype, "_previewOpen", void 0);
|
|
8738
9204
|
|
|
8739
|
-
var css_248z$
|
|
9205
|
+
var css_248z$b = i`* {
|
|
8740
9206
|
box-sizing: border-box;
|
|
8741
9207
|
}
|
|
8742
9208
|
|
|
@@ -8765,7 +9231,7 @@ var css_248z$9 = i`* {
|
|
|
8765
9231
|
flex-direction: column;
|
|
8766
9232
|
align-items: center;
|
|
8767
9233
|
justify-content: center;
|
|
8768
|
-
height:
|
|
9234
|
+
height: 100%;
|
|
8769
9235
|
padding: 0 var(--_container-padding);
|
|
8770
9236
|
width: 100%;
|
|
8771
9237
|
cursor: pointer;
|
|
@@ -8780,43 +9246,47 @@ var css_248z$9 = i`* {
|
|
|
8780
9246
|
display: flex;
|
|
8781
9247
|
align-items: center;
|
|
8782
9248
|
justify-content: center;
|
|
8783
|
-
gap: 0;
|
|
8784
9249
|
width: 100%;
|
|
8785
9250
|
height: 100%;
|
|
8786
9251
|
z-index: 0;
|
|
8787
9252
|
color: var(--_label-text-color);
|
|
8788
9253
|
opacity: var(--_label-text-opacity, 1);
|
|
9254
|
+
transition: color var(--duration-short4) var(--easing-standard), opacity var(--duration-short4) var(--easing-standard);
|
|
8789
9255
|
--icon-size: var(--tab-icon-size, var(--_tab-icon-size));
|
|
8790
9256
|
--icon-color: var(--_label-text-color);
|
|
8791
9257
|
}
|
|
8792
|
-
.tab .tab-content .slot-container {
|
|
8793
|
-
display: none;
|
|
8794
|
-
}
|
|
8795
9258
|
.tab .tab-content ::slotted([slot=icon]) {
|
|
8796
|
-
flex: none;
|
|
8797
9259
|
color: var(--_label-text-color);
|
|
8798
9260
|
--icon-size: var(--tab-icon-size, var(--_tab-icon-size));
|
|
8799
9261
|
--icon-color: var(--_label-text-color);
|
|
8800
9262
|
}
|
|
8801
9263
|
.tab .tab-content ::slotted([slot=badge]) {
|
|
8802
|
-
flex: none;
|
|
8803
|
-
margin-inline-start: var(--_tab-badge-label-spacing, 0);
|
|
8804
9264
|
--badge-color: var(--_tab-badge-color, var(--color-error));
|
|
8805
9265
|
}
|
|
8806
|
-
.tab.has-icon .tab-content {
|
|
8807
|
-
gap: var(--_tab-icon-label-spacing);
|
|
8808
|
-
}
|
|
8809
9266
|
.tab .indicator {
|
|
8810
9267
|
position: absolute;
|
|
8811
9268
|
pointer-events: none;
|
|
8812
9269
|
z-index: 1;
|
|
8813
|
-
opacity: 0;
|
|
8814
9270
|
background: var(--_active-indicator-color);
|
|
8815
9271
|
border-radius: var(--_active-indicator-shape);
|
|
8816
|
-
transform
|
|
9272
|
+
transform: scaleX(0.6);
|
|
9273
|
+
transform-origin: center bottom;
|
|
8817
9274
|
height: var(--_active-indicator-height);
|
|
8818
9275
|
inset: auto 0px 0px;
|
|
8819
9276
|
opacity: 0;
|
|
9277
|
+
transition: transform var(--duration-medium2) var(--easing-standard), opacity var(--duration-short4) var(--easing-standard);
|
|
9278
|
+
will-change: transform, opacity;
|
|
9279
|
+
}
|
|
9280
|
+
.tab .background {
|
|
9281
|
+
position: absolute;
|
|
9282
|
+
inset: 0;
|
|
9283
|
+
pointer-events: none;
|
|
9284
|
+
z-index: 0;
|
|
9285
|
+
opacity: 0;
|
|
9286
|
+
transform: scaleX(0.6);
|
|
9287
|
+
transform-origin: center center;
|
|
9288
|
+
transition: transform var(--duration-medium2) var(--easing-standard), opacity var(--duration-short4) var(--easing-standard), background-color var(--duration-short4) var(--easing-standard);
|
|
9289
|
+
will-change: transform, opacity;
|
|
8820
9290
|
}
|
|
8821
9291
|
.tab.has-content .slot-container {
|
|
8822
9292
|
display: flex;
|
|
@@ -8858,8 +9328,7 @@ var css_248z$9 = i`* {
|
|
|
8858
9328
|
border-end-end-radius: var(--_container-shape-end-end);
|
|
8859
9329
|
}
|
|
8860
9330
|
|
|
8861
|
-
:host-context([variant=
|
|
8862
|
-
--_tab-height: 100%;
|
|
9331
|
+
:host-context([variant=primary]) .tab {
|
|
8863
9332
|
--_container-padding: 1rem;
|
|
8864
9333
|
--_tab-icon-size: 1.5rem;
|
|
8865
9334
|
--_tab-icon-label-spacing: 0.5rem;
|
|
@@ -8873,33 +9342,49 @@ var css_248z$9 = i`* {
|
|
|
8873
9342
|
--_container-shape-end-end: var(--shape-corner-small);
|
|
8874
9343
|
--_active-indicator-color: var(--color-primary);
|
|
8875
9344
|
--_active-indicator-shape: 3px 3px 0 0;
|
|
8876
|
-
--_active-indicator-height:
|
|
9345
|
+
--_active-indicator-height: 2px;
|
|
8877
9346
|
}
|
|
8878
|
-
:host-context([variant=
|
|
9347
|
+
:host-context([variant=primary]) .tab .focus-ring {
|
|
8879
9348
|
inset: 3px 3px 4px 3px;
|
|
8880
9349
|
}
|
|
8881
|
-
:host-context([variant=
|
|
9350
|
+
:host-context([variant=primary]) .tab .tab-content {
|
|
9351
|
+
flex-direction: column;
|
|
9352
|
+
}
|
|
9353
|
+
:host-context([variant=primary]) .tab .tab-content .icon-section {
|
|
9354
|
+
position: relative;
|
|
9355
|
+
}
|
|
9356
|
+
:host-context([variant=primary]) .tab .tab-content .icon-section ::slotted([slot=badge]) {
|
|
9357
|
+
position: absolute;
|
|
9358
|
+
top: 0;
|
|
9359
|
+
left: calc(100% - 3px);
|
|
9360
|
+
}
|
|
9361
|
+
:host-context([variant=primary]) .tab .tab-content .icon-section ::slotted([slot=badge][value]) {
|
|
9362
|
+
position: absolute;
|
|
9363
|
+
top: 0;
|
|
9364
|
+
left: calc(100% - 6px);
|
|
9365
|
+
}
|
|
9366
|
+
:host-context([variant=primary]) .tab.active .indicator {
|
|
8882
9367
|
opacity: 1;
|
|
9368
|
+
transform: scaleX(1);
|
|
8883
9369
|
}
|
|
8884
|
-
:host-context([variant=
|
|
9370
|
+
:host-context([variant=primary]) .tab.active .focus-ring {
|
|
8885
9371
|
inset: 3px 3px calc(4px + var(--_active-indicator-height)) 3px;
|
|
8886
9372
|
}
|
|
8887
|
-
:host-context([variant=
|
|
9373
|
+
:host-context([variant=primary]) .tab:hover:not(:where(.disabled)) {
|
|
8888
9374
|
--_container-state-opacity: 0.08;
|
|
8889
9375
|
}
|
|
8890
|
-
:host-context([variant=
|
|
9376
|
+
:host-context([variant=primary]) .tab.pressed:not(:where(.disabled)) {
|
|
8891
9377
|
--_container-state-opacity: 0.12;
|
|
8892
9378
|
}
|
|
8893
|
-
:host-context([variant=
|
|
9379
|
+
:host-context([variant=primary]) .tab.disabled {
|
|
8894
9380
|
--_label-text-color: var(--color-on-surface);
|
|
8895
9381
|
--_label-text-opacity: 0.38;
|
|
8896
9382
|
}
|
|
8897
|
-
:host-context([variant=
|
|
9383
|
+
:host-context([variant=primary]) .tab.disabled .ripple {
|
|
8898
9384
|
display: none;
|
|
8899
9385
|
}
|
|
8900
9386
|
|
|
8901
|
-
:host-context([variant=
|
|
8902
|
-
--_tab-height: 100%;
|
|
9387
|
+
:host-context([variant=secondary]) .tab {
|
|
8903
9388
|
--_container-padding: 1rem;
|
|
8904
9389
|
--_tab-icon-size: 1.25rem;
|
|
8905
9390
|
--_tab-icon-label-spacing: 0.5rem;
|
|
@@ -8915,27 +9400,169 @@ var css_248z$9 = i`* {
|
|
|
8915
9400
|
--_active-indicator-shape: 0;
|
|
8916
9401
|
--_active-indicator-height: 2px;
|
|
8917
9402
|
}
|
|
8918
|
-
:host-context([variant=
|
|
9403
|
+
:host-context([variant=secondary]) .tab .focus-ring {
|
|
8919
9404
|
inset: 3px 3px 4px 3px;
|
|
8920
9405
|
}
|
|
8921
|
-
:host-context([variant=
|
|
9406
|
+
:host-context([variant=secondary]) .tab .tab-content ::slotted([slot=icon]) {
|
|
9407
|
+
margin-inline-end: var(--_tab-icon-label-spacing);
|
|
9408
|
+
}
|
|
9409
|
+
:host-context([variant=secondary]) .tab .tab-content ::slotted([slot=badge]) {
|
|
9410
|
+
margin-inline-start: var(--_tab-badge-label-spacing);
|
|
9411
|
+
}
|
|
9412
|
+
:host-context([variant=secondary]) .tab.active .indicator {
|
|
8922
9413
|
opacity: 1;
|
|
9414
|
+
transform: scaleX(1);
|
|
8923
9415
|
}
|
|
8924
|
-
:host-context([variant=
|
|
9416
|
+
:host-context([variant=secondary]) .tab.active .focus-ring {
|
|
8925
9417
|
inset: 3px 3px calc(4px + var(--_active-indicator-height)) 3px;
|
|
8926
9418
|
}
|
|
8927
|
-
:host-context([variant=
|
|
9419
|
+
:host-context([variant=secondary]) .tab:hover:not(:where(.disabled)) {
|
|
9420
|
+
--_container-state-opacity: 0.08;
|
|
9421
|
+
}
|
|
9422
|
+
:host-context([variant=secondary]) .tab.pressed:not(:where(.disabled)) {
|
|
9423
|
+
--_container-state-opacity: 0.12;
|
|
9424
|
+
}
|
|
9425
|
+
:host-context([variant=secondary]) .tab.disabled {
|
|
9426
|
+
--_label-text-color: var(--color-on-surface);
|
|
9427
|
+
--_label-text-opacity: 0.38;
|
|
9428
|
+
}
|
|
9429
|
+
:host-context([variant=secondary]) .tab.disabled .ripple {
|
|
9430
|
+
display: none;
|
|
9431
|
+
}
|
|
9432
|
+
|
|
9433
|
+
:host-context([variant=filled]) .tab {
|
|
9434
|
+
--_container-padding: 1rem;
|
|
9435
|
+
--_tab-icon-size: 1.25rem;
|
|
9436
|
+
--_tab-icon-label-spacing: 0.5rem;
|
|
9437
|
+
--_tab-badge-label-spacing: 0.25rem;
|
|
9438
|
+
--_tab-badge-color: var(--color-error);
|
|
9439
|
+
--_label-text-color: var(--color-on-surface-variant);
|
|
9440
|
+
--_container-state-color: var(--color-on-surface);
|
|
9441
|
+
--_container-shape-start-start: var(--shape-corner-medium);
|
|
9442
|
+
--_container-shape-start-end: var(--shape-corner-medium);
|
|
9443
|
+
--_container-shape-end-start: var(--shape-corner-medium);
|
|
9444
|
+
--_container-shape-end-end: var(--shape-corner-medium);
|
|
9445
|
+
--_container-corner-shape-variant: squircle;
|
|
9446
|
+
--_active-surface-color: var(--color-surface);
|
|
9447
|
+
}
|
|
9448
|
+
:host-context([variant=filled]) .tab .focus-ring {
|
|
9449
|
+
inset: 2px;
|
|
9450
|
+
}
|
|
9451
|
+
:host-context([variant=filled]) .tab .tab-content ::slotted([slot=icon]) {
|
|
9452
|
+
margin-inline-end: var(--_tab-icon-label-spacing);
|
|
9453
|
+
}
|
|
9454
|
+
:host-context([variant=filled]) .tab .tab-content ::slotted([slot=badge]) {
|
|
9455
|
+
margin-inline-start: var(--_tab-badge-label-spacing);
|
|
9456
|
+
}
|
|
9457
|
+
:host-context([variant=filled]) .tab .indicator {
|
|
9458
|
+
display: none;
|
|
9459
|
+
}
|
|
9460
|
+
:host-context([variant=filled]) .tab .ripple {
|
|
9461
|
+
border-start-start-radius: var(--_container-shape-start-start);
|
|
9462
|
+
border-start-end-radius: var(--_container-shape-start-end);
|
|
9463
|
+
border-end-start-radius: var(--_container-shape-end-start);
|
|
9464
|
+
border-end-end-radius: var(--_container-shape-end-end);
|
|
9465
|
+
}
|
|
9466
|
+
:host-context([variant=filled]) .tab .background {
|
|
9467
|
+
corner-shape: var(--_container-corner-shape-variant);
|
|
9468
|
+
border-start-start-radius: var(--_container-shape-start-start);
|
|
9469
|
+
border-start-end-radius: var(--_container-shape-start-end);
|
|
9470
|
+
border-end-start-radius: var(--_container-shape-end-start);
|
|
9471
|
+
border-end-end-radius: var(--_container-shape-end-end);
|
|
9472
|
+
background: var(--_active-surface-color);
|
|
9473
|
+
}
|
|
9474
|
+
:host-context([variant=filled]) .tab.active {
|
|
9475
|
+
--_label-text-color: var(--color-on-surface);
|
|
9476
|
+
}
|
|
9477
|
+
:host-context([variant=filled]) .tab.active .background {
|
|
9478
|
+
opacity: 1;
|
|
9479
|
+
transform: scaleX(1);
|
|
9480
|
+
}
|
|
9481
|
+
:host-context([variant=filled]) .tab.active .ripple {
|
|
9482
|
+
display: none;
|
|
9483
|
+
}
|
|
9484
|
+
:host-context([variant=filled]) .tab:hover:not(:where(.disabled)) {
|
|
9485
|
+
--_container-state-opacity: 0.08;
|
|
9486
|
+
}
|
|
9487
|
+
:host-context([variant=filled]) .tab.pressed:not(:where(.disabled)) {
|
|
9488
|
+
--_container-state-opacity: 0.12;
|
|
9489
|
+
}
|
|
9490
|
+
:host-context([variant=filled]) .tab.disabled {
|
|
9491
|
+
--_label-text-color: var(--color-on-surface);
|
|
9492
|
+
--_label-text-opacity: 0.38;
|
|
9493
|
+
}
|
|
9494
|
+
:host-context([variant=filled]) .tab.disabled .ripple {
|
|
9495
|
+
display: none;
|
|
9496
|
+
}
|
|
9497
|
+
|
|
9498
|
+
:host-context([variant=contained]) .tab {
|
|
9499
|
+
--_container-padding: 1rem;
|
|
9500
|
+
--_tab-icon-size: 1.25rem;
|
|
9501
|
+
--_tab-icon-label-spacing: 0.5rem;
|
|
9502
|
+
--_tab-badge-label-spacing: 0.25rem;
|
|
9503
|
+
--_tab-badge-color: var(--color-error);
|
|
9504
|
+
--_label-text-color: var(--color-on-surface);
|
|
9505
|
+
--_container-state-color: var(--color-primary);
|
|
9506
|
+
--_container-shape-start-start: var(--shape-corner-small);
|
|
9507
|
+
--_container-shape-start-end: var(--shape-corner-small);
|
|
9508
|
+
--_container-shape-end-start: var(--shape-corner-small);
|
|
9509
|
+
--_container-shape-end-end: var(--shape-corner-small);
|
|
9510
|
+
--_container-corner-shape-variant: squircle;
|
|
9511
|
+
--_active-surface-color: var(--color-secondary-container);
|
|
9512
|
+
}
|
|
9513
|
+
:host-context([variant=contained]) .tab .focus-ring {
|
|
9514
|
+
inset: 2px;
|
|
9515
|
+
}
|
|
9516
|
+
:host-context([variant=contained]) .tab .tab-content ::slotted([slot=icon]) {
|
|
9517
|
+
margin-inline-end: var(--_tab-icon-label-spacing);
|
|
9518
|
+
}
|
|
9519
|
+
:host-context([variant=contained]) .tab .tab-content ::slotted([slot=badge]) {
|
|
9520
|
+
margin-inline-start: var(--_tab-badge-label-spacing);
|
|
9521
|
+
}
|
|
9522
|
+
:host-context([variant=contained]) .tab .indicator {
|
|
9523
|
+
display: none;
|
|
9524
|
+
}
|
|
9525
|
+
:host-context([variant=contained]) .tab .ripple {
|
|
9526
|
+
border-start-start-radius: var(--_container-shape-start-start);
|
|
9527
|
+
border-start-end-radius: var(--_container-shape-start-end);
|
|
9528
|
+
border-end-start-radius: var(--_container-shape-end-start);
|
|
9529
|
+
border-end-end-radius: var(--_container-shape-end-end);
|
|
9530
|
+
}
|
|
9531
|
+
:host-context([variant=contained]) .tab .background {
|
|
9532
|
+
corner-shape: var(--_container-corner-shape-variant);
|
|
9533
|
+
border-start-start-radius: var(--_container-shape-start-start);
|
|
9534
|
+
border-start-end-radius: var(--_container-shape-start-end);
|
|
9535
|
+
border-end-start-radius: var(--_container-shape-end-start);
|
|
9536
|
+
border-end-end-radius: var(--_container-shape-end-end);
|
|
9537
|
+
background: var(--_active-surface-color);
|
|
9538
|
+
}
|
|
9539
|
+
:host-context([variant=contained]) .tab.active {
|
|
9540
|
+
--_label-text-color: var(--color-on-secondary-container);
|
|
9541
|
+
}
|
|
9542
|
+
:host-context([variant=contained]) .tab.active .background {
|
|
9543
|
+
opacity: 1;
|
|
9544
|
+
transform: scaleX(1);
|
|
9545
|
+
}
|
|
9546
|
+
:host-context([variant=contained]) .tab:hover:not(:where(.disabled)) {
|
|
8928
9547
|
--_container-state-opacity: 0.08;
|
|
8929
9548
|
}
|
|
8930
|
-
:host-context([variant=
|
|
9549
|
+
:host-context([variant=contained]) .tab.pressed:not(:where(.disabled)) {
|
|
8931
9550
|
--_container-state-opacity: 0.12;
|
|
8932
9551
|
}
|
|
8933
|
-
:host-context([variant=
|
|
9552
|
+
:host-context([variant=contained]) .tab.disabled {
|
|
8934
9553
|
--_label-text-color: var(--color-on-surface);
|
|
8935
9554
|
--_label-text-opacity: 0.38;
|
|
8936
9555
|
}
|
|
8937
|
-
:host-context([variant=
|
|
9556
|
+
:host-context([variant=contained]) .tab.disabled .ripple {
|
|
8938
9557
|
display: none;
|
|
9558
|
+
}
|
|
9559
|
+
|
|
9560
|
+
@media (prefers-reduced-motion: reduce) {
|
|
9561
|
+
.tab .tab-content,
|
|
9562
|
+
.tab .indicator,
|
|
9563
|
+
.tab .background {
|
|
9564
|
+
transition: none;
|
|
9565
|
+
}
|
|
8939
9566
|
}`;
|
|
8940
9567
|
|
|
8941
9568
|
var _Tab_id;
|
|
@@ -9022,7 +9649,7 @@ class Tab extends i$1 {
|
|
|
9022
9649
|
}
|
|
9023
9650
|
firstUpdated() {
|
|
9024
9651
|
this.__dispatchClickWithThrottle = throttle(this.__dispatchClick, this.throttleDelay);
|
|
9025
|
-
observerSlotChangesWithCallback(this.renderRoot.querySelector('slot'), hasContent => {
|
|
9652
|
+
observerSlotChangesWithCallback(this.renderRoot.querySelector('slot:not([name])'), hasContent => {
|
|
9026
9653
|
this.slotHasContent = hasContent;
|
|
9027
9654
|
this.requestUpdate();
|
|
9028
9655
|
});
|
|
@@ -9038,6 +9665,9 @@ class Tab extends i$1 {
|
|
|
9038
9665
|
__isLink() {
|
|
9039
9666
|
return !!this.href;
|
|
9040
9667
|
}
|
|
9668
|
+
__getParentTabsVariant() {
|
|
9669
|
+
return this.closest('wc-tabs')?.variant ?? 'primary';
|
|
9670
|
+
}
|
|
9041
9671
|
// private handleKeyDown(evt: KeyboardEvent) {
|
|
9042
9672
|
// if (this.disabled || this.showLoader) return;
|
|
9043
9673
|
// if (evt.key === 'Enter' || evt.key === ' ') {
|
|
@@ -9048,13 +9678,15 @@ class Tab extends i$1 {
|
|
|
9048
9678
|
// }
|
|
9049
9679
|
render() {
|
|
9050
9680
|
const isLink = this.__isLink();
|
|
9681
|
+
const variant = this.__getParentTabsVariant();
|
|
9051
9682
|
const cssClasses = {
|
|
9052
9683
|
tab: true,
|
|
9053
9684
|
'tab-element': true,
|
|
9054
9685
|
disabled: this.disabled,
|
|
9055
9686
|
pressed: this.isPressed,
|
|
9056
9687
|
active: this.active,
|
|
9057
|
-
|
|
9688
|
+
[`variant-${variant}`]: true,
|
|
9689
|
+
'has-content': this.slotHasContent,
|
|
9058
9690
|
'has-icon': this.slotHasIcon,
|
|
9059
9691
|
'has-badge': this.slotHasBadge,
|
|
9060
9692
|
};
|
|
@@ -9070,7 +9702,7 @@ class Tab extends i$1 {
|
|
|
9070
9702
|
?disabled=${this.disabled}
|
|
9071
9703
|
${spread(this.configAria)}
|
|
9072
9704
|
>
|
|
9073
|
-
${this.renderTabContent()}
|
|
9705
|
+
${this.renderTabContent(variant)}
|
|
9074
9706
|
</button>`;
|
|
9075
9707
|
}
|
|
9076
9708
|
return b `<a
|
|
@@ -9087,30 +9719,94 @@ class Tab extends i$1 {
|
|
|
9087
9719
|
aria-disabled=${`${this.disabled}`}
|
|
9088
9720
|
${spread(this.configAria)}
|
|
9089
9721
|
>
|
|
9090
|
-
${this.renderTabContent()}
|
|
9722
|
+
${this.renderTabContent(variant)}
|
|
9091
9723
|
</a>`;
|
|
9092
9724
|
}
|
|
9093
|
-
renderTabContent() {
|
|
9725
|
+
renderTabContent(variant) {
|
|
9726
|
+
switch (variant) {
|
|
9727
|
+
case 'secondary':
|
|
9728
|
+
return this.renderSecondaryTabContent();
|
|
9729
|
+
case 'contained':
|
|
9730
|
+
return this.renderContainedTabContent();
|
|
9731
|
+
case 'filled':
|
|
9732
|
+
return this.renderFilledTabContent();
|
|
9733
|
+
case 'primary':
|
|
9734
|
+
default:
|
|
9735
|
+
return this.renderPrimaryTabContent();
|
|
9736
|
+
}
|
|
9737
|
+
}
|
|
9738
|
+
renderPrimaryTabContent() {
|
|
9739
|
+
return b `
|
|
9740
|
+
<wc-focus-ring class="focus-ring" .control=${this} .forElement=${this.tabElement}></wc-focus-ring>
|
|
9741
|
+
<wc-elevation class="elevation"></wc-elevation>
|
|
9742
|
+
<div class="background"></div>
|
|
9743
|
+
<div class="outline"></div>
|
|
9744
|
+
<wc-ripple class="ripple"></wc-ripple>
|
|
9745
|
+
|
|
9746
|
+
<div class="tab-content">
|
|
9747
|
+
|
|
9748
|
+
<div class="icon-section">
|
|
9749
|
+
<slot name="badge"></slot>
|
|
9750
|
+
<slot name="icon"></slot>
|
|
9751
|
+
</div>
|
|
9752
|
+
<div class="slot-container">
|
|
9753
|
+
<slot></slot>
|
|
9754
|
+
</div>
|
|
9755
|
+
|
|
9756
|
+
<div class="indicator"></div>
|
|
9757
|
+
|
|
9758
|
+
</div>
|
|
9759
|
+
|
|
9760
|
+
${this.__renderDisabledReason()}
|
|
9761
|
+
`;
|
|
9762
|
+
}
|
|
9763
|
+
renderSecondaryTabContent() {
|
|
9094
9764
|
return b `
|
|
9095
|
-
<wc-focus-ring class="focus-ring" .control=${this}
|
|
9765
|
+
<wc-focus-ring class="focus-ring" .control=${this} .forElement=${this.tabElement}></wc-focus-ring>
|
|
9096
9766
|
<wc-elevation class="elevation"></wc-elevation>
|
|
9097
9767
|
<div class="background"></div>
|
|
9098
9768
|
<div class="outline"></div>
|
|
9099
9769
|
<wc-ripple class="ripple"></wc-ripple>
|
|
9100
9770
|
|
|
9101
9771
|
<div class="tab-content">
|
|
9772
|
+
|
|
9102
9773
|
<slot name="icon"></slot>
|
|
9103
9774
|
|
|
9104
9775
|
<div class="slot-container">
|
|
9105
|
-
<slot
|
|
9776
|
+
<slot></slot>
|
|
9106
9777
|
</div>
|
|
9107
9778
|
|
|
9108
9779
|
<slot name="badge"></slot>
|
|
9109
|
-
|
|
9110
|
-
<div class="indicator"></div>
|
|
9111
9780
|
</div>
|
|
9112
9781
|
|
|
9113
|
-
<div class="
|
|
9782
|
+
<div class="indicator"></div>
|
|
9783
|
+
|
|
9784
|
+
${this.__renderDisabledReason()}
|
|
9785
|
+
`;
|
|
9786
|
+
}
|
|
9787
|
+
renderContainedTabContent() {
|
|
9788
|
+
return this.renderSegmentedTabContent();
|
|
9789
|
+
}
|
|
9790
|
+
renderFilledTabContent() {
|
|
9791
|
+
return this.renderSegmentedTabContent();
|
|
9792
|
+
}
|
|
9793
|
+
renderSegmentedTabContent() {
|
|
9794
|
+
return b `
|
|
9795
|
+
<wc-focus-ring class="focus-ring" .control=${this} .forElement=${this.tabElement}></wc-focus-ring>
|
|
9796
|
+
<wc-elevation class="elevation"></wc-elevation>
|
|
9797
|
+
<div class="background"></div>
|
|
9798
|
+
<div class="outline"></div>
|
|
9799
|
+
<wc-ripple class="ripple"></wc-ripple>
|
|
9800
|
+
|
|
9801
|
+
<div class="tab-content">
|
|
9802
|
+
<slot name="icon"></slot>
|
|
9803
|
+
|
|
9804
|
+
<div class="slot-container">
|
|
9805
|
+
<slot></slot>
|
|
9806
|
+
</div>
|
|
9807
|
+
|
|
9808
|
+
<slot name="badge"></slot>
|
|
9809
|
+
</div>
|
|
9114
9810
|
|
|
9115
9811
|
${this.__renderDisabledReason()}
|
|
9116
9812
|
`;
|
|
@@ -9135,7 +9831,7 @@ class Tab extends i$1 {
|
|
|
9135
9831
|
}
|
|
9136
9832
|
}
|
|
9137
9833
|
_Tab_id = new WeakMap();
|
|
9138
|
-
Tab.styles = [css_248z$
|
|
9834
|
+
Tab.styles = [css_248z$b];
|
|
9139
9835
|
__decorate([
|
|
9140
9836
|
n({ type: Boolean, reflect: true })
|
|
9141
9837
|
], Tab.prototype, "active", void 0);
|
|
@@ -9145,9 +9841,6 @@ __decorate([
|
|
|
9145
9841
|
__decorate([
|
|
9146
9842
|
n({ type: String })
|
|
9147
9843
|
], Tab.prototype, "disabledReason", void 0);
|
|
9148
|
-
__decorate([
|
|
9149
|
-
n({ type: String })
|
|
9150
|
-
], Tab.prototype, "label", void 0);
|
|
9151
9844
|
__decorate([
|
|
9152
9845
|
n({ type: String })
|
|
9153
9846
|
], Tab.prototype, "value", void 0);
|
|
@@ -9182,7 +9875,7 @@ __decorate([
|
|
|
9182
9875
|
e$4('.tab-element')
|
|
9183
9876
|
], Tab.prototype, "tabElement", void 0);
|
|
9184
9877
|
|
|
9185
|
-
var css_248z$
|
|
9878
|
+
var css_248z$a = i`* {
|
|
9186
9879
|
box-sizing: border-box;
|
|
9187
9880
|
}
|
|
9188
9881
|
|
|
@@ -9196,7 +9889,7 @@ var css_248z$8 = i`* {
|
|
|
9196
9889
|
height: 100%;
|
|
9197
9890
|
}`;
|
|
9198
9891
|
|
|
9199
|
-
var css_248z$
|
|
9892
|
+
var css_248z$9 = i`* {
|
|
9200
9893
|
box-sizing: border-box;
|
|
9201
9894
|
}
|
|
9202
9895
|
|
|
@@ -9208,14 +9901,44 @@ var css_248z$7 = i`* {
|
|
|
9208
9901
|
display: flex;
|
|
9209
9902
|
position: relative;
|
|
9210
9903
|
width: 100%;
|
|
9904
|
+
height: var(--tabs-height);
|
|
9905
|
+
}
|
|
9906
|
+
|
|
9907
|
+
:host([variant=primary]) {
|
|
9908
|
+
--tabs-height: 4rem;
|
|
9909
|
+
}
|
|
9910
|
+
:host([variant=primary]) .tabs {
|
|
9911
|
+
border-bottom: 1px solid var(--color-surface-variant);
|
|
9211
9912
|
}
|
|
9212
9913
|
|
|
9213
|
-
:host
|
|
9914
|
+
:host([variant=secondary]) {
|
|
9214
9915
|
--tabs-height: 3rem;
|
|
9215
9916
|
}
|
|
9216
|
-
:host
|
|
9217
|
-
height: var(--tabs-height);
|
|
9917
|
+
:host([variant=secondary]) .tabs {
|
|
9218
9918
|
border-bottom: 1px solid var(--color-surface-variant);
|
|
9919
|
+
}
|
|
9920
|
+
|
|
9921
|
+
:host([variant=filled]) {
|
|
9922
|
+
--tabs-height: 3rem;
|
|
9923
|
+
}
|
|
9924
|
+
:host([variant=filled]) .tabs {
|
|
9925
|
+
align-items: stretch;
|
|
9926
|
+
gap: 0.25rem;
|
|
9927
|
+
padding: 0.25rem;
|
|
9928
|
+
border-radius: var(--shape-corner-small);
|
|
9929
|
+
background: var(--color-surface-container-high);
|
|
9930
|
+
}
|
|
9931
|
+
|
|
9932
|
+
:host([variant=contained]) {
|
|
9933
|
+
--tabs-height: 3rem;
|
|
9934
|
+
}
|
|
9935
|
+
:host([variant=contained]) .tabs {
|
|
9936
|
+
align-items: stretch;
|
|
9937
|
+
gap: 0.25rem;
|
|
9938
|
+
padding: 0.25rem;
|
|
9939
|
+
border-radius: var(--shape-corner-extra-small);
|
|
9940
|
+
border: 1px solid var(--color-outline-variant);
|
|
9941
|
+
background: var(--color-surface);
|
|
9219
9942
|
}`;
|
|
9220
9943
|
|
|
9221
9944
|
/**
|
|
@@ -9230,7 +9953,7 @@ var css_248z$7 = i`* {
|
|
|
9230
9953
|
* @example
|
|
9231
9954
|
* ```html
|
|
9232
9955
|
* <wc-tabs>
|
|
9233
|
-
* <wc-tab>Tab 1</wc-tab>
|
|
9956
|
+
* <wc-tab active>Tab 1</wc-tab>
|
|
9234
9957
|
* <wc-tab>Tab 2</wc-tab>
|
|
9235
9958
|
* </wc-tabs>
|
|
9236
9959
|
* ```
|
|
@@ -9239,6 +9962,7 @@ var css_248z$7 = i`* {
|
|
|
9239
9962
|
class Tabs extends i$1 {
|
|
9240
9963
|
constructor() {
|
|
9241
9964
|
super(...arguments);
|
|
9965
|
+
this.variant = 'primary';
|
|
9242
9966
|
this.managed = false;
|
|
9243
9967
|
this.__handleTabClick = (event) => {
|
|
9244
9968
|
if (this.managed)
|
|
@@ -9248,7 +9972,8 @@ class Tabs extends i$1 {
|
|
|
9248
9972
|
const clickedTab = path.find(node => node instanceof Element && node.tagName.toLowerCase() === 'wc-tab');
|
|
9249
9973
|
if (!clickedTab)
|
|
9250
9974
|
return;
|
|
9251
|
-
const
|
|
9975
|
+
const previousActiveTab = this.__getActiveTab();
|
|
9976
|
+
const tabs = this.__getTabs();
|
|
9252
9977
|
let clickedIndex = -1;
|
|
9253
9978
|
for (let index = 0; index < tabs.length; index += 1) {
|
|
9254
9979
|
const tab = tabs[index];
|
|
@@ -9257,6 +9982,8 @@ class Tabs extends i$1 {
|
|
|
9257
9982
|
clickedIndex = index;
|
|
9258
9983
|
}
|
|
9259
9984
|
clickedTab.active = true;
|
|
9985
|
+
this.__animateIndicatorTransition(previousActiveTab, clickedTab);
|
|
9986
|
+
this.__lastActiveTab = clickedTab;
|
|
9260
9987
|
this.dispatchEvent(new CustomEvent('tab-click', {
|
|
9261
9988
|
bubbles: true,
|
|
9262
9989
|
composed: true,
|
|
@@ -9271,10 +9998,96 @@ class Tabs extends i$1 {
|
|
|
9271
9998
|
super.connectedCallback();
|
|
9272
9999
|
this.addEventListener('click', this.__handleTabClick);
|
|
9273
10000
|
}
|
|
10001
|
+
firstUpdated() {
|
|
10002
|
+
this.__mutationObserver = new MutationObserver(() => {
|
|
10003
|
+
this.__syncIndicatorsFromActiveState();
|
|
10004
|
+
});
|
|
10005
|
+
this.__mutationObserver.observe(this, {
|
|
10006
|
+
subtree: true,
|
|
10007
|
+
childList: true,
|
|
10008
|
+
attributes: true,
|
|
10009
|
+
attributeFilter: ['active', 'disabled'],
|
|
10010
|
+
});
|
|
10011
|
+
this.__lastActiveTab = this.__getActiveTab();
|
|
10012
|
+
}
|
|
10013
|
+
updated(changedProperties) {
|
|
10014
|
+
if (changedProperties.has('variant')) {
|
|
10015
|
+
this.__lastActiveTab = this.__getActiveTab();
|
|
10016
|
+
}
|
|
10017
|
+
}
|
|
9274
10018
|
disconnectedCallback() {
|
|
10019
|
+
this.__mutationObserver?.disconnect();
|
|
9275
10020
|
this.removeEventListener('click', this.__handleTabClick);
|
|
9276
10021
|
super.disconnectedCallback();
|
|
9277
10022
|
}
|
|
10023
|
+
__getTabs() {
|
|
10024
|
+
return Array.from(this.querySelectorAll('wc-tab'));
|
|
10025
|
+
}
|
|
10026
|
+
__getActiveTab() {
|
|
10027
|
+
return this.__getTabs().find(tab => tab.active && !tab.disabled);
|
|
10028
|
+
}
|
|
10029
|
+
static __getTabIndicator(tab) {
|
|
10030
|
+
if (!tab?.shadowRoot)
|
|
10031
|
+
return undefined;
|
|
10032
|
+
return tab.shadowRoot.querySelector('.indicator');
|
|
10033
|
+
}
|
|
10034
|
+
static __getTabBackground(tab) {
|
|
10035
|
+
if (!tab?.shadowRoot)
|
|
10036
|
+
return undefined;
|
|
10037
|
+
return tab.shadowRoot.querySelector('.background');
|
|
10038
|
+
}
|
|
10039
|
+
__getAnimationElements(previousTab, nextTab) {
|
|
10040
|
+
if (this.variant === 'primary' || this.variant === 'secondary') {
|
|
10041
|
+
return {
|
|
10042
|
+
previous: Tabs.__getTabIndicator(previousTab),
|
|
10043
|
+
next: Tabs.__getTabIndicator(nextTab),
|
|
10044
|
+
};
|
|
10045
|
+
}
|
|
10046
|
+
if (this.variant === 'filled' || this.variant === 'contained') {
|
|
10047
|
+
return {
|
|
10048
|
+
previous: Tabs.__getTabBackground(previousTab),
|
|
10049
|
+
next: Tabs.__getTabBackground(nextTab),
|
|
10050
|
+
};
|
|
10051
|
+
}
|
|
10052
|
+
return {
|
|
10053
|
+
previous: undefined,
|
|
10054
|
+
next: undefined,
|
|
10055
|
+
};
|
|
10056
|
+
}
|
|
10057
|
+
__animateIndicatorTransition(previousTab, nextTab) {
|
|
10058
|
+
if (!previousTab || !nextTab || previousTab === nextTab)
|
|
10059
|
+
return;
|
|
10060
|
+
const { previous: previousAnimationElement, next: nextAnimationElement } = this.__getAnimationElements(previousTab, nextTab);
|
|
10061
|
+
if (!previousAnimationElement || !nextAnimationElement)
|
|
10062
|
+
return;
|
|
10063
|
+
const previousRect = previousTab.getBoundingClientRect();
|
|
10064
|
+
const nextRect = nextTab.getBoundingClientRect();
|
|
10065
|
+
const incomingOffset = previousRect.left - nextRect.left;
|
|
10066
|
+
const outgoingOffset = nextRect.left - previousRect.left;
|
|
10067
|
+
const incomingScale = previousRect.width / nextRect.width;
|
|
10068
|
+
const outgoingScale = nextRect.width / previousRect.width;
|
|
10069
|
+
nextAnimationElement.style.transition = 'none';
|
|
10070
|
+
nextAnimationElement.style.opacity = '0';
|
|
10071
|
+
nextAnimationElement.style.transform = `translateX(${incomingOffset}px) scaleX(${incomingScale})`;
|
|
10072
|
+
previousAnimationElement.style.transition = 'none';
|
|
10073
|
+
previousAnimationElement.style.opacity = '1';
|
|
10074
|
+
previousAnimationElement.style.transform = 'translateX(0) scaleX(1)';
|
|
10075
|
+
requestAnimationFrame(() => {
|
|
10076
|
+
nextAnimationElement.style.transition = '';
|
|
10077
|
+
previousAnimationElement.style.transition = '';
|
|
10078
|
+
nextAnimationElement.style.opacity = '1';
|
|
10079
|
+
nextAnimationElement.style.transform = 'translateX(0) scaleX(1)';
|
|
10080
|
+
previousAnimationElement.style.opacity = '0';
|
|
10081
|
+
previousAnimationElement.style.transform = `translateX(${outgoingOffset}px) scaleX(${outgoingScale})`;
|
|
10082
|
+
});
|
|
10083
|
+
}
|
|
10084
|
+
__syncIndicatorsFromActiveState() {
|
|
10085
|
+
const activeTab = this.__getActiveTab();
|
|
10086
|
+
if (this.__lastActiveTab && activeTab && this.__lastActiveTab !== activeTab) {
|
|
10087
|
+
this.__animateIndicatorTransition(this.__lastActiveTab, activeTab);
|
|
10088
|
+
}
|
|
10089
|
+
this.__lastActiveTab = activeTab;
|
|
10090
|
+
}
|
|
9278
10091
|
render() {
|
|
9279
10092
|
return b `
|
|
9280
10093
|
<div class="tabs">
|
|
@@ -9283,13 +10096,16 @@ class Tabs extends i$1 {
|
|
|
9283
10096
|
`;
|
|
9284
10097
|
}
|
|
9285
10098
|
}
|
|
9286
|
-
Tabs.styles = [css_248z$
|
|
10099
|
+
Tabs.styles = [css_248z$9];
|
|
9287
10100
|
Tabs.Tab = Tab;
|
|
10101
|
+
__decorate([
|
|
10102
|
+
n({ reflect: true })
|
|
10103
|
+
], Tabs.prototype, "variant", void 0);
|
|
9288
10104
|
__decorate([
|
|
9289
10105
|
n({ type: Boolean })
|
|
9290
10106
|
], Tabs.prototype, "managed", void 0);
|
|
9291
10107
|
|
|
9292
|
-
var css_248z$
|
|
10108
|
+
var css_248z$8 = i`* {
|
|
9293
10109
|
box-sizing: border-box;
|
|
9294
10110
|
}
|
|
9295
10111
|
|
|
@@ -9331,7 +10147,7 @@ class TabPanel extends i$1 {
|
|
|
9331
10147
|
return b `<slot></slot>`;
|
|
9332
10148
|
}
|
|
9333
10149
|
}
|
|
9334
|
-
TabPanel.styles = [css_248z$
|
|
10150
|
+
TabPanel.styles = [css_248z$8];
|
|
9335
10151
|
__decorate([
|
|
9336
10152
|
n({ reflect: true })
|
|
9337
10153
|
], TabPanel.prototype, "value", void 0);
|
|
@@ -9366,7 +10182,6 @@ __decorate([
|
|
|
9366
10182
|
class TabGroup extends i$1 {
|
|
9367
10183
|
constructor() {
|
|
9368
10184
|
super(...arguments);
|
|
9369
|
-
this.variant = 'line';
|
|
9370
10185
|
this.onTabClick = (event) => {
|
|
9371
10186
|
const custom = event;
|
|
9372
10187
|
event.stopPropagation();
|
|
@@ -9485,14 +10300,11 @@ class TabGroup extends i$1 {
|
|
|
9485
10300
|
return b `<slot></slot>`;
|
|
9486
10301
|
}
|
|
9487
10302
|
}
|
|
9488
|
-
TabGroup.styles = [css_248z$
|
|
10303
|
+
TabGroup.styles = [css_248z$a];
|
|
9489
10304
|
TabGroup.Tabs = Tabs;
|
|
9490
10305
|
TabGroup.TabPanel = TabPanel;
|
|
9491
|
-
__decorate([
|
|
9492
|
-
n({ reflect: true })
|
|
9493
|
-
], TabGroup.prototype, "variant", void 0);
|
|
9494
10306
|
|
|
9495
|
-
var css_248z$
|
|
10307
|
+
var css_248z$7 = i`:host {
|
|
9496
10308
|
--_track-height: 4px;
|
|
9497
10309
|
--_thumb-size: 20px;
|
|
9498
10310
|
--thumb-half: 10px;
|
|
@@ -9534,7 +10346,6 @@ var css_248z$5 = i`:host {
|
|
|
9534
10346
|
position: absolute;
|
|
9535
10347
|
height: 100%;
|
|
9536
10348
|
background-color: var(--_active-track-color);
|
|
9537
|
-
transition: width 0.1s ease-out;
|
|
9538
10349
|
will-change: width;
|
|
9539
10350
|
}
|
|
9540
10351
|
|
|
@@ -9765,7 +10576,7 @@ class Slider extends i$1 {
|
|
|
9765
10576
|
`;
|
|
9766
10577
|
}
|
|
9767
10578
|
}
|
|
9768
|
-
Slider.styles = [css_248z$
|
|
10579
|
+
Slider.styles = [css_248z$7];
|
|
9769
10580
|
__decorate([
|
|
9770
10581
|
n({ type: Number })
|
|
9771
10582
|
], Slider.prototype, "min", void 0);
|
|
@@ -9794,7 +10605,7 @@ __decorate([
|
|
|
9794
10605
|
e$4('.thumb')
|
|
9795
10606
|
], Slider.prototype, "thumbElement", void 0);
|
|
9796
10607
|
|
|
9797
|
-
var css_248z$
|
|
10608
|
+
var css_248z$6 = i`* {
|
|
9798
10609
|
box-sizing: border-box;
|
|
9799
10610
|
}
|
|
9800
10611
|
|
|
@@ -10328,7 +11139,7 @@ class Table extends i$1 {
|
|
|
10328
11139
|
`;
|
|
10329
11140
|
}
|
|
10330
11141
|
}
|
|
10331
|
-
Table.styles = [css_248z$
|
|
11142
|
+
Table.styles = [css_248z$6];
|
|
10332
11143
|
__decorate([
|
|
10333
11144
|
n({ type: Array })
|
|
10334
11145
|
], Table.prototype, "columns", void 0);
|
|
@@ -10387,7 +11198,7 @@ __decorate([
|
|
|
10387
11198
|
r()
|
|
10388
11199
|
], Table.prototype, "isHorizontallyScrolled", void 0);
|
|
10389
11200
|
|
|
10390
|
-
var css_248z$
|
|
11201
|
+
var css_248z$5 = i`* {
|
|
10391
11202
|
box-sizing: border-box;
|
|
10392
11203
|
}
|
|
10393
11204
|
|
|
@@ -10569,7 +11380,7 @@ class Pagination extends i$1 {
|
|
|
10569
11380
|
`;
|
|
10570
11381
|
}
|
|
10571
11382
|
}
|
|
10572
|
-
Pagination.styles = [css_248z$
|
|
11383
|
+
Pagination.styles = [css_248z$5];
|
|
10573
11384
|
__decorate([
|
|
10574
11385
|
n({ type: Number })
|
|
10575
11386
|
], Pagination.prototype, "page", void 0);
|
|
@@ -10583,7 +11394,7 @@ __decorate([
|
|
|
10583
11394
|
n({ type: Array, attribute: 'page-sizes' })
|
|
10584
11395
|
], Pagination.prototype, "pageSizes", void 0);
|
|
10585
11396
|
|
|
10586
|
-
var css_248z$
|
|
11397
|
+
var css_248z$4 = i`* {
|
|
10587
11398
|
box-sizing: border-box;
|
|
10588
11399
|
}
|
|
10589
11400
|
|
|
@@ -10898,7 +11709,7 @@ class TreeNode extends i$1 {
|
|
|
10898
11709
|
</div>`;
|
|
10899
11710
|
}
|
|
10900
11711
|
}
|
|
10901
|
-
TreeNode.styles = [css_248z$
|
|
11712
|
+
TreeNode.styles = [css_248z$4];
|
|
10902
11713
|
__decorate([
|
|
10903
11714
|
n({ type: String, reflect: true })
|
|
10904
11715
|
], TreeNode.prototype, "value", void 0);
|
|
@@ -10930,7 +11741,7 @@ __decorate([
|
|
|
10930
11741
|
e$4('.tree-node-content')
|
|
10931
11742
|
], TreeNode.prototype, "_nativeElement", void 0);
|
|
10932
11743
|
|
|
10933
|
-
var css_248z$
|
|
11744
|
+
var css_248z$3 = i`* {
|
|
10934
11745
|
box-sizing: border-box;
|
|
10935
11746
|
}
|
|
10936
11747
|
|
|
@@ -11093,13 +11904,13 @@ class TreeView extends i$1 {
|
|
|
11093
11904
|
</div>`;
|
|
11094
11905
|
}
|
|
11095
11906
|
}
|
|
11096
|
-
TreeView.styles = [css_248z$
|
|
11907
|
+
TreeView.styles = [css_248z$3];
|
|
11097
11908
|
TreeView.Node = TreeNode;
|
|
11098
11909
|
__decorate([
|
|
11099
11910
|
n({ type: String, attribute: 'selected-node', reflect: true })
|
|
11100
11911
|
], TreeView.prototype, "selectedNode", void 0);
|
|
11101
11912
|
|
|
11102
|
-
var css_248z = i`* {
|
|
11913
|
+
var css_248z$2 = i`* {
|
|
11103
11914
|
box-sizing: border-box;
|
|
11104
11915
|
}
|
|
11105
11916
|
|
|
@@ -11302,7 +12113,7 @@ class Snackbar extends i$1 {
|
|
|
11302
12113
|
`;
|
|
11303
12114
|
}
|
|
11304
12115
|
}
|
|
11305
|
-
Snackbar.styles = [css_248z];
|
|
12116
|
+
Snackbar.styles = [css_248z$2];
|
|
11306
12117
|
__decorate([
|
|
11307
12118
|
n({ type: Boolean, reflect: true })
|
|
11308
12119
|
], Snackbar.prototype, "open", void 0);
|
|
@@ -11322,5 +12133,1161 @@ __decorate([
|
|
|
11322
12133
|
n({ type: Boolean, reflect: true })
|
|
11323
12134
|
], Snackbar.prototype, "multiline", void 0);
|
|
11324
12135
|
|
|
11325
|
-
|
|
11326
|
-
|
|
12136
|
+
var css_248z$1 = i`* {
|
|
12137
|
+
box-sizing: border-box;
|
|
12138
|
+
}
|
|
12139
|
+
|
|
12140
|
+
.screen-reader-only {
|
|
12141
|
+
display: none !important;
|
|
12142
|
+
}
|
|
12143
|
+
|
|
12144
|
+
:host {
|
|
12145
|
+
display: inline-block;
|
|
12146
|
+
--radio-size: 20px;
|
|
12147
|
+
--radio-dot-size: 12px;
|
|
12148
|
+
--radio-selected-color: var(--color-primary);
|
|
12149
|
+
--radio-unselected-color: var(--color-on-surface-variant);
|
|
12150
|
+
--radio-state-layer-size: 40px;
|
|
12151
|
+
--radio-disabled-opacity: 0.38;
|
|
12152
|
+
}
|
|
12153
|
+
|
|
12154
|
+
.radio {
|
|
12155
|
+
position: relative;
|
|
12156
|
+
display: inline-flex;
|
|
12157
|
+
align-items: center;
|
|
12158
|
+
cursor: pointer;
|
|
12159
|
+
user-select: none;
|
|
12160
|
+
vertical-align: middle;
|
|
12161
|
+
gap: 8px;
|
|
12162
|
+
font-family: var(--typography-body-medium-font-family) !important;
|
|
12163
|
+
font-size: var(--typography-body-medium-font-size) !important;
|
|
12164
|
+
font-weight: var(--typography-body-medium-font-weight) !important;
|
|
12165
|
+
line-height: var(--typography-body-medium-line-height) !important;
|
|
12166
|
+
letter-spacing: var(--typography-body-medium-letter-spacing) !important;
|
|
12167
|
+
}
|
|
12168
|
+
.radio .input-native {
|
|
12169
|
+
position: absolute;
|
|
12170
|
+
width: 1px;
|
|
12171
|
+
height: 1px;
|
|
12172
|
+
padding: 0;
|
|
12173
|
+
margin: -1px;
|
|
12174
|
+
overflow: hidden;
|
|
12175
|
+
clip: rect(0, 0, 0, 0);
|
|
12176
|
+
border: 0;
|
|
12177
|
+
}
|
|
12178
|
+
.radio .container {
|
|
12179
|
+
position: relative;
|
|
12180
|
+
display: inline-flex;
|
|
12181
|
+
align-items: center;
|
|
12182
|
+
justify-content: center;
|
|
12183
|
+
width: var(--radio-state-layer-size);
|
|
12184
|
+
height: var(--radio-state-layer-size);
|
|
12185
|
+
cursor: inherit;
|
|
12186
|
+
outline: none;
|
|
12187
|
+
flex-shrink: 0;
|
|
12188
|
+
}
|
|
12189
|
+
.radio .state-layer {
|
|
12190
|
+
position: absolute;
|
|
12191
|
+
inset: 0;
|
|
12192
|
+
border-radius: 50%;
|
|
12193
|
+
opacity: 0;
|
|
12194
|
+
transition: opacity var(--duration-short2) var(--easing-standard);
|
|
12195
|
+
}
|
|
12196
|
+
.radio .outer-circle {
|
|
12197
|
+
position: absolute;
|
|
12198
|
+
width: var(--radio-size);
|
|
12199
|
+
height: var(--radio-size);
|
|
12200
|
+
border: 2px solid var(--radio-unselected-color);
|
|
12201
|
+
border-radius: 50%;
|
|
12202
|
+
box-sizing: border-box;
|
|
12203
|
+
transition: border-color var(--duration-short2) var(--easing-standard);
|
|
12204
|
+
}
|
|
12205
|
+
.radio .inner-circle {
|
|
12206
|
+
position: absolute;
|
|
12207
|
+
width: var(--radio-dot-size);
|
|
12208
|
+
height: var(--radio-dot-size);
|
|
12209
|
+
background: var(--radio-selected-color);
|
|
12210
|
+
border-radius: 50%;
|
|
12211
|
+
opacity: 0;
|
|
12212
|
+
transform: scale(0.5);
|
|
12213
|
+
transition: transform var(--duration-short2) var(--easing-standard), opacity var(--duration-short2) var(--easing-standard);
|
|
12214
|
+
}
|
|
12215
|
+
.radio .label {
|
|
12216
|
+
color: var(--color-on-surface);
|
|
12217
|
+
cursor: inherit;
|
|
12218
|
+
}
|
|
12219
|
+
.radio:hover:not(.disabled):not(.readonly) .state-layer {
|
|
12220
|
+
opacity: 0.08;
|
|
12221
|
+
background: var(--color-on-surface);
|
|
12222
|
+
}
|
|
12223
|
+
.radio:hover:not(.disabled):not(.readonly).state-checked .state-layer {
|
|
12224
|
+
background: var(--radio-selected-color);
|
|
12225
|
+
}
|
|
12226
|
+
.radio.has-focus:not(.active):not(.disabled):not(.readonly) .state-layer {
|
|
12227
|
+
opacity: 0.12;
|
|
12228
|
+
background: var(--color-on-surface);
|
|
12229
|
+
}
|
|
12230
|
+
.radio.has-focus:not(.active):not(.disabled):not(.readonly) .container {
|
|
12231
|
+
outline: 3px solid var(--color-primary);
|
|
12232
|
+
outline-offset: 2px;
|
|
12233
|
+
border-radius: 50%;
|
|
12234
|
+
}
|
|
12235
|
+
.radio.has-focus:not(.active):not(.disabled):not(.readonly).state-checked .state-layer {
|
|
12236
|
+
background: var(--radio-selected-color);
|
|
12237
|
+
}
|
|
12238
|
+
.radio.active:not(.disabled):not(.readonly) .state-layer {
|
|
12239
|
+
opacity: 0.12;
|
|
12240
|
+
background: var(--color-on-surface);
|
|
12241
|
+
}
|
|
12242
|
+
.radio.active:not(.disabled):not(.readonly).state-checked .state-layer {
|
|
12243
|
+
background: var(--radio-selected-color);
|
|
12244
|
+
}
|
|
12245
|
+
|
|
12246
|
+
.radio.state-checked .outer-circle {
|
|
12247
|
+
border-color: var(--radio-selected-color);
|
|
12248
|
+
}
|
|
12249
|
+
.radio.state-checked .inner-circle {
|
|
12250
|
+
opacity: 1;
|
|
12251
|
+
transform: scale(1);
|
|
12252
|
+
}
|
|
12253
|
+
|
|
12254
|
+
.radio.readonly {
|
|
12255
|
+
cursor: default;
|
|
12256
|
+
}
|
|
12257
|
+
.radio.readonly .state-layer {
|
|
12258
|
+
display: none;
|
|
12259
|
+
}
|
|
12260
|
+
.radio.readonly .outer-circle {
|
|
12261
|
+
border-color: var(--color-on-surface-variant);
|
|
12262
|
+
}
|
|
12263
|
+
.radio.readonly.state-checked .inner-circle {
|
|
12264
|
+
background: var(--color-on-surface-variant);
|
|
12265
|
+
}
|
|
12266
|
+
|
|
12267
|
+
.radio.disabled {
|
|
12268
|
+
cursor: not-allowed;
|
|
12269
|
+
opacity: var(--radio-disabled-opacity);
|
|
12270
|
+
}
|
|
12271
|
+
.radio.disabled .state-layer {
|
|
12272
|
+
display: none;
|
|
12273
|
+
}
|
|
12274
|
+
.radio.disabled .label {
|
|
12275
|
+
color: var(--color-on-surface);
|
|
12276
|
+
}
|
|
12277
|
+
.radio.disabled .outer-circle {
|
|
12278
|
+
border-color: var(--color-on-surface);
|
|
12279
|
+
}
|
|
12280
|
+
.radio.disabled.state-checked .inner-circle {
|
|
12281
|
+
background: var(--color-on-surface);
|
|
12282
|
+
}`;
|
|
12283
|
+
|
|
12284
|
+
class Radio extends i$1 {
|
|
12285
|
+
constructor() {
|
|
12286
|
+
super(...arguments);
|
|
12287
|
+
/**
|
|
12288
|
+
* The input field name for grouping radios.
|
|
12289
|
+
*/
|
|
12290
|
+
this.name = '';
|
|
12291
|
+
/**
|
|
12292
|
+
* The submitted value when this radio is selected.
|
|
12293
|
+
*/
|
|
12294
|
+
this.value = '';
|
|
12295
|
+
/**
|
|
12296
|
+
* The radio label.
|
|
12297
|
+
*/
|
|
12298
|
+
this.label = '';
|
|
12299
|
+
/**
|
|
12300
|
+
* Whether the radio is selected.
|
|
12301
|
+
*/
|
|
12302
|
+
this.checked = false;
|
|
12303
|
+
/**
|
|
12304
|
+
* If true, required icon is shown. Defaults to `false`.
|
|
12305
|
+
*/
|
|
12306
|
+
this.required = false;
|
|
12307
|
+
/**
|
|
12308
|
+
* If true, the radio is readonly. Defaults to `false`.
|
|
12309
|
+
*/
|
|
12310
|
+
this.readonly = false;
|
|
12311
|
+
/**
|
|
12312
|
+
* If true, the user cannot interact with the radio. Defaults to `false`.
|
|
12313
|
+
*/
|
|
12314
|
+
this.disabled = false;
|
|
12315
|
+
/**
|
|
12316
|
+
* Configuration object for aria attributes.
|
|
12317
|
+
*/
|
|
12318
|
+
this.configAria = {};
|
|
12319
|
+
this.hasFocus = false;
|
|
12320
|
+
this.isActive = false;
|
|
12321
|
+
this.slotHasContent = false;
|
|
12322
|
+
this.isGroupFocusTarget = false;
|
|
12323
|
+
this.windowMouseUp = () => {
|
|
12324
|
+
if (this.isActive) {
|
|
12325
|
+
this.isActive = false;
|
|
12326
|
+
}
|
|
12327
|
+
};
|
|
12328
|
+
this.windowKeyUp = (evt) => {
|
|
12329
|
+
if (this.isActive && evt.key === ' ') {
|
|
12330
|
+
evt.preventDefault();
|
|
12331
|
+
this.isActive = false;
|
|
12332
|
+
}
|
|
12333
|
+
};
|
|
12334
|
+
this.mouseDownHandler = () => {
|
|
12335
|
+
this.isActive = true;
|
|
12336
|
+
};
|
|
12337
|
+
this.keyDownHandler = (evt) => {
|
|
12338
|
+
if (evt.key === ' ') {
|
|
12339
|
+
evt.preventDefault();
|
|
12340
|
+
this.isActive = true;
|
|
12341
|
+
this.selectRadio(evt);
|
|
12342
|
+
}
|
|
12343
|
+
else if (evt.key === 'ArrowRight' || evt.key === 'ArrowDown') {
|
|
12344
|
+
evt.preventDefault();
|
|
12345
|
+
this.navigateGroup(Radio.DIRECTION_NEXT);
|
|
12346
|
+
}
|
|
12347
|
+
else if (evt.key === 'ArrowLeft' || evt.key === 'ArrowUp') {
|
|
12348
|
+
evt.preventDefault();
|
|
12349
|
+
this.navigateGroup(Radio.DIRECTION_PREVIOUS);
|
|
12350
|
+
}
|
|
12351
|
+
};
|
|
12352
|
+
this.clickHandler = (ev) => {
|
|
12353
|
+
this.selectRadio(ev);
|
|
12354
|
+
};
|
|
12355
|
+
this.blurHandler = (ev) => {
|
|
12356
|
+
this.hasFocus = false;
|
|
12357
|
+
this.dispatchEvent(new CustomEvent('blur', {
|
|
12358
|
+
detail: ev,
|
|
12359
|
+
bubbles: true,
|
|
12360
|
+
composed: true,
|
|
12361
|
+
}));
|
|
12362
|
+
};
|
|
12363
|
+
this.focusHandler = (ev) => {
|
|
12364
|
+
this.hasFocus = true;
|
|
12365
|
+
this.dispatchEvent(new CustomEvent('focus', {
|
|
12366
|
+
detail: ev,
|
|
12367
|
+
bubbles: true,
|
|
12368
|
+
composed: true,
|
|
12369
|
+
}));
|
|
12370
|
+
};
|
|
12371
|
+
}
|
|
12372
|
+
connectedCallback() {
|
|
12373
|
+
super.connectedCallback();
|
|
12374
|
+
this.handleInitialAttributes();
|
|
12375
|
+
window.addEventListener('mouseup', this.windowMouseUp);
|
|
12376
|
+
window.addEventListener('keyup', this.windowKeyUp);
|
|
12377
|
+
}
|
|
12378
|
+
disconnectedCallback() {
|
|
12379
|
+
super.disconnectedCallback();
|
|
12380
|
+
window.removeEventListener('mouseup', this.windowMouseUp);
|
|
12381
|
+
window.removeEventListener('keyup', this.windowKeyUp);
|
|
12382
|
+
}
|
|
12383
|
+
firstUpdated() {
|
|
12384
|
+
this.slotHasContent = this.hasChildNodes() || !!this.label;
|
|
12385
|
+
this.updateGroupFocusTarget();
|
|
12386
|
+
}
|
|
12387
|
+
updated(changedProps) {
|
|
12388
|
+
if (changedProps.has('label')) {
|
|
12389
|
+
this.slotHasContent = this.hasChildNodes() || !!this.label;
|
|
12390
|
+
}
|
|
12391
|
+
if (changedProps.has('checked') && this.checked) {
|
|
12392
|
+
this.uncheckSiblings();
|
|
12393
|
+
}
|
|
12394
|
+
if (changedProps.has('checked') || changedProps.has('name')) {
|
|
12395
|
+
this.updateGroupFocusTarget();
|
|
12396
|
+
}
|
|
12397
|
+
}
|
|
12398
|
+
handleInitialAttributes() {
|
|
12399
|
+
if (this.hasAttribute('tabindex')) {
|
|
12400
|
+
const attrValue = this.getAttribute('tabindex');
|
|
12401
|
+
if (attrValue !== null) {
|
|
12402
|
+
this.tabindex = parseInt(attrValue, 10);
|
|
12403
|
+
}
|
|
12404
|
+
this.removeAttribute('tabindex');
|
|
12405
|
+
}
|
|
12406
|
+
Array.from(this.attributes).forEach(attr => {
|
|
12407
|
+
if (attr.name.startsWith('aria-')) {
|
|
12408
|
+
this.configAria[attr.name] = attr.value;
|
|
12409
|
+
this.removeAttribute(attr.name);
|
|
12410
|
+
}
|
|
12411
|
+
});
|
|
12412
|
+
}
|
|
12413
|
+
selectRadio(ev) {
|
|
12414
|
+
if (this.disabled || this.readonly)
|
|
12415
|
+
return;
|
|
12416
|
+
if (!this.checked) {
|
|
12417
|
+
this.checked = true;
|
|
12418
|
+
this.uncheckSiblings();
|
|
12419
|
+
this.dispatchChange(ev);
|
|
12420
|
+
}
|
|
12421
|
+
this.containerElement?.focus();
|
|
12422
|
+
}
|
|
12423
|
+
dispatchChange(ev) {
|
|
12424
|
+
this.dispatchEvent(new CustomEvent('change', {
|
|
12425
|
+
detail: { value: this.value, checked: this.checked, originalEvent: ev },
|
|
12426
|
+
bubbles: true,
|
|
12427
|
+
composed: true,
|
|
12428
|
+
}));
|
|
12429
|
+
}
|
|
12430
|
+
uncheckSiblings() {
|
|
12431
|
+
if (!this.name || !this.checked)
|
|
12432
|
+
return;
|
|
12433
|
+
const radios = this.getGroupRadios();
|
|
12434
|
+
radios.forEach(radio => {
|
|
12435
|
+
if (radio === this)
|
|
12436
|
+
return;
|
|
12437
|
+
radio.checked = false;
|
|
12438
|
+
});
|
|
12439
|
+
}
|
|
12440
|
+
getGroupRadios() {
|
|
12441
|
+
if (!this.name)
|
|
12442
|
+
return [this];
|
|
12443
|
+
const scopeRoot = this.closest('form') ?? document;
|
|
12444
|
+
return Array.from(scopeRoot.querySelectorAll(`wc-radio[name="${this.name}"]`));
|
|
12445
|
+
}
|
|
12446
|
+
isRadioEnabled(radio) {
|
|
12447
|
+
return !radio.disabled && !radio.readonly;
|
|
12448
|
+
}
|
|
12449
|
+
updateGroupFocusTarget() {
|
|
12450
|
+
const group = this.getGroupRadios();
|
|
12451
|
+
if (!group.length)
|
|
12452
|
+
return;
|
|
12453
|
+
const enabledGroup = group.filter(radio => this.isRadioEnabled(radio));
|
|
12454
|
+
if (!enabledGroup.length) {
|
|
12455
|
+
group.forEach(radio => {
|
|
12456
|
+
radio.isGroupFocusTarget = false;
|
|
12457
|
+
});
|
|
12458
|
+
return;
|
|
12459
|
+
}
|
|
12460
|
+
const target = enabledGroup.find(radio => radio.checked) || enabledGroup[0];
|
|
12461
|
+
group.forEach(radio => {
|
|
12462
|
+
radio.isGroupFocusTarget = radio === target;
|
|
12463
|
+
});
|
|
12464
|
+
}
|
|
12465
|
+
navigateGroup(direction) {
|
|
12466
|
+
const group = this.getGroupRadios().filter(radio => this.isRadioEnabled(radio));
|
|
12467
|
+
if (!group.length)
|
|
12468
|
+
return;
|
|
12469
|
+
const currentIndex = group.indexOf(this);
|
|
12470
|
+
const startIndex = currentIndex >= 0 ? currentIndex : 0;
|
|
12471
|
+
const nextIndex = (startIndex + direction + group.length) % group.length;
|
|
12472
|
+
const target = group[nextIndex];
|
|
12473
|
+
target.selectRadio();
|
|
12474
|
+
target.containerElement?.focus();
|
|
12475
|
+
}
|
|
12476
|
+
/**
|
|
12477
|
+
* Sets focus on the radio.
|
|
12478
|
+
*/
|
|
12479
|
+
focus() {
|
|
12480
|
+
this.containerElement?.focus();
|
|
12481
|
+
}
|
|
12482
|
+
/**
|
|
12483
|
+
* Removes focus from the radio.
|
|
12484
|
+
*/
|
|
12485
|
+
blur() {
|
|
12486
|
+
this.containerElement?.blur();
|
|
12487
|
+
}
|
|
12488
|
+
render() {
|
|
12489
|
+
const cssClasses = {
|
|
12490
|
+
radio: true,
|
|
12491
|
+
'state-checked': this.checked,
|
|
12492
|
+
'has-focus': this.hasFocus,
|
|
12493
|
+
active: this.isActive,
|
|
12494
|
+
disabled: this.disabled,
|
|
12495
|
+
readonly: this.readonly,
|
|
12496
|
+
required: this.required,
|
|
12497
|
+
'has-content': this.slotHasContent,
|
|
12498
|
+
};
|
|
12499
|
+
return b `
|
|
12500
|
+
<label class=${e$3(cssClasses)}>
|
|
12501
|
+
<div
|
|
12502
|
+
class="container"
|
|
12503
|
+
tabindex=${this.isGroupFocusTarget
|
|
12504
|
+
? this.tabindex !== undefined
|
|
12505
|
+
? this.tabindex
|
|
12506
|
+
: 0
|
|
12507
|
+
: -1}
|
|
12508
|
+
role="radio"
|
|
12509
|
+
aria-disabled=${this.disabled}
|
|
12510
|
+
aria-required=${this.required}
|
|
12511
|
+
aria-checked=${this.checked}
|
|
12512
|
+
@click=${this.clickHandler}
|
|
12513
|
+
@mousedown=${this.mouseDownHandler}
|
|
12514
|
+
@keydown=${this.keyDownHandler}
|
|
12515
|
+
@blur=${this.blurHandler}
|
|
12516
|
+
@focus=${this.focusHandler}
|
|
12517
|
+
${spread(this.configAria)}
|
|
12518
|
+
>
|
|
12519
|
+
<div class="state-layer"></div>
|
|
12520
|
+
<div class="outer-circle"></div>
|
|
12521
|
+
<div class="inner-circle"></div>
|
|
12522
|
+
</div>
|
|
12523
|
+
|
|
12524
|
+
<input
|
|
12525
|
+
type="radio"
|
|
12526
|
+
class="input-native"
|
|
12527
|
+
name=${this.name}
|
|
12528
|
+
.value=${this.value}
|
|
12529
|
+
.checked=${this.checked}
|
|
12530
|
+
aria-hidden="true"
|
|
12531
|
+
?required=${this.required}
|
|
12532
|
+
?disabled=${this.disabled}
|
|
12533
|
+
tabindex="-1"
|
|
12534
|
+
/>
|
|
12535
|
+
|
|
12536
|
+
${this.label
|
|
12537
|
+
? b `<div class="label">${this.label}</div>`
|
|
12538
|
+
: b `<div class="label slot-container"><slot></slot></div>`}
|
|
12539
|
+
</label>
|
|
12540
|
+
`;
|
|
12541
|
+
}
|
|
12542
|
+
}
|
|
12543
|
+
Radio.DIRECTION_NEXT = 1;
|
|
12544
|
+
Radio.DIRECTION_PREVIOUS = -1;
|
|
12545
|
+
Radio.styles = [css_248z$1];
|
|
12546
|
+
__decorate([
|
|
12547
|
+
n({ type: String })
|
|
12548
|
+
], Radio.prototype, "name", void 0);
|
|
12549
|
+
__decorate([
|
|
12550
|
+
n({ type: String })
|
|
12551
|
+
], Radio.prototype, "value", void 0);
|
|
12552
|
+
__decorate([
|
|
12553
|
+
n({ type: String })
|
|
12554
|
+
], Radio.prototype, "label", void 0);
|
|
12555
|
+
__decorate([
|
|
12556
|
+
n({ type: Boolean, reflect: true })
|
|
12557
|
+
], Radio.prototype, "checked", void 0);
|
|
12558
|
+
__decorate([
|
|
12559
|
+
n({ type: Boolean, reflect: true })
|
|
12560
|
+
], Radio.prototype, "required", void 0);
|
|
12561
|
+
__decorate([
|
|
12562
|
+
n({ type: Boolean, reflect: true })
|
|
12563
|
+
], Radio.prototype, "readonly", void 0);
|
|
12564
|
+
__decorate([
|
|
12565
|
+
n({ type: Boolean, reflect: true })
|
|
12566
|
+
], Radio.prototype, "disabled", void 0);
|
|
12567
|
+
__decorate([
|
|
12568
|
+
n({ type: Object })
|
|
12569
|
+
], Radio.prototype, "configAria", void 0);
|
|
12570
|
+
__decorate([
|
|
12571
|
+
r()
|
|
12572
|
+
], Radio.prototype, "hasFocus", void 0);
|
|
12573
|
+
__decorate([
|
|
12574
|
+
r()
|
|
12575
|
+
], Radio.prototype, "isActive", void 0);
|
|
12576
|
+
__decorate([
|
|
12577
|
+
r()
|
|
12578
|
+
], Radio.prototype, "slotHasContent", void 0);
|
|
12579
|
+
__decorate([
|
|
12580
|
+
r()
|
|
12581
|
+
], Radio.prototype, "isGroupFocusTarget", void 0);
|
|
12582
|
+
__decorate([
|
|
12583
|
+
e$4('.container')
|
|
12584
|
+
], Radio.prototype, "containerElement", void 0);
|
|
12585
|
+
__decorate([
|
|
12586
|
+
e$4('.input-native')
|
|
12587
|
+
], Radio.prototype, "nativeElement", void 0);
|
|
12588
|
+
|
|
12589
|
+
var css_248z = i`@charset "UTF-8";
|
|
12590
|
+
* {
|
|
12591
|
+
box-sizing: border-box;
|
|
12592
|
+
}
|
|
12593
|
+
|
|
12594
|
+
.screen-reader-only {
|
|
12595
|
+
display: none !important;
|
|
12596
|
+
}
|
|
12597
|
+
|
|
12598
|
+
:host {
|
|
12599
|
+
display: block;
|
|
12600
|
+
width: 100%;
|
|
12601
|
+
}
|
|
12602
|
+
|
|
12603
|
+
/* Make the field wrapper behave as a select (pointer cursor) */
|
|
12604
|
+
.select-field {
|
|
12605
|
+
cursor: pointer;
|
|
12606
|
+
}
|
|
12607
|
+
|
|
12608
|
+
.select-trigger {
|
|
12609
|
+
flex: 1;
|
|
12610
|
+
display: flex;
|
|
12611
|
+
align-items: center;
|
|
12612
|
+
min-height: 1.5rem;
|
|
12613
|
+
outline: none;
|
|
12614
|
+
cursor: pointer;
|
|
12615
|
+
user-select: none;
|
|
12616
|
+
overflow: hidden;
|
|
12617
|
+
min-width: 0;
|
|
12618
|
+
}
|
|
12619
|
+
.select-trigger:focus-visible {
|
|
12620
|
+
outline: none;
|
|
12621
|
+
}
|
|
12622
|
+
|
|
12623
|
+
.display-value {
|
|
12624
|
+
font-family: var(--typography-body-large-font-family) !important;
|
|
12625
|
+
font-size: var(--typography-body-large-font-size) !important;
|
|
12626
|
+
font-weight: var(--typography-body-large-font-weight) !important;
|
|
12627
|
+
line-height: var(--typography-body-large-line-height) !important;
|
|
12628
|
+
letter-spacing: var(--typography-body-large-letter-spacing) !important;
|
|
12629
|
+
color: var(--color-on-surface);
|
|
12630
|
+
overflow: hidden;
|
|
12631
|
+
text-overflow: ellipsis;
|
|
12632
|
+
white-space: nowrap;
|
|
12633
|
+
}
|
|
12634
|
+
|
|
12635
|
+
.placeholder {
|
|
12636
|
+
font-family: var(--typography-body-large-font-family) !important;
|
|
12637
|
+
font-size: var(--typography-body-large-font-size) !important;
|
|
12638
|
+
font-weight: var(--typography-body-large-font-weight) !important;
|
|
12639
|
+
line-height: var(--typography-body-large-line-height) !important;
|
|
12640
|
+
letter-spacing: var(--typography-body-large-letter-spacing) !important;
|
|
12641
|
+
color: var(--color-on-surface-variant);
|
|
12642
|
+
overflow: hidden;
|
|
12643
|
+
text-overflow: ellipsis;
|
|
12644
|
+
white-space: nowrap;
|
|
12645
|
+
}
|
|
12646
|
+
|
|
12647
|
+
/* Typeahead search input */
|
|
12648
|
+
.search-input {
|
|
12649
|
+
flex: 1;
|
|
12650
|
+
width: 100%;
|
|
12651
|
+
border: none;
|
|
12652
|
+
outline: none;
|
|
12653
|
+
background: transparent;
|
|
12654
|
+
margin: 0;
|
|
12655
|
+
padding: 0;
|
|
12656
|
+
font-family: var(--typography-body-large-font-family) !important;
|
|
12657
|
+
font-size: var(--typography-body-large-font-size) !important;
|
|
12658
|
+
font-weight: var(--typography-body-large-font-weight) !important;
|
|
12659
|
+
line-height: var(--typography-body-large-line-height) !important;
|
|
12660
|
+
letter-spacing: var(--typography-body-large-letter-spacing) !important;
|
|
12661
|
+
color: var(--color-on-surface);
|
|
12662
|
+
cursor: pointer;
|
|
12663
|
+
}
|
|
12664
|
+
.search-input::placeholder {
|
|
12665
|
+
color: var(--color-on-surface-variant);
|
|
12666
|
+
}
|
|
12667
|
+
.search-input:focus {
|
|
12668
|
+
cursor: text;
|
|
12669
|
+
}
|
|
12670
|
+
|
|
12671
|
+
/* Field end slot wrapper */
|
|
12672
|
+
.field-end-wrapper {
|
|
12673
|
+
display: flex;
|
|
12674
|
+
align-items: center;
|
|
12675
|
+
gap: var(--spacing-050);
|
|
12676
|
+
}
|
|
12677
|
+
|
|
12678
|
+
/* Dropdown chevron icon */
|
|
12679
|
+
.dropdown-icon {
|
|
12680
|
+
--icon-size: 1.5rem;
|
|
12681
|
+
--icon-color: var(--color-on-surface-variant);
|
|
12682
|
+
transition: transform 200ms ease;
|
|
12683
|
+
flex-shrink: 0;
|
|
12684
|
+
}
|
|
12685
|
+
.dropdown-icon.dropdown-icon--open {
|
|
12686
|
+
transform: rotate(180deg);
|
|
12687
|
+
}
|
|
12688
|
+
|
|
12689
|
+
/* Clear button */
|
|
12690
|
+
.clear-btn {
|
|
12691
|
+
--button-container-shape: var(--shape-corner-full);
|
|
12692
|
+
}
|
|
12693
|
+
|
|
12694
|
+
/* Multi-select chips area — single scrollable row, no vertical growth */
|
|
12695
|
+
.chips-container {
|
|
12696
|
+
display: flex;
|
|
12697
|
+
flex-wrap: nowrap;
|
|
12698
|
+
overflow-x: auto;
|
|
12699
|
+
scrollbar-width: none;
|
|
12700
|
+
gap: var(--spacing-050);
|
|
12701
|
+
padding-block: var(--spacing-050);
|
|
12702
|
+
align-items: center;
|
|
12703
|
+
flex: 1;
|
|
12704
|
+
min-width: 0;
|
|
12705
|
+
}
|
|
12706
|
+
.chips-container::-webkit-scrollbar {
|
|
12707
|
+
display: none;
|
|
12708
|
+
}
|
|
12709
|
+
|
|
12710
|
+
/* Disabled state */
|
|
12711
|
+
:host([disabled]) .select-trigger,
|
|
12712
|
+
:host([disabled]) .select-field {
|
|
12713
|
+
cursor: not-allowed;
|
|
12714
|
+
}
|
|
12715
|
+
|
|
12716
|
+
/* Readonly state */
|
|
12717
|
+
:host([readonly]) .select-trigger,
|
|
12718
|
+
:host([readonly]) .select-field {
|
|
12719
|
+
cursor: default;
|
|
12720
|
+
}`;
|
|
12721
|
+
|
|
12722
|
+
/**
|
|
12723
|
+
* @label Select Option
|
|
12724
|
+
* @tag wc-option
|
|
12725
|
+
* @rawTag option
|
|
12726
|
+
* @parentRawTag select
|
|
12727
|
+
*
|
|
12728
|
+
* @summary A declarative option element for use inside wc-select.
|
|
12729
|
+
*
|
|
12730
|
+
* @example
|
|
12731
|
+
* ```html
|
|
12732
|
+
* <wc-select label="Fruit">
|
|
12733
|
+
* <wc-option value="apple">Apple</wc-option>
|
|
12734
|
+
* <wc-option value="banana">Banana</wc-option>
|
|
12735
|
+
* </wc-select>
|
|
12736
|
+
* ```
|
|
12737
|
+
*/
|
|
12738
|
+
class SelectOptionElement extends i$1 {
|
|
12739
|
+
constructor() {
|
|
12740
|
+
super(...arguments);
|
|
12741
|
+
/**
|
|
12742
|
+
* The option's submitted value.
|
|
12743
|
+
*/
|
|
12744
|
+
this.value = '';
|
|
12745
|
+
/**
|
|
12746
|
+
* Optional Material Symbol icon name shown before the label.
|
|
12747
|
+
*/
|
|
12748
|
+
this.icon = '';
|
|
12749
|
+
/**
|
|
12750
|
+
* Disables the option so it cannot be selected.
|
|
12751
|
+
*/
|
|
12752
|
+
this.disabled = false;
|
|
12753
|
+
// ── Managed by wc-select ──────────────────────────────────────────────────
|
|
12754
|
+
/** Reflects whether this option is currently selected. Set by wc-select. */
|
|
12755
|
+
this.selected = false;
|
|
12756
|
+
/**
|
|
12757
|
+
* When true the menu stays open after selection (used for multi-select).
|
|
12758
|
+
* Set by wc-select.
|
|
12759
|
+
*/
|
|
12760
|
+
this.keepOpen = false;
|
|
12761
|
+
/**
|
|
12762
|
+
* When true the option is hidden and excluded from keyboard navigation
|
|
12763
|
+
* because it does not match the current typeahead search query.
|
|
12764
|
+
* Set by wc-select.
|
|
12765
|
+
*/
|
|
12766
|
+
this.filtered = false;
|
|
12767
|
+
}
|
|
12768
|
+
/**
|
|
12769
|
+
* Returns the inner `wc-menu-item` element.
|
|
12770
|
+
* `wc-menu` discovers this via its `items` getter which checks `el.item`
|
|
12771
|
+
* as a `MenuItem` proxy, so keyboard navigation and activation work
|
|
12772
|
+
* without `wc-option` extending `MenuItem` directly.
|
|
12773
|
+
*/
|
|
12774
|
+
get item() {
|
|
12775
|
+
const el = this._menuItemEl;
|
|
12776
|
+
// Narrow to MenuItem — the shadow DOM only ever contains a wc-menu-item
|
|
12777
|
+
// (a MenuItem subclass), so this cast is safe by construction.
|
|
12778
|
+
return el != null ? el : null;
|
|
12779
|
+
}
|
|
12780
|
+
render() {
|
|
12781
|
+
return b `
|
|
12782
|
+
<wc-menu-item
|
|
12783
|
+
value=${this.value}
|
|
12784
|
+
?disabled=${this.disabled || this.filtered}
|
|
12785
|
+
?selected=${this.selected}
|
|
12786
|
+
?keep-open=${this.keepOpen}
|
|
12787
|
+
>
|
|
12788
|
+
${this.icon
|
|
12789
|
+
? b `<wc-icon name=${this.icon} slot="leading-icon"></wc-icon>`
|
|
12790
|
+
: A}
|
|
12791
|
+
<slot></slot>
|
|
12792
|
+
${this.selected && this.keepOpen
|
|
12793
|
+
? b `<wc-icon
|
|
12794
|
+
name="check"
|
|
12795
|
+
slot="trailing-supporting-text"
|
|
12796
|
+
></wc-icon>`
|
|
12797
|
+
: A}
|
|
12798
|
+
</wc-menu-item>
|
|
12799
|
+
`;
|
|
12800
|
+
}
|
|
12801
|
+
}
|
|
12802
|
+
SelectOptionElement.styles = [
|
|
12803
|
+
i `
|
|
12804
|
+
:host {
|
|
12805
|
+
display: contents;
|
|
12806
|
+
}
|
|
12807
|
+
:host([filtered]) {
|
|
12808
|
+
display: none;
|
|
12809
|
+
}
|
|
12810
|
+
`,
|
|
12811
|
+
];
|
|
12812
|
+
__decorate([
|
|
12813
|
+
n({ type: String, reflect: true })
|
|
12814
|
+
], SelectOptionElement.prototype, "value", void 0);
|
|
12815
|
+
__decorate([
|
|
12816
|
+
n({ type: String, reflect: true })
|
|
12817
|
+
], SelectOptionElement.prototype, "icon", void 0);
|
|
12818
|
+
__decorate([
|
|
12819
|
+
n({ type: Boolean, reflect: true })
|
|
12820
|
+
], SelectOptionElement.prototype, "disabled", void 0);
|
|
12821
|
+
__decorate([
|
|
12822
|
+
n({ type: Boolean, reflect: true })
|
|
12823
|
+
], SelectOptionElement.prototype, "selected", void 0);
|
|
12824
|
+
__decorate([
|
|
12825
|
+
n({ type: Boolean, attribute: 'keep-open' })
|
|
12826
|
+
], SelectOptionElement.prototype, "keepOpen", void 0);
|
|
12827
|
+
__decorate([
|
|
12828
|
+
n({ type: Boolean, reflect: true })
|
|
12829
|
+
], SelectOptionElement.prototype, "filtered", void 0);
|
|
12830
|
+
__decorate([
|
|
12831
|
+
e$4('wc-menu-item')
|
|
12832
|
+
], SelectOptionElement.prototype, "_menuItemEl", void 0);
|
|
12833
|
+
|
|
12834
|
+
/**
|
|
12835
|
+
* @label Select
|
|
12836
|
+
* @tag wc-select
|
|
12837
|
+
* @rawTag select
|
|
12838
|
+
*
|
|
12839
|
+
* @summary A dropdown select component supporting single and multi-select with optional typeahead search.
|
|
12840
|
+
* @overview
|
|
12841
|
+
* Select builds on wc-field and wc-menu to provide a fully-featured dropdown picker.
|
|
12842
|
+
*
|
|
12843
|
+
* - Single and multi-select modes
|
|
12844
|
+
* - Client-side typeahead with `search="contains"`
|
|
12845
|
+
* - Server-side typeahead with `search="managed"`
|
|
12846
|
+
* - Multi-select chips display
|
|
12847
|
+
*
|
|
12848
|
+
* @example
|
|
12849
|
+
* ```html
|
|
12850
|
+
* <wc-select label="Fruit" placeholder="Pick a fruit...">
|
|
12851
|
+
* <wc-option value="apple">Apple</wc-option>
|
|
12852
|
+
* <wc-option value="banana">Banana</wc-option>
|
|
12853
|
+
* </wc-select>
|
|
12854
|
+
* ```
|
|
12855
|
+
* @tags form
|
|
12856
|
+
*/
|
|
12857
|
+
class Select extends BaseInput {
|
|
12858
|
+
constructor() {
|
|
12859
|
+
super(...arguments);
|
|
12860
|
+
/**
|
|
12861
|
+
* Array of options to display in the dropdown.
|
|
12862
|
+
* Setting this property creates matching `<wc-option>` children automatically.
|
|
12863
|
+
*/
|
|
12864
|
+
this.options = [];
|
|
12865
|
+
/**
|
|
12866
|
+
* The selected value. For multi-select, a comma-separated list of values.
|
|
12867
|
+
*/
|
|
12868
|
+
this.value = '';
|
|
12869
|
+
/**
|
|
12870
|
+
* Enable multi-select mode.
|
|
12871
|
+
*/
|
|
12872
|
+
this.multiple = false;
|
|
12873
|
+
/**
|
|
12874
|
+
* Enable typeahead search.
|
|
12875
|
+
* - `'contains'`: filters options client-side.
|
|
12876
|
+
* - `'managed'`: emits a `select-search` event for server-controlled filtering.
|
|
12877
|
+
*/
|
|
12878
|
+
this.search = '';
|
|
12879
|
+
/**
|
|
12880
|
+
* Placeholder text shown when no value is selected.
|
|
12881
|
+
*/
|
|
12882
|
+
this.placeholder = '';
|
|
12883
|
+
/**
|
|
12884
|
+
* Label displayed above the field.
|
|
12885
|
+
*/
|
|
12886
|
+
this.label = '';
|
|
12887
|
+
/**
|
|
12888
|
+
* Show a clear button in single-select mode when a value is selected.
|
|
12889
|
+
*/
|
|
12890
|
+
this.clearable = false;
|
|
12891
|
+
/**
|
|
12892
|
+
* Visual variant of the field.
|
|
12893
|
+
*/
|
|
12894
|
+
this.variant = 'default';
|
|
12895
|
+
/**
|
|
12896
|
+
* Helper text displayed below the field.
|
|
12897
|
+
*/
|
|
12898
|
+
this.helperText = '';
|
|
12899
|
+
this.error = false;
|
|
12900
|
+
this.errorText = '';
|
|
12901
|
+
this.warning = false;
|
|
12902
|
+
this.warningText = '';
|
|
12903
|
+
this._open = false;
|
|
12904
|
+
this._focused = false;
|
|
12905
|
+
this._searchQuery = '';
|
|
12906
|
+
/** True when all options are filtered out by the current search query. */
|
|
12907
|
+
this._noOptionsVisible = false;
|
|
12908
|
+
}
|
|
12909
|
+
get _menu() {
|
|
12910
|
+
return this.renderRoot?.querySelector('wc-menu') ?? null;
|
|
12911
|
+
}
|
|
12912
|
+
focus() {
|
|
12913
|
+
this._triggerEl?.focus();
|
|
12914
|
+
}
|
|
12915
|
+
blur() {
|
|
12916
|
+
this._triggerEl?.blur();
|
|
12917
|
+
}
|
|
12918
|
+
// ── Lifecycle ─────────────────────────────────────────────────────────────
|
|
12919
|
+
updated(changedProperties) {
|
|
12920
|
+
if (changedProperties.has('options')) {
|
|
12921
|
+
this._syncProgrammaticOptions();
|
|
12922
|
+
}
|
|
12923
|
+
this._syncOptionStates();
|
|
12924
|
+
}
|
|
12925
|
+
// ── Programmatic options ───────────────────────────────────────────────────
|
|
12926
|
+
/**
|
|
12927
|
+
* Reconciles the `options` property with auto-generated `<wc-option>` light-DOM
|
|
12928
|
+
* children (marked `data-generated`). Declarative children placed by the
|
|
12929
|
+
* consumer are left untouched.
|
|
12930
|
+
*/
|
|
12931
|
+
_syncProgrammaticOptions() {
|
|
12932
|
+
this.querySelectorAll('wc-option[data-generated]').forEach(el => el.remove());
|
|
12933
|
+
for (const opt of this.options) {
|
|
12934
|
+
const el = new SelectOptionElement();
|
|
12935
|
+
el.value = opt.value;
|
|
12936
|
+
if (opt.icon)
|
|
12937
|
+
el.icon = opt.icon;
|
|
12938
|
+
el.textContent = opt.label;
|
|
12939
|
+
el.dataset.generated = '';
|
|
12940
|
+
this.appendChild(el);
|
|
12941
|
+
}
|
|
12942
|
+
}
|
|
12943
|
+
// ── Option state sync ──────────────────────────────────────────────────────
|
|
12944
|
+
/**
|
|
12945
|
+
* Pushes `selected`, `keepOpen`, and `filtered` state onto every `<wc-option>`
|
|
12946
|
+
* child element so each one can render itself correctly.
|
|
12947
|
+
*/
|
|
12948
|
+
_syncOptionStates() {
|
|
12949
|
+
const optEls = Array.from(this.querySelectorAll('wc-option'));
|
|
12950
|
+
let visibleCount = 0;
|
|
12951
|
+
for (const opt of optEls) {
|
|
12952
|
+
opt.selected = this._isSelected(opt.value);
|
|
12953
|
+
opt.keepOpen = this.multiple;
|
|
12954
|
+
if (this.search && this.search !== 'managed' && this._searchQuery) {
|
|
12955
|
+
const q = this._searchQuery.toLowerCase();
|
|
12956
|
+
const label = opt.textContent?.trim() ?? '';
|
|
12957
|
+
opt.filtered = !label.toLowerCase().includes(q);
|
|
12958
|
+
if (!opt.filtered)
|
|
12959
|
+
visibleCount++;
|
|
12960
|
+
}
|
|
12961
|
+
else {
|
|
12962
|
+
opt.filtered = false;
|
|
12963
|
+
visibleCount++;
|
|
12964
|
+
}
|
|
12965
|
+
}
|
|
12966
|
+
this._noOptionsVisible = optEls.length > 0 && visibleCount === 0;
|
|
12967
|
+
}
|
|
12968
|
+
// ── Helpers ────────────────────────────────────────────────────────────────
|
|
12969
|
+
get _selectedValues() {
|
|
12970
|
+
if (!this.value)
|
|
12971
|
+
return [];
|
|
12972
|
+
return this.value
|
|
12973
|
+
.split(',')
|
|
12974
|
+
.map(v => v.trim())
|
|
12975
|
+
.filter(Boolean);
|
|
12976
|
+
}
|
|
12977
|
+
_isSelected(value) {
|
|
12978
|
+
return this._selectedValues.includes(value);
|
|
12979
|
+
}
|
|
12980
|
+
/** Returns the display label for a given option value. */
|
|
12981
|
+
_getLabelForValue(val) {
|
|
12982
|
+
for (const opt of this.querySelectorAll('wc-option')) {
|
|
12983
|
+
if (opt.value === val)
|
|
12984
|
+
return opt.textContent?.trim() ?? val;
|
|
12985
|
+
}
|
|
12986
|
+
// Fallback to options array (before wc-option children are created)
|
|
12987
|
+
return this.options.find(o => o.value === val)?.label ?? val;
|
|
12988
|
+
}
|
|
12989
|
+
get _displayLabel() {
|
|
12990
|
+
if (!this.value)
|
|
12991
|
+
return '';
|
|
12992
|
+
const firstValue = this._selectedValues[0];
|
|
12993
|
+
if (!firstValue)
|
|
12994
|
+
return '';
|
|
12995
|
+
return this._getLabelForValue(firstValue);
|
|
12996
|
+
}
|
|
12997
|
+
get _isPopulated() {
|
|
12998
|
+
return !!this.value;
|
|
12999
|
+
}
|
|
13000
|
+
// ── Menu open/close ────────────────────────────────────────────────────────
|
|
13001
|
+
_openMenu() {
|
|
13002
|
+
if (this.disabled || this.readonly)
|
|
13003
|
+
return;
|
|
13004
|
+
this._open = true;
|
|
13005
|
+
this._focused = true;
|
|
13006
|
+
const menu = this._menu;
|
|
13007
|
+
if (menu && this._triggerEl) {
|
|
13008
|
+
menu.anchorElement = this._triggerEl;
|
|
13009
|
+
menu.show();
|
|
13010
|
+
}
|
|
13011
|
+
if (this.search) {
|
|
13012
|
+
this._searchQuery = '';
|
|
13013
|
+
// Use rAF so that the search input receives focus *after* wc-menu has
|
|
13014
|
+
// finished showing and potentially focused a menu item.
|
|
13015
|
+
this.updateComplete.then(() => {
|
|
13016
|
+
requestAnimationFrame(() => {
|
|
13017
|
+
this._searchInputEl?.focus();
|
|
13018
|
+
});
|
|
13019
|
+
});
|
|
13020
|
+
}
|
|
13021
|
+
}
|
|
13022
|
+
_closeMenu() {
|
|
13023
|
+
if (!this._open)
|
|
13024
|
+
return;
|
|
13025
|
+
this._open = false;
|
|
13026
|
+
this._focused = false;
|
|
13027
|
+
this._searchQuery = '';
|
|
13028
|
+
this._menu?.close();
|
|
13029
|
+
}
|
|
13030
|
+
// ── Event handlers ─────────────────────────────────────────────────────────
|
|
13031
|
+
_handleTriggerClick(event) {
|
|
13032
|
+
// Ignore clicks that originated inside the search input — those should not
|
|
13033
|
+
// toggle the menu (the input needs to stay open so the user can type).
|
|
13034
|
+
if (event.target instanceof HTMLInputElement) {
|
|
13035
|
+
return;
|
|
13036
|
+
}
|
|
13037
|
+
if (this._open) {
|
|
13038
|
+
this._closeMenu();
|
|
13039
|
+
}
|
|
13040
|
+
else {
|
|
13041
|
+
this._openMenu();
|
|
13042
|
+
}
|
|
13043
|
+
}
|
|
13044
|
+
_handleTriggerKeyDown(event) {
|
|
13045
|
+
// When the typeahead search input is active, let the input handle its own
|
|
13046
|
+
// keys (Space, Enter, etc.). Only intercept Escape to close the menu.
|
|
13047
|
+
if (event.target instanceof HTMLInputElement) {
|
|
13048
|
+
if (event.key === 'Escape') {
|
|
13049
|
+
event.preventDefault();
|
|
13050
|
+
this._closeMenu();
|
|
13051
|
+
}
|
|
13052
|
+
return;
|
|
13053
|
+
}
|
|
13054
|
+
switch (event.key) {
|
|
13055
|
+
case 'Enter':
|
|
13056
|
+
case ' ':
|
|
13057
|
+
case 'ArrowDown':
|
|
13058
|
+
event.preventDefault();
|
|
13059
|
+
if (!this._open)
|
|
13060
|
+
this._openMenu();
|
|
13061
|
+
break;
|
|
13062
|
+
case 'Escape':
|
|
13063
|
+
if (this._open) {
|
|
13064
|
+
event.preventDefault();
|
|
13065
|
+
this._closeMenu();
|
|
13066
|
+
}
|
|
13067
|
+
break;
|
|
13068
|
+
}
|
|
13069
|
+
}
|
|
13070
|
+
_handleMenuClosed() {
|
|
13071
|
+
this._open = false;
|
|
13072
|
+
this._focused = false;
|
|
13073
|
+
this._searchQuery = '';
|
|
13074
|
+
}
|
|
13075
|
+
_handleMenuItemActivate(event) {
|
|
13076
|
+
const item = event.detail?.item;
|
|
13077
|
+
if (!item)
|
|
13078
|
+
return;
|
|
13079
|
+
const val = item.value;
|
|
13080
|
+
if (!val)
|
|
13081
|
+
return;
|
|
13082
|
+
if (this.multiple) {
|
|
13083
|
+
const values = this._selectedValues;
|
|
13084
|
+
const idx = values.indexOf(val);
|
|
13085
|
+
if (idx >= 0) {
|
|
13086
|
+
values.splice(idx, 1);
|
|
13087
|
+
}
|
|
13088
|
+
else {
|
|
13089
|
+
values.push(val);
|
|
13090
|
+
}
|
|
13091
|
+
this.value = values.join(',');
|
|
13092
|
+
}
|
|
13093
|
+
else {
|
|
13094
|
+
this.value = val;
|
|
13095
|
+
this._closeMenu();
|
|
13096
|
+
}
|
|
13097
|
+
this._dispatchChange();
|
|
13098
|
+
}
|
|
13099
|
+
_dispatchChange() {
|
|
13100
|
+
this.dispatchEvent(new CustomEvent('change', {
|
|
13101
|
+
detail: { value: this.value },
|
|
13102
|
+
bubbles: true,
|
|
13103
|
+
composed: true,
|
|
13104
|
+
}));
|
|
13105
|
+
}
|
|
13106
|
+
_handleSearchInput(event) {
|
|
13107
|
+
this._searchQuery = event.target.value;
|
|
13108
|
+
if (this.search === 'managed') {
|
|
13109
|
+
this.dispatchEvent(new CustomEvent('select-search', {
|
|
13110
|
+
detail: { value: this._searchQuery },
|
|
13111
|
+
bubbles: true,
|
|
13112
|
+
composed: true,
|
|
13113
|
+
}));
|
|
13114
|
+
}
|
|
13115
|
+
}
|
|
13116
|
+
_handleClear(event) {
|
|
13117
|
+
event.stopPropagation();
|
|
13118
|
+
this.value = '';
|
|
13119
|
+
this._dispatchChange();
|
|
13120
|
+
}
|
|
13121
|
+
_handleChipDismiss(event, chipValue) {
|
|
13122
|
+
event.stopPropagation();
|
|
13123
|
+
const values = this._selectedValues.filter(v => v !== chipValue);
|
|
13124
|
+
this.value = values.join(',');
|
|
13125
|
+
this._dispatchChange();
|
|
13126
|
+
}
|
|
13127
|
+
// ── Render helpers ─────────────────────────────────────────────────────────
|
|
13128
|
+
_renderTriggerContent() {
|
|
13129
|
+
// Typeahead: when open, show a text input for filtering
|
|
13130
|
+
if (this.search && this._open) {
|
|
13131
|
+
return b `<input
|
|
13132
|
+
class="search-input"
|
|
13133
|
+
.value=${this._searchQuery}
|
|
13134
|
+
placeholder=${this._displayLabel || this.placeholder}
|
|
13135
|
+
@input=${this._handleSearchInput}
|
|
13136
|
+
/>`;
|
|
13137
|
+
}
|
|
13138
|
+
// Multi-select: show chips for selected items
|
|
13139
|
+
if (this.multiple && this._selectedValues.length > 0) {
|
|
13140
|
+
return b `<div class="chips-container">
|
|
13141
|
+
${this._selectedValues.map(val => b `
|
|
13142
|
+
<wc-chip
|
|
13143
|
+
dismissible
|
|
13144
|
+
value=${val}
|
|
13145
|
+
@tag--dismiss=${(e) => this._handleChipDismiss(e, val)}
|
|
13146
|
+
>${this._getLabelForValue(val)}</wc-chip
|
|
13147
|
+
>
|
|
13148
|
+
`)}
|
|
13149
|
+
</div>`;
|
|
13150
|
+
}
|
|
13151
|
+
// Single select: show selected label or placeholder
|
|
13152
|
+
const label = this._displayLabel;
|
|
13153
|
+
if (!label) {
|
|
13154
|
+
return b `<span class="placeholder">${this.placeholder}</span>`;
|
|
13155
|
+
}
|
|
13156
|
+
return b `<span class="display-value">${label}</span>`;
|
|
13157
|
+
}
|
|
13158
|
+
_renderFieldEnd() {
|
|
13159
|
+
const showClear = this.clearable &&
|
|
13160
|
+
!this.multiple &&
|
|
13161
|
+
!!this.value &&
|
|
13162
|
+
!this.disabled &&
|
|
13163
|
+
!this.readonly;
|
|
13164
|
+
return b `
|
|
13165
|
+
${showClear
|
|
13166
|
+
? b `<wc-icon-button
|
|
13167
|
+
class="clear-btn"
|
|
13168
|
+
variant="text"
|
|
13169
|
+
size="sm"
|
|
13170
|
+
name="close"
|
|
13171
|
+
@click=${this._handleClear}
|
|
13172
|
+
></wc-icon-button>`
|
|
13173
|
+
: A}
|
|
13174
|
+
<wc-icon
|
|
13175
|
+
class=${e$3({
|
|
13176
|
+
'dropdown-icon': true,
|
|
13177
|
+
'dropdown-icon--open': this._open,
|
|
13178
|
+
})}
|
|
13179
|
+
name="arrow_drop_down"
|
|
13180
|
+
></wc-icon>
|
|
13181
|
+
`;
|
|
13182
|
+
}
|
|
13183
|
+
render() {
|
|
13184
|
+
return b `
|
|
13185
|
+
<wc-field
|
|
13186
|
+
label=${this.label}
|
|
13187
|
+
?required=${this.required}
|
|
13188
|
+
?disabled=${this.disabled}
|
|
13189
|
+
?readonly=${this.readonly}
|
|
13190
|
+
?skeleton=${this.skeleton}
|
|
13191
|
+
helper-text=${this.helperText}
|
|
13192
|
+
?error=${this.error}
|
|
13193
|
+
error-text=${this.errorText}
|
|
13194
|
+
?warning=${this.warning}
|
|
13195
|
+
warning-text=${this.warningText}
|
|
13196
|
+
variant=${this.variant}
|
|
13197
|
+
?populated=${this._isPopulated || this._open}
|
|
13198
|
+
?focused=${this._focused}
|
|
13199
|
+
.host=${this}
|
|
13200
|
+
class="select-field"
|
|
13201
|
+
>
|
|
13202
|
+
<div
|
|
13203
|
+
class="select-trigger"
|
|
13204
|
+
tabindex=${this.disabled ? -1 : 0}
|
|
13205
|
+
role="combobox"
|
|
13206
|
+
aria-expanded=${String(this._open)}
|
|
13207
|
+
aria-haspopup="listbox"
|
|
13208
|
+
@click=${this._handleTriggerClick}
|
|
13209
|
+
@keydown=${this._handleTriggerKeyDown}
|
|
13210
|
+
>
|
|
13211
|
+
${this._renderTriggerContent()}
|
|
13212
|
+
</div>
|
|
13213
|
+
|
|
13214
|
+
<div slot="field-end" class="field-end-wrapper">
|
|
13215
|
+
${this._renderFieldEnd()}
|
|
13216
|
+
</div>
|
|
13217
|
+
</wc-field>
|
|
13218
|
+
|
|
13219
|
+
<wc-menu
|
|
13220
|
+
placement="bottom-start"
|
|
13221
|
+
aria-label=${this.label || 'Options'}
|
|
13222
|
+
@closed=${this._handleMenuClosed}
|
|
13223
|
+
@menu-item-activate=${(e) => this._handleMenuItemActivate(e)}
|
|
13224
|
+
>
|
|
13225
|
+
<slot></slot>
|
|
13226
|
+
${this._noOptionsVisible
|
|
13227
|
+
? b `<wc-menu-item disabled>No options</wc-menu-item>`
|
|
13228
|
+
: A}
|
|
13229
|
+
</wc-menu>
|
|
13230
|
+
`;
|
|
13231
|
+
}
|
|
13232
|
+
}
|
|
13233
|
+
Select.styles = [css_248z];
|
|
13234
|
+
__decorate([
|
|
13235
|
+
n({ type: Array })
|
|
13236
|
+
], Select.prototype, "options", void 0);
|
|
13237
|
+
__decorate([
|
|
13238
|
+
n({ type: String, reflect: true })
|
|
13239
|
+
], Select.prototype, "value", void 0);
|
|
13240
|
+
__decorate([
|
|
13241
|
+
n({ type: Boolean, reflect: true })
|
|
13242
|
+
], Select.prototype, "multiple", void 0);
|
|
13243
|
+
__decorate([
|
|
13244
|
+
n({ type: String })
|
|
13245
|
+
], Select.prototype, "search", void 0);
|
|
13246
|
+
__decorate([
|
|
13247
|
+
n({ type: String })
|
|
13248
|
+
], Select.prototype, "placeholder", void 0);
|
|
13249
|
+
__decorate([
|
|
13250
|
+
n({ type: String })
|
|
13251
|
+
], Select.prototype, "label", void 0);
|
|
13252
|
+
__decorate([
|
|
13253
|
+
n({ type: Boolean })
|
|
13254
|
+
], Select.prototype, "clearable", void 0);
|
|
13255
|
+
__decorate([
|
|
13256
|
+
n({ type: String })
|
|
13257
|
+
], Select.prototype, "variant", void 0);
|
|
13258
|
+
__decorate([
|
|
13259
|
+
n({ type: String, attribute: 'helper-text' })
|
|
13260
|
+
], Select.prototype, "helperText", void 0);
|
|
13261
|
+
__decorate([
|
|
13262
|
+
n({ type: Boolean })
|
|
13263
|
+
], Select.prototype, "error", void 0);
|
|
13264
|
+
__decorate([
|
|
13265
|
+
n({ type: String, attribute: 'error-text' })
|
|
13266
|
+
], Select.prototype, "errorText", void 0);
|
|
13267
|
+
__decorate([
|
|
13268
|
+
n({ type: Boolean })
|
|
13269
|
+
], Select.prototype, "warning", void 0);
|
|
13270
|
+
__decorate([
|
|
13271
|
+
n({ type: String, attribute: 'warning-text' })
|
|
13272
|
+
], Select.prototype, "warningText", void 0);
|
|
13273
|
+
__decorate([
|
|
13274
|
+
r()
|
|
13275
|
+
], Select.prototype, "_open", void 0);
|
|
13276
|
+
__decorate([
|
|
13277
|
+
r()
|
|
13278
|
+
], Select.prototype, "_focused", void 0);
|
|
13279
|
+
__decorate([
|
|
13280
|
+
r()
|
|
13281
|
+
], Select.prototype, "_searchQuery", void 0);
|
|
13282
|
+
__decorate([
|
|
13283
|
+
r()
|
|
13284
|
+
], Select.prototype, "_noOptionsVisible", void 0);
|
|
13285
|
+
__decorate([
|
|
13286
|
+
e$4('.select-trigger')
|
|
13287
|
+
], Select.prototype, "_triggerEl", void 0);
|
|
13288
|
+
__decorate([
|
|
13289
|
+
e$4('.search-input')
|
|
13290
|
+
], Select.prototype, "_searchInputEl", void 0);
|
|
13291
|
+
|
|
13292
|
+
export { Accordion as A, Badge as B, Checkbox as C, DatePicker as D, Elevation as E, Field as F, Tabs as G, Tag as H, Icon as I, Textarea as J, TimePicker as K, LinearProgress as L, Menu as M, NumberField as N, Tooltip as O, Pagination as P, TreeNode as Q, Radio as R, SegmentedButton as S, Tab as T, TreeView as U, Avatar as a, Breadcrumb as b, BreadcrumbItem as c, Chip as d, CircularProgress as e, Container as f, Divider as g, EmptyState as h, FocusRing as i, Image as j, Input as k, Link as l, MenuItem as m, Ripple as n, SegmentedButtonGroup as o, Select as p, SelectOptionElement as q, Skeleton as r, Slider as s, Snackbar as t, Spinner as u, SubMenu as v, Switch as w, TabGroup as x, TabPanel as y, Table as z };
|
|
13293
|
+
//# sourceMappingURL=select-C3XAzenC.js.map
|