UNPKG

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 7.1 kB
{"version":3,"file":"usePagination.mjs","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","ref","attrs","useAttrs","pagination","computed","isObject","val","tableAttributes","omitProps","reactiveOmit","paginationAttrs","isPaginationByFront","watch","editableType","columnProps","column","prop","item","obj","getTableData","addTableData","rowData","set","uid","pagination2","page","pageSize","list","length","start","end","handleCurrentChange"],"mappings":"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"}