@universal-material/web 3.0.71 → 3.0.73

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 (58) hide show
  1. package/app-bar/top-app-bar.styles.js +2 -2
  2. package/app-bar/top-app-bar.styles.js.map +1 -1
  3. package/button/button.styles.js +2 -2
  4. package/button/button.styles.js.map +1 -1
  5. package/button/fab.styles.js +5 -5
  6. package/button/fab.styles.js.map +1 -1
  7. package/button/icon-button.styles.js +6 -6
  8. package/button/icon-button.styles.js.map +1 -1
  9. package/card/card.styles.d.ts.map +1 -1
  10. package/card/card.styles.js +4 -2
  11. package/card/card.styles.js.map +1 -1
  12. package/chip/chip.styles.js +1 -1
  13. package/chip/chip.styles.js.map +1 -1
  14. package/css/universal-material.css +3 -2
  15. package/css/universal-material.min.css +2 -2
  16. package/custom-elements.json +3759 -3165
  17. package/dialog/dialog.styles.js +1 -1
  18. package/dialog/dialog.styles.js.map +1 -1
  19. package/field/field-base.styles.js +2 -2
  20. package/field/field-base.styles.js.map +1 -1
  21. package/index.d.ts +4 -0
  22. package/index.d.ts.map +1 -1
  23. package/index.js +4 -0
  24. package/index.js.map +1 -1
  25. package/menu/menu.styles.js +1 -1
  26. package/menu/menu.styles.js.map +1 -1
  27. package/navigation/drawer.styles.js +2 -2
  28. package/navigation/drawer.styles.js.map +1 -1
  29. package/package.json +2 -2
  30. package/scss/_reboot.scss +2 -1
  31. package/select/option.styles.js +1 -1
  32. package/select/option.styles.js.map +1 -1
  33. package/shared/button-wrapper.d.ts.map +1 -1
  34. package/shared/button-wrapper.js.map +1 -1
  35. package/shared/button-wrapper.styles.js +1 -1
  36. package/shared/button-wrapper.styles.js.map +1 -1
  37. package/shared/menu-field/menu-field-navigation-controller.js +2 -2
  38. package/shared/menu-field/menu-field-navigation-controller.js.map +1 -1
  39. package/snackbar/snackbar.styles.js +1 -1
  40. package/snackbar/snackbar.styles.js.map +1 -1
  41. package/switch/switch.styles.js +2 -2
  42. package/switch/switch.styles.js.map +1 -1
  43. package/tab-bar/tab-bar.d.ts +28 -0
  44. package/tab-bar/tab-bar.d.ts.map +1 -0
  45. package/tab-bar/tab-bar.js +187 -0
  46. package/tab-bar/tab-bar.js.map +1 -0
  47. package/tab-bar/tab-bar.styles.d.ts +2 -0
  48. package/tab-bar/tab-bar.styles.d.ts.map +1 -0
  49. package/tab-bar/tab-bar.styles.js +72 -0
  50. package/tab-bar/tab-bar.styles.js.map +1 -0
  51. package/tab-bar/tab.d.ts +22 -0
  52. package/tab-bar/tab.d.ts.map +1 -0
  53. package/tab-bar/tab.js +91 -0
  54. package/tab-bar/tab.js.map +1 -0
  55. package/tab-bar/tab.styles.d.ts +2 -0
  56. package/tab-bar/tab.styles.d.ts.map +1 -0
  57. package/tab-bar/tab.styles.js +52 -0
  58. package/tab-bar/tab.styles.js.map +1 -0
