UNPKG

@stormid/tabs

Version:

Accessible tabbed panelled content areas

31 lines (27 loc) 1.04 kB
import { createStore } from './store'; import { findTabsAndPanels, initUI, open } from './dom'; import { getActiveIndexOnLoad } from './utils'; /* * @param settings, Object, merged defaults + options passed in as instantiation config to module default * @param node, HTMLElement, DOM node to be toggled * * @returns Object, Toggle API */ export default ({ node, settings }) => { const store = createStore(); const { tabs, panels } = findTabsAndPanels(node, settings); if (!tabs.length || !panels.length || panels.includes(undefined)) return false; const activeIndex = getActiveIndexOnLoad(panels, node); store.update({ settings, node, activeIndex: activeIndex !== undefined ? +activeIndex : +settings.activeIndex, activeTabIndex: activeIndex !== undefined ? +activeIndex : +settings.activeIndex, tabs, panels, loaded: false }, [ initUI(store), open(store) ]); return { getState: store.getState }; };