UNPKG

element-plus

Version:

A Component Library for Vue 3

1 lines 17.5 kB
{"version":3,"file":"tabs.mjs","sources":["../../../../../../packages/components/tabs/src/tabs.tsx"],"sourcesContent":["import {\n computed,\n createVNode,\n defineComponent,\n getCurrentInstance,\n nextTick,\n provide,\n ref,\n renderSlot,\n watch,\n} from 'vue'\nimport { omit } from 'lodash-unified'\nimport {\n buildProps,\n definePropType,\n getEventCode,\n isNumber,\n isString,\n isUndefined,\n} from '@element-plus/utils'\nimport { EVENT_CODE, UPDATE_MODEL_EVENT } from '@element-plus/constants'\nimport ElIcon from '@element-plus/components/icon'\nimport { Plus } from '@element-plus/icons-vue'\nimport { useNamespace, useOrderedChildren } from '@element-plus/hooks'\nimport { tabsRootContextKey } from './constants'\nimport TabNav from './tab-nav'\n\nimport type { ExtractPropTypes, ExtractPublicPropTypes, VNode } from 'vue'\nimport type { Awaitable } from '@element-plus/utils'\nimport type { TabNavInstance } from './tab-nav'\nimport type { TabPaneName, TabsPaneContext } from './constants'\n\nexport const tabsProps = buildProps({\n /**\n * @description type of Tab\n */\n type: {\n type: String,\n values: ['card', 'border-card', ''],\n default: '',\n },\n /**\n * @description whether Tab is closable\n */\n closable: Boolean,\n /**\n * @description whether Tab is addable\n */\n addable: Boolean,\n /**\n * @description binding value, name of the selected tab\n */\n modelValue: {\n type: [String, Number],\n },\n /**\n * @description initial value when `model-value` is not set\n */\n defaultValue: {\n type: [String, Number],\n },\n /**\n * @description whether Tab is addable and closable\n */\n editable: Boolean,\n /**\n * @description position of tabs\n */\n tabPosition: {\n type: String,\n values: ['top', 'right', 'bottom', 'left'],\n default: 'top',\n },\n /**\n * @description hook function before switching tab. If `false` is returned or a `Promise` is returned and then is rejected, switching will be prevented\n */\n beforeLeave: {\n type: definePropType<\n (newName: TabPaneName, oldName: TabPaneName) => Awaitable<void | boolean>\n >(Function),\n default: () => true,\n },\n /**\n * @description whether width of tab automatically fits its container\n */\n stretch: Boolean,\n /**\n * @description tabs tabindex\n */\n tabindex: {\n type: [String, Number],\n default: 0,\n },\n} as const)\nexport type TabsProps = ExtractPropTypes<typeof tabsProps>\nexport type TabsPropsPublic = ExtractPublicPropTypes<typeof tabsProps>\n\nconst isPaneName = (value: unknown): value is string | number =>\n isString(value) || isNumber(value)\n\nexport const tabsEmits = {\n [UPDATE_MODEL_EVENT]: (name: TabPaneName) => isPaneName(name),\n tabClick: (pane: TabsPaneContext, ev: Event) => ev instanceof Event,\n tabChange: (name: TabPaneName) => isPaneName(name),\n edit: (paneName: TabPaneName | undefined, action: 'remove' | 'add') =>\n ['remove', 'add'].includes(action),\n tabRemove: (name: TabPaneName) => isPaneName(name),\n tabAdd: () => true,\n}\nexport type TabsEmits = typeof tabsEmits\n\nexport type TabsPanes = Record<number, TabsPaneContext>\n\nconst Tabs = defineComponent({\n name: 'ElTabs',\n\n props: tabsProps,\n emits: tabsEmits,\n\n setup(props, { emit, slots, expose }) {\n const ns = useNamespace('tabs')\n\n const isVertical = computed(() =>\n ['left', 'right'].includes(props.tabPosition)\n )\n\n const {\n children: panes,\n addChild: registerPane,\n removeChild: unregisterPane,\n ChildrenSorter: PanesSorter,\n } = useOrderedChildren<TabsPaneContext>(getCurrentInstance()!, 'ElTabPane')\n\n const nav$ = ref<TabNavInstance>()\n const currentName = ref<TabPaneName>(\n (isUndefined(props.modelValue) ? props.defaultValue : props.modelValue) ??\n '0'\n )\n\n const setCurrentName = async (value?: TabPaneName, trigger = false) => {\n // should do nothing.\n if (currentName.value === value || isUndefined(value)) return\n\n try {\n let canLeave\n if (props.beforeLeave) {\n const result = props.beforeLeave(value, currentName.value)\n canLeave = result instanceof Promise ? await result : result\n } else {\n canLeave = true\n }\n\n if (canLeave !== false) {\n const isFocusInsidePane = panes.value\n .find((item) => item.paneName === currentName.value)\n ?.isFocusInsidePane()\n\n currentName.value = value\n if (trigger) {\n emit(UPDATE_MODEL_EVENT, value)\n emit('tabChange', value)\n }\n\n nav$.value?.removeFocus?.()\n if (isFocusInsidePane) {\n nav$.value?.focusActiveTab()\n }\n }\n } catch {}\n }\n\n const handleTabClick = (\n tab: TabsPaneContext,\n tabName: TabPaneName,\n event: Event\n ) => {\n if (tab.props.disabled) return\n emit('tabClick', tab, event)\n setCurrentName(tabName, true)\n }\n\n const handleTabRemove = (pane: TabsPaneContext, ev: Event) => {\n if (pane.props.disabled || isUndefined(pane.props.name)) return\n ev.stopPropagation()\n emit('edit', pane.props.name, 'remove')\n emit('tabRemove', pane.props.name)\n }\n\n const handleTabAdd = () => {\n emit('edit', undefined, 'add')\n emit('tabAdd')\n }\n\n const handleKeydown = (event: KeyboardEvent) => {\n const code = getEventCode(event)\n if ([EVENT_CODE.enter, EVENT_CODE.numpadEnter].includes(code))\n handleTabAdd()\n }\n\n const swapChildren = (\n vnode: VNode & {\n el: HTMLDivElement\n children: VNode<HTMLDivElement>[]\n }\n ) => {\n const actualFirstChild = vnode.el.firstChild!\n const firstChild = ['bottom', 'right'].includes(props.tabPosition)\n ? vnode.children[0].el!\n : vnode.children[1].el!\n\n if (actualFirstChild !== firstChild) {\n actualFirstChild.before(firstChild)\n }\n }\n\n watch(\n () => props.modelValue,\n (modelValue) => setCurrentName(modelValue)\n )\n\n watch(currentName, async () => {\n await nextTick()\n nav$.value?.scrollToActiveTab()\n })\n\n provide(tabsRootContextKey, {\n props,\n currentName,\n registerPane,\n unregisterPane,\n nav$,\n })\n\n expose({\n currentName,\n get tabNavRef() {\n return omit(nav$.value, ['scheduleRender'])\n },\n })\n\n return () => {\n const addSlot = slots['add-icon']\n const newButton =\n props.editable || props.addable ? (\n <div\n class={[\n ns.e('new-tab'),\n isVertical.value && ns.e('new-tab-vertical'),\n ]}\n tabindex={props.tabindex}\n onClick={handleTabAdd}\n onKeydown={handleKeydown}\n >\n {addSlot ? (\n renderSlot(slots, 'add-icon')\n ) : (\n <ElIcon class={ns.is('icon-plus')}>\n <Plus />\n </ElIcon>\n )}\n </div>\n ) : null\n\n const tabNav = () => (\n <TabNav\n ref={nav$}\n currentName={currentName.value}\n editable={props.editable}\n type={props.type}\n panes={panes.value}\n stretch={props.stretch}\n onTabClick={handleTabClick}\n onTabRemove={handleTabRemove}\n />\n )\n\n const header = (\n <div\n class={[\n ns.e('header'),\n isVertical.value && ns.e('header-vertical'),\n ns.is(props.tabPosition),\n ]}\n >\n {createVNode(PanesSorter, null, {\n default: tabNav,\n $stable: true,\n })}\n {newButton}\n </div>\n )\n\n const panels = (\n <div class={ns.e('content')}>{renderSlot(slots, 'default')}</div>\n )\n\n return (\n <div\n class={[\n ns.b(),\n ns.m(props.tabPosition),\n {\n [ns.m('card')]: props.type === 'card',\n [ns.m('border-card')]: props.type === 'border-card',\n },\n ]}\n // @ts-ignore\n onVnodeMounted={swapChildren}\n onVnodeUpdated={swapChildren}\n >\n {panels}\n {header}\n </div>\n )\n }\n },\n})\n\nexport type TabsInstance = InstanceType<typeof Tabs> & {\n currentName: TabPaneName\n tabNavRef: TabNavInstance | undefined\n}\n\nexport default Tabs\n"],"names":["tabsProps","buildProps","type","String","values","default","closable","Boolean","addable","modelValue","Number","defaultValue","editable","tabPosition","beforeLeave","definePropType","Function","stretch","tabindex","isPaneName","value","isString","isNumber","tabsEmits","UPDATE_MODEL_EVENT","name","tabClick","pane","ev","Event","tabChange","edit","paneName","action","includes","tabRemove","tabAdd","Tabs","defineComponent","props","emits","setup","emit","slots","expose","ns","useNamespace","isVertical","computed","children","panes","addChild","registerPane","removeChild","unregisterPane","ChildrenSorter","PanesSorter","useOrderedChildren","getCurrentInstance","nav$","ref","currentName","isUndefined","setCurrentName","trigger","_a","canLeave","result","Promise","isFocusInsidePane","find","item","removeFocus","focusActiveTab","handleTabClick","tab","tabName","event","disabled","handleTabRemove","stopPropagation","handleTabAdd","undefined","handleKeydown","code","getEventCode","EVENT_CODE","enter","numpadEnter","swapChildren","vnode","actualFirstChild","el","firstChild","before","watch","nextTick","scrollToActiveTab","provide","tabsRootContextKey","tabNavRef","omit","addSlot","newButton","_createVNode","e","renderSlot","ElIcon","is","Plus","tabNav","TabNav","header","createVNode","$stable","panels","b","m"],"mappings":"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"}