@sbb-esta/lyne-elements 0.52.1 → 0.53.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/accordion.js +54 -54
- package/action-group.js +3 -3
- package/alert/alert-group.js +22 -22
- package/alert/alert.js +22 -22
- package/autocomplete.js +126 -126
- package/breadcrumb/breadcrumb-group.js +60 -60
- package/breadcrumb/breadcrumb.js +17 -17
- package/calendar.js +423 -423
- package/card/card-badge.js +17 -17
- package/card/card.js +2 -2
- package/card/common.js +30 -30
- package/checkbox/checkbox/checkbox.d.ts +3 -46
- package/checkbox/checkbox/checkbox.d.ts.map +1 -1
- package/checkbox/checkbox-group/checkbox-group.d.ts +4 -2
- package/checkbox/checkbox-group/checkbox-group.d.ts.map +1 -1
- package/checkbox/checkbox-group.js +26 -23
- package/checkbox/checkbox-panel/checkbox-panel.d.ts +41 -0
- package/checkbox/checkbox-panel/checkbox-panel.d.ts.map +1 -0
- package/checkbox/checkbox-panel.d.ts +2 -0
- package/checkbox/checkbox-panel.d.ts.map +1 -0
- package/checkbox/checkbox-panel.js +67 -0
- package/checkbox/checkbox.js +27 -104
- package/checkbox/common/checkbox-common.d.ts +13 -0
- package/checkbox/common/checkbox-common.d.ts.map +1 -0
- package/checkbox/common.d.ts +2 -0
- package/checkbox/common.d.ts.map +1 -0
- package/checkbox/common.js +52 -0
- package/checkbox.d.ts +2 -0
- package/checkbox.d.ts.map +1 -1
- package/checkbox.js +2 -0
- package/clock.js +83 -83
- package/container/sticky-bar.js +16 -16
- package/core/a11y.js +91 -91
- package/core/base-elements.js +86 -86
- package/core/controllers.js +40 -40
- package/core/datetime.js +32 -32
- package/core/dom.js +26 -26
- package/core/eventing.js +33 -33
- package/core/mixins/panel-mixin.d.ts +13 -0
- package/core/mixins/panel-mixin.d.ts.map +1 -0
- package/core/mixins.d.ts +1 -0
- package/core/mixins.d.ts.map +1 -1
- package/core/mixins.js +170 -139
- package/core/styles/node_modules_@sbb-esta_lyne-design-tokens_dist_scss_sbb-variables_css--mixin.scss +1 -1
- package/core/testing.js +29 -29
- package/core.css +1 -1
- package/custom-elements.json +8862 -6904
- package/datepicker/common.js +55 -55
- package/datepicker/datepicker-toggle.js +94 -94
- package/datepicker/datepicker.js +144 -144
- package/development/checkbox/checkbox/checkbox.d.ts +3 -46
- package/development/checkbox/checkbox/checkbox.d.ts.map +1 -1
- package/development/checkbox/checkbox-group/checkbox-group.d.ts +4 -2
- package/development/checkbox/checkbox-group/checkbox-group.d.ts.map +1 -1
- package/development/checkbox/checkbox-group.js +43 -13
- package/development/checkbox/checkbox-panel/checkbox-panel.d.ts +41 -0
- package/development/checkbox/checkbox-panel/checkbox-panel.d.ts.map +1 -0
- package/development/checkbox/checkbox-panel.d.ts +2 -0
- package/development/checkbox/checkbox-panel.d.ts.map +1 -0
- package/development/checkbox/checkbox-panel.js +86 -0
- package/development/checkbox/checkbox.js +19 -239
- package/development/checkbox/common/checkbox-common.d.ts +13 -0
- package/development/checkbox/common/checkbox-common.d.ts.map +1 -0
- package/development/checkbox/common.d.ts +2 -0
- package/development/checkbox/common.d.ts.map +1 -0
- package/development/checkbox/common.js +156 -0
- package/development/checkbox.d.ts +2 -0
- package/development/checkbox.d.ts.map +1 -1
- package/development/checkbox.js +3 -1
- package/development/core/mixins/panel-mixin.d.ts +13 -0
- package/development/core/mixins/panel-mixin.d.ts.map +1 -0
- package/development/core/mixins.d.ts +1 -0
- package/development/core/mixins.d.ts.map +1 -1
- package/development/core/mixins.js +187 -31
- package/development/image.js +1 -1
- package/development/radio-button/common/radio-button-common.d.ts +22 -0
- package/development/radio-button/common/radio-button-common.d.ts.map +1 -0
- package/development/radio-button/common.d.ts +2 -0
- package/development/radio-button/common.d.ts.map +1 -0
- package/development/radio-button/common.js +294 -0
- package/development/radio-button/radio-button/radio-button.d.ts +2 -81
- package/development/radio-button/radio-button/radio-button.d.ts.map +1 -1
- package/development/radio-button/radio-button-group/radio-button-group.d.ts +6 -4
- package/development/radio-button/radio-button-group/radio-button-group.d.ts.map +1 -1
- package/development/radio-button/radio-button-group.js +55 -23
- package/development/radio-button/radio-button-panel/index.d.ts +2 -0
- package/development/radio-button/radio-button-panel/index.d.ts.map +1 -0
- package/development/radio-button/radio-button-panel/radio-button-panel.d.ts +29 -0
- package/development/radio-button/radio-button-panel/radio-button-panel.d.ts.map +1 -0
- package/development/radio-button/radio-button-panel.d.ts +2 -0
- package/development/radio-button/radio-button-panel.d.ts.map +1 -0
- package/development/radio-button/radio-button-panel.js +69 -0
- package/development/radio-button/radio-button.js +10 -324
- package/development/radio-button.d.ts +2 -0
- package/development/radio-button.d.ts.map +1 -1
- package/development/radio-button.js +3 -1
- package/{selection-panel/selection-panel.d.ts → development/selection-expansion-panel/selection-expansion-panel.d.ts} +9 -7
- package/development/selection-expansion-panel/selection-expansion-panel.d.ts.map +1 -0
- package/development/selection-expansion-panel.d.ts +2 -0
- package/development/selection-expansion-panel.d.ts.map +1 -0
- package/development/selection-expansion-panel.js +340 -0
- package/development/tabs/tab/index.d.ts +2 -0
- package/development/tabs/tab/index.d.ts.map +1 -0
- package/development/tabs/tab/tab.d.ts +24 -0
- package/development/tabs/tab/tab.d.ts.map +1 -0
- package/development/tabs/tab-group/tab-group.d.ts +20 -15
- package/development/tabs/tab-group/tab-group.d.ts.map +1 -1
- package/development/tabs/tab-group.js +24 -14
- package/development/tabs/{tab-title/tab-title.d.ts → tab-label/tab-label.d.ts} +4 -4
- package/development/tabs/{tab-title/tab-title.d.ts.map → tab-label/tab-label.d.ts.map} +1 -1
- package/development/tabs/tab-label.d.ts +2 -0
- package/development/tabs/tab-label.d.ts.map +1 -0
- package/development/tabs/{tab-title.js → tab-label.js} +86 -86
- package/development/tabs/tab.d.ts +2 -0
- package/development/tabs/tab.d.ts.map +1 -0
- package/development/tabs/tab.js +71 -0
- package/development/tabs.d.ts +2 -1
- package/development/tabs.d.ts.map +1 -1
- package/development/tabs.js +3 -2
- package/development/train/train-formation/train-formation.d.ts.map +1 -1
- package/development/train/train-formation.js +12 -12
- package/dialog/dialog-title.js +20 -20
- package/dialog/dialog.js +66 -66
- package/expansion-panel/expansion-panel-header.js +20 -20
- package/expansion-panel/expansion-panel.js +60 -60
- package/file-selector.js +91 -91
- package/form-field/form-field-clear.js +12 -12
- package/form-field/form-field.js +111 -111
- package/header/header.js +53 -53
- package/icon.js +107 -107
- package/image.js +87 -87
- package/index.d.ts +10 -8
- package/index.js +10 -8
- package/journey-header.js +29 -29
- package/map-container.js +23 -23
- package/menu/menu.js +91 -91
- package/navigation/common.js +16 -16
- package/navigation/navigation-marker.js +34 -34
- package/navigation/navigation-section.js +83 -83
- package/navigation/navigation.js +87 -87
- package/notification.js +52 -52
- package/option/optgroup.js +45 -45
- package/option/option.js +108 -108
- package/overlay.js +5 -5
- package/package.json +34 -19
- package/popover/popover.js +110 -110
- package/radio-button/common/radio-button-common.d.ts +22 -0
- package/radio-button/common/radio-button-common.d.ts.map +1 -0
- package/radio-button/common.d.ts +2 -0
- package/radio-button/common.d.ts.map +1 -0
- package/radio-button/common.js +105 -0
- package/radio-button/radio-button/radio-button.d.ts +2 -81
- package/radio-button/radio-button/radio-button.d.ts.map +1 -1
- package/radio-button/radio-button-group/radio-button-group.d.ts +6 -4
- package/radio-button/radio-button-group/radio-button-group.d.ts.map +1 -1
- package/radio-button/radio-button-group.js +86 -80
- package/radio-button/radio-button-panel/index.d.ts +2 -0
- package/radio-button/radio-button-panel/index.d.ts.map +1 -0
- package/radio-button/radio-button-panel/radio-button-panel.d.ts +29 -0
- package/radio-button/radio-button-panel/radio-button-panel.d.ts.map +1 -0
- package/radio-button/radio-button-panel.d.ts +2 -0
- package/radio-button/radio-button-panel.d.ts.map +1 -0
- package/radio-button/radio-button-panel.js +59 -0
- package/radio-button/radio-button.js +20 -143
- package/radio-button.d.ts +2 -0
- package/radio-button.d.ts.map +1 -1
- package/radio-button.js +2 -0
- package/select.js +178 -178
- package/{development/selection-panel/selection-panel.d.ts → selection-expansion-panel/selection-expansion-panel.d.ts} +9 -7
- package/selection-expansion-panel/selection-expansion-panel.d.ts.map +1 -0
- package/selection-expansion-panel.d.ts +2 -0
- package/selection-expansion-panel.d.ts.map +1 -0
- package/selection-expansion-panel.js +146 -0
- package/slider.js +58 -58
- package/standard-theme.css +1 -1
- package/status.js +6 -6
- package/stepper/step-label.js +19 -19
- package/stepper/step.js +31 -31
- package/stepper/stepper.js +46 -46
- package/tabs/tab/index.d.ts +2 -0
- package/tabs/tab/index.d.ts.map +1 -0
- package/tabs/tab/tab.d.ts +24 -0
- package/tabs/tab/tab.d.ts.map +1 -0
- package/tabs/tab-group/tab-group.d.ts +20 -15
- package/tabs/tab-group/tab-group.d.ts.map +1 -1
- package/tabs/tab-group.js +85 -75
- package/tabs/{tab-title/tab-title.d.ts → tab-label/tab-label.d.ts} +4 -4
- package/tabs/{tab-title/tab-title.d.ts.map → tab-label/tab-label.d.ts.map} +1 -1
- package/tabs/tab-label.d.ts +2 -0
- package/tabs/tab-label.d.ts.map +1 -0
- package/tabs/tab-label.js +51 -0
- package/tabs/tab.d.ts +2 -0
- package/tabs/tab.d.ts.map +1 -0
- package/tabs/tab.js +41 -0
- package/tabs.d.ts +2 -1
- package/tabs.d.ts.map +1 -1
- package/tabs.js +2 -1
- package/tag/tag-group.js +8 -8
- package/tag/tag.js +27 -27
- package/time-input.js +73 -73
- package/timetable-occupancy-icon.js +26 -26
- package/timetable-occupancy.js +9 -9
- package/toast.js +38 -38
- package/toggle/toggle-option.js +33 -33
- package/toggle/toggle.js +46 -46
- package/train/train-formation/train-formation.d.ts.map +1 -1
- package/train/train-formation.js +51 -51
- package/train/train-wagon.js +30 -30
- package/train/train.js +13 -13
- package/development/selection-panel/selection-panel.d.ts.map +0 -1
- package/development/selection-panel.d.ts +0 -2
- package/development/selection-panel.d.ts.map +0 -1
- package/development/selection-panel.js +0 -376
- package/development/tabs/tab-title.d.ts +0 -2
- package/development/tabs/tab-title.d.ts.map +0 -1
- package/development/teaser-hero/teaser-hero.d.ts +0 -26
- package/development/teaser-hero/teaser-hero.d.ts.map +0 -1
- package/development/teaser-hero.d.ts +0 -2
- package/development/teaser-hero.d.ts.map +0 -1
- package/development/teaser-hero.js +0 -181
- package/development/teaser-paid/teaser-paid.d.ts +0 -20
- package/development/teaser-paid/teaser-paid.d.ts.map +0 -1
- package/development/teaser-paid.d.ts +0 -2
- package/development/teaser-paid.d.ts.map +0 -1
- package/development/teaser-paid.js +0 -91
- package/selection-panel/selection-panel.d.ts.map +0 -1
- package/selection-panel.d.ts +0 -2
- package/selection-panel.d.ts.map +0 -1
- package/selection-panel.js +0 -138
- package/tabs/tab-title.d.ts +0 -2
- package/tabs/tab-title.d.ts.map +0 -1
- package/tabs/tab-title.js +0 -51
- package/teaser-hero/teaser-hero.d.ts +0 -26
- package/teaser-hero/teaser-hero.d.ts.map +0 -1
- package/teaser-hero.d.ts +0 -2
- package/teaser-hero.d.ts.map +0 -1
- package/teaser-hero.js +0 -51
- package/teaser-paid/teaser-paid.d.ts +0 -20
- package/teaser-paid/teaser-paid.d.ts.map +0 -1
- package/teaser-paid.d.ts +0 -2
- package/teaser-paid.d.ts.map +0 -1
- package/teaser-paid.js +0 -28
package/tabs/tab-group.js
CHANGED
|
@@ -1,50 +1,51 @@
|
|
|
1
1
|
import { css as h, LitElement as u, html as f } from "lit";
|
|
2
2
|
import { property as c, customElement as v } from "lit/decorators.js";
|
|
3
3
|
import { ref as p } from "lit/directives/ref.js";
|
|
4
|
-
import { isArrowKeyPressed as g, getNextElementIndex as
|
|
5
|
-
import { SbbConnectedAbortController as
|
|
6
|
-
import { EventEmitter as
|
|
7
|
-
import { AgnosticMutationObserver as
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
4
|
+
import { isArrowKeyPressed as g, getNextElementIndex as _ } from "../core/a11y.js";
|
|
5
|
+
import { SbbConnectedAbortController as m } from "../core/controllers.js";
|
|
6
|
+
import { EventEmitter as A, throttle as C } from "../core/eventing.js";
|
|
7
|
+
import { AgnosticMutationObserver as T, AgnosticResizeObserver as d } from "../core/observers.js";
|
|
8
|
+
import { SbbTabElement as x } from "./tab.js";
|
|
9
|
+
const y = h`@charset "UTF-8";*,:before,:after{box-sizing:border-box}:host{--sbb-tab-group-animation-duration: var( --sbb-disable-animation-zero-time, var(--sbb-animation-duration-4x) );display:block}.tab-group{display:flex;flex-wrap:wrap}.tab-content{margin-block-start:var(--sbb-spacing-responsive-m);transition:height var(--sbb-tab-group-animation-duration) var(--sbb-animation-easing)}.tab-content:after,.tab-content:before{content:" ";display:block;visibility:hidden;height:0}.tab-content ::slotted(*){visibility:hidden;opacity:0;height:0;overflow:hidden;position:relative}.tab-content ::slotted(*[active]){visibility:visible;opacity:1;height:fit-content;overflow:unset;transition-duration:var(--sbb-tab-group-animation-duration);transition-delay:var(--sbb-tab-group-animation-duration);transition-timing-function:var(--sbb-animation-easing);transition-property:opacity,visibility}.tab-content ::slotted([role=tabpanel]:focus-visible){outline-offset:var(--sbb-focus-outline-offset);outline:var(--sbb-focus-outline-color) solid var(--sbb-focus-outline-width)}:host([data-nested]:not([active])) *,:host([data-nested]:not([active])) ::slotted(*){visibility:hidden;opacity:0;height:0}`;
|
|
10
|
+
var E = Object.defineProperty, z = Object.getOwnPropertyDescriptor, b = (t, e, i, s) => {
|
|
11
|
+
for (var a = s > 1 ? void 0 : s ? z(e, i) : e, n = t.length - 1, o; n >= 0; n--)
|
|
12
|
+
(o = t[n]) && (a = (s ? o(e, i, a) : o(a)) || a);
|
|
13
|
+
return s && a && E(e, i, a), a;
|
|
13
14
|
};
|
|
14
|
-
const
|
|
15
|
+
const G = {
|
|
15
16
|
attributeFilter: ["active", "disabled"]
|
|
16
|
-
},
|
|
17
|
-
let I = 0,
|
|
17
|
+
}, S = ["sbb-tab", "sbb-tab-group"];
|
|
18
|
+
let I = 0, r = class extends u {
|
|
18
19
|
constructor() {
|
|
19
|
-
super(...arguments), this.
|
|
20
|
-
(t) => this.
|
|
21
|
-
), this.
|
|
22
|
-
(t) => this.
|
|
23
|
-
), this.
|
|
24
|
-
(t) => this.
|
|
25
|
-
), this.
|
|
20
|
+
super(...arguments), this._tabs = [], this._abort = new m(this), this._tabAttributeObserver = new T(
|
|
21
|
+
(t) => this._onTabAttributesChange(t)
|
|
22
|
+
), this._tabGroupResizeObserver = new d(
|
|
23
|
+
(t) => this._onTabGroupElementResize(t)
|
|
24
|
+
), this._tabContentResizeObserver = new d(
|
|
25
|
+
(t) => this._onTabContentElementResize(t)
|
|
26
|
+
), this._size = "l", this.initialSelectedIndex = 0, this._selectedTabChanged = new A(
|
|
26
27
|
this,
|
|
27
|
-
|
|
28
|
-
), this.
|
|
29
|
-
this.
|
|
30
|
-
const t = this.
|
|
31
|
-
t.length && (t.forEach((e) => this.
|
|
32
|
-
}, this.
|
|
33
|
-
const t = this.
|
|
34
|
-
t.length < this.
|
|
28
|
+
r.events.didChange
|
|
29
|
+
), this._onContentSlotChange = () => {
|
|
30
|
+
this._tabContentElement = this.shadowRoot.querySelector("div.tab-content");
|
|
31
|
+
const t = this._getTabs().filter((e) => !this._tabs.includes(e));
|
|
32
|
+
t.length && (t.forEach((e) => this._configure(e)), this._tabs = this._tabs.concat(t));
|
|
33
|
+
}, this._onTabsSlotChange = () => {
|
|
34
|
+
const t = this._getTabs();
|
|
35
|
+
t.length < this._tabs.length && (this._tabs.filter((i) => !t.includes(i)).forEach((i) => {
|
|
35
36
|
var s;
|
|
36
37
|
(s = i.relatedContent) == null || s.remove();
|
|
37
|
-
}), this.
|
|
38
|
+
}), this._tabs = t), this._tabs.forEach((e) => e.setAttribute("data-size", this.size));
|
|
38
39
|
};
|
|
39
40
|
}
|
|
40
41
|
set size(t) {
|
|
41
|
-
this.
|
|
42
|
+
this._size = t, this._updateSize();
|
|
42
43
|
}
|
|
43
44
|
get size() {
|
|
44
|
-
return this.
|
|
45
|
+
return this._size;
|
|
45
46
|
}
|
|
46
|
-
|
|
47
|
-
for (const t of this.
|
|
47
|
+
_updateSize() {
|
|
48
|
+
for (const t of this._tabs)
|
|
48
49
|
t.setAttribute("data-size", this.size);
|
|
49
50
|
}
|
|
50
51
|
/**
|
|
@@ -53,7 +54,7 @@ let I = 0, o = class extends u {
|
|
|
53
54
|
*/
|
|
54
55
|
disableTab(t) {
|
|
55
56
|
var e, i;
|
|
56
|
-
(i = (e = this.
|
|
57
|
+
(i = (e = this._tabs[t]) == null ? void 0 : e.tabGroupActions) == null || i.disable();
|
|
57
58
|
}
|
|
58
59
|
/**
|
|
59
60
|
* Enables a tab by index.
|
|
@@ -61,7 +62,7 @@ let I = 0, o = class extends u {
|
|
|
61
62
|
*/
|
|
62
63
|
enableTab(t) {
|
|
63
64
|
var e, i;
|
|
64
|
-
(i = (e = this.
|
|
65
|
+
(i = (e = this._tabs[t]) == null ? void 0 : e.tabGroupActions) == null || i.enable();
|
|
65
66
|
}
|
|
66
67
|
/**
|
|
67
68
|
* Activates a tab by index.
|
|
@@ -69,61 +70,61 @@ let I = 0, o = class extends u {
|
|
|
69
70
|
*/
|
|
70
71
|
activateTab(t) {
|
|
71
72
|
var e, i;
|
|
72
|
-
(i = (e = this.
|
|
73
|
+
(i = (e = this._tabs[t]) == null ? void 0 : e.tabGroupActions) == null || i.select();
|
|
73
74
|
}
|
|
74
|
-
|
|
75
|
+
_getTabs() {
|
|
75
76
|
return Array.from(this.children ?? []).filter(
|
|
76
|
-
(t) => /^sbb-tab-
|
|
77
|
+
(t) => /^sbb-tab-label$/u.test(t.localName)
|
|
77
78
|
);
|
|
78
79
|
}
|
|
79
|
-
get
|
|
80
|
-
return this.
|
|
80
|
+
get _enabledTabs() {
|
|
81
|
+
return this._tabs.filter((t) => !t.hasAttribute("disabled"));
|
|
81
82
|
}
|
|
82
83
|
connectedCallback() {
|
|
83
84
|
var e;
|
|
84
85
|
super.connectedCallback();
|
|
85
|
-
const t = this.
|
|
86
|
-
this.addEventListener("keydown", (i) => this.
|
|
86
|
+
const t = this._abort.signal;
|
|
87
|
+
this.addEventListener("keydown", (i) => this._handleKeyDown(i), { signal: t }), this.toggleAttribute("data-nested", !!((e = this.parentElement) != null && e.closest("sbb-tab-group")));
|
|
87
88
|
}
|
|
88
89
|
firstUpdated(t) {
|
|
89
|
-
super.firstUpdated(t), this.
|
|
90
|
+
super.firstUpdated(t), this._tabs = this._getTabs(), this._tabs.forEach((e) => this._configure(e)), this._initSelection(), this._tabGroupResizeObserver.observe(this._tabGroupElement);
|
|
90
91
|
}
|
|
91
92
|
disconnectedCallback() {
|
|
92
|
-
super.disconnectedCallback(), this.
|
|
93
|
+
super.disconnectedCallback(), this._tabAttributeObserver.disconnect(), this._tabContentResizeObserver.disconnect(), this._tabGroupResizeObserver.disconnect();
|
|
93
94
|
}
|
|
94
|
-
|
|
95
|
+
_assignId() {
|
|
95
96
|
return `sbb-tab-panel-${++I}`;
|
|
96
97
|
}
|
|
97
|
-
|
|
98
|
+
_initSelection() {
|
|
98
99
|
var t, e, i;
|
|
99
|
-
this.initialSelectedIndex >= 0 && this.initialSelectedIndex < this.
|
|
100
|
+
this.initialSelectedIndex >= 0 && this.initialSelectedIndex < this._tabs.length && !this._tabs[this.initialSelectedIndex].disabled ? (t = this._tabs[this.initialSelectedIndex].tabGroupActions) == null || t.select() : (i = (e = this._enabledTabs[0]) == null ? void 0 : e.tabGroupActions) == null || i.select();
|
|
100
101
|
}
|
|
101
|
-
|
|
102
|
+
_onTabAttributesChange(t) {
|
|
102
103
|
var e, i, s;
|
|
103
104
|
for (const a of t) {
|
|
104
105
|
if (a.type !== "attributes")
|
|
105
106
|
return;
|
|
106
107
|
const n = a.target;
|
|
107
|
-
a.attributeName === "disabled" && (n.hasAttribute("disabled") && n !== this.
|
|
108
|
+
a.attributeName === "disabled" && (n.hasAttribute("disabled") && n !== this._selectedTab ? (e = n.tabGroupActions) == null || e.disable() : n.disabled && ((i = n.tabGroupActions) == null || i.enable())), a.attributeName === "active" && (n.hasAttribute("active") && !n.disabled ? (s = n.tabGroupActions) == null || s.select() : n === this._selectedTab && n.toggleAttribute("active", !0));
|
|
108
109
|
}
|
|
109
110
|
}
|
|
110
|
-
|
|
111
|
+
_onTabGroupElementResize(t) {
|
|
111
112
|
for (const e of t) {
|
|
112
113
|
const i = e.target.firstElementChild.assignedElements();
|
|
113
114
|
for (const s of i)
|
|
114
115
|
s.toggleAttribute(
|
|
115
116
|
"data-has-divider",
|
|
116
117
|
s === i[0] || s.offsetLeft === i[0].offsetLeft
|
|
117
|
-
), this.style.setProperty("--sbb-tab-group-width", `${this.
|
|
118
|
+
), this.style.setProperty("--sbb-tab-group-width", `${this._tabGroupElement.clientWidth}px`);
|
|
118
119
|
}
|
|
119
120
|
}
|
|
120
|
-
|
|
121
|
+
_onTabContentElementResize(t) {
|
|
121
122
|
for (const e of t) {
|
|
122
123
|
const i = Math.floor(e.contentRect.height);
|
|
123
|
-
this.
|
|
124
|
+
this._tabContentElement.style.height = `${i}px`;
|
|
124
125
|
}
|
|
125
126
|
}
|
|
126
|
-
|
|
127
|
+
_configure(t) {
|
|
127
128
|
var e, i;
|
|
128
129
|
t.tabGroupActions = {
|
|
129
130
|
activate: () => {
|
|
@@ -136,30 +137,39 @@ let I = 0, o = class extends u {
|
|
|
136
137
|
},
|
|
137
138
|
disable: () => {
|
|
138
139
|
var s, a, n;
|
|
139
|
-
t.disabled || (t.hasAttribute("disabled") || t.toggleAttribute("disabled", !0), t.disabled = !0, t.tabIndex = -1, t.setAttribute("aria-selected", "false"), (s = t.relatedContent) == null || s.removeAttribute("active"), t.active && (t.removeAttribute("active"), t.active = !1, (n = (a = this.
|
|
140
|
+
t.disabled || (t.hasAttribute("disabled") || t.toggleAttribute("disabled", !0), t.disabled = !0, t.tabIndex = -1, t.setAttribute("aria-selected", "false"), (s = t.relatedContent) == null || s.removeAttribute("active"), t.active && (t.removeAttribute("active"), t.active = !1, (n = (a = this._enabledTabs[0]) == null ? void 0 : a.tabGroupActions) == null || n.select()));
|
|
140
141
|
},
|
|
141
142
|
enable: () => {
|
|
142
143
|
t.disabled && (t.removeAttribute("disabled"), t.disabled = !1);
|
|
143
144
|
},
|
|
144
145
|
select: () => {
|
|
145
146
|
var s, a;
|
|
146
|
-
if (t !== this.
|
|
147
|
-
const n = this.
|
|
148
|
-
n && ((s = n.tabGroupActions) == null || s.deactivate(), this.
|
|
147
|
+
if (t !== this._selectedTab && !t.disabled) {
|
|
148
|
+
const n = this._selectedTab;
|
|
149
|
+
n && ((s = n.tabGroupActions) == null || s.deactivate(), this._tabContentResizeObserver.unobserve(n.relatedContent)), (a = t.tabGroupActions) == null || a.activate(), this._selectedTab = t, this._tabContentResizeObserver.observe(t.relatedContent);
|
|
150
|
+
const o = this._tabs;
|
|
151
|
+
this._selectedTabChanged.emit({
|
|
152
|
+
activeIndex: o.findIndex((l) => l === t),
|
|
153
|
+
activeTabLabel: t,
|
|
154
|
+
activeTab: t.relatedContent,
|
|
155
|
+
previousIndex: o.findIndex((l) => l === n),
|
|
156
|
+
previousTabLabel: n,
|
|
157
|
+
previousTab: n == null ? void 0 : n.relatedContent
|
|
158
|
+
});
|
|
149
159
|
}
|
|
150
160
|
}
|
|
151
|
-
}, (e = t.nextElementSibling) != null && e.localName &&
|
|
161
|
+
}, (e = t.nextElementSibling) != null && e.localName && S.includes((i = t.nextElementSibling) == null ? void 0 : i.localName) && (t.relatedContent = t.nextElementSibling, t.relatedContent.id = this._assignId(), t.relatedContent instanceof x && (t.relatedContent.tabIndex = 0, t.relatedContent.configure())), t.tabIndex = -1, t.disabled = t.hasAttribute("disabled"), t.active = t.hasAttribute("active") && !t.disabled, t.setAttribute("role", "tab"), t.setAttribute("aria-selected", "false"), t.addEventListener("click", () => {
|
|
152
162
|
var s;
|
|
153
163
|
(s = t.tabGroupActions) == null || s.select();
|
|
154
|
-
}), this.
|
|
164
|
+
}), t.relatedContent && (t.setAttribute("aria-controls", t.relatedContent.id), t.relatedContent.setAttribute("role", "tabpanel"), t.relatedContent.toggleAttribute("active", t.active)), this._tabAttributeObserver.observe(t, G), t.slot = "tab-bar";
|
|
155
165
|
}
|
|
156
|
-
|
|
166
|
+
_handleKeyDown(t) {
|
|
157
167
|
var i, s, a;
|
|
158
|
-
const e = this.
|
|
168
|
+
const e = this._enabledTabs;
|
|
159
169
|
if (!(!e || // don't trap nested handling
|
|
160
170
|
t.target !== this && t.target.parentElement !== this) && g(t)) {
|
|
161
|
-
const n = e.findIndex((
|
|
162
|
-
(s = (i = e[
|
|
171
|
+
const n = e.findIndex((l) => l.active), o = _(t, n, e.length);
|
|
172
|
+
(s = (i = e[o]) == null ? void 0 : i.tabGroupActions) == null || s.select(), (a = e[o]) == null || a.focus(), t.preventDefault();
|
|
163
173
|
}
|
|
164
174
|
}
|
|
165
175
|
render() {
|
|
@@ -167,30 +177,30 @@ let I = 0, o = class extends u {
|
|
|
167
177
|
<div
|
|
168
178
|
class="tab-group"
|
|
169
179
|
role="tablist"
|
|
170
|
-
${p((t) => this.
|
|
180
|
+
${p((t) => this._tabGroupElement = t)}
|
|
171
181
|
>
|
|
172
|
-
<slot name="tab-bar" @slotchange=${this.
|
|
182
|
+
<slot name="tab-bar" @slotchange=${this._onTabsSlotChange}></slot>
|
|
173
183
|
</div>
|
|
174
184
|
|
|
175
185
|
<div class="tab-content">
|
|
176
|
-
<slot @slotchange=${
|
|
186
|
+
<slot @slotchange=${C(this._onContentSlotChange, 150)}></slot>
|
|
177
187
|
</div>
|
|
178
188
|
`;
|
|
179
189
|
}
|
|
180
190
|
};
|
|
181
|
-
|
|
182
|
-
|
|
191
|
+
r.styles = y;
|
|
192
|
+
r.events = {
|
|
183
193
|
didChange: "didChange"
|
|
184
194
|
};
|
|
185
|
-
|
|
195
|
+
b([
|
|
186
196
|
c()
|
|
187
|
-
],
|
|
188
|
-
|
|
197
|
+
], r.prototype, "size", 1);
|
|
198
|
+
b([
|
|
189
199
|
c({ attribute: "initial-selected-index", type: Number })
|
|
190
|
-
],
|
|
191
|
-
|
|
200
|
+
], r.prototype, "initialSelectedIndex", 2);
|
|
201
|
+
r = b([
|
|
192
202
|
v("sbb-tab-group")
|
|
193
|
-
],
|
|
203
|
+
], r);
|
|
194
204
|
export {
|
|
195
|
-
|
|
205
|
+
r as SbbTabGroupElement
|
|
196
206
|
};
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
import { CSSResultGroup, TemplateResult, LitElement } from 'lit';
|
|
2
2
|
import { SbbTitleLevel } from '../../title.js';
|
|
3
3
|
|
|
4
|
-
declare const
|
|
4
|
+
declare const SbbTabLabelElement_base: import('../../core/mixins.js').AbstractConstructor<import('../../core/mixins.js').SbbDisabledMixinType> & import('../../core/mixins.js').AbstractConstructor<import('../../icon.js').SbbIconNameMixinType> & typeof LitElement;
|
|
5
5
|
/**
|
|
6
6
|
* Combined with a `sbb-tab-group`, it displays a tab's title.
|
|
7
7
|
*
|
|
@@ -9,7 +9,7 @@ declare const SbbTabTitleElement_base: import('../../core/mixins.js').AbstractCo
|
|
|
9
9
|
* @slot icon - Use this slot to display an icon to the left of the title, by providing the `sbb-icon` component.
|
|
10
10
|
* @slot amount - Provide a number to show an amount to the right of the title.
|
|
11
11
|
*/
|
|
12
|
-
export declare class
|
|
12
|
+
export declare class SbbTabLabelElement extends SbbTabLabelElement_base {
|
|
13
13
|
static styles: CSSResultGroup;
|
|
14
14
|
/**
|
|
15
15
|
* The level will correspond to the heading tag generated in the title.
|
|
@@ -25,8 +25,8 @@ export declare class SbbTabTitleElement extends SbbTabTitleElement_base {
|
|
|
25
25
|
}
|
|
26
26
|
declare global {
|
|
27
27
|
interface HTMLElementTagNameMap {
|
|
28
|
-
'sbb-tab-
|
|
28
|
+
'sbb-tab-label': SbbTabLabelElement;
|
|
29
29
|
}
|
|
30
30
|
}
|
|
31
31
|
export {};
|
|
32
|
-
//# sourceMappingURL=tab-
|
|
32
|
+
//# sourceMappingURL=tab-label.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"tab-
|
|
1
|
+
{"version":3,"file":"tab-label.d.ts","sourceRoot":"","sources":["../../../../src/elements/tabs/tab-label/tab-label.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,cAAc,EAAE,cAAc,EAAE,MAAM,KAAK,CAAC;AAC1D,OAAO,EAAE,UAAU,EAAE,MAAM,KAAK,CAAC;AAOjC,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,gBAAgB,CAAC;;AAIpD;;;;;;GAMG;AACH,qBACa,kBAAmB,SAAQ,uBAA8C;IACpF,OAAuB,MAAM,EAAE,cAAc,CAAS;IAEtD;;;OAGG;IACgB,KAAK,EAAE,aAAa,CAAO;IAE9C,uBAAuB;IAC4B,MAAM,CAAC,EAAE,OAAO,CAAC;IAEpE,uCAAuC;IACH,MAAM,CAAC,EAAE,MAAM,CAAC;;cAOjC,MAAM,IAAI,cAAc;CAoB5C;AAED,OAAO,CAAC,MAAM,CAAC;IACb,UAAU,qBAAqB;QAE7B,eAAe,EAAE,kBAAkB,CAAC;KACrC;CACF"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"tab-label.d.ts","sourceRoot":"","sources":["../../../src/elements/tabs/tab-label.ts"],"names":[],"mappings":"AAAA,cAAc,0BAA0B,CAAC"}
|
|
@@ -0,0 +1,51 @@
|
|
|
1
|
+
import { css as v, LitElement as f } from "lit";
|
|
2
|
+
import { property as r, customElement as d } from "lit/decorators.js";
|
|
3
|
+
import { html as m, unsafeStatic as c } from "lit/static-html.js";
|
|
4
|
+
import { SbbSlotStateController as p } from "../core/controllers.js";
|
|
5
|
+
import { SbbDisabledMixin as h } from "../core/mixins.js";
|
|
6
|
+
import { SbbIconNameMixin as u } from "../icon.js";
|
|
7
|
+
const g = v`*,:before,:after{box-sizing:border-box}:host{--sbb-tab-label-height: var(--sbb-size-element-m);--sbb-tab-label-color: var(--sbb-color-granite);--sbb-tab-label-icon-color: var(--sbb-color-black);--sbb-tab-label-background-color: var(--sbb-color-white);--sbb-tab-label-cursor: pointer;--sbb-tab-label-pointer-events: unset;--sbb-tab-label-inset: 0;--sbb-tab-label-inline-padding: var(--sbb-spacing-responsive-xs);--sbb-tab-label-marker-transform: scale(0);--sbb-tab-label-text-decoration: none;--sbb-tab-label-animation-duration: var( --sbb-disable-animation-zero-time, var(--sbb-animation-duration-2x) );--sbb-tab-label-animation-easing: var(--sbb-animation-easing);--sbb-tab-label-amount-color: var(--sbb-color-metal);display:inline-block;max-width:100%;pointer-events:var(--sbb-tab-label-pointer-events);-webkit-tap-highlight-color:transparent;outline:none!important}@media (forced-colors: active){:host{--sbb-tab-label-color: ButtonText;--sbb-tab-label-icon-color: ButtonText;--sbb-tab-label-amount-color: ButtonText}}:host([data-size=s]){--sbb-tab-label-height: var(--sbb-size-element-xs);--sbb-tab-label-inline-padding: var(--sbb-spacing-responsive-xxxs)}:host([disabled]){--sbb-tab-label-icon-color: var(--sbb-color-granite);--sbb-tab-label-background-color: var(--sbb-color-milk);--sbb-tab-label-cursor: unset;--sbb-tab-label-pointer-events: none;--sbb-tab-label-text-decoration: line-through}@media (forced-colors: active){:host([disabled]){--sbb-tab-label-color: GrayText;--sbb-tab-label-icon-color: GrayText;--sbb-tab-label-amount-color: GrayText}}:host([active]:not([disabled])){--sbb-tab-label-color: var(--sbb-color-charcoal);--sbb-tab-label-icon-color: var(--sbb-tab-label-color);--sbb-tab-label-background-color: var(--sbb-color-black);--sbb-tab-label-cursor: unset;--sbb-tab-label-pointer-events: none;--sbb-tab-label-marker-transform: scale(1)}@media (forced-colors: active){:host([active]:not([disabled])){--sbb-tab-label-color: ButtonText;--sbb-tab-label-icon-color: ButtonText;--sbb-tab-label-amount-color: ButtonText}}@media (any-hover: hover){:host(:hover:not([disabled])){--sbb-tab-label-marker-transform: scale(1)}}:host(:is([data-active],:active)){--sbb-tab-label-color: var(--sbb-color-charcoal)}.sbb-tab-label__wrapper{position:relative}:host(:focus-visible:not([data-focus-origin=mouse],[data-focus-origin=touch])) .sbb-tab-label__wrapper:before{content:"";position:absolute;display:block;inset:calc((var(--sbb-focus-outline-width) + var(--sbb-focus-outline-offset)) * -1);border:var(--sbb-focus-outline-width) solid var(--sbb-focus-outline-color);border-radius:var(--sbb-border-radius-2x);z-index:1}.sbb-tab-label{position:relative;margin:0;min-height:var(--sbb-tab-label-height);display:flex;align-items:center;padding-inline:var(--sbb-tab-label-inline-padding);gap:var(--sbb-spacing-fixed-2x);-webkit-user-select:none;user-select:none;cursor:var(--sbb-tab-label-cursor);transition:color var(--sbb-tab-label-animation-duration) var(--sbb-tab-label-animation-easing);color:var(--sbb-tab-label-icon-color)}:host([data-has-divider]) .sbb-tab-label:after{content:"";position:absolute;inset-inline-start:0;inset-block-end:0;width:var(--sbb-tab-group-width);height:var(--sbb-border-width-1x);background-color:var(--sbb-color-cloud)}.sbb-tab-label:before{position:absolute;content:"";inset-inline:0;inset-block-end:0;height:.1875rem;background-color:var(--sbb-tab-label-color);transform:var(--sbb-tab-label-marker-transform);transition-duration:var(--sbb-tab-label-animation-duration);transition-timing-function:var(--sbb-tab-label-animation-easing);transition-property:transform,background-color;z-index:1}.sbb-tab-label__icon,.sbb-tab-label__text,.sbb-tab-label__amount{text-decoration:var(--sbb-tab-label-text-decoration)}.sbb-tab-label__icon{display:flex;flex-shrink:0;color:var(--sbb-tab-label-color);transition:color var(--sbb-tab-label-animation-duration) var(--sbb-tab-label-animation-easing)}:host(:not([data-slot-names~=icon],[icon-name])) .sbb-tab-label__icon{display:none}.sbb-tab-label__text{--sbb-text-font-size: var(--sbb-font-size-text-m);font-family:var(--sbb-typo-font-family);font-weight:400;line-height:var(--sbb-typo-line-height-body-text);letter-spacing:var(--sbb-typo-letter-spacing-body-text);font-size:var(--sbb-text-font-size);font-weight:700;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale;overflow:hidden;white-space:nowrap;text-overflow:ellipsis;color:var(--sbb-tab-label-color);transition:color var(--sbb-tab-label-animation-duration) var(--sbb-tab-label-animation-easing)}:host([data-size=s]) .sbb-tab-label__text{--sbb-text-font-size: var(--sbb-font-size-text-s);font-family:var(--sbb-typo-font-family);font-weight:400;line-height:var(--sbb-typo-line-height-body-text);letter-spacing:var(--sbb-typo-letter-spacing-body-text);font-size:var(--sbb-text-font-size);font-weight:700}:host([data-size=xl]) .sbb-tab-label__text{--sbb-text-font-size: var(--sbb-font-size-text-xl);font-family:var(--sbb-typo-font-family);font-weight:400;line-height:var(--sbb-typo-line-height-body-text);letter-spacing:var(--sbb-typo-letter-spacing-body-text);font-size:var(--sbb-text-font-size);font-weight:700}.sbb-tab-label__amount{--sbb-text-font-size: var(--sbb-font-size-text-m);font-family:var(--sbb-typo-font-family);font-weight:400;line-height:var(--sbb-typo-line-height-body-text);letter-spacing:var(--sbb-typo-letter-spacing-body-text);font-size:var(--sbb-text-font-size);-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale;display:flex;color:var(--sbb-tab-label-amount-color);transition:color var(--sbb-tab-label-animation-duration) var(--sbb-tab-label-animation-easing)}:host(:not([data-slot-names~=amount],[amount])) .sbb-tab-label__amount{display:none}:host([data-size=s]) .sbb-tab-label__amount{--sbb-text-font-size: var(--sbb-font-size-text-s);font-family:var(--sbb-typo-font-family);font-weight:400;line-height:var(--sbb-typo-line-height-body-text);letter-spacing:var(--sbb-typo-letter-spacing-body-text);font-size:var(--sbb-text-font-size)}:host([data-size=xl]) .sbb-tab-label__amount{--sbb-text-font-size: var(--sbb-font-size-text-xl);font-family:var(--sbb-typo-font-family);font-weight:400;line-height:var(--sbb-typo-line-height-body-text);letter-spacing:var(--sbb-typo-letter-spacing-body-text);font-size:var(--sbb-text-font-size)}`;
|
|
8
|
+
var x = Object.defineProperty, y = Object.getOwnPropertyDescriptor, s = (a, e, l, o) => {
|
|
9
|
+
for (var t = o > 1 ? void 0 : o ? y(e, l) : e, n = a.length - 1, i; n >= 0; n--)
|
|
10
|
+
(i = a[n]) && (t = (o ? i(e, l, t) : i(t)) || t);
|
|
11
|
+
return o && t && x(e, l, t), t;
|
|
12
|
+
};
|
|
13
|
+
let b = class extends h(u(f)) {
|
|
14
|
+
constructor() {
|
|
15
|
+
super(), this.level = "1", new p(this);
|
|
16
|
+
}
|
|
17
|
+
render() {
|
|
18
|
+
const a = `h${Number(this.level) < 7 ? this.level : "1"}`;
|
|
19
|
+
return m`
|
|
20
|
+
<div class="sbb-tab-label__wrapper">
|
|
21
|
+
<${c(a)} class="sbb-tab-label">
|
|
22
|
+
<span class="sbb-tab-label__icon">
|
|
23
|
+
${this.renderIconSlot()}
|
|
24
|
+
</span>
|
|
25
|
+
<span class="sbb-tab-label__text">
|
|
26
|
+
<slot></slot>
|
|
27
|
+
</span>
|
|
28
|
+
<span class="sbb-tab-label__amount">
|
|
29
|
+
<slot name="amount">${this.amount}</slot>
|
|
30
|
+
</span>
|
|
31
|
+
</${c(a)}>
|
|
32
|
+
</div>
|
|
33
|
+
`;
|
|
34
|
+
}
|
|
35
|
+
};
|
|
36
|
+
b.styles = g;
|
|
37
|
+
s([
|
|
38
|
+
r()
|
|
39
|
+
], b.prototype, "level", 2);
|
|
40
|
+
s([
|
|
41
|
+
r({ reflect: !0, type: Boolean })
|
|
42
|
+
], b.prototype, "active", 2);
|
|
43
|
+
s([
|
|
44
|
+
r({ reflect: !0 })
|
|
45
|
+
], b.prototype, "amount", 2);
|
|
46
|
+
b = s([
|
|
47
|
+
d("sbb-tab-label")
|
|
48
|
+
], b);
|
|
49
|
+
export {
|
|
50
|
+
b as SbbTabLabelElement
|
|
51
|
+
};
|
package/tabs/tab.d.ts
ADDED
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"tab.d.ts","sourceRoot":"","sources":["../../../src/elements/tabs/tab.ts"],"names":[],"mappings":"AAAA,cAAc,cAAc,CAAC"}
|
package/tabs/tab.js
ADDED
|
@@ -0,0 +1,41 @@
|
|
|
1
|
+
import { css as a, LitElement as n, html as u } from "lit";
|
|
2
|
+
import { customElement as m } from "lit/decorators.js";
|
|
3
|
+
const p = a`*,:before,:after{box-sizing:border-box}:host{display:block}`;
|
|
4
|
+
var c = Object.defineProperty, v = Object.getOwnPropertyDescriptor, _ = (e, l, r, s) => {
|
|
5
|
+
for (var t = s > 1 ? void 0 : s ? v(l, r) : l, b = e.length - 1, i; b >= 0; b--)
|
|
6
|
+
(i = e[b]) && (t = (s ? i(l, r, t) : i(t)) || t);
|
|
7
|
+
return s && t && c(l, r, t), t;
|
|
8
|
+
};
|
|
9
|
+
let o = class extends n {
|
|
10
|
+
constructor() {
|
|
11
|
+
super(...arguments), this._label = null;
|
|
12
|
+
}
|
|
13
|
+
/** The `sbb-tab-label` associated with the tab. */
|
|
14
|
+
get label() {
|
|
15
|
+
return this._label;
|
|
16
|
+
}
|
|
17
|
+
_getTabLabel() {
|
|
18
|
+
let e = this.previousElementSibling;
|
|
19
|
+
for (; e && e.localName !== "sbb-tab-label"; )
|
|
20
|
+
e = e.previousElementSibling;
|
|
21
|
+
return e;
|
|
22
|
+
}
|
|
23
|
+
/** @internal */
|
|
24
|
+
configure() {
|
|
25
|
+
this._label = this._getTabLabel();
|
|
26
|
+
}
|
|
27
|
+
render() {
|
|
28
|
+
return u`
|
|
29
|
+
<div class="sbb-tab">
|
|
30
|
+
<slot></slot>
|
|
31
|
+
</div>
|
|
32
|
+
`;
|
|
33
|
+
}
|
|
34
|
+
};
|
|
35
|
+
o.styles = p;
|
|
36
|
+
o = _([
|
|
37
|
+
m("sbb-tab")
|
|
38
|
+
], o);
|
|
39
|
+
export {
|
|
40
|
+
o as SbbTabElement
|
|
41
|
+
};
|
package/tabs.d.ts
CHANGED
package/tabs.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"tabs.d.ts","sourceRoot":"","sources":["../../src/elements/tabs.ts"],"names":[],"mappings":"AAAA,cAAc,qBAAqB,CAAC;AACpC,cAAc,qBAAqB,CAAC"}
|
|
1
|
+
{"version":3,"file":"tabs.d.ts","sourceRoot":"","sources":["../../src/elements/tabs.ts"],"names":[],"mappings":"AAAA,cAAc,eAAe,CAAC;AAC9B,cAAc,qBAAqB,CAAC;AACpC,cAAc,qBAAqB,CAAC"}
|
package/tabs.js
CHANGED
package/tag/tag-group.js
CHANGED
|
@@ -1,23 +1,23 @@
|
|
|
1
|
-
import { css as h, LitElement as
|
|
1
|
+
import { css as h, LitElement as u, isServer as b, html as f } from "lit";
|
|
2
2
|
import { property as o, customElement as n } from "lit/decorators.js";
|
|
3
3
|
import { setOrRemoveAttribute as m } from "../core/dom.js";
|
|
4
4
|
import { SbbNamedSlotListMixin as y } from "../core/mixins.js";
|
|
5
5
|
const g = h`*,:before,:after{box-sizing:border-box}:host{display:block}.sbb-tag-group__list{list-style:none;margin:0;padding:0;font-size:inherit;display:flex;flex-wrap:wrap;gap:var(--sbb-spacing-fixed-3x)}.sbb-tag-group__list>:is(li,span){display:flex;max-width:100%}`;
|
|
6
|
-
var d = Object.defineProperty,
|
|
7
|
-
for (var l = i > 1 ? void 0 : i ?
|
|
6
|
+
var d = Object.defineProperty, v = Object.getOwnPropertyDescriptor, a = (e, t, s, i) => {
|
|
7
|
+
for (var l = i > 1 ? void 0 : i ? v(t, s) : t, c = e.length - 1, p; c >= 0; c--)
|
|
8
8
|
(p = e[c]) && (l = (i ? p(t, s, l) : p(l)) || l);
|
|
9
9
|
return i && l && d(t, s, l), l;
|
|
10
10
|
};
|
|
11
11
|
let r = class extends y(
|
|
12
|
-
|
|
12
|
+
u
|
|
13
13
|
) {
|
|
14
14
|
constructor() {
|
|
15
|
-
super(...arguments), this.listChildLocalNames = ["sbb-tag", "div"], this.multiple = !1, this.size = "m", this.
|
|
15
|
+
super(...arguments), this.listChildLocalNames = ["sbb-tag", "div"], this.multiple = !1, this.size = "m", this._value = null;
|
|
16
16
|
}
|
|
17
17
|
set value(e) {
|
|
18
18
|
const t = this.tags;
|
|
19
19
|
if (b)
|
|
20
|
-
this.
|
|
20
|
+
this._value = e;
|
|
21
21
|
else if (e === null)
|
|
22
22
|
t.forEach((s) => s.checked = !1);
|
|
23
23
|
else if (this.multiple) {
|
|
@@ -33,7 +33,7 @@ let r = class extends y(
|
|
|
33
33
|
}
|
|
34
34
|
get value() {
|
|
35
35
|
var e;
|
|
36
|
-
return b ? this.
|
|
36
|
+
return b ? this._value : this.multiple ? this.tags.filter((t) => t.checked).map((t) => t.value) : ((e = this.tags.find((t) => t.checked)) == null ? void 0 : e.value) ?? null;
|
|
37
37
|
}
|
|
38
38
|
/** The child instances of sbb-tag as an array. */
|
|
39
39
|
get tags() {
|
|
@@ -51,7 +51,7 @@ let r = class extends y(
|
|
|
51
51
|
);
|
|
52
52
|
}
|
|
53
53
|
render() {
|
|
54
|
-
return
|
|
54
|
+
return f`
|
|
55
55
|
<div class="sbb-tag-group">
|
|
56
56
|
${this.renderList({
|
|
57
57
|
class: "sbb-tag-group__list",
|
package/tag/tag.js
CHANGED
|
@@ -3,49 +3,49 @@ import { property as c, customElement as h } from "lit/decorators.js";
|
|
|
3
3
|
import { SbbButtonBaseElement as v } from "../core/base-elements.js";
|
|
4
4
|
import { SbbConnectedAbortController as u, SbbSlotStateController as m } from "../core/controllers.js";
|
|
5
5
|
import { EventEmitter as l } from "../core/eventing.js";
|
|
6
|
-
import { SbbDisabledTabIndexActionMixin as
|
|
7
|
-
import { SbbIconNameMixin as
|
|
6
|
+
import { SbbDisabledTabIndexActionMixin as p } from "../core/mixins.js";
|
|
7
|
+
import { SbbIconNameMixin as f } from "../icon.js";
|
|
8
8
|
const x = d`*,:before,:after{box-sizing:border-box}:host{--sbb-tag-border-radius: var(--sbb-border-radius-infinity);--sbb-tag-background-color: var(--sbb-color-white);--sbb-tag-border-color: var(--sbb-color-cloud);--sbb-tag-border-style: solid;--sbb-tag-border-width: var(--sbb-border-width-1x);--sbb-tag-text-color: var(--sbb-color-charcoal);--sbb-tag-amount-color: var(--sbb-color-metal);--sbb-tag-height: var(--sbb-size-element-xs);--sbb-tag-inset: 0;--sbb-tag-content-shift: translateY(0);--sbb-tag-animation-duration: var( --sbb-disable-animation-zero-time, var(--sbb-animation-duration-2x) );--sbb-tag-animation-easing: var(--sbb-animation-easing);--sbb-tag-padding-inline: var(--sbb-spacing-fixed-5x);--sbb-tag-gap: var(--sbb-spacing-fixed-2x);display:inline-block;outline:none!important;max-width:100%}@media (forced-colors: active){:host{--sbb-tag-background-color: Canvas !important;--sbb-tag-text-color: ButtonText;--sbb-tag-amount-color: ButtonText;--sbb-tag-border-color: CanvasText;--sbb-tag-border-width: var(--sbb-border-width-2x)}}:host([checked]){--sbb-tag-border-color: var(--sbb-color-charcoal);--sbb-tag-border-width: var(--sbb-border-width-2x)}@media (forced-colors: active){:host([checked]){--sbb-tag-border-color: Highlight !important}}:host([disabled]){--sbb-tag-text-color: var(--sbb-color-granite);--sbb-tag-amount-color: var(--sbb-tag-text-color);--sbb-tag-background-color: var(--sbb-color-milk);--sbb-tag-border-color: var(--sbb-color-cement);--sbb-tag-border-style: dashed}@media (forced-colors: active){:host([disabled]){--sbb-tag-text-color: GrayText;--sbb-tag-amount-color: GrayText;--sbb-tag-border-color: GrayText}}:host([checked][disabled]){--sbb-tag-border-color: var(--sbb-color-metal)}@media (any-hover: hover){:host(:hover:not([disabled],:active,[data-active])){--sbb-tag-background-color: var(--sbb-color-milk);--sbb-tag-inset: calc(var(--sbb-border-width-2x) * -1);--sbb-tag-content-shift: translateY(calc(var(--sbb-border-width-1x) * -1))}}@media (any-hover: hover) and (forced-colors: active){:host(:hover:not([disabled],:active,[data-active])){--sbb-tag-border-color: Highlight}}:host(:is(:active,[data-active]):not([disabled])){--sbb-tag-background-color: var(--sbb-color-milk);--sbb-tag-border-color: var(--sbb-color-iron);--sbb-tag-border-width: var(--sbb-border-width-2x);--sbb-tag-text-color: var(--sbb-color-iron)}@media (forced-colors: active){:host(:is(:active,[data-active]):not([disabled])){--sbb-tag-border-color: Highlight;--sbb-tag-text-color: ButtonText}}:host([size=s]){--sbb-tag-height: var(--sbb-size-element-xxxs);--sbb-tag-padding-inline: var(--sbb-spacing-fixed-3x)}.sbb-tag{--sbb-text-font-size: var(--sbb-font-size-text-xs);font-family:var(--sbb-typo-font-family);font-weight:400;line-height:var(--sbb-typo-line-height-body-text);letter-spacing:var(--sbb-typo-letter-spacing-body-text);font-size:var(--sbb-text-font-size);font-weight:700;position:relative;display:flex;align-items:center;height:var(--sbb-tag-height);max-width:100%;gap:var(--sbb-tag-gap);padding-inline:var(--sbb-tag-padding-inline);cursor:pointer;border-radius:var(--sbb-tag-border-radius);color:var(--sbb-tag-text-color);transition:color var(--sbb-tag-animation-duration) var(--sbb-tag-animation-easing);-webkit-tap-highlight-color:transparent;-webkit-user-select:none;user-select:none}.sbb-tag:before{content:"";position:absolute;inset:var(--sbb-tag-inset);background-color:var(--sbb-tag-background-color);border:var(--sbb-tag-border-width) var(--sbb-tag-border-style) var(--sbb-tag-border-color);border-radius:var(--sbb-tag-border-radius);transition-duration:var(--sbb-tag-animation-duration);transition-timing-function:var(--sbb-tag-animation-easing);transition-property:inset,background-color,border-color,box-shadow}:host(:focus-visible:not([data-focus-origin=mouse],[data-focus-origin=touch])) .sbb-tag:before{outline-offset:var(--sbb-focus-outline-offset);outline:var(--sbb-focus-outline-color) solid var(--sbb-focus-outline-width)}:host([disabled]) .sbb-tag{cursor:unset;pointer-events:none}.sbb-tag__icon{display:flex;align-items:center;height:calc(var(--sbb-typo-line-height-body-text) * 1em);flex-shrink:0}:host(:not([data-slot-names~=icon],[icon-name])) .sbb-tag__icon{display:none}.sbb-tag__text{overflow:hidden;white-space:nowrap;text-overflow:ellipsis}.sbb-tag__amount{--sbb-text-font-size: var(--sbb-font-size-text-xs);font-family:var(--sbb-typo-font-family);font-weight:400;line-height:var(--sbb-typo-line-height-body-text);letter-spacing:var(--sbb-typo-letter-spacing-body-text);font-size:var(--sbb-text-font-size);color:var(--sbb-tag-amount-color)}:host(:not([data-slot-names~=amount],[amount])) .sbb-tag__amount{display:none}.sbb-tag--shift{transition:transform var(--sbb-tag-animation-duration) var(--sbb-tag-animation-easing);transform:var(--sbb-tag-content-shift);will-change:transform}`;
|
|
9
|
-
var y = Object.defineProperty,
|
|
10
|
-
for (var s = a > 1 ? void 0 : a ?
|
|
11
|
-
(n = t[i]) && (s = (a ? n(
|
|
12
|
-
return a && s && y(
|
|
9
|
+
var y = Object.defineProperty, _ = Object.getOwnPropertyDescriptor, r = (t, e, b, a) => {
|
|
10
|
+
for (var s = a > 1 ? void 0 : a ? _(e, b) : e, i = t.length - 1, n; i >= 0; i--)
|
|
11
|
+
(n = t[i]) && (s = (a ? n(e, b, s) : n(s)) || s);
|
|
12
|
+
return a && s && y(e, b, s), s;
|
|
13
13
|
};
|
|
14
|
-
let
|
|
15
|
-
|
|
14
|
+
let o = class extends f(
|
|
15
|
+
p(v)
|
|
16
16
|
) {
|
|
17
17
|
constructor() {
|
|
18
|
-
super(), this.checked = !1, this.
|
|
18
|
+
super(), this.checked = !1, this._size = "m", this._group = null, this._input = new l(this, o.events.input, {
|
|
19
19
|
bubbles: !0,
|
|
20
20
|
composed: !0
|
|
21
|
-
}), this.
|
|
21
|
+
}), this._didChange = new l(this, o.events.didChange, {
|
|
22
22
|
bubbles: !0
|
|
23
|
-
}), this.
|
|
23
|
+
}), this._change = new l(this, o.events.change, {
|
|
24
24
|
bubbles: !0
|
|
25
|
-
}), this.
|
|
25
|
+
}), this._abort = new u(this), new m(this);
|
|
26
26
|
}
|
|
27
27
|
set size(t) {
|
|
28
|
-
this.
|
|
28
|
+
this._size = t;
|
|
29
29
|
}
|
|
30
30
|
get size() {
|
|
31
31
|
var t;
|
|
32
|
-
return ((t = this.
|
|
32
|
+
return ((t = this._group) == null ? void 0 : t.size) ?? this._size;
|
|
33
33
|
}
|
|
34
34
|
connectedCallback() {
|
|
35
|
-
super.connectedCallback(), this.
|
|
35
|
+
super.connectedCallback(), this._group = this.closest("sbb-tag-group"), this.addEventListener("click", () => this._handleClick(), { signal: this._abort.signal });
|
|
36
36
|
}
|
|
37
37
|
/** Method triggered on button click. Inverts the checked value and emits events. */
|
|
38
|
-
|
|
38
|
+
_handleClick() {
|
|
39
39
|
if (this.disabled)
|
|
40
40
|
return;
|
|
41
41
|
const t = this.closest("sbb-tag-group");
|
|
42
|
-
t && !t.multiple && this.checked || (this.checked = !this.checked, this.
|
|
42
|
+
t && !t.multiple && this.checked || (this.checked = !this.checked, this._input.emit(), this._change.emit(), this._didChange.emit());
|
|
43
43
|
}
|
|
44
44
|
willUpdate(t) {
|
|
45
45
|
var b;
|
|
46
46
|
super.willUpdate(t), t.has("checked") && this.setAttribute("aria-pressed", `${this.checked}`);
|
|
47
|
-
const
|
|
48
|
-
|
|
47
|
+
const e = (b = this.closest) == null ? void 0 : b.call(this, "sbb-tag-group");
|
|
48
|
+
e && !e.multiple && t.has("checked") && this.checked && (e == null || e.tags.filter((a) => a !== this).forEach((a) => a.checked = !1));
|
|
49
49
|
}
|
|
50
50
|
renderTemplate() {
|
|
51
51
|
return g`
|
|
@@ -59,24 +59,24 @@ let e = class extends p(
|
|
|
59
59
|
`;
|
|
60
60
|
}
|
|
61
61
|
};
|
|
62
|
-
|
|
63
|
-
|
|
62
|
+
o.styles = x;
|
|
63
|
+
o.events = {
|
|
64
64
|
input: "input",
|
|
65
65
|
didChange: "didChange",
|
|
66
66
|
change: "change"
|
|
67
67
|
};
|
|
68
68
|
r([
|
|
69
69
|
c({ reflect: !0 })
|
|
70
|
-
],
|
|
70
|
+
], o.prototype, "amount", 2);
|
|
71
71
|
r([
|
|
72
72
|
c({ reflect: !0, type: Boolean })
|
|
73
|
-
],
|
|
73
|
+
], o.prototype, "checked", 2);
|
|
74
74
|
r([
|
|
75
75
|
c({ reflect: !0 })
|
|
76
|
-
],
|
|
77
|
-
|
|
76
|
+
], o.prototype, "size", 1);
|
|
77
|
+
o = r([
|
|
78
78
|
h("sbb-tag")
|
|
79
|
-
],
|
|
79
|
+
], o);
|
|
80
80
|
export {
|
|
81
|
-
|
|
81
|
+
o as SbbTagElement
|
|
82
82
|
};
|