@@ -104,7 +104,7 @@ export class TabContainerElement extends HTMLElement {
104
104
}
105
105
106
106
get #tabListTabWrapper( ) {
107
- return this . shadowRoot ! . querySelector < HTMLSlotElement > ( 'div [part="tablist-tab-wrapper"]' ) !
107
+ return this . shadowRoot ! . querySelector < HTMLSlotElement > ( 'slot [part="tablist-tab-wrapper"]' ) !
108
108
}
109
109
110
110
get #beforeTabsSlot( ) {
@@ -165,8 +165,9 @@ export class TabContainerElement extends HTMLElement {
165
165
const tabListContainer = document . createElement ( 'div' )
166
166
tabListContainer . style . display = 'flex'
167
167
tabListContainer . setAttribute ( 'part' , 'tablist-wrapper' )
168
- const tabListTabWrapper = document . createElement ( 'div ' )
168
+ const tabListTabWrapper = document . createElement ( 'slot ' )
169
169
tabListTabWrapper . setAttribute ( 'part' , 'tablist-tab-wrapper' )
170
+ tabListTabWrapper . setAttribute ( 'name' , 'tablist-tab-wrapper' )
170
171
const tabListSlot = document . createElement ( 'slot' )
171
172
tabListSlot . setAttribute ( 'part' , 'tablist' )
172
173
tabListSlot . setAttribute ( 'name' , 'tablist' )
@@ -275,7 +276,14 @@ export class TabContainerElement extends HTMLElement {
275
276
if ( ! this . #setupComplete) {
276
277
const tabListSlot = this . #tabListSlot
277
278
const customTabList = this . querySelector ( '[role=tablist]' )
278
- if ( customTabList && customTabList . closest ( this . tagName ) === this ) {
279
+ const customTabListWrapper = this . querySelector ( '[slot=tablist-tab-wrapper]' )
280
+ if ( customTabListWrapper && customTabListWrapper . closest ( this . tagName ) === this ) {
281
+ if ( manualSlotsSupported ) {
282
+ tabListSlot . assign ( customTabListWrapper )
283
+ } else {
284
+ customTabListWrapper . setAttribute ( 'slot' , 'tablist' )
285
+ }
286
+ } else if ( customTabList && customTabList . closest ( this . tagName ) === this ) {
279
287
if ( manualSlotsSupported ) {
280
288
tabListSlot . assign ( customTabList )
281
289
} else {
@@ -302,7 +310,11 @@ export class TabContainerElement extends HTMLElement {
302
310
const afterSlotted : Element [ ] = [ ]
303
311
let autoSlotted = beforeSlotted
304
312
for ( const child of this . children ) {
305
- if ( child . getAttribute ( 'role' ) === 'tab' || child . getAttribute ( 'role' ) === 'tablist' ) {
313
+ if (
314
+ child . getAttribute ( 'role' ) === 'tab' ||
315
+ child . getAttribute ( 'role' ) === 'tablist' ||
316
+ child . getAttribute ( 'slot' ) === 'tablist-tab-wrapper'
317
+ ) {
306
318
autoSlotted = afterTabSlotted
307
319
continue
308
320
}
0 commit comments