ideaz-element
Version:
<p align="center"> <a href="" target="_blank" rel="noopener noreferrer"> <img src="./docs/public/logo.svg" alt="Ideaz Element" width="180" style="width: 180px;" /> </a> </p>
1 lines • 6.82 kB
Source Map (JSON)
{"version":3,"file":"usePagination.cjs","sources":["../../../../../../packages/element/table/src/hooks/usePagination.ts"],"sourcesContent":["import { isObject, uid } from '@ideaz/utils'\nimport { reactiveOmit } from '@vueuse/core'\nimport { set } from 'lodash-unified'\nimport type { ITableProps } from '../props'\nimport type { Pagination } from '../../../types'\n\nexport function usePagination(props: ITableProps, emit: any) {\n const tableData = ref<any>([])\n const attrs = useAttrs()\n\n const pagination = computed<Pagination>({\n get() {\n // editable is not compatible with pagination\n return (isObject(props.pagination) && !props.editable) ? props.pagination : {}\n },\n set(val) {\n emit('update:pagination', val)\n },\n })\n\n const tableAttributes = computed<any>(() => {\n const omitProps = reactiveOmit(props, ['pagination', 'columns', 'draggable', 'toolBar', 'loading'])\n return { ...attrs, ...omitProps }\n })\n\n const paginationAttrs = computed(() => {\n return {\n ...pagination.value,\n layout: pagination.value.layout || 'total, sizes, prev, pager, next, jumper',\n pageSizes: pagination.value.pageSizes || [100, 200, 300, 400, 500],\n }\n })\n\n const isPaginationByFront = computed(() => {\n if (tableAttributes.value.data && paginationAttrs.value.type === 'front')\n return true\n\n return false\n })\n\n watch(\n () => tableAttributes.value.data,\n () => {\n if (props.editable) {\n const editableType = isObject(props.editable) ? (props.editable.type || 'single') : 'single'\n const columnProps = props.columns.map(column => column.prop).filter(prop => prop)\n tableData.value = tableAttributes.value.data.map((item: any) => {\n const obj: { [propName: string]: string } = {}\n columnProps.forEach((prop) => {\n // only add prop if it is not already in the object\n if (Object.hasOwnProperty.call(item, prop!) && !Object.hasOwnProperty.call(item, `${prop}Prop`))\n obj[`${prop}Prop`] = item[prop!]\n })\n return { __isEdit: editableType !== 'single', ...item, ...obj }\n })\n }\n else {\n tableData.value = tableAttributes.value.data\n }\n },\n { immediate: true },\n )\n\n watch(() => tableAttributes.value.totalData, () => {\n if (\n pagination.value.total && paginationAttrs.value.type === 'front'\n )\n getTableData(pagination.value)\n })\n\n const addTableData = () => {\n const rowData = { __isEdit: true }\n if (props.rowKey)\n set(rowData, String(props.rowKey), uid())\n\n tableData.value.push(rowData)\n }\n\n function getTableData(pagination: Pagination) {\n const page = pagination.page!\n const pageSize = pagination.pageSize!\n const list = tableAttributes.value.totalData\n const length = tableAttributes.value.totalData.length\n let start = (page - 1) * pageSize\n let end = page * pageSize\n if (start >= length)\n start = 0\n if (end >= length)\n end = length\n tableData.value = list.slice(start, end)\n emit('update:data', tableData.value)\n }\n\n const handleCurrentChange = (val: number) => {\n emit('update:pagination', { ...pagination.value, page: val })\n if (isPaginationByFront.value) {\n getTableData({\n page: val,\n pageSize: pagination.value.pageSize,\n })\n }\n else {\n emit('refresh', {\n page: val,\n pageSize: pagination.value.pageSize,\n })\n }\n }\n\n const handleSizeChange = (val: number) => {\n emit('update:pagination', { ...pagination.value, pageSize: val })\n if (isPaginationByFront.value)\n getTableData({ page: 1, pageSize: val })\n\n else\n emit('refresh', { page: 1, pageSize: val })\n }\n\n const handleRefresh = () => {\n const page = pagination.value.page ? pagination.value.page : 1\n handleCurrentChange(page)\n }\n\n return {\n paginationAttrs,\n tableAttributes,\n tableData,\n pagination,\n addTableData,\n handleCurrentChange,\n handleSizeChange,\n handleRefresh,\n }\n}\n"],"names":["usePagination","props","emit","tableData","vue","attrs","pagination","is","val","tableAttributes","omitProps","index","paginationAttrs","isPaginationByFront","editableType","columnProps","column","prop","item","obj","getTableData","addTableData","rowData","set","uid","pagination2","page","pageSize","list","length","start","end","handleCurrentChange"],"mappings":"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"}