@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.
Files changed (242) hide show
  1. package/accordion.js +54 -54
  2. package/action-group.js +3 -3
  3. package/alert/alert-group.js +22 -22
  4. package/alert/alert.js +22 -22
  5. package/autocomplete.js +126 -126
  6. package/breadcrumb/breadcrumb-group.js +60 -60
  7. package/breadcrumb/breadcrumb.js +17 -17
  8. package/calendar.js +423 -423
  9. package/card/card-badge.js +17 -17
  10. package/card/card.js +2 -2
  11. package/card/common.js +30 -30
  12. package/checkbox/checkbox/checkbox.d.ts +3 -46
  13. package/checkbox/checkbox/checkbox.d.ts.map +1 -1
  14. package/checkbox/checkbox-group/checkbox-group.d.ts +4 -2
  15. package/checkbox/checkbox-group/checkbox-group.d.ts.map +1 -1
  16. package/checkbox/checkbox-group.js +26 -23
  17. package/checkbox/checkbox-panel/checkbox-panel.d.ts +41 -0
  18. package/checkbox/checkbox-panel/checkbox-panel.d.ts.map +1 -0
  19. package/checkbox/checkbox-panel.d.ts +2 -0
  20. package/checkbox/checkbox-panel.d.ts.map +1 -0
  21. package/checkbox/checkbox-panel.js +67 -0
  22. package/checkbox/checkbox.js +27 -104
  23. package/checkbox/common/checkbox-common.d.ts +13 -0
  24. package/checkbox/common/checkbox-common.d.ts.map +1 -0
  25. package/checkbox/common.d.ts +2 -0
  26. package/checkbox/common.d.ts.map +1 -0
  27. package/checkbox/common.js +52 -0
  28. package/checkbox.d.ts +2 -0
  29. package/checkbox.d.ts.map +1 -1
  30. package/checkbox.js +2 -0
  31. package/clock.js +83 -83
  32. package/container/sticky-bar.js +16 -16
  33. package/core/a11y.js +91 -91
  34. package/core/base-elements.js +86 -86
  35. package/core/controllers.js +40 -40
  36. package/core/datetime.js +32 -32
  37. package/core/dom.js +26 -26
  38. package/core/eventing.js +33 -33
  39. package/core/mixins/panel-mixin.d.ts +13 -0
  40. package/core/mixins/panel-mixin.d.ts.map +1 -0
  41. package/core/mixins.d.ts +1 -0
  42. package/core/mixins.d.ts.map +1 -1
  43. package/core/mixins.js +170 -139
  44. package/core/styles/node_modules_@sbb-esta_lyne-design-tokens_dist_scss_sbb-variables_css--mixin.scss +1 -1
  45. package/core/testing.js +29 -29
  46. package/core.css +1 -1
  47. package/custom-elements.json +8862 -6904
  48. package/datepicker/common.js +55 -55
  49. package/datepicker/datepicker-toggle.js +94 -94
  50. package/datepicker/datepicker.js +144 -144
  51. package/development/checkbox/checkbox/checkbox.d.ts +3 -46
  52. package/development/checkbox/checkbox/checkbox.d.ts.map +1 -1
  53. package/development/checkbox/checkbox-group/checkbox-group.d.ts +4 -2
  54. package/development/checkbox/checkbox-group/checkbox-group.d.ts.map +1 -1
  55. package/development/checkbox/checkbox-group.js +43 -13
  56. package/development/checkbox/checkbox-panel/checkbox-panel.d.ts +41 -0
  57. package/development/checkbox/checkbox-panel/checkbox-panel.d.ts.map +1 -0
  58. package/development/checkbox/checkbox-panel.d.ts +2 -0
  59. package/development/checkbox/checkbox-panel.d.ts.map +1 -0
  60. package/development/checkbox/checkbox-panel.js +86 -0
  61. package/development/checkbox/checkbox.js +19 -239
  62. package/development/checkbox/common/checkbox-common.d.ts +13 -0
  63. package/development/checkbox/common/checkbox-common.d.ts.map +1 -0
  64. package/development/checkbox/common.d.ts +2 -0
  65. package/development/checkbox/common.d.ts.map +1 -0
  66. package/development/checkbox/common.js +156 -0
  67. package/development/checkbox.d.ts +2 -0
  68. package/development/checkbox.d.ts.map +1 -1
  69. package/development/checkbox.js +3 -1
  70. package/development/core/mixins/panel-mixin.d.ts +13 -0
  71. package/development/core/mixins/panel-mixin.d.ts.map +1 -0
  72. package/development/core/mixins.d.ts +1 -0
  73. package/development/core/mixins.d.ts.map +1 -1
  74. package/development/core/mixins.js +187 -31
  75. package/development/image.js +1 -1
  76. package/development/radio-button/common/radio-button-common.d.ts +22 -0
  77. package/development/radio-button/common/radio-button-common.d.ts.map +1 -0
  78. package/development/radio-button/common.d.ts +2 -0
  79. package/development/radio-button/common.d.ts.map +1 -0
  80. package/development/radio-button/common.js +294 -0
  81. package/development/radio-button/radio-button/radio-button.d.ts +2 -81
  82. package/development/radio-button/radio-button/radio-button.d.ts.map +1 -1
  83. package/development/radio-button/radio-button-group/radio-button-group.d.ts +6 -4
  84. package/development/radio-button/radio-button-group/radio-button-group.d.ts.map +1 -1
  85. package/development/radio-button/radio-button-group.js +55 -23
  86. package/development/radio-button/radio-button-panel/index.d.ts +2 -0
  87. package/development/radio-button/radio-button-panel/index.d.ts.map +1 -0
  88. package/development/radio-button/radio-button-panel/radio-button-panel.d.ts +29 -0
  89. package/development/radio-button/radio-button-panel/radio-button-panel.d.ts.map +1 -0
  90. package/development/radio-button/radio-button-panel.d.ts +2 -0
  91. package/development/radio-button/radio-button-panel.d.ts.map +1 -0
  92. package/development/radio-button/radio-button-panel.js +69 -0
  93. package/development/radio-button/radio-button.js +10 -324
  94. package/development/radio-button.d.ts +2 -0
  95. package/development/radio-button.d.ts.map +1 -1
  96. package/development/radio-button.js +3 -1
  97. package/{selection-panel/selection-panel.d.ts → development/selection-expansion-panel/selection-expansion-panel.d.ts} +9 -7
  98. package/development/selection-expansion-panel/selection-expansion-panel.d.ts.map +1 -0
  99. package/development/selection-expansion-panel.d.ts +2 -0
  100. package/development/selection-expansion-panel.d.ts.map +1 -0
  101. package/development/selection-expansion-panel.js +340 -0
  102. package/development/tabs/tab/index.d.ts +2 -0
  103. package/development/tabs/tab/index.d.ts.map +1 -0
  104. package/development/tabs/tab/tab.d.ts +24 -0
  105. package/development/tabs/tab/tab.d.ts.map +1 -0
  106. package/development/tabs/tab-group/tab-group.d.ts +20 -15
  107. package/development/tabs/tab-group/tab-group.d.ts.map +1 -1
  108. package/development/tabs/tab-group.js +24 -14
  109. package/development/tabs/{tab-title/tab-title.d.ts → tab-label/tab-label.d.ts} +4 -4
  110. package/development/tabs/{tab-title/tab-title.d.ts.map → tab-label/tab-label.d.ts.map} +1 -1
  111. package/development/tabs/tab-label.d.ts +2 -0
  112. package/development/tabs/tab-label.d.ts.map +1 -0
  113. package/development/tabs/{tab-title.js → tab-label.js} +86 -86
  114. package/development/tabs/tab.d.ts +2 -0
  115. package/development/tabs/tab.d.ts.map +1 -0
  116. package/development/tabs/tab.js +71 -0
  117. package/development/tabs.d.ts +2 -1
  118. package/development/tabs.d.ts.map +1 -1
  119. package/development/tabs.js +3 -2
  120. package/development/train/train-formation/train-formation.d.ts.map +1 -1
  121. package/development/train/train-formation.js +12 -12
  122. package/dialog/dialog-title.js +20 -20
  123. package/dialog/dialog.js +66 -66
  124. package/expansion-panel/expansion-panel-header.js +20 -20
  125. package/expansion-panel/expansion-panel.js +60 -60
  126. package/file-selector.js +91 -91
  127. package/form-field/form-field-clear.js +12 -12
  128. package/form-field/form-field.js +111 -111
  129. package/header/header.js +53 -53
  130. package/icon.js +107 -107
  131. package/image.js +87 -87
  132. package/index.d.ts +10 -8
  133. package/index.js +10 -8
  134. package/journey-header.js +29 -29
  135. package/map-container.js +23 -23
  136. package/menu/menu.js +91 -91
  137. package/navigation/common.js +16 -16
  138. package/navigation/navigation-marker.js +34 -34
  139. package/navigation/navigation-section.js +83 -83
  140. package/navigation/navigation.js +87 -87
  141. package/notification.js +52 -52
  142. package/option/optgroup.js +45 -45
  143. package/option/option.js +108 -108
  144. package/overlay.js +5 -5
  145. package/package.json +34 -19
  146. package/popover/popover.js +110 -110
  147. package/radio-button/common/radio-button-common.d.ts +22 -0
  148. package/radio-button/common/radio-button-common.d.ts.map +1 -0
  149. package/radio-button/common.d.ts +2 -0
  150. package/radio-button/common.d.ts.map +1 -0
  151. package/radio-button/common.js +105 -0
  152. package/radio-button/radio-button/radio-button.d.ts +2 -81
  153. package/radio-button/radio-button/radio-button.d.ts.map +1 -1
  154. package/radio-button/radio-button-group/radio-button-group.d.ts +6 -4
  155. package/radio-button/radio-button-group/radio-button-group.d.ts.map +1 -1
  156. package/radio-button/radio-button-group.js +86 -80
  157. package/radio-button/radio-button-panel/index.d.ts +2 -0
  158. package/radio-button/radio-button-panel/index.d.ts.map +1 -0
  159. package/radio-button/radio-button-panel/radio-button-panel.d.ts +29 -0
  160. package/radio-button/radio-button-panel/radio-button-panel.d.ts.map +1 -0
  161. package/radio-button/radio-button-panel.d.ts +2 -0
  162. package/radio-button/radio-button-panel.d.ts.map +1 -0
  163. package/radio-button/radio-button-panel.js +59 -0
  164. package/radio-button/radio-button.js +20 -143
  165. package/radio-button.d.ts +2 -0
  166. package/radio-button.d.ts.map +1 -1
  167. package/radio-button.js +2 -0
  168. package/select.js +178 -178
  169. package/{development/selection-panel/selection-panel.d.ts → selection-expansion-panel/selection-expansion-panel.d.ts} +9 -7
  170. package/selection-expansion-panel/selection-expansion-panel.d.ts.map +1 -0
  171. package/selection-expansion-panel.d.ts +2 -0
  172. package/selection-expansion-panel.d.ts.map +1 -0
  173. package/selection-expansion-panel.js +146 -0
  174. package/slider.js +58 -58
  175. package/standard-theme.css +1 -1
  176. package/status.js +6 -6
  177. package/stepper/step-label.js +19 -19
  178. package/stepper/step.js +31 -31
  179. package/stepper/stepper.js +46 -46
  180. package/tabs/tab/index.d.ts +2 -0
  181. package/tabs/tab/index.d.ts.map +1 -0
  182. package/tabs/tab/tab.d.ts +24 -0
  183. package/tabs/tab/tab.d.ts.map +1 -0
  184. package/tabs/tab-group/tab-group.d.ts +20 -15
  185. package/tabs/tab-group/tab-group.d.ts.map +1 -1
  186. package/tabs/tab-group.js +85 -75
  187. package/tabs/{tab-title/tab-title.d.ts → tab-label/tab-label.d.ts} +4 -4
  188. package/tabs/{tab-title/tab-title.d.ts.map → tab-label/tab-label.d.ts.map} +1 -1
  189. package/tabs/tab-label.d.ts +2 -0
  190. package/tabs/tab-label.d.ts.map +1 -0
  191. package/tabs/tab-label.js +51 -0
  192. package/tabs/tab.d.ts +2 -0
  193. package/tabs/tab.d.ts.map +1 -0
  194. package/tabs/tab.js +41 -0
  195. package/tabs.d.ts +2 -1
  196. package/tabs.d.ts.map +1 -1
  197. package/tabs.js +2 -1
  198. package/tag/tag-group.js +8 -8
  199. package/tag/tag.js +27 -27
  200. package/time-input.js +73 -73
  201. package/timetable-occupancy-icon.js +26 -26
  202. package/timetable-occupancy.js +9 -9
  203. package/toast.js +38 -38
  204. package/toggle/toggle-option.js +33 -33
  205. package/toggle/toggle.js +46 -46
  206. package/train/train-formation/train-formation.d.ts.map +1 -1
  207. package/train/train-formation.js +51 -51
  208. package/train/train-wagon.js +30 -30
  209. package/train/train.js +13 -13
  210. package/development/selection-panel/selection-panel.d.ts.map +0 -1
  211. package/development/selection-panel.d.ts +0 -2
  212. package/development/selection-panel.d.ts.map +0 -1
  213. package/development/selection-panel.js +0 -376
  214. package/development/tabs/tab-title.d.ts +0 -2
  215. package/development/tabs/tab-title.d.ts.map +0 -1
  216. package/development/teaser-hero/teaser-hero.d.ts +0 -26
  217. package/development/teaser-hero/teaser-hero.d.ts.map +0 -1
  218. package/development/teaser-hero.d.ts +0 -2
  219. package/development/teaser-hero.d.ts.map +0 -1
  220. package/development/teaser-hero.js +0 -181
  221. package/development/teaser-paid/teaser-paid.d.ts +0 -20
  222. package/development/teaser-paid/teaser-paid.d.ts.map +0 -1
  223. package/development/teaser-paid.d.ts +0 -2
  224. package/development/teaser-paid.d.ts.map +0 -1
  225. package/development/teaser-paid.js +0 -91
  226. package/selection-panel/selection-panel.d.ts.map +0 -1
  227. package/selection-panel.d.ts +0 -2
  228. package/selection-panel.d.ts.map +0 -1
  229. package/selection-panel.js +0 -138
  230. package/tabs/tab-title.d.ts +0 -2
  231. package/tabs/tab-title.d.ts.map +0 -1
  232. package/tabs/tab-title.js +0 -51
  233. package/teaser-hero/teaser-hero.d.ts +0 -26
  234. package/teaser-hero/teaser-hero.d.ts.map +0 -1
  235. package/teaser-hero.d.ts +0 -2
  236. package/teaser-hero.d.ts.map +0 -1
  237. package/teaser-hero.js +0 -51
  238. package/teaser-paid/teaser-paid.d.ts +0 -20
  239. package/teaser-paid/teaser-paid.d.ts.map +0 -1
  240. package/teaser-paid.d.ts +0 -2
  241. package/teaser-paid.d.ts.map +0 -1
  242. 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 m } from "../core/a11y.js";
