UNPKG

ivue-material-plus

Version:

A high quality UI components Library with Vue.js

1 lines 5.63 kB
{"version":3,"file":"expand.mjs","sources":["../../../../../../src/components/ivue-table/store/expand.ts"],"sourcesContent":["import { ref, getCurrentInstance } from 'vue';\r\n\r\nimport { toggleRowStatus, getKeysMap, getRowIdentity } from '../utils';\r\n\r\n// ts\r\nimport type { WatcherPropsData } from './index';\r\nimport type { Table } from '../table/defaults';\r\nimport type { TableColumnCtx } from '../table-column/defaults';\r\n\r\n// 展开行数据\r\nfunction useExpand(watcherData: WatcherPropsData) {\r\n // vm\r\n const vm = getCurrentInstance() as Table;\r\n\r\n // 是否默认展开所有行,当 Table 包含展开行存在或者为树形表格时有效\r\n const defaultExpandAll = ref(false);\r\n\r\n // 展开的行\r\n const expandRows = ref<TableColumnCtx[]>([]);\r\n\r\n // 更新展开行\r\n const updateExpandRows = () => {\r\n // 数据\r\n const data = watcherData.data.value || [];\r\n // 行key\r\n const rowKey = watcherData.rowKey.value;\r\n // 展开所有行\r\n if (defaultExpandAll.value) {\r\n // 浅拷贝数组->防止修改原始数据\r\n expandRows.value = data.slice();\r\n }\r\n // 行key\r\n else if (rowKey) {\r\n const expandRowsMap = getKeysMap(expandRows.value, rowKey);\r\n\r\n expandRows.value = data.reduce((prev, row) => {\r\n // 获取rowKey对应的数据\r\n const rowId = getRowIdentity(row, rowKey);\r\n\r\n const rowInfo = expandRowsMap[rowId];\r\n\r\n if (rowInfo) {\r\n prev.push(row);\r\n }\r\n\r\n return prev;\r\n }, []);\r\n }\r\n //其他\r\n else {\r\n expandRows.value = [];\r\n }\r\n };\r\n\r\n // 切换行展开\r\n const toggleRowExpansion = (row, expanded?: boolean) => {\r\n const changed = toggleRowStatus(expandRows.value, row, expanded);\r\n\r\n // 当用户对某一行展开或者关闭的时候会触发该事件\r\n if (changed) {\r\n vm.emit('on-expand-change', row, expandRows.value.slice());\r\n }\r\n };\r\n\r\n // 设置展开行的key\r\n const setExpandRowKeys = (rowKeys: string[]) => {\r\n // 检查 rowKey 是否存在\r\n vm.store.assertRowKey();\r\n\r\n // 数据\r\n const data = watcherData.data.value || [];\r\n // rowkey\r\n const rowKey = watcherData.rowKey.value;\r\n // 获取数组的key\r\n const keysMap = getKeysMap(data, rowKey);\r\n\r\n // 展开的行\r\n expandRows.value = rowKeys.reduce((prev, cur: string) => {\r\n // 当前内容\r\n const info = keysMap[cur];\r\n\r\n // 行数据\r\n if (info) {\r\n prev.push(info.row);\r\n }\r\n\r\n return prev;\r\n }, []);\r\n };\r\n\r\n // 当前行是否有展开\r\n const isRowExpanded = (row): boolean => {\r\n const rowKey = watcherData.rowKey.value;\r\n // 行key\r\n if (rowKey) {\r\n // 获取数组的key\r\n const expandMap = getKeysMap(expandRows.value, rowKey);\r\n\r\n // 获取rowKey对应的数据\r\n return !!expandMap[getRowIdentity(row, rowKey)];\r\n }\r\n\r\n // 是否存在当前行\r\n return expandRows.value.includes(row);\r\n };\r\n\r\n return {\r\n updateExpandRows,\r\n toggleRowExpansion,\r\n setExpandRowKeys,\r\n isRowExpanded,\r\n states: {\r\n defaultExpandAll,\r\n expandRows,\r\n },\r\n };\r\n}\r\n\r\nexport default useExpand;\r\n"],"names":[],"mappings":"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"}