/** * The default tab navigation function of the K-scaffold. Courtesy of Riernar. It will add `k-active-tab` to the active tab-container and `k-active-button` to the active button. You can either write your own CSS to control display of these, or use the default CSS included in `scaffold/_k.scss`. Note that `k-active-button` has no default CSS as it is assumed that you will want to style the active button to match your system. * @param {Object} trigger - The trigger object */ const kSwitchTab = function ({ trigger, attributes, sections, casc }) { const [container, tab] = ( trigger.name.match(/nav-tabs-(.+)--(.+)/) || [] ).slice(1); $20(`[data-container-tab="${container}"]`).removeClass('k-active-tab'); $20(`[data-container-tab="${container}"][data-tab="${tab}"]`).addClass('k-active-tab'); $20(`[data-container-button="${container}"]`).removeClass('k-active-button'); $20(`[data-container-button="${container}"][data-button="${tab}"]`).addClass('k-active-button'); const tabInputName = `${container.replace(/\-/g,'_')}_tab`; if(persistentTabs.indexOf(tabInputName) > -1){ attributes[tabInputName] = trigger.name; } if(trigger && trigger.navFuncs){ trigger.navFuncs.forEach((funcName) => { if(funcs[funcName]){ funcs[funcName]({attributes,sections,casc,trigger}); } }); } } registerFuncs({ kSwitchTab }); /** * Sets persistent tabs to their last active state * @param {object} trigger - The trigger that caused the function to be called * @param {object} attributes - The attribute values of the character * @param {object[]} sections - All the repeating section IDs * @param {object} casc - Expanded cascade object */ const kTabOnOpen = function({trigger,attributes,sections,casc}){ persistentTabs.forEach((tabInput) => { const pseudoTrigger = {name:attributes[tabInput]}; kSwitchTab({trigger:pseudoTrigger, attributes}); }); }; registerFuncs({ kTabOnOpen },{type:['opener']});