UNPKG

vexip-ui

Version:

A Vue 3 UI library, Highly customizability, full TypeScript, performance pretty good

1 lines 39.2 kB
{"version":3,"file":"pagination.cjs","sources":["../../../components/pagination/pagination.tsx"],"sourcesContent":["import { Icon } from '@/components/icon'\nimport { NumberInput } from '@/components/number-input'\nimport { Renderer } from '@/components/renderer'\nimport { Select } from '@/components/select'\n\nimport {\n Transition,\n computed,\n defineComponent,\n nextTick,\n onMounted,\n onUpdated,\n reactive,\n ref,\n renderSlot,\n toRef,\n watch,\n} from 'vue'\n\nimport {\n createSizeProp,\n emitEvent,\n getCountWord,\n getCountWordOnly,\n useIcons,\n useLocale,\n useNameHelper,\n useProps,\n} from '@vexip-ui/config'\nimport { createSlotRender, useModifier, useRtl } from '@vexip-ui/hooks'\nimport { boundRange, decide, isClient, isNull, range } from '@vexip-ui/utils'\nimport { paginationProps } from './props'\n\nconst enum PaginationMode {\n LEFT = 'left',\n CENTER = 'center',\n RIGHT = 'right',\n}\n\nexport default defineComponent({\n name: 'Pagination',\n props: paginationProps,\n emits: ['update:active', 'update:page-size'],\n setup(_props, { slots, emit, expose }) {\n const props = useProps('pagination', _props, {\n size: createSizeProp(),\n locale: null,\n total: {\n default: 0,\n validator: value => value >= 0,\n static: true,\n },\n noBorder: false,\n background: false,\n pageSize: {\n default: 10,\n validator: value => value > 0,\n },\n sizeOptions: () => [10, 20, 50, 100],\n itemCount: {\n default: 7,\n validator: value => Number.isInteger(value) && value > 6,\n },\n active: {\n default: 1,\n validator: value => value > 0,\n static: true,\n },\n disabled: false,\n disableItem: {\n default: () => false,\n isFunc: true,\n },\n turnPageCount: 5,\n itemUnit: null,\n plugins: {\n default: () => [],\n validator: value => Array.isArray(value),\n },\n noTitle: false,\n itemTag: 'li',\n listTag: null,\n slots: () => ({}),\n })\n\n const { isRtl } = useRtl()\n const nh = useNameHelper('pagination')\n const icons = useIcons()\n const midPagers = ref<number[]>([])\n const currentActive = ref(props.active)\n const currentPageSize = ref(props.pageSize)\n const mode = ref(PaginationMode.LEFT)\n const inPrevEllipsis = ref(false)\n const inNextEllipsis = ref(false)\n const jumpValue = ref(props.active)\n const itemElList = reactive<HTMLElement[]>([])\n\n const locale = useLocale('pagination', toRef(props, 'locale'))\n\n const { target: wrapper } = useModifier({\n passive: false,\n onKeyDown: (event, modifier) => {\n if (props.disabled) return\n\n decide(\n [\n [\n () => modifier.up || modifier.down || modifier.left || modifier.right,\n () => {\n const sign = modifier.up || modifier.left ? -1 : 1\n\n if (isClient && document.activeElement) {\n const index = itemElList.findIndex(el => el === document.activeElement)\n\n if (!~index) return\n\n const target = itemElList[boundRange(index + sign, 0, itemElList.length - 1)]\n\n target.focus()\n }\n },\n ],\n [\n () => modifier.enter || modifier.space,\n () => {\n if (document && document.activeElement) {\n const index = itemElList.findIndex(el => el === document.activeElement)\n\n if (!~index) {\n const activeClass = nh.bem('item', 'active')\n const activeEl = itemElList.find(el => el.classList.contains(activeClass))\n\n activeEl?.focus()\n }\n }\n },\n ],\n ],\n {\n beforeMatchAny: () => event.preventDefault(),\n afterMatchAny: modifier.resetAll,\n },\n )\n },\n })\n\n const className = computed(() => {\n return {\n [nh.b()]: true,\n [nh.bs('vars')]: true,\n [nh.bm('inherit')]: props.inherit,\n [nh.bm(props.size)]: props.size !== 'default',\n [nh.bm('background')]: props.background,\n [nh.bm('no-border')]: props.noBorder,\n [nh.bm('disabled')]: props.disabled,\n }\n })\n const pagerCount = computed(() => {\n return Math.ceil(props.total / (currentPageSize.value || 1)) || 1\n })\n const useEllipsis = computed(() => pagerCount.value > props.itemCount)\n const disabledPrev = computed(() => {\n const count = queryEnabledActive(1, 1)\n\n return count >= pagerCount.value || currentActive.value === count\n })\n const disabledNext = computed(() => {\n const count = queryEnabledActive(pagerCount.value, -1)\n\n return count <= 1 || currentActive.value === count\n })\n const prevTurnPageTitle = computed(() => {\n return `${locale.value.prev} ${getCountWord(locale.value.page, props.turnPageCount)}`\n })\n const nextTurnPageTitle = computed(() => {\n return `${locale.value.next} ${getCountWord(locale.value.page, props.turnPageCount)}`\n })\n const prevEllipsisTarget = computed(() => {\n if (!useEllipsis.value) return 0\n\n let active = queryEnabledActive(currentActive.value - props.turnPageCount, -1)\n\n if (active < 1) {\n active = queryEnabledActive(1, 1)\n\n if (active >= currentActive.value) return 0\n }\n\n return active\n })\n const nextEllipsisTarget = computed(() => {\n if (!useEllipsis.value) return 0\n\n let active = queryEnabledActive(currentActive.value + props.turnPageCount, 1)\n\n if (active > pagerCount.value) {\n active = queryEnabledActive(pagerCount.value, -1)\n\n if (active <= currentActive.value) return 0\n }\n\n return active\n })\n const sizeObjectOptions = computed(() => {\n return props.sizeOptions.map(size => {\n return {\n value: size,\n label: `${size} ${locale.value.perPage}`,\n }\n })\n })\n const pluginOrders = computed(() => {\n const plugins = props.plugins\n const pagerPosition = plugins.findIndex(isNull)\n\n return {\n total: plugins.findIndex(p => p === 'total') - pagerPosition,\n size: plugins.findIndex(p => p === 'size') - pagerPosition,\n jump: plugins.findIndex(p => p === 'jump') - pagerPosition,\n }\n })\n const jumpInputWidth = computed(() => {\n if (!props.plugins.includes('jump')) return 0\n\n let pageCount = 0\n\n if (props.plugins.includes('size')) {\n pageCount = Math.ceil(props.total / (Math.min(...props.sizeOptions) || 10))\n } else {\n pageCount = Math.ceil(props.total / (props.pageSize || 10))\n }\n\n return pageCount.toString().length * 10 + 30\n })\n\n watch(\n () => props.active,\n value => {\n changeActive(value, false)\n },\n )\n watch(() => props.itemCount, computePagers)\n watch(pagerCount, computePagers)\n watch(\n () => props.pageSize,\n value => {\n currentPageSize.value = value\n },\n )\n watch(currentPageSize, (value, prevValue) => {\n emit('update:page-size', value)\n emitEvent(props.onPageSizeChange, value)\n\n // 按当前页的第一条数据计算新的页码\n const anchor = Math.ceil((prevValue * (currentActive.value - 1) + 1) / value)\n\n let active = queryEnabledActive(anchor, 1)\n\n if (active > pagerCount.value) {\n active = queryEnabledActive(anchor - 1, -1)\n\n if (active < 1) active = 0\n }\n\n currentActive.value = active\n computePagers()\n })\n\n expose({ changeActive, handlePrev, handleNext })\n\n onMounted(() => {\n nextTick(computePagers)\n })\n\n onUpdated(() => {\n if (!wrapper.value) return\n\n itemElList.length = 0\n itemElList.push(\n ...Array.from(\n wrapper.value.querySelectorAll<HTMLElement>(\n `${nh.cbe('item')}:not(${nh.cbem('item', 'disabled')})`,\n ),\n ),\n )\n })\n\n function queryEnabledActive(active: number, step: number) {\n step = step / Math.abs(step)\n\n while (props.disableItem(active)) {\n active += step\n\n if (active < 1 || active > pagerCount.value) break\n }\n\n return active\n }\n\n function handleChange(value: number) {\n if (currentActive.value === value) return\n\n currentActive.value = value\n jumpValue.value = value\n\n computePagers()\n emit('update:active', value)\n emitEvent(props.onChange, value)\n }\n\n function changeActive(active: number, focus = true) {\n active = parseInt(active.toString())\n\n if (props.disabled || active < 1 || active > pagerCount.value || props.disableItem(active)) {\n return\n }\n\n handleChange(active)\n\n if (isClient && focus) {\n const activeEl = itemElList.find(el => el === document.activeElement)\n\n activeEl?.blur()\n nextTick(() => {\n itemElList.find(el => el.tabIndex >= 0)?.focus()\n })\n }\n }\n\n function handlePrev() {\n if (!disabledPrev.value && !props.disabled) {\n const active = queryEnabledActive(currentActive.value - 1, -1)\n\n if (active >= 1) changeActive(active)\n }\n }\n\n function handleNext() {\n if (!disabledNext.value && !props.disabled) {\n const active = queryEnabledActive(currentActive.value + 1, 1)\n\n if (active <= pagerCount.value) changeActive(active)\n }\n }\n\n function computePagers() {\n let pagers: number[]\n\n if (pagerCount.value <= props.itemCount) {\n // 未超过最大值,显示所有页号\n pagers = range(pagerCount.value)\n } else {\n const numberCount = props.itemCount - 2 // 显示为数字的页号\n const criticalCount = Math.ceil(props.itemCount / 2) // 切换模式的关键计数\n\n if (currentActive.value < criticalCount) {\n // 出现后侧一个省略号,前侧连续\n pagers = range(numberCount)\n pagers.push(pagerCount.value)\n\n mode.value = PaginationMode.LEFT\n } else if (currentActive.value <= pagerCount.value - criticalCount) {\n // 出现两个省略号,中间连续\n let count = numberCount - 2\n\n // 保持中间数字的页号数目为单数\n if (count % 2 === 0) {\n count -= 1\n }\n\n pagers = range(count, currentActive.value - (count - 1) / 2) // 同 Math.floor(count / 2)\n pagers.unshift(1)\n pagers.push(pagerCount.value)\n\n mode.value = PaginationMode.CENTER\n } else {\n // 出现前侧一个省略号,后侧连续\n pagers = range(numberCount, pagerCount.value - numberCount + 1)\n pagers.unshift(1)\n\n mode.value = PaginationMode.RIGHT\n }\n }\n\n if (pagers.length === 1) {\n midPagers.value = []\n }\n\n midPagers.value = pagers.slice(1, -1)\n }\n\n function enterPrevEllipsis() {\n inPrevEllipsis.value = true\n }\n\n function leavePrevEllipsis() {\n inPrevEllipsis.value = false\n }\n\n function clickPrevEllipsis() {\n if (!props.disabled && prevEllipsisTarget.value) {\n changeActive(prevEllipsisTarget.value)\n }\n }\n\n function enterNextEllipsis() {\n inNextEllipsis.value = true\n }\n\n function leaveNextEllipsis() {\n inNextEllipsis.value = false\n }\n\n function clickNextEllipsis() {\n if (!props.disabled && nextEllipsisTarget.value) {\n changeActive(nextEllipsisTarget.value)\n }\n }\n\n function handleJumpPage(active: number) {\n active = Math.max(Math.min(parseInt(active.toString()), pagerCount.value), 1)\n\n const originActive = active\n\n if (active !== currentActive.value) {\n const step = active > currentActive.value ? 1 : -1\n\n active = queryEnabledActive(originActive, step)\n\n if (step > 0 ? active > pagerCount.value : active < 1) {\n active = queryEnabledActive(originActive, -step)\n\n if (step > 0 ? active < 1 : active > pagerCount.value) {\n active = 0\n }\n }\n\n handleChange(active)\n }\n\n nextTick(() => {\n jumpValue.value = currentActive.value\n })\n }\n\n function renderPrev(Tag: any) {\n const disabled = props.disabled || disabledPrev.value\n const arrow = isRtl.value ? icons.value.angleRight : icons.value.angleLeft\n\n return (\n <Tag\n ref={el => el && !disabledPrev.value && itemElList.push(el as any)}\n class={[\n nh.be('item'),\n nh.bem('item', 'prev'),\n disabled ? nh.bem('item', 'disabled') : '',\n ]}\n title={props.noTitle ? undefined : locale.value.prevPage}\n role={'menuitem'}\n tabindex={'-1'}\n aria-label={locale.value.prevPage}\n aria-hidden={disabled ? 'true' : undefined}\n onClick={handlePrev}\n onKeydownEnter={handlePrev}\n onKeydownSpace={handlePrev}\n >\n {renderSlot(slots, 'prev', { disabled }, () => [\n <Renderer renderer={props.slots.prev} data={{ disabled }}>\n <Icon {...arrow} scale={+(arrow.scale || 1)}></Icon>\n </Renderer>,\n ])}\n </Tag>\n )\n }\n\n function renderNext(Tag: any) {\n const disabled = props.disabled || disabledNext.value\n const arrow = isRtl.value ? icons.value.angleLeft : icons.value.angleRight\n\n return (\n <Tag\n ref={el => el && !disabledNext.value && itemElList.push(el as any)}\n class={[\n nh.be('item'),\n nh.bem('item', 'next'),\n disabled ? nh.bem('item', 'disabled') : '',\n ]}\n title={props.noTitle ? undefined : locale.value.nextPage}\n role={'menuitem'}\n tabindex={'-1'}\n aria-label={locale.value.nextPage}\n aria-hidden={disabled ? 'true' : undefined}\n onClick={handleNext}\n onKeydownEnter={handleNext}\n onKeydownSpace={handleNext}\n >\n {renderSlot(slots, 'next', { disabled }, () => [\n <Renderer renderer={props.slots.next} data={{ disabled }}>\n <Icon {...arrow} scale={+(arrow.scale || 1)}></Icon>\n </Renderer>,\n ])}\n </Tag>\n )\n }\n\n function renderPrevEllipsis(Tag: any) {\n if (!useEllipsis.value || mode.value === PaginationMode.LEFT) return null\n\n const disabled = props.disabled || !prevEllipsisTarget.value\n\n return (\n <Tag\n ref={el => el && prevEllipsisTarget.value && itemElList.push(el as any)}\n class={{\n [nh.be('item')]: true,\n [nh.bem('item', 'more')]: true,\n [nh.bem('item', 'disabled')]: disabled,\n }}\n title={props.noTitle ? undefined : prevTurnPageTitle.value}\n role={'menuitem'}\n tabindex={'-1'}\n aria-label={prevTurnPageTitle.value}\n onClick={clickPrevEllipsis}\n onKeydownEnter={clickPrevEllipsis}\n onKeydownSpace={clickPrevEllipsis}\n onMouseenter={enterPrevEllipsis}\n onMouseleave={leavePrevEllipsis}\n >\n {createSlotRender(slots, ['prev-jump', 'prevJump'], () => {\n const arrow = isRtl.value ? icons.value.anglesRight : icons.value.anglesLeft\n\n return (\n <Transition name={nh.ns('fade')}>\n {!disabled && inPrevEllipsis.value ? (\n <Icon {...arrow} scale={+(arrow.scale || 1)}></Icon>\n ) : (\n <Icon\n {...icons.value.ellipsis}\n scale={+(icons.value.ellipsis.scale || 1)}\n style={'position: absolute'}\n ></Icon>\n )}\n </Transition>\n )\n })({ disabled, entered: inPrevEllipsis.value })}\n </Tag>\n )\n }\n\n function renderNextEllipsis(Tag: any) {\n if (!useEllipsis.value || mode.value === PaginationMode.RIGHT) return null\n\n const disabled = props.disabled || !nextEllipsisTarget.value\n\n return (\n <Tag\n ref={el => el && nextEllipsisTarget.value && itemElList.push(el as any)}\n class={{\n [nh.be('item')]: true,\n [nh.bem('item', 'more')]: true,\n [nh.bem('item', 'disabled')]: disabled,\n }}\n title={props.noTitle ? undefined : nextTurnPageTitle.value}\n role={'menuitem'}\n tabindex={'-1'}\n aria-label={nextTurnPageTitle.value}\n onClick={clickNextEllipsis}\n onKeydownEnter={clickNextEllipsis}\n onKeydownSpace={clickNextEllipsis}\n onMouseenter={enterNextEllipsis}\n onMouseleave={leaveNextEllipsis}\n >\n {createSlotRender(slots, ['next-jump', 'nextJump'], () => {\n const arrow = isRtl.value ? icons.value.anglesLeft : icons.value.anglesRight\n\n return (\n <Transition name={nh.ns('fade')}>\n {!disabled && inNextEllipsis.value ? (\n <Icon {...arrow} scale={+(arrow.scale || 1)}></Icon>\n ) : (\n <Icon\n {...icons.value.ellipsis}\n scale={+(icons.value.ellipsis.scale || 1)}\n style={'position: absolute'}\n ></Icon>\n )}\n </Transition>\n )\n })({ disabled: !nextEllipsisTarget.value, entered: inNextEllipsis.value })}\n </Tag>\n )\n }\n\n function renderItem(Tag: any, page: number) {\n const disabled = props.disabled || props.disableItem(page)\n const active = currentActive.value === page\n\n return (\n <Tag\n ref={el => el && itemElList.push(el as any)}\n class={{\n [nh.be('item')]: true,\n [nh.bem('item', 'disabled')]: disabled,\n [nh.bem('item', 'active')]: active,\n }}\n title={props.noTitle ? undefined : page}\n role={'menuitemradio'}\n tabindex={active ? '0' : '-1'}\n aria-posinset={page}\n aria-setsize={pagerCount.value}\n aria-disabled={disabled ? 'true' : undefined}\n onClick={() => changeActive(page)}\n onKeydownEnter={() => changeActive(page)}\n onKeydownSpace={() => changeActive(page)}\n >\n {renderSlot(slots, 'item', { page, disabled, active }, () => [\n <Renderer renderer={props.slots.item} data={{ page, disabled, active }}>\n {page}\n </Renderer>,\n ])}\n </Tag>\n )\n }\n\n function renderTotalPlugin() {\n if (!props.plugins.includes('total')) return null\n\n return (\n <div\n class={[nh.be('total'), pluginOrders.value.total < 0 && nh.bem('total', 'prefix')]}\n style={{ order: pluginOrders.value.total }}\n >\n {`${locale.value.total} ${getCountWord(\n props.itemUnit ?? locale.value.itemUnit,\n props.total,\n )}`}\n </div>\n )\n }\n\n function renderSizePlugin() {\n if (!props.plugins.includes('size')) return null\n\n return (\n <div\n class={[nh.be('size'), pluginOrders.value.size < 0 && nh.bem('size', 'prefix')]}\n style={{ order: pluginOrders.value.size }}\n >\n <Select\n v-model:value={currentPageSize.value}\n inherit\n class={nh.be('size-select')}\n options={sizeObjectOptions.value}\n filter={false}\n multiple={false}\n clearable={false}\n ></Select>\n </div>\n )\n }\n\n function renderJumpPlugin() {\n if (!props.plugins.includes('jump')) return null\n\n return (\n <div\n class={[nh.be('jump'), pluginOrders.value.jump < 0 && nh.bem('jump', 'prefix')]}\n style={{ order: pluginOrders.value.jump }}\n >\n {locale.value.jumpTo}\n <NumberInput\n v-model:value={jumpValue.value}\n inherit\n class={nh.be('jump-input')}\n clearable={false}\n sync={false}\n style={{ width: `${jumpInputWidth.value}px` }}\n onChange={handleJumpPage}\n ></NumberInput>\n {getCountWordOnly(locale.value.page, 1)}\n </div>\n )\n }\n\n return () => {\n const ItemTag = props.itemTag || 'li'\n const ListTag = (props.listTag as any) || (ItemTag === 'li' ? 'ul' : 'div')\n\n return (\n <div class={className.value}>\n <ListTag\n ref={wrapper}\n class={nh.be('list')}\n role={'menubar'}\n aria-label={'Pagination'}\n aria-disabled={props.disabled ? 'true' : undefined}\n >\n {renderPrev(ItemTag)}\n {renderItem(ItemTag, 1)}\n {renderPrevEllipsis(ItemTag)}\n {midPagers.value.map(page => renderItem(ItemTag, page))}\n {renderNextEllipsis(ItemTag)}\n {pagerCount.value > 1 && renderItem(ItemTag, pagerCount.value)}\n {renderNext(ItemTag)}\n </ListTag>\n {renderTotalPlugin()}\n {renderSizePlugin()}\n {renderJumpPlugin()}\n </div>\n )\n }\n },\n})\n"],"names":["_isSlot","s","Object","prototype","toString","call","_isVNode","PaginationMode","defineComponent","name","props","paginationProps","emits","setup","_props","slots","emit","expose","useProps","size","createSizeProp","locale","total","default","validator","value","static","noBorder","background","pageSize","sizeOptions","itemCount","Number","isInteger","active","disabled","disableItem","isFunc","turnPageCount","itemUnit","plugins","Array","isArray","noTitle","itemTag","listTag","isRtl","useRtl","nh","useNameHelper","icons","useIcons","midPagers","ref","currentActive","currentPageSize","mode","LEFT","inPrevEllipsis","inNextEllipsis","jumpValue","itemElList","reactive","useLocale","toRef","target","wrapper","useModifier","passive","onKeyDown","event","modifier","decide","up","down","left","right","sign","isClient","document","activeElement","index","findIndex","el","boundRange","length","focus","enter","space","activeClass","bem","activeEl","find","classList","contains","beforeMatchAny","preventDefault","afterMatchAny","resetAll","className","computed","b","bs","bm","inherit","pagerCount","Math","ceil","useEllipsis","disabledPrev","count","queryEnabledActive","disabledNext","prevTurnPageTitle","prev","getCountWord","page","nextTurnPageTitle","next","prevEllipsisTarget","nextEllipsisTarget","sizeObjectOptions","map","label","perPage","pluginOrders","pagerPosition","isNull","p","jump","jumpInputWidth","includes","pageCount","min","watch","changeActive","computePagers","prevValue","emitEvent","onPageSizeChange","anchor","handlePrev","handleNext","onMounted","nextTick","onUpdated","push","from","querySelectorAll","cbe","cbem","step","abs","handleChange","onChange","parseInt","blur","tabIndex","pagers","range","numberCount","criticalCount","unshift","CENTER","RIGHT","slice","enterPrevEllipsis","leavePrevEllipsis","clickPrevEllipsis","enterNextEllipsis","leaveNextEllipsis","clickNextEllipsis","handleJumpPage","max","originActive","renderPrev","Tag","_slot","arrow","angleRight","angleLeft","_createVNode","be","undefined","prevPage","renderSlot","Renderer","Icon","_mergeProps","scale","renderNext","_slot2","nextPage","renderPrevEllipsis","_slot3","createSlotRender","anglesRight","anglesLeft","Transition","ns","ellipsis","entered","renderNextEllipsis","_slot4","renderItem","_slot5","onClick","onKeydownEnter","onKeydownSpace","item","renderTotalPlugin","order","renderSizePlugin","Select","$event","renderJumpPlugin","jumpTo","NumberInput","width","getCountWordOnly","ItemTag","ListTag"],"mappings":"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"}