| | |
| | | console.error('No tab navigation or section found'); |
| | | return false; |
| | | } |
| | | if (ui.nav.previousElementSibling && ui.nav.previousElementSibling.classList.contains('form-progress')) { |
| | | |
| | | } |
| | | let tabsId = window.generateID('tab'); |
| | | |
| | | container.dataset.tabsId = tabsId; |
| | |
| | | ui: ui, |
| | | updateURL: options.updateURL ?? true |
| | | }; |
| | | if (Object.hasOwn(options, 'preCheck')) { |
| | | config.preCheck = options.preCheck; |
| | | } |
| | | |
| | | //Add listeners |
| | | ui.nav.addEventListener('click', this.clickHandler); |
| | |
| | | if (!config) return; |
| | | let activeTab = config.ui.sections.filter(section => section.classList.contains('active')); |
| | | |
| | | if (Object.hasOwn(config, 'preCheck') && !config.preCheck(activeTab[0], config)) return; |
| | | if (Object.hasOwn(config, 'preCheck') && !config.preCheck(activeTab[0], tab, config)) return; |
| | | |
| | | if (document.activeElement && this.isInTabs(document.activeElement, config)) document.activeElement.blur(); |
| | | |
| | | config.ui.buttons.forEach((btn, index) => { |
| | | config.ui.buttons.forEach(btn => { |
| | | btn.classList.remove('active', 'previous', 'next'); |
| | | }); |
| | | |
| | | config.ui.buttons.forEach((btn, index) => { |
| | | let isActive = btn.dataset.tab === tab; |
| | | btn.setAttribute('aria-selected', isActive); |
| | | if (isActive) { |