UNPKG

various-ui

Version:

This is a test version of the Vue 3 component library

1 lines 11.5 kB
{"version":3,"file":"composable.mjs","sources":["../../../../../../packages/components/pagination/default/src/composable.ts"],"sourcesContent":["import { computed, SetupContext } from \"vue\";\r\nimport { UiPaginationProps, UiPaginationEmits } from \"../index\";\r\nimport { utility } from \"@various/utils\";\r\n\r\ntype UiPaginationOption = {\r\n type: \"item\" | \"skip\";\r\n value: number;\r\n active: boolean;\r\n};\r\n\r\nexport const useComposable = (define: UiPaginationProps, emits: SetupContext<typeof UiPaginationEmits>[\"emit\"]) => {\r\n //* 计算属性\r\n const computeds = {\r\n //* 分页的总数\r\n total: computed(() => Math.ceil(define.count / define.limit)),\r\n\r\n //* 统计信息\r\n info: computed(() => {\r\n if (define.count) {\r\n const start = (define.modelValue - 1) * define.limit + 1;\r\n const end = define.modelValue * define.limit;\r\n\r\n return `Items: ${start} to ${end > define.count ? define.count : end} of ${define.count}`;\r\n } else {\r\n return \"\";\r\n }\r\n }),\r\n\r\n //* 分页控制器\r\n controls: computed(() => {\r\n //* 初始化数据\r\n const result: UiPaginationOption[] = [];\r\n //* 0. 当分页跳跃关闭时\r\n if (define.skip <= 0) {\r\n const config = {\r\n start: Math.max(define.modelValue - 4, 1),\r\n end: Math.min(define.modelValue + 4, computeds.total.value),\r\n };\r\n\r\n config.end = Math.min(config.end + Math.max(4 - (define.modelValue - config.start), 0), computeds.total.value);\r\n config.start = Math.max(config.start - Math.max(9 - (config.end - config.start + 1), 0), 1);\r\n for (let i = config.start; i <= config.end; i++) {\r\n result.push({ type: \"item\", value: i, active: i == define.modelValue });\r\n }\r\n } else if (computeds.total.value <= 9) {\r\n //* 1. 当分页总数小于等于9时, 展示全部\r\n for (let i = 1; i <= computeds.total.value; i++) {\r\n result.push({ type: \"item\", value: i, active: i == define.modelValue });\r\n }\r\n } else {\r\n if (define.modelValue <= 5) {\r\n //* 2.1. 当前分页小于等于5时, 展示1~6分页\r\n for (let i = 1; i <= 6; i++) {\r\n result.push({ type: \"item\", value: i, active: i == define.modelValue });\r\n }\r\n\r\n //* 2.2. 补充剩余控制器\r\n result.push({ type: \"skip\", value: 1, active: false });\r\n result.push({ type: \"item\", value: computeds.total.value - 1, active: computeds.total.value - 1 == define.modelValue });\r\n result.push({ type: \"item\", value: computeds.total.value, active: computeds.total.value == define.modelValue });\r\n } else if (define.modelValue >= computeds.total.value - 3) {\r\n //* 3.1. 补充前置控制器\r\n result.push({ type: \"item\", value: 1, active: 1 == define.modelValue });\r\n result.push({ type: \"item\", value: 2, active: 2 == define.modelValue });\r\n result.push({ type: \"skip\", value: -1, active: false });\r\n\r\n //* 3.2. 当前分页大于等于最后4页时, 展示total - 5 ~ total分页\r\n for (let i = computeds.total.value - 5; i <= computeds.total.value; i++) {\r\n result.push({ type: \"item\", value: i, active: i == define.modelValue });\r\n }\r\n } else {\r\n //* 4.1. 补充前置控制器\r\n result.push({ type: \"item\", value: 1, active: 1 == define.modelValue });\r\n result.push({ type: \"item\", value: 2, active: 2 == define.modelValue });\r\n result.push({ type: \"skip\", value: -1, active: false });\r\n\r\n //* 4.2. 当前分页前后的控制器\r\n for (let i = define.modelValue - 1; i <= define.modelValue + 1; i++) {\r\n result.push({ type: \"item\", value: i, active: i == define.modelValue });\r\n }\r\n\r\n //* 4.3. 补充剩余控制器\r\n result.push({ type: \"skip\", value: 1, active: false });\r\n result.push({ type: \"item\", value: computeds.total.value - 1, active: computeds.total.value - 1 == define.modelValue });\r\n result.push({ type: \"item\", value: computeds.total.value, active: computeds.total.value == define.modelValue });\r\n }\r\n }\r\n\r\n return result;\r\n }),\r\n };\r\n\r\n //* 函数列表\r\n const methods = {\r\n //* 切换分页\r\n switchNumber: (_number: number) => {\r\n if (!utility.isNumber(_number) || _number == define.modelValue) return;\r\n if (_number <= 0) {\r\n emits(\"update:modelValue\", 1);\r\n emits(\"change\", 1);\r\n } else if (_number > computeds.total.value) {\r\n emits(\"update:modelValue\", computeds.total.value);\r\n emits(\"change\", computeds.total.value);\r\n } else {\r\n emits(\"update:modelValue\", _number);\r\n emits(\"change\", _number);\r\n }\r\n },\r\n\r\n //* 下一页\r\n next: () => {\r\n if (define.modelValue >= computeds.total.value) return;\r\n else {\r\n methods.switchNumber(define.modelValue + 1);\r\n }\r\n },\r\n\r\n //* 上一页\r\n back: () => {\r\n if (define.modelValue <= 1) return;\r\n else {\r\n methods.switchNumber(define.modelValue - 1);\r\n }\r\n },\r\n };\r\n\r\n return { computeds, methods };\r\n};\r\n"],"names":["utility.isNumber"],"mappings":"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"}