@@ -0,0 +1,187 @@
1
+ var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {
2
+ var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
3
+ if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
4
+ else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;
5
+ return c > 3 && r && Object.defineProperty(target, key, r), r;
6
+ };
7
+ import { html, LitElement } from 'lit';
8
+ import { customElement, property, query, queryAssignedElements } from 'lit/decorators.js';
9
+ import { styles as baseStyles } from '../shared/base.styles.js';
10
+ import { styles } from './tab-bar.styles.js';
11
+ import { UmTab } from './tab.js';
12
+ let UmTabBar = class UmTabBar extends LitElement {
13
+ static { this.styles = [baseStyles, styles]; }
14
+ #tabs;
15
+ #activeTab;
16
+ #resizeObserver;
17
+ get activeTabIndex() {
18
+ if (!this.activeTab) {
19
+ return -1;
20
+ }
21
+ return this.#tabs.indexOf(this.activeTab);
22
+ }
23
+ set activeTabIndex(index) {
24
+ this.activeTab = this.#tabs[index];
25
+ }
26
+ get activeTab() {
27
+ return this.#activeTab;
28
+ }
29
+ set activeTab(activeTab) {
30
+ if (!this.#tabs.length) {
31
+ this.#activeTab = null;
32
+ this._updateTabIndicator();
33
+ return;
34
+ }
35
+ if (!activeTab || this.#activeTab === activeTab || this.#tabs.indexOf(activeTab) < 0) {
36
+ return;
37
+ }
38
+ const previouslyActiveTab = this.#activeTab;
39
+ this.#activeTab = activeTab;
40
+ previouslyActiveTab?.requestUpdate();
41
+ activeTab.scrollIntoView({ block: 'nearest', behavior: 'smooth' });
42
+ activeTab.requestUpdate();
43
+ this._updateTabIndicator();
44
+ }
45
+ attributeChangedCallback(name, _, __) {
46
+ if (name === 'variant') {
47
+ this._updateTabIndicator();
48
+ }
49
+ }
50
+ connectedCallback() {
51
+ super.connectedCallback();
52
+ this.updateComplete
53
+ .then(() => {
54
+ this._setScrollIndicatorsActive();
55
+ });
56
+ }
57
+ render() {
58
+ return html `
59
+
60
+ <div
61
+ class="scroll-indicator scroll-left active"
62
+ @click=${this.#scrollToLeft}>
63
+ <u-elevation></u-elevation>
64
+ <u-ripple></u-ripple>
65
+ <slot name="scroll-left">
66
+ <svg xmlns="http://www.w3.org/2000/svg" height="1em" viewBox="0 -960 960 960" width="1em" fill="currentColor">
67
+ <path d="M560-240 320-480l240-240 56 56-184 184 184 184-56 56Z"/>
68
+ </svg>
69
+ </slot>
70
+ </div>
71
+ <div
72
+ class="container ${this.variant === 'secondary' ? 'secondary' : ''}"
73
+ @scrollend=${this.#handleContainerScrollEnd}>
74
+ <slot @slotchange=${this.#handleSlotChange}></slot>
75
+ <div class="tab-indicator"></div>
76
+ </div>
77
+ <div
78
+ class="scroll-indicator scroll-right active"
79
+ @click=${this.#scrollToRight}>
80
+ <u-elevation></u-elevation>
81
+ <u-ripple></u-ripple>
82
+ <slot name="scroll-right">
83
+ <svg xmlns="http://www.w3.org/2000/svg" height="1em" viewBox="0 -960 960 960" width="1em" fill="currentColor">
84
+ <path d="M504-480 320-664l56-56 240 240-240 240-56-56 184-184Z"/>
85
+ </svg>
86
+ </slot>
87
+ </div>`;
88
+ }
89
+ constructor() {
90
+ super();
91
+ this.#tabs = [];
92
+ this.#activeTab = null;
93
+ this.#resizeObserver = new ResizeObserver(() => {
94
+ this._setScrollIndicatorsActive();
95
+ this._updateTabIndicator();
96
+ });
97
+ this.variant = 'primary';
98
+ this.#handleSlotChange = (e) => {
99
+ const slot = e.target;
100
+ this.#tabs = slot
101
+ .assignedElements({ flatten: true })
102
+ .filter(e => e instanceof UmTab);
103
+ for (const tab of this.#tabs) {
104
+ tab._bar = this;
105
+ }
106
+ if (this.activeTabIndex > -1) {
107
+ return;
108
+ }
109
+ this.activeTab = this.#tabs[0];
110
+ };
111
+ this.#handleContainerScrollEnd = () => {
112
+ this._setScrollIndicatorsActive();
113
+ };
114
+ this.#scrollToLeft = () => {
115
+ this._container.scrollBy({ left: this._container.offsetWidth / -2, behavior: 'smooth' });
116
+ };
117
+ this.#scrollToRight = () => {
118
+ this._container.scrollBy({ left: this._container.offsetWidth / 2, behavior: 'smooth' });
119
+ };
120
+ this.#resizeObserver.observe(this);
121
+ }
122
+ #handleSlotChange;
123
+ #handleContainerScrollEnd;
124
+ _updateTabIndicator() {
125
+ if (!this._tabIndicator) {
126
+ return;
127
+ }
128
+ if (!this.activeTab) {
129
+ this._tabIndicator.style.left = '0';
130
+ this._tabIndicator.style.width = '0';
131
+ return;
132
+ }
133
+ const styles = getComputedStyle(this.activeTab);
134
+ const padding = this.variant === 'primary'
135
+ ? parseInt(styles.paddingInline, 10)
136
+ : 0;
137
+ this._tabIndicator.style.left = `${this.activeTab.offsetLeft + padding}px`;
138
+ this._tabIndicator.style.width = `${this.activeTab.offsetWidth - padding * 2}px`;
139
+ }
140
+ #scrollToLeft;
141
+ #scrollToRight;
142
+ _setScrollIndicatorsActive() {
143
+ const scrollSafeMargin = 1;
144
+ const scrollLength = this._container.scrollWidth - this._container.offsetWidth;
145
+ const isRtl = getComputedStyle(this._container).direction === 'rtl';
146
+ const scrollStart = isRtl
147
+ ? this._container.scrollLeft + scrollLength
148
+ : this._container.scrollLeft;
149
+ if (scrollStart - scrollSafeMargin <= 0) {
150
+ this._container.scrollBy(-1, 0);
151
+ this._scrollLeft.classList.remove('active');
152
+ }
153
+ else {
154
+ this._scrollLeft.classList.add('active');
155
+ }
156
+ if (scrollStart >= scrollLength - scrollSafeMargin) {
157
+ this._container.scrollBy(1, 0);
158
+ this._scrollRight.classList.remove('active');
159
+ }
160
+ else {
161
+ this._scrollRight.classList.add('active');
162
+ }
163
+ }
164
+ };
165
+ __decorate([
166
+ property({ reflect: true })
167
+ ], UmTabBar.prototype, "variant", void 0);
168
+ __decorate([
169
+ query('.scroll-left')
170
+ ], UmTabBar.prototype, "_scrollLeft", void 0);
171
+ __decorate([
172
+ query('.scroll-right')
173
+ ], UmTabBar.prototype, "_scrollRight", void 0);
174
+ __decorate([
175
+ query('.container')
176
+ ], UmTabBar.prototype, "_container", void 0);
177
+ __decorate([
178
+ query('.tab-indicator')
179
+ ], UmTabBar.prototype, "_tabIndicator", void 0);
180
+ __decorate([
181
+ queryAssignedElements({ flatten: true })
182
+ ], UmTabBar.prototype, "assignedElements", void 0);
183
+ UmTabBar = __decorate([
184
+ customElement('u-tab-bar')
185
+ ], UmTabBar);
186
+ export { UmTabBar };
187
+ //# sourceMappingURL=tab-bar.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"tab-bar.js","sourceRoot":"","sources":["../../src/tab-bar/tab-bar.ts"],"names":[],"mappings":"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","sourcesContent":["import { html, LitElement, TemplateResult } from 'lit';\nimport { customElement, property, query, queryAssignedElements } from 'lit/decorators.js';\n\nimport { styles as baseStyles } from '../shared/base.styles.js';\nimport { styles } from './tab-bar.styles.js';\n\nimport { UmTab } from './tab.js';\n\n@customElement('u-tab-bar')\nexport class UmTabBar extends LitElement {\n static override styles = [baseStyles, styles];\n\n #tabs: UmTab[] = [];\n #activeTab: UmTab | null = null;\n #resizeObserver: ResizeObserver = new ResizeObserver(() => {\n this._setScrollIndicatorsActive();\n this._updateTabIndicator();\n });\n\n @property({reflect: true}) variant: 'primary' | 'secondary' = 'primary';\n\n @query('.scroll-left') private _scrollLeft!: HTMLElement;\n @query('.scroll-right') private _scrollRight!: HTMLElement;\n @query('.container') private _container!: HTMLElement;\n @query('.tab-indicator') private _tabIndicator?: HTMLElement;\n\n @queryAssignedElements({flatten: true}) assignedElements!: HTMLElement[];\n\n get activeTabIndex(): number {\n if (!this.activeTab) {\n return -1;\n }\n\n return this.#tabs.indexOf(this.activeTab);\n }\n set activeTabIndex(index: number) {\n this.activeTab = this.#tabs[index];\n }\n\n get activeTab(): UmTab | null {\n return this.#activeTab;\n }\n set activeTab(activeTab: UmTab | null) {\n if (!this.#tabs.length) {\n this.#activeTab = null;\n this._updateTabIndicator();\n return;\n }\n\n if (!activeTab || this.#activeTab === activeTab || this.#tabs.indexOf(activeTab) < 0) {\n return;\n }\n\n const previouslyActiveTab = this.#activeTab;\n this.#activeTab = activeTab;\n\n previouslyActiveTab?.requestUpdate();\n\n activeTab.scrollIntoView({block: 'nearest', behavior: 'smooth'});\n activeTab.requestUpdate();\n this._updateTabIndicator();\n }\n\n override attributeChangedCallback(name: string, _: string | null, __: string | null) {\n if (name === 'variant') {\n this._updateTabIndicator();\n }\n }\n\n override connectedCallback() {\n super.connectedCallback();\n\n this.updateComplete\n .then(() => {\n this._setScrollIndicatorsActive();\n });\n }\n\n protected override render(): TemplateResult {\n return html`\n\n <div\n class=\"scroll-indicator scroll-left active\"\n @click=${this.#scrollToLeft}>\n <u-elevation></u-elevation>\n <u-ripple></u-ripple>\n <slot name=\"scroll-left\">\n <svg xmlns=\"http://www.w3.org/2000/svg\" height=\"1em\" viewBox=\"0 -960 960 960\" width=\"1em\" fill=\"currentColor\">\n <path d=\"M560-240 320-480l240-240 56 56-184 184 184 184-56 56Z\"/>\n </svg>\n </slot>\n </div>\n <div\n class=\"container ${this.variant === 'secondary' ? 'secondary' : ''}\"\n @scrollend=${this.#handleContainerScrollEnd}>\n <slot @slotchange=${this.#handleSlotChange}></slot>\n <div class=\"tab-indicator\"></div>\n </div>\n <div\n class=\"scroll-indicator scroll-right active\"\n @click=${this.#scrollToRight}>\n <u-elevation></u-elevation>\n <u-ripple></u-ripple>\n <slot name=\"scroll-right\">\n <svg xmlns=\"http://www.w3.org/2000/svg\" height=\"1em\" viewBox=\"0 -960 960 960\" width=\"1em\" fill=\"currentColor\">\n <path d=\"M504-480 320-664l56-56 240 240-240 240-56-56 184-184Z\"/>\n </svg>\n </slot>\n </div>`;\n }\n\n constructor() {\n super();\n this.#resizeObserver.observe(this);\n }\n\n #handleSlotChange = (e: Event) => {\n\n const slot = <HTMLSlotElement>e.target;\n this.#tabs = <UmTab[]>slot\n .assignedElements({flatten: true})\n .filter(e => e instanceof UmTab);\n\n for (const tab of this.#tabs) {\n tab._bar = this;\n }\n\n if (this.activeTabIndex > -1) {\n return;\n }\n\n this.activeTab = this.#tabs[0];\n };\n\n #handleContainerScrollEnd = () => {\n this._setScrollIndicatorsActive();\n }\n\n _updateTabIndicator() {\n if (!this._tabIndicator) {\n return;\n }\n\n if (!this.activeTab) {\n this._tabIndicator.style.left = '0';\n this._tabIndicator.style.width = '0';\n return;\n }\n\n const styles = getComputedStyle(this.activeTab);\n const padding = this.variant === 'primary'\n ? parseInt(styles.paddingInline, 10)\n : 0;\n\n this._tabIndicator.style.left = `${this.activeTab.offsetLeft + padding}px`;\n this._tabIndicator.style.width = `${this.activeTab.offsetWidth - padding * 2}px`;\n }\n\n #scrollToLeft = () => {\n this._container.scrollBy({left: this._container.offsetWidth / -2, behavior: 'smooth'});\n };\n\n #scrollToRight = () => {\n this._container.scrollBy({left: this._container.offsetWidth / 2, behavior: 'smooth'});\n };\n\n _setScrollIndicatorsActive() {\n const scrollSafeMargin = 1;\n\n const scrollLength = this._container.scrollWidth - this._container.offsetWidth;\n\n const isRtl = getComputedStyle(this._container).direction === 'rtl';\n const scrollStart = isRtl\n ? this._container.scrollLeft + scrollLength\n : this._container.scrollLeft;\n\n if (scrollStart - scrollSafeMargin <= 0) {\n this._container.scrollBy(-1, 0);\n this._scrollLeft.classList.remove('active');\n } else {\n this._scrollLeft.classList.add('active');\n }\n\n if (scrollStart >= scrollLength - scrollSafeMargin) {\n this._container.scrollBy(1, 0);\n this._scrollRight.classList.remove('active');\n } else {\n this._scrollRight.classList.add('active');\n }\n }\n}\n\ndeclare global {\n interface HTMLElementTagNameMap {\n 'u-tab-bar': UmTabBar;\n }\n}\n"]}
@@ -0,0 +1,2 @@
1
+ export declare const styles: import("lit").CSSResult;
2
+ //# sourceMappingURL=tab-bar.styles.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"tab-bar.styles.d.ts","sourceRoot":"","sources":["../../src/tab-bar/tab-bar.styles.ts"],"names":[],"mappings":"AAEA,eAAO,MAAM,MAAM,yBAqElB,CAAC"}
@@ -0,0 +1,72 @@
1
+ import { css } from 'lit';
2
+ export const styles = css `
3
+ :host {
4
+ position: relative;
5
+ display: block;
6
+ --_active-color: var(--u-tab-active-color, var(--u-color-primary, rgb(103, 80, 164)));
7
+ --_active-label-color: var(--u-tab-active-label-color, var(--u-color-primary, rgb(103, 80, 164)));
8
+ overflow: hidden;
9
+ }
10
+
11
+ .container {
12
+ position: relative;
13
+ display: flex;
14
+ flex-direction: row;
15
+ width: 100%;
16
+ min-height: var(--u-tab-bar-min-height, 48px);
17
+ overflow: auto;
18
+ scroll-padding-inline: 128px;
19
+ scrollbar-width: none;
20
+ }
21
+ .container::-webkit-scrollbar {
22
+ display: none;
23
+ }
24
+
25
+ .scroll-indicator {
26
+ --u-elevation-level: 2;
27
+ cursor: pointer;
28
+ position: absolute;
29
+ display: none;
30
+ align-items: center;
31
+ justify-content: center;
32
+ top: 0;
33
+ width: var(--u-tab-bar-scroll-indicator-size, 32px);
34
+ background-color: var(--u-scroll-indicator-bg-color, var(--u-current-bg-color, var(--u-color-surface, rgb(254, 247, 255))));
35
+ font-size: 1.5rem;
36
+ height: 100%;
37
+ z-index: 1;
38
+ }
39
+ @media (hover: hover) {
40
+ :host(:hover) .scroll-indicator.active {
41
+ display: flex;
42
+ }
43
+ }
44
+
45
+ .scroll-left {
46
+ left: 0;
47
+ }
48
+
49
+ .scroll-right {
50
+ right: 0;
51
+ }
52
+
53
+ .tab-indicator {
54
+ position: absolute;
55
+ background-color: var(--_active-color);
56
+ height: 3px;
57
+ bottom: 0;
58
+ transition: inset 200ms ease-out, width 200ms ease-out;
59
+ }
60
+
61
+ .container:not(.secondary) .tab-indicator {
62
+ border-radius: var(--u-tab-bar-primary-border-radius, 9999px 9999px 0 0);
63
+ }
64
+
65
+ .secondary {
66
+ --_active-label-color: var(--u-tab-secondary-active-label-color, var(--u-color-on-surface, rgb(29, 27, 32)));
67
+ --_tab-content-direction: row;
68
+ --_tab-content-gap: 8px;
69
+ --u-tab-with-icon-height: var(--u-tab-secondary-with-icon-height, 48px);
70
+ }
71
+ `;
72
+ //# sourceMappingURL=tab-bar.styles.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"tab-bar.styles.js","sourceRoot":"","sources":["../../src/tab-bar/tab-bar.styles.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,GAAG,EAAE,MAAM,KAAK,CAAC;AAE1B,MAAM,CAAC,MAAM,MAAM,GAAG,GAAG,CAAC;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CAqEzB,CAAC","sourcesContent":["import { css } from 'lit';\n\nexport const styles = css `\n :host {\n position: relative;\n display: block;\n --_active-color: var(--u-tab-active-color, var(--u-color-primary, rgb(103, 80, 164)));\n --_active-label-color: var(--u-tab-active-label-color, var(--u-color-primary, rgb(103, 80, 164)));\n overflow: hidden;\n }\n\n .container {\n position: relative;\n display: flex;\n flex-direction: row;\n width: 100%;\n min-height: var(--u-tab-bar-min-height, 48px);\n overflow: auto;\n scroll-padding-inline: 128px;\n scrollbar-width: none;\n }\n .container::-webkit-scrollbar {\n display: none;\n }\n\n .scroll-indicator {\n --u-elevation-level: 2;\n cursor: pointer;\n position: absolute;\n display: none;\n align-items: center;\n justify-content: center;\n top: 0;\n width: var(--u-tab-bar-scroll-indicator-size, 32px);\n background-color: var(--u-scroll-indicator-bg-color, var(--u-current-bg-color, var(--u-color-surface, rgb(254, 247, 255))));\n font-size: 1.5rem;\n height: 100%;\n z-index: 1;\n }\n @media (hover: hover) {\n :host(:hover) .scroll-indicator.active {\n display: flex;\n }\n }\n\n .scroll-left {\n left: 0;\n }\n\n .scroll-right {\n right: 0;\n }\n\n .tab-indicator {\n position: absolute;\n background-color: var(--_active-color);\n height: 3px;\n bottom: 0;\n transition: inset 200ms ease-out, width 200ms ease-out;\n }\n\n .container:not(.secondary) .tab-indicator {\n border-radius: var(--u-tab-bar-primary-border-radius, 9999px 9999px 0 0);\n }\n\n .secondary {\n --_active-label-color: var(--u-tab-secondary-active-label-color, var(--u-color-on-surface, rgb(29, 27, 32)));\n --_tab-content-direction: row;\n --_tab-content-gap: 8px;\n --u-tab-with-icon-height: var(--u-tab-secondary-with-icon-height, 48px);\n }\n`;\n"]}
@@ -0,0 +1,22 @@
1
+ import { HTMLTemplateResult } from 'lit';
2
+ import { UmButtonWrapper } from '../shared/button-wrapper.js';
3
+ import { UmTabBar } from './tab-bar.js';
4
+ export declare class UmTab extends UmButtonWrapper {
5
+ #private;
6
+ static styles: import("lit").CSSResultGroup[];
7
+ _bar: UmTabBar | null;
8
+ get active(): boolean;
9
+ set active(active: boolean);
10
+ hasIcon: boolean;
11
+ constructor();
12
+ protected renderContent(): HTMLTemplateResult;
13
+ connectedCallback(): void;
14
+ disconnectedCallback(): void;
15
+ protected handleClick(_: UIEvent): void;
16
+ }
17
+ declare global {
18
+ interface HTMLElementTagNameMap {
19
+ 'u-tab': UmTab;
20
+ }
21
+ }
22
+ //# sourceMappingURL=tab.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"tab.d.ts","sourceRoot":"","sources":["../../src/tab-bar/tab.ts"],"names":[],"mappings":"AAAA,OAAO,EAAQ,kBAAkB,EAAE,MAAM,KAAK,CAAC;AAK/C,OAAO,EAAE,eAAe,EAAE,MAAM,6BAA6B,CAAC;AAC9D,OAAO,EAAE,QAAQ,EAAE,MAAM,cAAc,CAAC;AAExC,qBACa,KAAM,SAAQ,eAAe;;IACxC,OAAgB,MAAM,iCAAoC;IAE1D,IAAI,EAAE,QAAQ,GAAG,IAAI,CAAQ;IAQ7B,IACI,MAAM,IAAI,OAAO,CAEpB;IACD,IAAI,MAAM,CAAC,MAAM,EAAE,OAAO,EAYzB;IAE0B,OAAO,UAAS;;cAOxB,aAAa,IAAI,kBAAkB;IAc7C,iBAAiB;IAMjB,oBAAoB;cAiBV,WAAW,CAAC,CAAC,EAAE,OAAO;CAe1C;AAED,OAAO,CAAC,MAAM,CAAC;IACb,UAAU,qBAAqB;QAC7B,OAAO,EAAE,KAAK,CAAC;KAChB;CACF"}
package/tab-bar/tab.js ADDED
@@ -0,0 +1,91 @@
1
+ var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {
2
+ var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
3
+ if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
4
+ else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;
5
+ return c > 3 && r && Object.defineProperty(target, key, r), r;
6
+ };
7
+ import { html } from 'lit';
8
+ import { customElement, property, state } from 'lit/decorators.js';
9
+ import { styles } from './tab.styles.js';
10
+ import { UmButtonWrapper } from '../shared/button-wrapper.js';
11
+ let UmTab = class UmTab extends UmButtonWrapper {
12
+ static { this.styles = [UmButtonWrapper.styles, styles]; }
13
+ #resizeObserver;
14
+ get active() {
15
+ return this._bar?.activeTab === this;
16
+ }
17
+ set active(active) {
18
+ if (!this._bar) {
19
+ return;
20
+ }
21
+ if (active) {
22
+ this._bar.activeTab = this;
23
+ return;
24
+ }
25
+ this._bar.activeTabIndex = 0;
26
+ }
27
+ constructor() {
28
+ super();
29
+ this._bar = null;
30
+ this.#resizeObserver = new ResizeObserver(() => {
31
+ if (this.active) {
32
+ this._bar?._updateTabIndicator();
33
+ }
34
+ });
35
+ this.hasIcon = false;
36
+ this.#resizeObserver.observe(this);
37
+ }
38
+ renderContent() {
39
+ return html `
40
+ <div class="tab-content ${this.active ? 'active' : ''} ${this.hasIcon ? 'has-icon' : ''}">
41
+ <div class="icon">
42
+ <slot
43
+ name="icon"
44
+ @slotchange=${this.#iconSlotChange}></slot>
45
+ </div>
46
+ <div class="label">
47
+ <slot></slot>
48
+ </div>
49
+ </div>`;
50
+ }
51
+ connectedCallback() {
52
+ super.connectedCallback();
53
+ this._bar?._updateTabIndicator();
54
+ this._bar?._setScrollIndicatorsActive();
55
+ }
56
+ disconnectedCallback() {
57
+ super.disconnectedCallback();
58
+ if (!this._bar) {
59
+ return;
60
+ }
61
+ if (this._bar.activeTab === this) {
62
+ this._bar.activeTabIndex = 0;
63
+ }
64
+ this._bar._updateTabIndicator();
65
+ this._bar._setScrollIndicatorsActive();
66
+ this._bar = null;
67
+ }
68
+ handleClick(_) {
69
+ super.handleClick(_);
70
+ if (!this._bar) {
71
+ return;
72
+ }
73
+ this._bar.activeTab = this;
74
+ this._bar.dispatchEvent(new Event('change', { bubbles: true }));
75
+ }
76
+ #iconSlotChange(e) {
77
+ const slot = e.target;
78
+ this.hasIcon = !!slot.assignedElements({ flatten: true }).length;
79
+ }
80
+ };
81
+ __decorate([
82
+ state()
83
+ ], UmTab.prototype, "active", null);
84
+ __decorate([
85
+ property({ type: Boolean })
86
+ ], UmTab.prototype, "hasIcon", void 0);
87
+ UmTab = __decorate([
88
+ customElement('u-tab')
89
+ ], UmTab);
90
+ export { UmTab };
91
+ //# sourceMappingURL=tab.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"tab.js","sourceRoot":"","sources":["../../src/tab-bar/tab.ts"],"names":[],"mappings":"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","sourcesContent":["import { html, HTMLTemplateResult } from 'lit';\nimport { customElement, property, state } from 'lit/decorators.js';\n\nimport { styles } from './tab.styles.js';\n\nimport { UmButtonWrapper } from '../shared/button-wrapper.js';\nimport { UmTabBar } from './tab-bar.js';\n\n@customElement('u-tab')\nexport class UmTab extends UmButtonWrapper {\n static override styles = [UmButtonWrapper.styles, styles];\n\n _bar: UmTabBar | null = null;\n\n #resizeObserver: ResizeObserver = new ResizeObserver(() => {\n if (this.active) {\n this._bar?._updateTabIndicator();\n }\n });\n\n @state()\n get active(): boolean {\n return this._bar?.activeTab === this;\n }\n set active(active: boolean) {\n\n if (!this._bar) {\n return;\n }\n\n if (active) {\n this._bar.activeTab = this;\n return;\n }\n\n this._bar.activeTabIndex = 0;\n }\n\n @property({type: Boolean}) hasIcon = false;\n\n constructor() {\n super();\n this.#resizeObserver.observe(this);\n }\n\n protected override renderContent(): HTMLTemplateResult {\n return html`\n <div class=\"tab-content ${this.active ? 'active' : ''} ${this.hasIcon ? 'has-icon' : ''}\">\n <div class=\"icon\">\n <slot\n name=\"icon\"\n @slotchange=${this.#iconSlotChange}></slot>\n </div>\n <div class=\"label\">\n <slot></slot>\n </div>\n </div>`;\n }\n\n override connectedCallback() {\n super.connectedCallback();\n this._bar?._updateTabIndicator();\n this._bar?._setScrollIndicatorsActive();\n }\n\n override disconnectedCallback() {\n super.disconnectedCallback();\n\n if (!this._bar) {\n return;\n }\n\n if (this._bar.activeTab === this) {\n this._bar.activeTabIndex = 0;\n }\n\n this._bar._updateTabIndicator();\n this._bar._setScrollIndicatorsActive();\n\n this._bar = null;\n }\n\n protected override handleClick(_: UIEvent) {\n super.handleClick(_);\n\n if (!this._bar) {\n return;\n }\n\n this._bar.activeTab = this;\n this._bar.dispatchEvent(new Event('change', {bubbles: true}));\n }\n\n #iconSlotChange(e: Event) {\n const slot = <HTMLSlotElement>e.target;\n this.hasIcon = !!slot.assignedElements({flatten: true}).length;\n }\n}\n\ndeclare global {\n interface HTMLElementTagNameMap {\n 'u-tab': UmTab;\n }\n}\n"]}
@@ -0,0 +1,2 @@
1
+ export declare const styles: import("lit").CSSResult;
2
+ //# sourceMappingURL=tab.styles.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"tab.styles.d.ts","sourceRoot":"","sources":["../../src/tab-bar/tab.styles.ts"],"names":[],"mappings":"AAEA,eAAO,MAAM,MAAM,yBAiDlB,CAAC"}
@@ -0,0 +1,52 @@
1
+ import { css } from 'lit';
2
+ export const styles = css `
3
+ :host {
4
+ --u-focus-ring-outline-offset: -4px;
5
+ --_tab-height: var(--u-tab-height, 48px);
6
+ display: block;
7
+ flex: 1;
8
+ padding-inline: var(--u-tab-padding, 16px);
9
+ max-width: var(--u-tab-max-width, 360px);
10
+ }
11
+
12
+ .tab-content {
13
+ display: flex;
14
+ flex-direction: var(--_tab-content-direction, column);
15
+ align-items: center;
16
+ justify-content: center;
17
+ height: var(--_tab-height);
18
+ gap: var(--_tab-content-gap, 0);
19
+ }
20
+
21
+ .has-icon {
22
+ --_tab-height: var(--u-tab-with-icon-height, 64px);
23
+ }
24
+
25
+ :host(.force-focus-ring) .button,
26
+ .button:focus-visible {
27
+ border-radius: var(--u-spacing-small, 8px);
28
+ }
29
+
30
+ .label {
31
+ font-family: var(--u-font-family, var(--u-font-family, system-ui, -apple-system, "Segoe UI", Roboto, "Helvetica Neue", "Noto Sans", "Liberation Sans", Arial, sans-serif, "Apple Color Emoji", "Segoe UI Emoji", "Segoe UI Symbol", "Noto Color Emoji"));
32
+ line-height: var(--u-tab-label-line-height, var(--u-title-s-line-height, 1.25rem));
33
+ font-size: var(--u-tab-label-font-size, var(--u-title-s-font-size, 0.875rem));
34
+ letter-spacing: var(--u-tab-label-letter-spacing, var(--u-title-s-letter-spacing, 0.0071428571rem));
35
+ font-weight: var(--u-tab-label-font-weight, var(--u-title-s-font-weight, var(--u-font-weight-medium, 500)));
36
+ color: var(--u-tab-label-text-color, var(--u-color-on-surface-variant, rgb(73, 69, 79)));
37
+ }
38
+
39
+ .icon {
40
+ display: flex;
41
+ align-items: center;
42
+ justify-content: center;
43
+ font-size: 1.5rem;
44
+ color: var(--u-tab-label-text-color, var(--u-color-on-surface-variant, rgb(73, 69, 79)));
45
+ }
46
+
47
+ .active .icon,
48
+ .active .label {
49
+ color: var(--_active-label-color);
50
+ }
51
+ `;
52
+ //# sourceMappingURL=tab.styles.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"tab.styles.js","sourceRoot":"","sources":["../../src/tab-bar/tab.styles.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,GAAG,EAAE,MAAM,KAAK,CAAC;AAE1B,MAAM,CAAC,MAAM,MAAM,GAAG,GAAG,CAAC;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CAiDzB,CAAC","sourcesContent":["import { css } from 'lit';\n\nexport const styles = css `\n :host {\n --u-focus-ring-outline-offset: -4px;\n --_tab-height: var(--u-tab-height, 48px);\n display: block;\n flex: 1;\n padding-inline: var(--u-tab-padding, 16px);\n max-width: var(--u-tab-max-width, 360px);\n }\n\n .tab-content {\n display: flex;\n flex-direction: var(--_tab-content-direction, column);\n align-items: center;\n justify-content: center;\n height: var(--_tab-height);\n gap: var(--_tab-content-gap, 0);\n }\n\n .has-icon {\n --_tab-height: var(--u-tab-with-icon-height, 64px);\n }\n\n :host(.force-focus-ring) .button,\n .button:focus-visible {\n border-radius: var(--u-spacing-small, 8px);\n }\n\n .label {\n font-family: var(--u-font-family, var(--u-font-family, system-ui, -apple-system, \"Segoe UI\", Roboto, \"Helvetica Neue\", \"Noto Sans\", \"Liberation Sans\", Arial, sans-serif, \"Apple Color Emoji\", \"Segoe UI Emoji\", \"Segoe UI Symbol\", \"Noto Color Emoji\"));\n line-height: var(--u-tab-label-line-height, var(--u-title-s-line-height, 1.25rem));\n font-size: var(--u-tab-label-font-size, var(--u-title-s-font-size, 0.875rem));\n letter-spacing: var(--u-tab-label-letter-spacing, var(--u-title-s-letter-spacing, 0.0071428571rem));\n font-weight: var(--u-tab-label-font-weight, var(--u-title-s-font-weight, var(--u-font-weight-medium, 500)));\n color: var(--u-tab-label-text-color, var(--u-color-on-surface-variant, rgb(73, 69, 79)));\n }\n\n .icon {\n display: flex;\n align-items: center;\n justify-content: center;\n font-size: 1.5rem;\n color: var(--u-tab-label-text-color, var(--u-color-on-surface-variant, rgb(73, 69, 79)));\n }\n\n .active .icon,\n .active .label {\n color: var(--_active-label-color);\n }\n`;\n"]}