@@ -19,6 +19,7 @@ export default class PgTabs extends HTMLElement {
1919 #tabs: any [ ] = [ ] ;
2020
2121 #selectedTab: number = 0 ;
22+ #focusedTab: number = 0 ;
2223
2324 connectedCallback ( ) {
2425 this . addEventListener ( 'tab' , this . #handleTab. bind ( this ) ) ;
@@ -36,29 +37,31 @@ export default class PgTabs extends HTMLElement {
3637 console . log ( index , this . #tabs[ e . detail . index ] ) ;
3738 const elements = this . $slot . assignedElements ( ) as PgTab [ ] ;
3839 elements [ this . #selectedTab] . hide ( ) ;
40+ $tabs [ this . #selectedTab] . selected = false ;
3941 elements [ index ] . show ( ) ;
42+ $tabs [ index ] . selected = true ;
4043 this . #selectedTab = index ;
4144 } ) ;
42- $tab . addEventListener ( 'arrowleft' , ( e : any ) => {
45+ $tab . addEventListener ( 'arrowleft' , ( e : any ) => {
4346 const { index } = e . detail ;
4447 if ( this . #tabs. length > 1 ) {
4548 if ( index === 0 ) {
46- this . #selectedTab = this . #tabs. length - 1 ;
49+ this . #focusedTab = this . #tabs. length - 1 ;
4750 } else {
48- this . #selectedTab = index - 1 ;
51+ this . #focusedTab = index - 1 ;
4952 }
50- $tabs [ this . #selectedTab ] . focus ( ) ;
53+ $tabs [ this . #focusedTab ] . focus ( ) ;
5154 }
5255 } ) ;
5356 $tab . addEventListener ( 'arrowright' , ( e : any ) => {
5457 const { index } = e . detail ;
5558 if ( this . #tabs. length > 1 ) {
5659 if ( index === this . #tabs. length - 1 ) {
57- this . #selectedTab = 0 ;
60+ this . #focusedTab = 0 ;
5861 } else {
59- this . #selectedTab ++ ;
62+ this . #focusedTab ++ ;
6063 }
61- $tabs [ this . #selectedTab ] . focus ( ) ;
64+ $tabs [ this . #focusedTab ] . focus ( ) ;
6265 }
6366 } ) ;
6467 }
@@ -72,9 +75,11 @@ export default class PgTabs extends HTMLElement {
7275 }
7376
7477 handleSlotChange ( e ) {
78+ const tabs = Array . from ( this . $tabset . children ) as PgPartialTab [ ] ;
7579 const elements = this . $slot . assignedElements ( ) as PgTab [ ] ;
7680 if ( elements . length !== 0 ) {
7781 elements [ 0 ] . show ( ) ;
82+ tabs [ 0 ] . selected = true ;
7883 }
7984 }
8085
0 commit comments