5
- import { SbbConnectedAbortController as A } from "../core/controllers.js";
6
- import { EventEmitter as x, throttle as y } from "../core/eventing.js";
7
- import { AgnosticMutationObserver as C, AgnosticResizeObserver as d } from "../core/observers.js";
8
- const E = 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}`;
9
- var w = Object.defineProperty, G = Object.getOwnPropertyDescriptor, l = (t, e, i, s) => {
10
- for (var a = s > 1 ? void 0 : s ? G(e, i) : e, n = t.length - 1, r; n >= 0; n--)
11
- (r = t[n]) && (a = (s ? r(e, i, a) : r(a)) || a);
12
- return s && a && w(e, i, a), a;
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 S = {
15
+ const G = {
15
16
  attributeFilter: ["active", "disabled"]
16
- }, T = ["article", "div", "section", "sbb-tab-group"];
17
- let I = 0, o = class extends u {
17
+ }, S = ["sbb-tab", "sbb-tab-group"];
18
+ let I = 0, r = class extends u {
18
19
  constructor() {
19
- super(...arguments), this.a = [], this.l = new A(this), this.h = new C(
20
- (t) => this.m(t)
21
- ), this.i = new d(
22
- (t) => this.n(t)
23
- ), this.d = new d(
24
- (t) => this.o(t)
25
- ), this.j = "l", this.initialSelectedIndex = 0, this.q = new x(
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
- o.events.didChange
28
- ), this.t = () => {
29
- this.g = this.shadowRoot.querySelector("div.tab-content");
30
- const t = this.e().filter((e) => !this.a.includes(e));
31
- t.length && (t.forEach((e) => this.k(e)), this.a = this.a.concat(t));
32
- }, this.u = () => {
33
- const t = this.e();
34
- t.length < this.a.length && (this.a.filter((i) => !t.includes(i)).forEach((i) => {
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.a = t), this.a.forEach((e) => e.setAttribute("data-size", this.size));
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.j = t, this.p();
42
+ this._size = t, this._updateSize();
42
43
  }
43
44
  get size() {
44
- return this.j;
45
+ return this._size;
45
46
  }
46
- p() {
47
- for (const t of this.a)
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.a[t]) == null ? void 0 : e.tabGroupActions) == null || i.disable();
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.a[t]) == null ? void 0 : e.tabGroupActions) == null || i.enable();
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.a[t]) == null ? void 0 : e.tabGroupActions) == null || i.select();
73
+ (i = (e = this._tabs[t]) == null ? void 0 : e.tabGroupActions) == null || i.select();
73
74
  }
74
- e() {
75
+ _getTabs() {
75
76
  return Array.from(this.children ?? []).filter(
76
- (t) => /^sbb-tab-title$/u.test(t.localName)
77
+ (t) => /^sbb-tab-label$/u.test(t.localName)
77
78
  );
78
79
  }
79
- get f() {
80
- return this.a.filter((t) => !t.hasAttribute("disabled"));
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.l.signal;
86
- this.addEventListener("keydown", (i) => this.r(i), { signal: t }), this.toggleAttribute("data-nested", !!((e = this.parentElement) != null && e.closest("sbb-tab-group")));
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.a = this.e(), this.a.forEach((e) => this.k(e)), this.s(), this.i.observe(this.c);
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.h.disconnect(), this.d.disconnect(), this.i.disconnect();
93
+ super.disconnectedCallback(), this._tabAttributeObserver.disconnect(), this._tabContentResizeObserver.disconnect(), this._tabGroupResizeObserver.disconnect();
93
94
  }
94
- v() {
95
+ _assignId() {
95
96
  return `sbb-tab-panel-${++I}`;
96
97
  }
97
- s() {
98
+ _initSelection() {
98
99
  var t, e, i;
99
- this.initialSelectedIndex >= 0 && this.initialSelectedIndex < this.a.length && !this.a[this.initialSelectedIndex].disabled ? (t = this.a[this.initialSelectedIndex].tabGroupActions) == null || t.select() : (i = (e = this.f[0]) == null ? void 0 : e.tabGroupActions) == null || i.select();
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
- m(t) {
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.b ? (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.b && n.toggleAttribute("active", !0));
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
- n(t) {
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.c.clientWidth}px`);
118
+ ), this.style.setProperty("--sbb-tab-group-width", `${this._tabGroupElement.clientWidth}px`);
118
119
  }
