UNPKG

tdesign-vue-next

Version:
1 lines 9.07 kB
{"version":3,"file":"tabs.mjs","sources":["../../../components/tabs/tabs.tsx"],"sourcesContent":["import { ComponentPublicInstance, defineComponent, provide, Ref, toRefs } from 'vue';\nimport TTabPanel from './tab-panel';\nimport TTabNav from './tab-nav';\nimport { TabValue, TdTabsProps } from './type';\nimport props from './props';\n\nimport { useVModel, useTNodeJSX, usePrefixClass } from '@tdesign/shared-hooks';\n\nimport { isArray } from 'lodash-es';\n\nexport interface InjectTabs {\n value: Ref<TabValue>;\n}\n\nexport default defineComponent({\n name: 'TTabs',\n props,\n setup(props) {\n const COMPONENT_NAME = usePrefixClass('tabs');\n const classPrefix = usePrefixClass();\n const renderTNodeJSX = useTNodeJSX();\n\n const { value, modelValue } = toRefs(props);\n const [tabValue, setTabValue] = useVModel(value, modelValue, props.defaultValue || '', props.onChange);\n\n provide<InjectTabs>('tabs', { value: tabValue });\n\n // methods\n const onTabAdd = (context: { e: MouseEvent }) => {\n props.onAdd?.({ e: context.e });\n };\n const onTabChange = (value: TabValue) => {\n setTabValue(value);\n };\n const onTabRemove = ({ e, value, index }: Parameters<TdTabsProps['onRemove']>[0]) => {\n props.onRemove?.({ value, index, e });\n };\n\n // render\n const getSlotPanels = () => {\n const content = renderTNodeJSX('default');\n if (!content) return [];\n\n const flatContent = (ct: any) => {\n return ct\n .map((item: ComponentPublicInstance) => {\n if (item.children && isArray(item.children)) return flatContent(item.children);\n return item;\n })\n .flat()\n .filter((item: ComponentPublicInstance) => {\n return item.type.name === 'TTabPanel';\n });\n };\n\n return flatContent(content);\n };\n const renderHeader = () => {\n const panels = (props.list?.length ? props.list : getSlotPanels()) || [];\n const actionContent = renderTNodeJSX('action');\n const panelsData = panels.map((item: ComponentPublicInstance) => {\n const selfItem = item;\n\n if (item.props) {\n Object.keys(item.props).forEach((key) => {\n selfItem[key] = item.props[key];\n });\n }\n\n return selfItem;\n });\n const tabNavProps = {\n theme: props.theme,\n value: tabValue.value,\n size: props.size,\n disabled: props.disabled,\n placement: props.placement,\n scrollPosition: props.scrollPosition,\n addable: props.addable,\n panels: panelsData,\n dragSort: props.dragSort,\n action: actionContent,\n };\n return (\n <div\n class={{\n [`${classPrefix.value}-tabs__header`]: true,\n [`${classPrefix.value}-is-${props.placement}`]: true,\n }}\n >\n <TTabNav\n {...tabNavProps}\n onDragSort={props.onDragSort}\n onChange={onTabChange}\n onAdd={onTabAdd}\n onRemove={onTabRemove}\n />\n </div>\n );\n };\n const renderContent = () => {\n const panels = getSlotPanels();\n if (props.list?.length) {\n return props.list.map((item) => <TTabPanel {...item} onRemove={onTabRemove} />);\n }\n if (panels && panels.length) {\n return <div class={[`${classPrefix.value}-tabs__content`]}>{panels}</div>;\n }\n };\n\n return () => {\n return (\n <div class={[COMPONENT_NAME.value]}>\n {props.placement !== 'bottom' ? [renderHeader(), renderContent()] : [renderContent(), renderHeader()]}\n </div>\n );\n };\n },\n});\n"],"names":["defineComponent","name","props","setup","COMPONENT_NAME","usePrefixClass","classPrefix","renderTNodeJSX","useTNodeJSX","_toRefs","toRefs","value","modelValue","_useVModel","useVModel","defaultValue","onChange","_useVModel2","_slicedToArray","tabValue","setTabValue","provide","onTabAdd","context","_props2$onAdd","onAdd","e","onTabChange","onTabRemove","_props2$onRemove","index","onRemove","getSlotPanels","content","flatContent","ct","map","item","children","isArray","flat","filter","type","renderHeader","_props2$list","panels","list","length","actionContent","panelsData","selfItem","Object","keys","forEach","key","tabNavProps","theme","size","disabled","placement","scrollPosition","addable","dragSort","action","_createVNode","_defineProperty","concat","TTabNav","_mergeProps","onDragSort","renderContent","_props2$list2","TTabPanel"],"mappings":"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"}