@@ -7,17 +7,55 @@ export default class extends Controller {
77 static targets = [ "tab" ] ;
88
99 connect ( ) {
10+ // this.initializeFirstTabs();
1011 this . activateTabFromHash ( ) ;
1112 this . setupTabChangeListener ( ) ;
1213 }
1314
15+ // initializeFirstTabs() {
16+ // // Ensure the first tab in each group is active and shown
17+ // const tabGroups = this.element.querySelectorAll('[data-bs-target]');
18+ // tabGroups.forEach((tab) => {
19+ // // Skip tabs inside the localized-fields class
20+ // if (tab.closest('.localized-fields')) return;
21+
22+ // const tabPane = this.element.querySelector(tab.dataset.bsTarget);
23+ // if (tabPane) {
24+ // const nestedTabs = tabPane.querySelectorAll('[data-bs-target]');
25+ // if (nestedTabs.length > 0) {
26+ // const firstNestedTab = nestedTabs[0];
27+ // const firstNestedTabTarget = tabPane.querySelector(firstNestedTab.dataset.bsTarget);
28+
29+ // nestedTabs.forEach((nestedTab) => {
30+ // nestedTab.classList.remove('active');
31+ // });
32+ // firstNestedTab.classList.add('active');
33+
34+ // if (firstNestedTabTarget) {
35+ // const nestedTabPanes = tabPane.querySelectorAll('.tab-pane');
36+ // nestedTabPanes.forEach((nestedPane) => {
37+ // nestedPane.classList.remove('active');
38+ // nestedPane.classList.remove('show');
39+ // });
40+
41+ // firstNestedTabTarget.classList.add('active');
42+ // firstNestedTabTarget.classList.add('show');
43+ // }
44+ // }
45+ // }
46+ // });
47+ // }
48+
1449 activateTabFromHash ( ) {
1550 const hash = window . location . hash ;
1651 if ( hash ) {
1752 let selectedTab = this . element . querySelector ( `[data-bs-target="${ hash } "]` ) ;
1853 while ( selectedTab ) {
54+ // Skip tabs inside the localized-fields class
55+ if ( selectedTab . closest ( '.localized-fields' ) ) break ;
56+
1957 const tabTarget = this . element . querySelector ( `${ selectedTab . dataset . bsTarget } ` ) ;
20- const tabPanes = this . element . querySelectorAll ( '.nav- tab-pane' ) ;
58+ const tabPanes = this . element . querySelectorAll ( '.tab-pane' ) ;
2159
2260 this . tabTargets . forEach ( ( pane ) => {
2361 pane . classList . remove ( 'active' ) ;
@@ -32,6 +70,29 @@ export default class extends Controller {
3270 if ( tabTarget ) {
3371 tabTarget . classList . add ( 'active' ) ;
3472 tabTarget . classList . add ( 'show' ) ;
73+
74+ // // Activate the first tab inside the activated tab pane
75+ // const nestedTabs = tabTarget.querySelectorAll('[data-bs-target]');
76+ // if (nestedTabs.length > 0) {
77+ // const firstNestedTab = nestedTabs[0];
78+ // const firstNestedTabTarget = tabTarget.querySelector(firstNestedTab.dataset.bsTarget);
79+
80+ // nestedTabs.forEach((nestedTab) => {
81+ // nestedTab.classList.remove('active');
82+ // });
83+ // firstNestedTab.classList.add('active');
84+
85+ // if (firstNestedTabTarget) {
86+ // const nestedTabPanes = tabTarget.querySelectorAll('.tab-pane');
87+ // nestedTabPanes.forEach((nestedPane) => {
88+ // nestedPane.classList.remove('active');
89+ // nestedPane.classList.remove('show');
90+ // });
91+
92+ // firstNestedTabTarget.classList.add('active');
93+ // firstNestedTabTarget.classList.add('show');
94+ // }
95+ // }
3596 }
3697
3798 // Check if the selected tab is nested and activate its parent tab
@@ -49,6 +110,9 @@ export default class extends Controller {
49110 setupTabChangeListener ( ) {
50111 const tabLinks = this . tabTargets ;
51112 tabLinks . forEach ( ( link ) => {
113+ // Skip tabs inside the localized-fields class
114+ if ( link . closest ( '.localized-fields' ) ) return ;
115+
52116 link . addEventListener ( "shown.bs.tab" , ( event ) => {
53117 history . pushState ( { } , "" , event . target . getAttribute ( "data-bs-target" ) )
54118 } ) ;
0 commit comments