@@ -32,50 +32,47 @@ export class UUITabGroupElement extends LitElement {
32
32
} )
33
33
private slotNodes ?: HTMLElement [ ] ;
34
34
35
- private tabElements : UUITabElement [ ] = [ ] ;
35
+ private tabElements : HTMLElement [ ] = [ ] ;
36
36
37
37
private setTabArray ( ) {
38
- if ( this . slotNodes ) {
39
- this . tabElements = this . slotNodes . filter ( this . elementIsTab ) ;
40
- } else {
41
- this . tabElements = [ ] ;
42
- }
43
- }
44
-
45
- private elementIsTab ( el : unknown ) : el is UUITabElement {
46
- return el instanceof UUITabElement ;
38
+ this . tabElements = this . slotNodes ? this . slotNodes : [ ] ;
47
39
}
48
40
49
41
private onSlotChange ( ) {
42
+ this . tabElements . forEach ( el => {
43
+ el . removeEventListener (
44
+ 'click' ,
45
+ this . onTabActive
46
+ ) ;
47
+ } ) ;
48
+
50
49
this . setTabArray ( ) ;
51
- if ( this . tabElements ) {
52
- this . tabElements . forEach ( el => {
53
- el . removeEventListener (
54
- 'click' ,
55
- // @ts -ignore TODO: fix typescript error
56
- this . onTabActive as EventHandlerNonNull
57
- ) ;
58
- } ) ;
59
- }
60
50
61
51
this . tabElements . forEach ( el => {
62
- // @ts -ignore TODO: fix typescript error
63
- el . addEventListener ( 'click' , this . onTabActive as EventHandlerNonNull ) ;
52
+ el . addEventListener ( 'click' , this . onTabActive ) ;
64
53
} ) ;
65
54
}
66
55
67
56
private onTabActive = ( e : MouseEvent ) => {
68
57
//? should this contain stopPropagation?
69
- const selectedElement = e . target as UUITabElement ;
70
- selectedElement . active = true ;
58
+ const selectedElement = e . target as HTMLElement ;
59
+ if ( this . elementIsTabLike ( selectedElement ) ) {
60
+ selectedElement . active = true ;
61
+ }
71
62
72
63
const filtered = this . tabElements . filter ( el => el !== selectedElement ) ;
73
64
74
65
filtered . forEach ( el => {
75
- el . active = false ;
66
+ if ( this . elementIsTabLike ( el ) ) {
67
+ el . active = false ;
68
+ }
76
69
} ) ;
77
70
} ;
78
71
72
+ private elementIsTabLike ( el : any ) : el is UUITabElement {
73
+ return el instanceof UUITabElement || 'active' in el ;
74
+ }
75
+
79
76
connectedCallback ( ) {
80
77
super . connectedCallback ( ) ;
81
78
if ( ! this . hasAttribute ( 'role' ) ) this . setAttribute ( 'role' , 'tablist' ) ;
0 commit comments