@vaadin/tabsheet 24.4.0-dev.223e39f050 → 24.4.0-dev.4b20a0c55.3
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/README.md
CHANGED
|
@@ -5,7 +5,6 @@ A web component for organizing and grouping content into sections.
|
|
|
5
5
|
[Documentation + Live Demo ↗](https://vaadin.com/docs/latest/components/tabs/#tab-sheet)
|
|
6
6
|
|
|
7
7
|
[](https://www.npmjs.com/package/@vaadin/tabsheet)
|
|
8
|
-
[](https://discord.gg/PHmkCKC)
|
|
9
8
|
|
|
10
9
|
```html
|
|
11
10
|
<vaadin-tabsheet>
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@vaadin/tabsheet",
|
|
3
|
-
"version": "24.4.0-dev.
|
|
3
|
+
"version": "24.4.0-dev.4b20a0c55.3",
|
|
4
4
|
"publishConfig": {
|
|
5
5
|
"access": "public"
|
|
6
6
|
},
|
|
@@ -37,12 +37,12 @@
|
|
|
37
37
|
"dependencies": {
|
|
38
38
|
"@open-wc/dedupe-mixin": "^1.3.0",
|
|
39
39
|
"@polymer/polymer": "^3.0.0",
|
|
40
|
-
"@vaadin/component-base": "24.4.0-dev.
|
|
41
|
-
"@vaadin/scroller": "24.4.0-dev.
|
|
42
|
-
"@vaadin/tabs": "24.4.0-dev.
|
|
43
|
-
"@vaadin/vaadin-lumo-styles": "24.4.0-dev.
|
|
44
|
-
"@vaadin/vaadin-material-styles": "24.4.0-dev.
|
|
45
|
-
"@vaadin/vaadin-themable-mixin": "24.4.0-dev.
|
|
40
|
+
"@vaadin/component-base": "24.4.0-dev.4b20a0c55.3",
|
|
41
|
+
"@vaadin/scroller": "24.4.0-dev.4b20a0c55.3",
|
|
42
|
+
"@vaadin/tabs": "24.4.0-dev.4b20a0c55.3",
|
|
43
|
+
"@vaadin/vaadin-lumo-styles": "24.4.0-dev.4b20a0c55.3",
|
|
44
|
+
"@vaadin/vaadin-material-styles": "24.4.0-dev.4b20a0c55.3",
|
|
45
|
+
"@vaadin/vaadin-themable-mixin": "24.4.0-dev.4b20a0c55.3"
|
|
46
46
|
},
|
|
47
47
|
"devDependencies": {
|
|
48
48
|
"@esm-bundle/chai": "^4.3.4",
|
|
@@ -53,5 +53,5 @@
|
|
|
53
53
|
"web-types.json",
|
|
54
54
|
"web-types.lit.json"
|
|
55
55
|
],
|
|
56
|
-
"gitHead": "
|
|
56
|
+
"gitHead": "41cf17453d7506fb635c088a0425e20b6e82b89b"
|
|
57
57
|
}
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
/**
|
|
2
2
|
* @license
|
|
3
|
-
* Copyright (c) 2019 -
|
|
3
|
+
* Copyright (c) 2019 - 2024 Vaadin Ltd.
|
|
4
4
|
* This program is available under Apache License Version 2.0, available at https://vaadin.com/license/
|
|
5
5
|
*/
|
|
6
6
|
import type { Constructor } from '@open-wc/dedupe-mixin';
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
/**
|
|
2
2
|
* @license
|
|
3
|
-
* Copyright (c) 2022 -
|
|
3
|
+
* Copyright (c) 2022 - 2024 Vaadin Ltd.
|
|
4
4
|
* This program is available under Apache License Version 2.0, available at https://vaadin.com/license/
|
|
5
5
|
*/
|
|
6
6
|
import { DelegateStateMixin } from '@vaadin/component-base/src/delegate-state-mixin.js';
|
|
@@ -18,11 +18,29 @@ class TabsSlotController extends SlotController {
|
|
|
18
18
|
super(host, 'tabs');
|
|
19
19
|
this.__tabsItemsChangedListener = this.__tabsItemsChangedListener.bind(this);
|
|
20
20
|
this.__tabsSelectedChangedListener = this.__tabsSelectedChangedListener.bind(this);
|
|
21
|
+
this.__tabIdObserver = new MutationObserver((mutations) => {
|
|
22
|
+
mutations.forEach((mutation) => {
|
|
23
|
+
const tab = mutation.target;
|
|
24
|
+
|
|
25
|
+
host.__linkTabAndPanel(tab);
|
|
26
|
+
|
|
27
|
+
if (tab.selected) {
|
|
28
|
+
host.__togglePanels(tab);
|
|
29
|
+
}
|
|
30
|
+
});
|
|
31
|
+
});
|
|
21
32
|
}
|
|
22
33
|
|
|
23
34
|
/** @private */
|
|
24
35
|
__tabsItemsChangedListener() {
|
|
25
|
-
this.
|
|
36
|
+
this.__tabIdObserver.disconnect();
|
|
37
|
+
const items = this.tabs.items || [];
|
|
38
|
+
items.forEach((tab) => {
|
|
39
|
+
this.__tabIdObserver.observe(tab, {
|
|
40
|
+
attributeFilter: ['id'],
|
|
41
|
+
});
|
|
42
|
+
});
|
|
43
|
+
this.host._setItems(items);
|
|
26
44
|
}
|
|
27
45
|
|
|
28
46
|
/** @private */
|
|
@@ -142,15 +160,7 @@ export const TabSheetMixin = (superClass) =>
|
|
|
142
160
|
return;
|
|
143
161
|
}
|
|
144
162
|
items.forEach((tabItem) => {
|
|
145
|
-
|
|
146
|
-
if (panel) {
|
|
147
|
-
panel.role = 'tabpanel';
|
|
148
|
-
if (!panel.id) {
|
|
149
|
-
panel.id = `tabsheet-panel-${generateUniqueId()}`;
|
|
150
|
-
}
|
|
151
|
-
panel.setAttribute('aria-labelledby', tabItem.id);
|
|
152
|
-
tabItem.setAttribute('aria-controls', panel.id);
|
|
153
|
-
}
|
|
163
|
+
this.__linkTabAndPanel(tabItem, panels);
|
|
154
164
|
});
|
|
155
165
|
}
|
|
156
166
|
|
|
@@ -162,10 +172,14 @@ export const TabSheetMixin = (superClass) =>
|
|
|
162
172
|
if (!items || !panels || selected === undefined) {
|
|
163
173
|
return;
|
|
164
174
|
}
|
|
165
|
-
|
|
166
|
-
|
|
175
|
+
this.__togglePanels(items[selected], panels);
|
|
176
|
+
}
|
|
177
|
+
|
|
178
|
+
/** @private */
|
|
179
|
+
__togglePanels(selectedTab, panels = this.__panels) {
|
|
167
180
|
const selectedTabId = selectedTab ? selectedTab.id : '';
|
|
168
181
|
const selectedPanel = panels.find((panel) => panel.getAttribute('tab') === selectedTabId);
|
|
182
|
+
const content = this.shadowRoot.querySelector('[part="content"]');
|
|
169
183
|
|
|
170
184
|
// Mark loading state if a selected panel is not found.
|
|
171
185
|
this.toggleAttribute('loading', !selectedPanel);
|
|
@@ -183,4 +197,17 @@ export const TabSheetMixin = (superClass) =>
|
|
|
183
197
|
panel.hidden = panel !== selectedPanel;
|
|
184
198
|
});
|
|
185
199
|
}
|
|
200
|
+
|
|
201
|
+
/** @private */
|
|
202
|
+
__linkTabAndPanel(tab, panels = this.__panels) {
|
|
203
|
+
const panel = panels.find((panel) => panel.getAttribute('tab') === tab.id);
|
|
204
|
+
if (panel) {
|
|
205
|
+
panel.role = 'tabpanel';
|
|
206
|
+
if (!panel.id) {
|
|
207
|
+
panel.id = `tabsheet-panel-${generateUniqueId()}`;
|
|
208
|
+
}
|
|
209
|
+
panel.setAttribute('aria-labelledby', tab.id);
|
|
210
|
+
tab.setAttribute('aria-controls', panel.id);
|
|
211
|
+
}
|
|
212
|
+
}
|
|
186
213
|
};
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
/**
|
|
2
2
|
* @license
|
|
3
|
-
* Copyright (c) 2022 -
|
|
3
|
+
* Copyright (c) 2022 - 2024 Vaadin Ltd.
|
|
4
4
|
* This program is available under Apache License Version 2.0, available at https://vaadin.com/license/
|
|
5
5
|
*/
|
|
6
6
|
import { defineCustomElement } from '@vaadin/component-base/src/define.js';
|
package/src/vaadin-tabsheet.d.ts
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
/**
|
|
2
2
|
* @license
|
|
3
|
-
* Copyright (c) 2022 -
|
|
3
|
+
* Copyright (c) 2022 - 2024 Vaadin Ltd.
|
|
4
4
|
* This program is available under Apache License Version 2.0, available at https://vaadin.com/license/
|
|
5
5
|
*/
|
|
6
6
|
import { ControllerMixin } from '@vaadin/component-base/src/controller-mixin.js';
|
package/src/vaadin-tabsheet.js
CHANGED