UNPKG

tav-ui

Version:
1 lines 14.9 kB
{"version":3,"file":"useExtendInstance2.mjs","sources":["../../../../../../../../packages/components/table-pro/src/hooks/useExtendInstance.ts"],"sourcesContent":["import { nextTick, reactive, unref, watch } from 'vue'\nimport { ROW_KEY } from '../const'\nimport { type UseCheckboxCacheReturn } from './useCheckboxCache'\nimport type { ComputedRef, Ref } from 'vue'\nimport type { ITableProInstance, TableProInstance, TableProProps } from '../types'\nimport type { TableProApiParams } from '../typings'\n\nfunction createExendApis(\n tableRef: Ref<TableProInstance | null>,\n tablePropsRef: ComputedRef<TableProProps>,\n filterRef: any,\n isCheckboxCacheEnabled: UseCheckboxCacheReturn['isCheckboxCacheEnabled'],\n checkboxCacheList: UseCheckboxCacheReturn['checkboxCacheList'],\n deleteCheckboxCache: UseCheckboxCacheReturn['deleteCheckboxCache'],\n deleteAllCheckboxCache: UseCheckboxCacheReturn['deleteAllCheckboxCache'],\n currentPage: Ref<number>\n) {\n function getSelectRowKeys(): string[] {\n const {\n rowConfig: { keyField = ROW_KEY },\n } = unref(tablePropsRef)\n\n if (isCheckboxCacheEnabled.value) {\n return checkboxCacheList.value.map((cache) => `${cache[keyField]}`)\n } else {\n return unref(tableRef)!\n .getCheckboxRecords()\n .map((record) => `${record[keyField]}`)\n }\n }\n\n async function clearSelectedRowByKey(keyField: string | number) {\n const rowKey = `${keyField}`\n const {\n rowConfig: { keyField: _keyField = ROW_KEY },\n } = unref(tablePropsRef)\n\n const selectedRow = unref(tableRef)!\n .getCheckboxRecords()\n .find((record) => {\n const recordRowKey = `${record[_keyField]}`\n return recordRowKey === rowKey\n })\n\n if (isCheckboxCacheEnabled.value) {\n await deleteCheckboxCache(selectedRow)\n } else {\n await unref(tableRef)!.toggleCheckboxRow(selectedRow)\n }\n }\n\n function getSelectRows(): any[] {\n if (isCheckboxCacheEnabled.value) {\n return checkboxCacheList.value\n } else {\n return unref(tableRef)!.getCheckboxRecords()\n }\n }\n\n async function clearSelectedRows() {\n const { checkboxConfig = {}, radioConfig = {} } = unref(tablePropsRef)\n\n if (isCheckboxCacheEnabled.value) {\n await deleteAllCheckboxCache({\n deleteByPage: false,\n })\n } else {\n const hasCheckbox = Object.keys(checkboxConfig).length > 0\n const hasRadioConfig = Object.keys(radioConfig).length > 0\n if (hasCheckbox) await unref(tableRef)!.clearCheckboxRow()\n if (hasRadioConfig) await unref(tableRef)!.clearRadioRow()\n }\n }\n\n function insertRow(records: Record<string, any> | Record<string, any>[]) {\n let _records: any[] = []\n if (Array.isArray(records)) {\n _records = [...records]\n } else {\n _records = [records]\n }\n unref(tableRef)!.insertAt(_records, -1)\n }\n\n function updateRow(records: Record<string, any> | Record<string, any>[]) {\n const {\n rowConfig: { keyField = ROW_KEY },\n } = unref(tablePropsRef)\n const fullData = unref(tableRef)!.getTableData().fullData\n let _records: any[] = []\n if (Array.isArray(records)) {\n _records = [...records]\n } else {\n _records = [records]\n }\n const _data = fullData?.map((record) => {\n const matchedRecord = _records.find((_record) => _record[keyField] === record[keyField])\n if (matchedRecord) {\n return { ...record, ...matchedRecord }\n } else {\n return record\n }\n })\n unref(tableRef)!.loadData(_data)\n }\n\n function deleteRow(records: Record<string, any> | Record<string, any>[]) {\n let _records: any[] = []\n if (Array.isArray(records)) {\n _records = [...records]\n } else {\n _records = [records]\n }\n unref(tableRef)!.remove(_records)\n }\n\n async function reload(options?: TableProApiParams) {\n const tableFilterSearchParams = filterRef.value\n ? JSON.parse(filterRef.value.$el.dataset.filterParams)\n : {}\n\n const { checkboxConfig = {}, radioConfig = {} } = unref(tablePropsRef)\n\n const hasCheckbox = Object.keys(checkboxConfig).length > 0\n const hasRadioConfig = Object.keys(radioConfig).length > 0\n if (options?.clearSelect && hasCheckbox) unref(tableRef)!.clearCheckboxRow()\n if (options?.clearSelect && hasRadioConfig) unref(tableRef)!.clearRadioRow()\n\n const apiParams: TableProApiParams = {\n filter: tableFilterSearchParams,\n model: { page: currentPage.value },\n }\n if (options) {\n if (options.filter) {\n apiParams.filter = { ...apiParams.filter, ...(options.filter ?? {}) }\n }\n apiParams.model = {\n ...(options.model ?? {}),\n ...(options.page && options.page > 0 ? { page: options.page } : {}),\n }\n }\n\n if (\n isCheckboxCacheEnabled.value &&\n options?.filter &&\n Object.keys(options?.filter).length > 0 &&\n JSON.stringify(options?.filter) !== JSON.stringify(tableFilterSearchParams)\n ) {\n await deleteAllCheckboxCache({\n deleteByPage: false,\n })\n await nextTick()\n }\n\n // 同一个表格实例下使用 query 无法重置页码,改为 reload\n // unref(tableRef)!.commitProxy('query', { ...apiParams })\n // 使用 reload 后表格的滚动条重置,这里需要手动记录并置回\n const { scrollTop: prevScrollTop, scrollLeft: prevScrollLeft } = unref(tableRef)!.getScroll()\n await unref(tableRef)!.commitProxy('reload', { ...apiParams })\n if (currentPage.value === apiParams?.model?.page) {\n nextTick(async () => {\n await unref(tableRef)!.refreshScroll()\n setTimeout(() => {\n unref(tableRef)!.scrollTo(prevScrollLeft, prevScrollTop)\n }, 16.7 * 2)\n })\n }\n // reload 后 vxetable 控制自动回到第一页这里强行把页码置回\n const proxyInfo = unref(tableRef)!.getProxyInfo()\n if (apiParams?.model?.page && proxyInfo) {\n proxyInfo.pager.currentPage = apiParams.model.page\n }\n }\n\n return {\n getSelectRowKeys,\n clearSelectedRowByKey,\n getSelectRows,\n clearSelectedRows,\n insertRow,\n updateRow,\n deleteRow,\n reload,\n }\n}\n\n/** 扩展实例 */\ntype OuterExtendApis = {\n setLoading: (loading: boolean) => void\n resetFilterInput: () => void\n resizeTableHeight: () => void\n showExportModal: () => void\n showColumnsModa: () => void\n clearCellTooltip: () => void\n}\nexport type TableProExtendApis = ReturnType<typeof createExendApis> & OuterExtendApis\n\n/**\n * 扩展 vxegrid instance 实例\n * @param tableRef\n * @returns\n */\nexport function useExtendInstance(\n tableRef: Ref<TableProInstance | null>,\n tablePropsRef: ComputedRef<TableProProps>,\n outerExtendApis: OuterExtendApis,\n filterRef: Ref<ComputedRef | null>,\n isCheckboxCacheEnabled: UseCheckboxCacheReturn['isCheckboxCacheEnabled'],\n checkboxCacheList: UseCheckboxCacheReturn['checkboxCacheList'],\n deleteCheckboxCache: UseCheckboxCacheReturn['deleteCheckboxCache'],\n deleteAllCheckboxCache: UseCheckboxCacheReturn['deleteAllCheckboxCache'],\n currentPage: Ref<number>\n) {\n const state = reactive<{\n instance: TableProInstance | null\n }>({\n instance: null,\n })\n\n watch(\n () => tableRef.value,\n (curTableRef, preTableRef) => {\n if (curTableRef && curTableRef !== preTableRef) {\n state.instance = curTableRef\n const extendApis = createExendApis(\n tableRef,\n tablePropsRef,\n filterRef,\n isCheckboxCacheEnabled,\n checkboxCacheList,\n deleteCheckboxCache,\n deleteAllCheckboxCache,\n currentPage\n )\n Object.keys(extendApis).forEach((name) => {\n //@ts-ignore\n state.instance![name] = extendApis[name]\n })\n Object.keys(outerExtendApis).forEach((name) => {\n //@ts-ignore\n state.instance![name] = outerExtendApis[name]\n })\n //@ts-ignore\n state.instance!['filterRef'] = filterRef.value\n }\n }\n )\n\n return state as ITableProInstance\n}\n"],"names":[],"mappings":"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"}