119
120
  }
120
- o(t) {
121
+ _onTabContentElementResize(t) {
121
122
  for (const e of t) {
122
123
  const i = Math.floor(e.contentRect.height);
123
- this.g.style.height = `${i}px`;
124
+ this._tabContentElement.style.height = `${i}px`;
124
125
  }
125
126
  }
126
- k(t) {
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.f[0]) == null ? void 0 : a.tabGroupActions) == null || n.select()));
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.b && !t.disabled) {
147
- const n = this.b;
148
- n && ((s = n.tabGroupActions) == null || s.deactivate(), this.d.unobserve(n.relatedContent)), (a = t.tabGroupActions) == null || a.activate(), this.b = t, this.d.observe(t.relatedContent), this.q.emit();
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 && T.includes((i = t.nextElementSibling) == null ? void 0 : i.localName) ? (t.relatedContent = t.nextElementSibling, t.relatedContent.id = this.v(), t.relatedContent.nodeName !== "SBB-TAB-GROUP" && (t.relatedContent.tabIndex = 0)) : (t.insertAdjacentHTML("afterend", "<div>No content.</div>"), t.relatedContent = t.nextElementSibling), t.tabIndex = -1, t.disabled = t.hasAttribute("disabled"), t.active = t.hasAttribute("active") && !t.disabled, t.setAttribute("role", "tab"), t.setAttribute("aria-controls", t.relatedContent.id), t.setAttribute("aria-selected", "false"), t.relatedContent.setAttribute("role", "tabpanel"), t.relatedContent.toggleAttribute("active", t.active), t.addEventListener("click", () => {
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.h.observe(t, S), t.slot = "tab-bar";
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
- r(t) {
166
+ _handleKeyDown(t) {
157
167
  var i, s, a;
158
- const e = this.f;
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((b) => b.active), r = m(t, n, e.length);
162
- (s = (i = e[r]) == null ? void 0 : i.tabGroupActions) == null || s.select(), (a = e[r]) == null || a.focus(), t.preventDefault();
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.c = t)}
180
+ ${p((t) => this._tabGroupElement = t)}
171
181
  >
172
- <slot name="tab-bar" @slotchange=${this.u}></slot>
182
+ <slot name="tab-bar" @slotchange=${this._onTabsSlotChange}></slot>
173
183
  </div>
174
184
 
175
185
  <div class="tab-content">
176
- <slot @slotchange=${y(this.t, 150)}></slot>
186
+ <slot @slotchange=${C(this._onContentSlotChange, 150)}></slot>
177
187
  </div>
178
188
  `;
179
189
  }
180
190
  };
181
- o.styles = E;
182
- o.events = {
191
+ r.styles = y;
192
+ r.events = {
183
193
  didChange: "didChange"
184
194
  };
185
- l([
195
+ b([
186
196
  c()
187
- ], o.prototype, "size", 1);
188
- l([
197
+ ], r.prototype, "size", 1);
198
+ b([
189
199
  c({ attribute: "initial-selected-index", type: Number })
190
- ], o.prototype, "initialSelectedIndex", 2);
191
- o = l([
200
+ ], r.prototype, "initialSelectedIndex", 2);
201
+ r = b([
192
202
  v("sbb-tab-group")
193
- ], o);
203
+ ], r);
194
204
  export {
195
- o as SbbTabGroupElement
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 SbbTabTitleElement_base: import('../../core/mixins.js').AbstractConstructor<import('../../core/mixins.js').SbbDisabledMixinType> & import('../../core/mixins.js').AbstractConstructor<import('../../icon.js').SbbIconNameMixinType> & typeof LitElement;
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 SbbTabTitleElement extends SbbTabTitleElement_base {
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-title': SbbTabTitleElement;
28
+ 'sbb-tab-label': SbbTabLabelElement;
29
29
  }
30
30
  }
31
31
  export {};
32
- //# sourceMappingURL=tab-title.d.ts.map
32
+ //# sourceMappingURL=tab-label.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"tab-title.d.ts","sourceRoot":"","sources":["../../../../src/elements/tabs/tab-title/tab-title.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"}
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,2 @@
1
+ export * from './tab-label/tab-label.js';
2
+ //# sourceMappingURL=tab-label.d.ts.map
@@ -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,2 @@
1
+ export * from './tab/tab.js';
2
+ //# sourceMappingURL=tab.d.ts.map
@@ -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
@@ -1,3 +1,4 @@
1
+ export * from './tabs/tab.js';
1
2
  export * from './tabs/tab-group.js';
2
- export * from './tabs/tab-title.js';
3
+ export * from './tabs/tab-label.js';
3
4
  //# sourceMappingURL=tabs.d.ts.map
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
@@ -1,2 +1,3 @@
1
+ export * from "./tabs/tab.js";
1
2
  export * from "./tabs/tab-group.js";
2
- export * from "./tabs/tab-title.js";
3
+ export * from "./tabs/tab-label.js";
package/tag/tag-group.js CHANGED
@@ -1,23 +1,23 @@
1
- import { css as h, LitElement as f, isServer as b, html as u } from "lit";
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, A = Object.getOwnPropertyDescriptor, a = (e, t, s, i) => {
7
- for (var l = i > 1 ? void 0 : i ? A(t, s) : t, c = e.length - 1, p; c >= 0; c--)
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
- f
12
+ u
13
13
  ) {
14
14
  constructor() {
15
- super(...arguments), this.listChildLocalNames = ["sbb-tag", "div"], this.multiple = !1, this.size = "m", this.a = null;
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.a = e;
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.a : 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;
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 u`
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 f } from "../core/mixins.js";
7
- import { SbbIconNameMixin as p } from "../icon.js";
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, w = Object.getOwnPropertyDescriptor, r = (t, o, b, a) => {
10
- for (var s = a > 1 ? void 0 : a ? w(o, b) : o, i = t.length - 1, n; i >= 0; i--)
11
- (n = t[i]) && (s = (a ? n(o, b, s) : n(s)) || s);
12
- return a && s && y(o, b, s), s;
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 e = class extends p(
15
- f(v)
14
+ let o = class extends f(
15
+ p(v)
16
16
  ) {
17
17
  constructor() {
18
- super(), this.checked = !1, this.a = "m", this.b = null, this.c = new l(this, e.events.input, {
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.d = new l(this, e.events.didChange, {
21
+ }), this._didChange = new l(this, o.events.didChange, {
22
22
  bubbles: !0
23
- }), this.e = new l(this, e.events.change, {
23
+ }), this._change = new l(this, o.events.change, {
24
24
  bubbles: !0
25
- }), this.f = new u(this), new m(this);
25
+ }), this._abort = new u(this), new m(this);
26
26
  }
27
27
  set size(t) {
28
- this.a = t;
28
+ this._size = t;
29
29
  }
30
30
  get size() {
31
31
  var t;
32
- return ((t = this.b) == null ? void 0 : t.size) ?? this.a;
32
+ return ((t = this._group) == null ? void 0 : t.size) ?? this._size;
33
33
  }
34
34
  connectedCallback() {
35
- super.connectedCallback(), this.b = this.closest("sbb-tag-group"), this.addEventListener("click", () => this.g(), { signal: this.f.signal });
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
- g() {
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.c.emit(), this.e.emit(), this.d.emit());
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 o = (b = this.closest) == null ? void 0 : b.call(this, "sbb-tag-group");
48
- o && !o.multiple && t.has("checked") && this.checked && (o == null || o.tags.filter((a) => a !== this).forEach((a) => a.checked = !1));
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
- e.styles = x;
63
- e.events = {
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
- ], e.prototype, "amount", 2);
70
+ ], o.prototype, "amount", 2);
71
71
  r([
72
72
  c({ reflect: !0, type: Boolean })
73
- ], e.prototype, "checked", 2);
73
+ ], o.prototype, "checked", 2);
74
74
  r([
75
75
  c({ reflect: !0 })
76
- ], e.prototype, "size", 1);
77
- e = r([
76
+ ], o.prototype, "size", 1);
77
+ o = r([
78
78
  h("sbb-tag")
79
- ], e);
79
+ ], o);
80
80
  export {
81
- e as SbbTagElement
81
+ o as SbbTagElement
82
82
  };