UNPKG

tdesign-vue-next

Version:
1 lines 25.7 kB
{"version":3,"file":"pagination.mjs","sources":["../../../components/pagination/pagination.tsx"],"sourcesContent":["import { defineComponent, computed, ref, watch, toRefs, nextTick } from 'vue';\nimport { isNaN, isObject } from 'lodash-es';\nimport {\n PageFirstIcon as TdPageFirstIcon,\n PageLastIcon as TdPageLastIcon,\n ChevronLeftIcon as TdChevronLeftIcon,\n ChevronRightIcon as TdChevronRightIcon,\n ChevronLeftDoubleIcon as TdChevronLeftDoubleIcon,\n ChevronRightDoubleIcon as TdChevronRightDoubleIcon,\n EllipsisIcon as TdEllipsisIcon,\n} from 'tdesign-icons-vue-next';\nimport {\n useConfig,\n useVModel,\n useTNodeJSX,\n useGlobalIcon,\n usePrefixClass,\n useDefaultValue,\n} from '@tdesign/shared-hooks';\n\nimport TInputNumber from '../input-number';\nimport { Select } from '../select';\nimport TInputAdornment from '../input-adornment';\nimport props from './props';\nimport { usePaginationClasses, useMoreAction } from './hooks';\n\nimport type { PageInfo, TdPaginationProps } from '../pagination/type';\n\nconst min = 1;\n\ntype PageChangeType = 'prevPage' | 'nextPage' | 'prevMorePage' | 'nextMorePage';\n\nexport default defineComponent({\n name: 'TPagination',\n props,\n\n setup(props: TdPaginationProps) {\n const { modelValue, pageSize, current } = toRefs(props);\n const renderTNodeJSX = useTNodeJSX();\n const [innerCurrent, setInnerCurrent] = useVModel(\n current,\n modelValue,\n props.defaultCurrent,\n props.onCurrentChange,\n 'current',\n );\n\n const [innerPageSize, setInnerPageSize] = useDefaultValue(\n pageSize,\n props.defaultPageSize,\n props.onPageSizeChange,\n 'pageSize',\n );\n\n const { t, globalConfig } = useConfig('pagination');\n const COMPONENT_NAME = usePrefixClass('pagination');\n const {\n PageFirstIcon,\n PageLastIcon,\n ChevronLeftIcon,\n ChevronRightIcon,\n ChevronLeftDoubleIcon,\n ChevronRightDoubleIcon,\n EllipsisIcon,\n } = useGlobalIcon({\n PageFirstIcon: TdPageFirstIcon,\n PageLastIcon: TdPageLastIcon,\n ChevronLeftIcon: TdChevronLeftIcon,\n ChevronRightIcon: TdChevronRightIcon,\n ChevronLeftDoubleIcon: TdChevronLeftDoubleIcon,\n ChevronRightDoubleIcon: TdChevronRightDoubleIcon,\n EllipsisIcon: TdEllipsisIcon,\n });\n\n const { pageCount, ...CLASS_MAP } = usePaginationClasses(props, innerCurrent, innerPageSize, COMPONENT_NAME);\n\n const { prevMore, isPrevMoreShow, curPageLeftCount, nextMore, isNextMoreShow, curPageRightCount } = useMoreAction(\n props,\n pageCount,\n innerCurrent,\n );\n\n const jumpIndex = ref(innerCurrent.value);\n\n const isFolded = computed(() => pageCount.value > props.maxPageBtn);\n\n const sizeOptions = computed<Array<{ label: string; value: number }>>(() => {\n const pageSizeOptions = props.pageSizeOptions as TdPaginationProps['pageSizeOptions'];\n const options = pageSizeOptions.map((option) =>\n isObject(option)\n ? option\n : {\n label: t(globalConfig.value.itemsPerPage, { size: option }),\n value: Number(option),\n },\n );\n return options.sort((a, b) => a.value - b.value);\n });\n\n const isMidEllipsis = computed(() => {\n return props.pageEllipsisMode === 'mid';\n });\n\n const pages = computed(() => {\n const array = [];\n let start;\n let end;\n\n if (isFolded.value) {\n if (isPrevMoreShow.value && isNextMoreShow.value) {\n start = innerCurrent.value - curPageLeftCount.value;\n end = innerCurrent.value + curPageRightCount.value;\n } else {\n const foldedStart = isMidEllipsis.value ? 2 : 1;\n const foldedEnd = isMidEllipsis.value ? pageCount.value - 1 : pageCount.value;\n if (isPrevMoreShow.value) {\n // 保证前面还有一页展示\n start = Math.min(innerCurrent.value - 1, pageCount.value - props.foldedMaxPageBtn + 1);\n } else {\n start = foldedStart;\n }\n\n if (isNextMoreShow.value) {\n // 保证后面还有一页展示\n end = Math.max(innerCurrent.value + 1, props.foldedMaxPageBtn);\n } else {\n end = foldedEnd;\n }\n }\n } else {\n start = 1;\n end = pageCount.value;\n }\n\n for (let i = start; i <= end; i++) {\n array.push(i);\n }\n return array;\n });\n\n watch(\n () => innerCurrent.value,\n (val) => (jumpIndex.value = val),\n );\n\n const toPage: (pageIndex: number, pageInfo?: PageInfo) => void = (pageIndex, pageInfo) => {\n if (props.disabled) {\n return;\n }\n\n let toPageCurrent = pageIndex;\n if (pageIndex < min) {\n toPageCurrent = min;\n } else if (pageIndex > pageCount.value) {\n toPageCurrent = pageCount.value;\n }\n\n pageInfo = pageInfo || {\n current: toPageCurrent,\n previous: innerCurrent.value,\n pageSize: innerPageSize.value,\n };\n\n setInnerCurrent(toPageCurrent, pageInfo);\n props.onChange?.(pageInfo);\n };\n\n const handlePageChange = (type: PageChangeType) => {\n const pageChangeMap = {\n prevPage: () => toPage(innerCurrent.value - 1),\n nextPage: () => toPage(innerCurrent.value + 1),\n prevMorePage: () => toPage(Math.max(2, innerCurrent.value - props.foldedMaxPageBtn)),\n nextMorePage: () => toPage(Math.min(innerCurrent.value + props.foldedMaxPageBtn, pageCount.value - 1)),\n };\n pageChangeMap[type]();\n };\n\n const onSelectorChange = (val: string | number) => {\n if (props.disabled) return;\n\n const pageSize = Number(val);\n const newPageCount = pageSize > 0 ? Math.max(Math.ceil(props.total / pageSize), 1) : 1;\n const previousCurrent = innerCurrent.value;\n const indexExceeds = previousCurrent > newPageCount;\n\n // 触发 onPageSizeChange 回调\n setInnerPageSize(pageSize, {\n current: indexExceeds ? newPageCount : previousCurrent,\n previous: previousCurrent,\n pageSize,\n });\n\n // 场景:用户在 onPageSizeChange 中修改 current,需要重新计算 current\n nextTick(() => {\n const userChanged = innerCurrent.value !== previousCurrent;\n const targetCurrent = userChanged ? innerCurrent.value : indexExceeds ? newPageCount : innerCurrent.value;\n\n const pageInfo = {\n current: targetCurrent,\n previous: previousCurrent,\n pageSize,\n };\n\n // 如果用户改了 current 或者不需要跳页,直接触发 onChange\n // 否则需要调用 toPage 来更新内部状态\n if (userChanged || !indexExceeds) {\n props.onChange?.(pageInfo);\n } else {\n toPage(targetCurrent, pageInfo);\n }\n });\n };\n\n const onJumperChange = (val: number) => {\n const currentIndex = Math.trunc(+val);\n if (isNaN(currentIndex)) return;\n jumpIndex.value = currentIndex;\n toPage(currentIndex);\n };\n\n return () => {\n const { total, pageSizeOptions, size, disabled, showPageSize } = props;\n if (pageCount.value < 1) return null;\n\n const Jumper = (\n <div class={CLASS_MAP.jumperClass.value}>\n {t(globalConfig.value.jumpTo)}\n <TInputAdornment append={`/ ${pageCount.value} ${t(globalConfig.value.page)}`}>\n <TInputNumber\n class={CLASS_MAP.jumperInputClass.value}\n v-model={jumpIndex.value}\n onBlur={onJumperChange}\n onEnter={onJumperChange}\n max={pageCount.value}\n min={min}\n size={size}\n disabled={disabled}\n theme=\"normal\"\n placeholder=\"\"\n />\n </TInputAdornment>\n </div>\n );\n\n return (\n <div class={CLASS_MAP.paginationClass.value}>\n {/* 数据统计区 */}\n {renderTNodeJSX(\n 'totalContent',\n <div class={CLASS_MAP.totalClass.value}>{t(globalConfig.value.total, total)}</div>,\n )}\n {/* 分页器 */}\n {showPageSize && pageSizeOptions.length > 0 && (\n <Select\n size={size}\n value={innerPageSize}\n disabled={disabled}\n class={CLASS_MAP.sizerClass.value}\n autoWidth={true}\n onChange={onSelectorChange}\n options={sizeOptions.value}\n {...props.selectProps}\n />\n )}\n {/* 首页按钮 */}\n {props.showFirstAndLastPageBtn ? (\n <div class={CLASS_MAP.preBtnClass.value} onClick={() => toPage(1)}>\n <PageFirstIcon />\n </div>\n ) : null}\n {/* 向前按钮 */}\n {props.showPreviousAndNextBtn ? (\n <div class={CLASS_MAP.preBtnClass.value} onClick={() => handlePageChange('prevPage')}>\n <ChevronLeftIcon />\n </div>\n ) : null}\n {/* 常规版 */}\n {props.showPageNumber && props.theme === 'default' ? (\n <ul class={CLASS_MAP.btnWrapClass.value}>\n {isFolded.value && isMidEllipsis.value && (\n <li class={CLASS_MAP.getButtonClass(1)} onClick={() => toPage(min)}>\n {min}\n </li>\n )}\n {isFolded.value && isPrevMoreShow.value && isMidEllipsis.value ? (\n <li\n class={CLASS_MAP.btnMoreClass.value}\n onClick={() => handlePageChange('prevMorePage')}\n onMouseover={() => (prevMore.value = true)}\n onMouseout={() => (prevMore.value = false)}\n >\n {prevMore.value ? <ChevronLeftDoubleIcon /> : <EllipsisIcon />}\n </li>\n ) : null}\n {pages.value.map((i) => (\n <li class={CLASS_MAP.getButtonClass(i)} key={i} onClick={() => toPage(i)}>\n {i}\n </li>\n ))}\n {isFolded.value && isNextMoreShow.value && isMidEllipsis.value ? (\n <li\n class={CLASS_MAP.btnMoreClass.value}\n onClick={() => handlePageChange('nextMorePage')}\n onMouseover={() => (nextMore.value = true)}\n onMouseout={() => (nextMore.value = false)}\n >\n {nextMore.value ? <ChevronRightDoubleIcon /> : <EllipsisIcon />}\n </li>\n ) : null}\n {isFolded.value && isMidEllipsis.value ? (\n <li class={CLASS_MAP.getButtonClass(pageCount.value)} onClick={() => toPage(pageCount.value)}>\n {pageCount.value}\n </li>\n ) : null}\n </ul>\n ) : null}\n {/* 极简版 */}\n {props.theme === 'simple' && Jumper}\n {/* 向后按钮 */}\n {props.showPreviousAndNextBtn ? (\n <div class={CLASS_MAP.nextBtnClass.value} onClick={() => handlePageChange('nextPage')}>\n <ChevronRightIcon />\n </div>\n ) : null}\n {/* 尾页按钮 */}\n {props.showFirstAndLastPageBtn ? (\n <div class={CLASS_MAP.nextBtnClass.value} onClick={() => toPage(pageCount.value)}>\n <PageLastIcon />\n </div>\n ) : null}\n {/* 快速跳转 */}\n {props.theme === 'default' && props.showJumper && Jumper}\n </div>\n );\n };\n },\n});\n"],"names":["min","defineComponent","name","props","setup","_toRefs","toRefs","modelValue","pageSize","current","renderTNodeJSX","useTNodeJSX","_useVModel","useVModel","defaultCurrent","onCurrentChange","_useVModel2","_slicedToArray","innerCurrent","setInnerCurrent","_useDefaultValue","useDefaultValue","defaultPageSize","onPageSizeChange","_useDefaultValue2","innerPageSize","setInnerPageSize","_useConfig","useConfig","t","globalConfig","COMPONENT_NAME","usePrefixClass","_useGlobalIcon","useGlobalIcon","PageFirstIcon","TdPageFirstIcon","PageLastIcon","TdPageLastIcon","ChevronLeftIcon","TdChevronLeftIcon","ChevronRightIcon","TdChevronRightIcon","ChevronLeftDoubleIcon","TdChevronLeftDoubleIcon","ChevronRightDoubleIcon","TdChevronRightDoubleIcon","EllipsisIcon","TdEllipsisIcon","_usePaginationClasses","usePaginationClasses","pageCount","CLASS_MAP","_objectWithoutProperties","_excluded","_useMoreAction","useMoreAction","prevMore","isPrevMoreShow","curPageLeftCount","nextMore","isNextMoreShow","curPageRightCount","jumpIndex","ref","value","isFolded","computed","maxPageBtn","sizeOptions","pageSizeOptions","options","map","option","isObject","label","itemsPerPage","size","Number","sort","a","b","isMidEllipsis","pageEllipsisMode","pages","array","start","end","foldedStart","foldedEnd","Math","foldedMaxPageBtn","max","i","push","watch","val","toPage","pageIndex","pageInfo","_props2$onChange","disabled","toPageCurrent","previous","onChange","handlePageChange","type","pageChangeMap","prevPage","nextPage","prevMorePage","nextMorePage","onSelectorChange","newPageCount","ceil","total","previousCurrent","indexExceeds","nextTick","userChanged","targetCurrent","_props2$onChange2","onJumperChange","currentIndex","trunc","isNaN","showPageSize","Jumper","_createVNode","jumperClass","jumpTo","TInputAdornment","concat","page","jumperInputClass","onUpdateModelValue","$event","paginationClass","totalClass","length","Select","_mergeProps","sizerClass","selectProps","showFirstAndLastPageBtn","preBtnClass","onClick","showPreviousAndNextBtn","showPageNumber","theme","btnWrapClass","getButtonClass","btnMoreClass","onMouseover","onMouseout","nextBtnClass","showJumper"],"mappings":"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"}