@legion-ui-kit/react-core
Version:
To install the package into your project:
1 lines • 4.79 kB
Source Map (JSON)
{"version":3,"file":"Tabs.cjs","sources":["../../../../src/components/Tabs/Tabs.tsx"],"sourcesContent":["// Modules\r\nimport { Children } from 'react';\r\nimport cn from 'classnames';\r\n\r\n// Types\r\nimport type { JSX } from 'react';\r\nimport type { TTabsProps } from './Tabs.type';\r\n\r\n// Styles\r\nimport styles from './styles/styles.module.scss';\r\n\r\n// Components\r\nimport TabList from './TabList';\r\nimport TabPanelList from './TabPanelList';\r\n\r\n// Helpers\r\nimport { checkComponent, isFunction } from '../../helpers';\r\nimport { checkTabsChildren } from './Tabs.helper';\r\n\r\n// Constants\r\nimport {\r\n TABS_DEFAULT_PROPS, TABS_POSITION,\r\n TAB_LIST_DISPLAY_NAME,\r\n TAB_PANEL_LIST_DISPLAY_NAME,\r\n TAB_PANEL_SLIDE_DIRECTION\r\n} from './Tab.constant';\r\n\r\nconst Tabs = (props: TTabsProps) => {\r\n const {\r\n activeTab = TABS_DEFAULT_PROPS.activeTab,\r\n children,\r\n className,\r\n onChange,\r\n position = TABS_DEFAULT_PROPS.position,\r\n ...restProps\r\n } = props;\r\n\r\n const tabsCN = cn(styles.legion_tabs, className, styles[position!]);\r\n\r\n const handleChangeTab = (tabIndex?: number) => {\r\n if (isFunction(onChange)) {\r\n onChange(tabIndex);\r\n }\r\n };\r\n\r\n return (\r\n <div className={tabsCN} {...restProps}>\r\n {\r\n // Filter out the children that are not `TabList` or `TabPanelList`\r\n Children.toArray(children).filter(child => checkTabsChildren(child)).map((child, childIndex) => {\r\n if (checkComponent(child, TAB_LIST_DISPLAY_NAME)) {\r\n const { className: tabListClassName, ...tabListProps } = (child as JSX.Element).props;\r\n const tabListCN = cn(styles.tab_list_section, tabListClassName);\r\n const tabListKey = `tabs-tab-list-${childIndex}`;\r\n\r\n return (\r\n <TabList\r\n {...tabListProps}\r\n key={tabListKey}\r\n className={tabListCN}\r\n activeTab={activeTab}\r\n onChange={handleChangeTab}\r\n />\r\n );\r\n } else if (checkComponent(child, TAB_PANEL_LIST_DISPLAY_NAME)) {\r\n const { className: panelListClassName, ...panelListProps } = (child as JSX.Element).props;\r\n const panelListCN = cn(styles.panel_list_section, panelListClassName);\r\n const panelListKey = `tabs-panel-list-${childIndex}`;\r\n const panelSlideDirection = position === TABS_POSITION.top || position === TABS_POSITION.bottom ?\r\n TAB_PANEL_SLIDE_DIRECTION.horizontal : TAB_PANEL_SLIDE_DIRECTION.vertical;\r\n\r\n return (\r\n <TabPanelList\r\n key={panelListKey}\r\n {...panelListProps}\r\n className={panelListCN}\r\n activePanel={activeTab}\r\n slideDirection={panelSlideDirection}\r\n />\r\n );\r\n }\r\n })\r\n }\r\n </div>\r\n );\r\n};\r\n\r\nTabs.displayName = 'Tabs';\r\nexport default Tabs;\r\n"],"names":["Tabs","props","activeTab","TABS_DEFAULT_PROPS","children","className","onChange","position","restProps","tabsCN","cn","styles","legion_tabs","handleChangeTab","tabIndex","isFunction","_jsx","Children","toArray","filter","child","checkTabsChildren","map","childIndex","checkComponent","TAB_LIST_DISPLAY_NAME","tabListClassName","tabListProps","tabListCN","tab_list_section","tabListKey","_createElement","TabList","key","TAB_PANEL_LIST_DISPLAY_NAME","panelListClassName","panelListProps","panelListCN","panel_list_section","panelListKey","panelSlideDirection","TABS_POSITION","top","bottom","TAB_PANEL_SLIDE_DIRECTION","horizontal","vertical","TabPanelList","activePanel","slideDirection","displayName"],"mappings":"0cA2BA,MAAMA,EAAQC,IACZ,MAAMC,UACJA,EAAYC,EAAAA,mBAAmBD,UAASE,SACxCA,EAAQC,UACRA,EAASC,SACTA,EAAQC,SACRA,EAAWJ,EAAAA,mBAAmBI,YAC3BC,GACDP,EAEEQ,EAASC,EAAAA,QAAGC,EAAAA,QAAOC,YAAaP,EAAWM,EAAAA,QAAOJ,IAElDM,EAAmBC,IACnBC,EAAAA,WAAWT,IACbA,EAASQ,IAIb,OACEE,EAAAA,IAAA,MAAA,CAAKX,UAAWI,KAAYD,EAASJ,SAGjCa,EAAAA,SAASC,QAAQd,GAAUe,OAAOC,GAASC,oBAAkBD,IAAQE,IAAI,CAACF,EAAOG,KAC/E,GAAIC,EAAAA,eAAeJ,EAAOK,EAAAA,uBAAwB,CAChD,MAAQpB,UAAWqB,KAAqBC,GAAkBP,EAAsBnB,MAC1E2B,EAAYlB,EAAAA,QAAGC,UAAOkB,iBAAkBH,GACxCI,EAAa,iBAAiBP,IAEpC,OACEQ,EAAAA,cAACC,EAAAA,QAAO,IACFL,EACJM,IAAKH,EACLzB,UAAWuB,EACX1B,UAAWA,EACXI,SAAUO,IAGT,GAAIW,EAAAA,eAAeJ,EAAOc,EAAAA,6BAA8B,CAC7D,MAAQ7B,UAAW8B,KAAuBC,GAAoBhB,EAAsBnB,MAC9EoC,EAAc3B,EAAAA,QAAGC,UAAO2B,mBAAoBH,GAC5CI,EAAe,mBAAmBhB,IAClCiB,EAAsBjC,IAAakC,EAAAA,cAAcC,KAAOnC,IAAakC,EAAAA,cAAcE,OACvFC,4BAA0BC,WAAaD,EAAAA,0BAA0BE,SAEnE,OACE9B,MAAC+B,EAAAA,QAAY,IAEPX,EACJ/B,UAAWgC,EACXW,YAAa9C,EACb+C,eAAgBT,GAJXD,SAcrBvC,EAAKkD,YAAc"}