UNPKG

tav-ui

Version:
1 lines 9.06 kB
{"version":3,"file":"use-card-actions2.mjs","sources":["../../../../../../../../../packages/components/file/src/FileCard/hooks/use-card-actions.ts"],"sourcesContent":["import { type ComputedRef, type WritableComputedRef, toRaw } from 'vue'\nimport { type FileActionUploadApiResponseRecord, type GlobalConfigFileProps } from '../../typings'\nimport { type FileCardProps } from '../types'\nimport { type ReturnOf, sleep } from './../../utils'\n\nexport interface CardCreateRowsOptions {\n /** 要新增的行数据 */\n rows: FileActionUploadApiResponseRecord[]\n /** 插入行的位置 */\n position?: FileActionUploadApiResponseRecord[] | FileActionUploadApiResponseRecord | null | -1\n /** 使用组件内部 loading 状态 */\n useLoading?: boolean\n}\n\nexport interface CardReadRowsOptions {\n /** 使用组件内部 loading 状态 */\n useLoading?: boolean\n}\n\nexport interface CardUpdateRowsOptions {\n /** 要新增的行数据 */\n rows: FileActionUploadApiResponseRecord[]\n /** 要删除的行数据 */\n deleteRows: FileActionUploadApiResponseRecord[]\n /** 使用组件内部 loading 状态 */\n useLoading?: boolean\n}\n\nexport interface CardDeleteRowsOptions {\n /** 要删除的行数据,不传的话默认删除全部 */\n rows?: FileActionUploadApiResponseRecord[]\n /** 使用组件内部 loading 状态 */\n useLoading?: boolean\n}\n\n/**\n * 封装 card 操作数据的方法\n * @param options\n * @returns\n */\nexport function useCardActions(options: {\n mergedProps: ComputedRef<GlobalConfigFileProps & FileCardProps>\n dataSource: ComputedRef<FileActionUploadApiResponseRecord[]>\n setDataSource: (data: FileActionUploadApiResponseRecord[]) => void\n loading: WritableComputedRef<any>\n}) {\n const { dataSource: _dataSource, setDataSource, loading } = options\n\n async function cardCreateRows(_options: CardCreateRowsOptions) {\n const { rows, position = null, useLoading } = _options\n const dataSource = JSON.parse(\n JSON.stringify(_dataSource.value)\n ) as FileActionUploadApiResponseRecord[]\n\n if (useLoading !== undefined && useLoading) loading.value.value = true\n let promiseAll\n if (Array.isArray(position)) {\n promiseAll = toRaw(rows).map(async (row, idx) => {\n // 根据 id 查询要插入 row 的位置\n const _idx = dataSource.findIndex((d) => d.id === position[idx].id)\n dataSource.splice(_idx, 0, row)\n return Promise.resolve()\n })\n } else {\n promiseAll = toRaw(rows).map(async (row) => {\n if (position === null) {\n // 顶部\n dataSource.splice(0, 0, row)\n } else if (position === -1) {\n // 底部\n dataSource.splice(dataSource.length, 0, row)\n } else {\n // 根据 id 查询要插入 row 的位置\n const idx = dataSource.findIndex((d) => d.id === position.id)\n dataSource.splice(idx, 0, row)\n }\n return Promise.resolve()\n })\n }\n await Promise.all(promiseAll)\n setDataSource(dataSource)\n if (useLoading !== undefined && useLoading) loading.value.value = false\n }\n\n async function cardReadRows(_options: CardReadRowsOptions = {}) {\n const { useLoading } = _options\n const dataSource = JSON.parse(\n JSON.stringify(_dataSource.value)\n ) as FileActionUploadApiResponseRecord[]\n\n if (useLoading !== undefined && useLoading) loading.value.value = true\n await sleep(150)\n if (useLoading !== undefined && useLoading) loading.value.value = false\n return dataSource\n }\n\n async function cardUpdateRows(_options: CardUpdateRowsOptions) {\n const { rows, deleteRows, useLoading } = _options\n const dataSource = JSON.parse(\n JSON.stringify(_dataSource.value)\n ) as FileActionUploadApiResponseRecord[]\n\n if (useLoading !== undefined && useLoading) loading.value.value = true\n const promiseAll = toRaw(rows).map((row, idx) => {\n // 根据 id 查询要插入 row 的位置\n const _idx = dataSource.findIndex((d) => d.id === deleteRows[idx].id)\n dataSource.splice(_idx, 1, row)\n return Promise.resolve()\n })\n await Promise.all(promiseAll)\n setDataSource(dataSource)\n if (useLoading !== undefined && useLoading) loading.value.value = false\n }\n\n async function cardDeleteRows(_options: CardDeleteRowsOptions) {\n const { rows, useLoading } = _options\n let dataSource = JSON.parse(\n JSON.stringify(_dataSource.value)\n ) as FileActionUploadApiResponseRecord[]\n\n if (useLoading !== undefined && useLoading) loading.value.value = true\n // 指定 row 或 [row, ...] 删除多条数据,如果为空则删除所有数据\n if (rows === undefined) {\n dataSource = []\n } else {\n toRaw(rows).forEach((row) => {\n // 根据 id 查询要插入 row 的位置\n const idx = dataSource.findIndex((d) => d.id === row.id)\n dataSource.splice(idx, 1)\n })\n }\n setDataSource(dataSource)\n if (useLoading !== undefined && useLoading) loading.value.value = false\n }\n\n return {\n cardCreateRows,\n cardReadRows,\n cardUpdateRows,\n cardDeleteRows,\n }\n}\n\nexport type UseCardActionsReturn = ReturnOf<typeof useCardActions>\n"],"names":[],"mappings":"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"}