UNPKG

xdesign-vue-next

Version:

XDesign Component for vue-next

1 lines 17.2 kB
{"version":3,"file":"tab-nav.mjs","sources":["../../src/tabs/tab-nav.tsx"],"sourcesContent":["import { h, defineComponent, Transition, ref, computed, watch, onMounted } from 'vue';\nimport debounce from 'lodash/debounce';\nimport { TdTabsProps } from './type';\nimport tabProps from './props';\nimport tabBase from '../_common/js/tabs/base';\n\n// 子组件\nimport TTabPanel from './tab-panel';\nimport TTabNavItem from './tab-nav-item';\nimport TTabNavBar from './tab-nav-bar';\n\n// hooks\nimport { useResize } from '../hooks/useListener';\nimport { usePrefixClass, useCommonClassName } from '../hooks/useConfig';\nimport useDragSort from '../hooks/useDragSort';\nimport isFunction from 'lodash/isFunction';\n\nconst { calculateCanToLeft, calculateCanToRight, calcScrollLeft, scrollToLeft, scrollToRight, moveActiveTabIntoView } =\n tabBase;\n\nexport default defineComponent({\n name: 'XTabNav',\n ...{ resizeObserver: null },\n props: {\n theme: tabProps.theme,\n panels: {\n type: Array as { new (): Array<InstanceType<typeof TTabPanel>> },\n default: (): Array<InstanceType<typeof TTabPanel>> => [] as Array<InstanceType<typeof TTabPanel>>,\n },\n value: tabProps.value,\n placement: tabProps.placement,\n size: tabProps.size,\n disabled: tabProps.disabled,\n addable: tabProps.addable,\n onChange: tabProps.onChange,\n onAdd: tabProps.onAdd,\n onRemove: tabProps.onRemove,\n dragSort: tabProps.dragSort,\n onDragSort: tabProps.onDragSort,\n },\n setup(props) {\n const COMPONENT_NAME = usePrefixClass('tabs');\n const classPrefix = usePrefixClass();\n const { SIZE } = useCommonClassName();\n\n const scrollLeft = ref(0);\n const canToLeft = ref(false);\n const canToRight = ref(false);\n\n // refs\n // const panels = ref(props.panels);\n const navsContainerRef = ref();\n const navsWrapRef = ref();\n const leftOperationsRef = ref();\n const toLeftBtnRef = ref();\n const rightOperationsRef = ref();\n const toRightBtnRef = ref();\n const activeTabRef = ref();\n const getRefs = () => ({\n navsContainer: navsContainerRef.value,\n navsWrap: navsWrapRef.value,\n leftOperations: leftOperationsRef.value,\n toLeftBtn: toLeftBtnRef.value,\n rightOperations: rightOperationsRef.value,\n toRightBtn: toRightBtnRef.value,\n });\n\n // style\n const wrapTransformStyle = computed(() => {\n if (['left', 'right'].includes(props.placement.toLowerCase())) return {};\n return {\n transform: `translate3d(${-scrollLeft.value}px, 0, 0)`,\n };\n });\n const navsContainerStyle = computed(() => {\n return props.addable ? { 'min-height': '48px' } : null;\n });\n\n // class\n const iconBaseClass = computed(() => {\n return {\n [`${COMPONENT_NAME.value}__btn`]: true,\n [SIZE.value.medium]: props.size === 'medium',\n [SIZE.value.large]: props.size === 'large',\n };\n });\n const leftIconClass = computed(() => {\n return {\n [`${COMPONENT_NAME.value}__btn--left`]: true,\n ...iconBaseClass.value,\n };\n });\n const rightIconClass = computed(() => {\n return {\n [`${COMPONENT_NAME.value}__btn--right`]: true,\n ...iconBaseClass.value,\n };\n });\n const addIconClass = computed(() => {\n return {\n [`${COMPONENT_NAME.value}__add-btn`]: true,\n ...iconBaseClass.value,\n };\n });\n const navContainerClass = computed(() => {\n return {\n [`${COMPONENT_NAME.value}__nav-container`]: true,\n [`${COMPONENT_NAME.value}__nav--card`]: props.theme === 'card',\n [`${classPrefix.value}-is-${props.placement}`]: true,\n [`${classPrefix.value}-is-addable`]: props.addable,\n };\n });\n const navScrollContainerClass = computed(() => {\n return {\n [`${COMPONENT_NAME.value}__nav-scroll`]: true,\n [`${classPrefix.value}-is-scrollable`]: canToLeft.value || canToRight.value,\n };\n });\n\n const navsWrapClass = computed(() => {\n return [\n `${COMPONENT_NAME.value}__nav-wrap`,\n `${classPrefix.value}-is-smooth`,\n { [`${classPrefix.value}-is-vertical`]: props.placement === 'left' || props.placement === 'right' },\n ];\n });\n\n const totalAdjust = () => {\n adjustArrowDisplay();\n adjustScrollLeft();\n };\n // watch\n watch([scrollLeft, () => props.placement, () => props.panels], totalAdjust);\n\n // life times\n useResize(debounce(totalAdjust), navsContainerRef.value);\n onMounted(totalAdjust);\n\n // methods\n const adjustScrollLeft = () => {\n scrollLeft.value = calcScrollLeft(getRefs(), scrollLeft.value);\n };\n const adjustArrowDisplay = () => {\n canToLeft.value = calculateCanToLeft(getRefs(), scrollLeft.value, props.placement);\n canToRight.value = calculateCanToRight(getRefs(), scrollLeft.value, props.placement);\n };\n const handleScroll = (direction: 'left' | 'right') => {\n if (direction === 'left') {\n scrollLeft.value = scrollToLeft(getRefs(), scrollLeft.value);\n } else {\n scrollLeft.value = scrollToRight(getRefs(), scrollLeft.value);\n }\n };\n const handleAddTab = (e: MouseEvent) => {\n props.onAdd?.({ e });\n };\n const tabClick = (event: MouseEvent, nav: Partial<InstanceType<typeof TTabPanel>>) => {\n const { value, disabled } = nav;\n if (disabled || props.value === value) {\n return false;\n }\n props.onChange(value);\n };\n const removeBtnClick = ({ e, value, index }: Parameters<TdTabsProps['onRemove']>[0]) => {\n props.onRemove({ e, value, index });\n };\n const setActiveTab = (ref: any) => {\n if (ref?.value === props.value && activeTabRef.value !== ref.$el) {\n activeTabRef.value = ref.$el;\n scrollLeft.value = moveActiveTabIntoView(\n {\n activeTab: activeTabRef.value,\n ...getRefs(),\n },\n scrollLeft.value,\n );\n }\n };\n\n const { setNavsWrap } = useDragSort(props);\n onMounted(() => {\n setNavsWrap(navsWrapRef.value);\n });\n // renders\n const navs = computed(() => {\n return props.panels.map((panel, index) => {\n let label;\n if (panel?.children?.label) {\n label = panel.children.label();\n } else if (isFunction(panel.label)) {\n label = panel.label(h);\n } else {\n label = panel.label || `选项卡${index + 1}`;\n }\n let draggable = props.dragSort;\n if (draggable && panel.draggable === false) {\n draggable = panel.draggable;\n }\n return (\n <TTabNavItem\n ref={setActiveTab}\n draggable={draggable}\n key={panel.value}\n index={index}\n theme={props.theme}\n size={props.size}\n placement={props.placement}\n label={label}\n active={panel.value === props.value}\n disabled={props.disabled || panel.disabled}\n removable={panel.removable}\n value={panel.value}\n onClick={(e: MouseEvent) => tabClick(e, panel)}\n onRemove={removeBtnClick}\n />\n );\n });\n });\n const renderArrows = () => {\n return [\n <div\n ref={leftOperationsRef}\n class={[`${COMPONENT_NAME.value}__operations`, `${COMPONENT_NAME.value}__operations--left`]}\n >\n <Transition name=\"fade\" mode=\"out-in\" appear>\n {canToLeft.value ? (\n <div ref={toLeftBtnRef} class={leftIconClass.value} onClick={() => handleScroll('left')}>\n <icon-ri-arrow-left-s-line />\n </div>\n ) : null}\n </Transition>\n </div>,\n <div\n ref={rightOperationsRef}\n class={[`${COMPONENT_NAME.value}__operations`, `${COMPONENT_NAME.value}__operations--right`]}\n >\n <Transition name=\"fade\" mode=\"out-in\" appear>\n {canToRight.value ? (\n <div ref={toRightBtnRef} class={rightIconClass.value} onClick={() => handleScroll('right')}>\n <icon-ri-arrow-right-s-line />\n </div>\n ) : null}\n </Transition>\n {props.addable ? (\n <div class={addIconClass.value} onClick={handleAddTab}>\n <icon-ri-add-line />\n </div>\n ) : null}\n </div>,\n ];\n };\n const renderNavs = () => {\n return (\n <div class={navContainerClass.value}>\n <div class={navScrollContainerClass.value}>\n <div ref={navsWrapRef} class={navsWrapClass.value} style={wrapTransformStyle.value}>\n {props.theme !== 'card' && (\n <TTabNavBar placement={props.placement} value={props.value} navs={navs.value} />\n )}\n {navs.value}\n </div>\n </div>\n </div>\n );\n };\n\n return () => {\n return (\n <div ref={navsContainerRef} class={[`${COMPONENT_NAME.value}__nav`]} style={navsContainerStyle.value}>\n {renderArrows()}\n {renderNavs()}\n </div>\n );\n };\n },\n});\n"],"names":["name","resizeObserver","props","panels","type","transform","adjustArrowDisplay","adjustScrollLeft","scrollLeft","canToLeft","canToRight","e","value","index","activeTabRef","onMounted","setNavsWrap","label","_createVNode","_resolveComponent"],"mappings":"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"}