tdesign-vue-next
Version:
TDesign Component for vue-next
1 lines • 14.9 kB
Source Map (JSON)
{"version":3,"file":"enhanced-table.mjs","sources":["../../../components/table/enhanced-table.tsx"],"sourcesContent":["import { defineComponent, SetupContext, computed, ref, getCurrentInstance } from 'vue';\nimport baseTableProps from './base-table-props';\nimport primaryTableProps from './primary-table-props';\nimport enhancedTableProps from './enhanced-table-props';\nimport PrimaryTable from './primary-table';\nimport {\n TdEnhancedTableProps,\n PrimaryTableCol,\n TableRowData,\n DragSortContext,\n TdPrimaryTableProps,\n TableRowState,\n} from './type';\nimport useTreeData from './hooks/useTreeData';\nimport useTreeSelect from './hooks/useTreeSelect';\nimport { get } from 'lodash-es';\nimport { ComponentScrollToElementParams } from '../common';\nimport log from '@tdesign/common-js/log/index';\nimport swapDragArrayElement from '@tdesign/common-js/utils/swapDragArrayElement';\nimport { usePrefixClass } from '@tdesign/shared-hooks';\n\nexport default defineComponent({\n name: 'TEnhancedTable',\n props: {\n ...baseTableProps,\n ...primaryTableProps,\n ...enhancedTableProps,\n },\n setup(props: TdEnhancedTableProps, context: SetupContext) {\n const primaryTableRef = ref(null);\n const { store, dataSource, formatTreeColumn, swapData, onExpandFoldIconClick, ...treeInstanceFunctions } =\n useTreeData(props, context);\n const classPrefix = usePrefixClass();\n\n const treeDataMap = ref(store.value.treeDataMap);\n\n const { tIndeterminateSelectedRowKeys, onInnerSelectChange } = useTreeSelect(props, treeDataMap);\n\n // 影响列和单元格内容的因素有:树形节点需要添加操作符 [+] [-]\n const getColumns = (columns: PrimaryTableCol<TableRowData>[]) => {\n const arr: PrimaryTableCol<TableRowData>[] = [];\n for (let i = 0, len = columns.length; i < len; i++) {\n let item = { ...columns[i] };\n item = formatTreeColumn(item);\n if (item.children?.length) {\n item.children = getColumns(item.children);\n }\n // 多级表头和自定义列配置特殊逻辑:要么子节点不存在,要么子节点长度大于 1,方便做自定义列配置\n if (!item.children || item.children?.length) {\n arr.push(item);\n }\n }\n return arr;\n };\n\n const tColumns = computed(() => {\n // 暂时只有树形结构需要处理 column.cell\n const isTreeData = !props.tree || !Object.keys(props.tree).length;\n return isTreeData ? props.columns : getColumns(props.columns);\n });\n\n const onDragSortChange = (params: DragSortContext<TableRowData>) => {\n let dragSortParams = params;\n if (params.sort === 'col') {\n const { currentIndex, targetIndex } = params;\n const newData = swapDragArrayElement([...props.columns], currentIndex, targetIndex);\n dragSortParams = {\n ...params,\n data: props.columns,\n current: props.columns[currentIndex],\n target: props.columns[targetIndex],\n newData,\n currentData: newData,\n };\n }\n if (props.beforeDragSort && !props.beforeDragSort(dragSortParams)) return;\n if (dragSortParams.sort === 'col') {\n props.onDragSort?.(dragSortParams);\n return;\n }\n swapData({\n current: dragSortParams.current,\n target: dragSortParams.target,\n currentIndex: dragSortParams.currentIndex,\n targetIndex: dragSortParams.targetIndex,\n });\n props.onDragSort?.(dragSortParams);\n };\n\n const onEnhancedTableRowClick: TdPrimaryTableProps['onRowClick'] = (p) => {\n if (props.tree?.expandTreeNodeOnClick) {\n onExpandFoldIconClick(\n {\n row: p.row,\n rowIndex: p.index,\n },\n 'row-click',\n );\n }\n props.onRowClick?.(p);\n };\n\n const getScrollRowIndex = (rowStateData: TableRowState, key: string | number): number => {\n if (!rowStateData) return -1;\n if (rowStateData.rowIndex >= 0) return rowStateData.rowIndex;\n if (rowStateData.rowIndex < 0) {\n return getScrollRowIndex(rowStateData.parent, key);\n }\n };\n\n const scrollToElement = (params: ComponentScrollToElementParams) => {\n let { index } = params;\n if (!index && index !== 0) {\n if (!params.key) {\n log.error('Table', 'scrollToElement: one of `index` or `key` must exist.');\n return;\n }\n const rowStateData = treeDataMap.value.get(params.key);\n index = getScrollRowIndex(rowStateData, params.key);\n if (index < 0 || index === undefined) {\n log.error('Table', `${params.key} does not exist in data, check \\`rowKey\\` or \\`data\\` please.`);\n }\n }\n primaryTableRef.value.scrollToElement({ ...params, index });\n };\n\n context.expose({\n store: store.value,\n dataSource: dataSource.value,\n ...treeInstanceFunctions,\n primaryTableRef,\n validateRowData: (rowValue: any) => {\n return primaryTableRef.value.validateRowData(rowValue);\n },\n validateTableData: () => {\n return primaryTableRef.value.validateTableData();\n },\n clearValidateData: () => {\n primaryTableRef.value.clearValidateData();\n },\n refreshTable: () => {\n primaryTableRef.value.refreshTable();\n },\n scrollToElement,\n });\n\n return () => {\n const { vnode } = getCurrentInstance();\n const enhancedProps: TdPrimaryTableProps = {\n ...vnode.props,\n rowKey: props.rowKey || 'id',\n data: dataSource.value,\n columns: tColumns.value,\n // 半选状态节点\n indeterminateSelectedRowKeys: tIndeterminateSelectedRowKeys.value,\n // 树形结构不允许本地数据分页\n disableDataPage: Boolean(props.tree && Object.keys(props.tree).length) || props.disableDataPage,\n onSelectChange: onInnerSelectChange,\n onDragSort: onDragSortChange,\n rowClassName: ({ row }) => {\n const rowValue = get(row, props.rowKey || 'id');\n const rowState = treeDataMap.value.get(rowValue);\n if (!rowState) return [props.rowClassName];\n return [`${classPrefix.value}-table-tr--level-${rowState.level}`, props.rowClassName];\n },\n };\n if (props.tree?.expandTreeNodeOnClick) {\n enhancedProps.onRowClick = onEnhancedTableRowClick;\n }\n // @ts-ignore ref 顺序很重要,如果移动到 v-slots 前面,会让 EnhancedTable 所有实例方法失效,勿动\n return <PrimaryTable v-slots={context.slots} {...enhancedProps} ref={primaryTableRef} />;\n };\n },\n});\n"],"names":["defineComponent","name","props","_objectSpread","baseTableProps","primaryTableProps","enhancedTableProps","setup","context","primaryTableRef","ref","_useTreeData","useTreeData","store","dataSource","formatTreeColumn","swapData","onExpandFoldIconClick","treeInstanceFunctions","_objectWithoutProperties","_excluded","classPrefix","usePrefixClass","treeDataMap","value","_useTreeSelect","useTreeSelect","tIndeterminateSelectedRowKeys","onInnerSelectChange","getColumns","columns","arr","i","len","length","_item$children","_item$children2","item","children","push","tColumns","computed","isTreeData","tree","Object","keys","onDragSortChange","params","_props$onDragSort2","dragSortParams","sort","currentIndex","targetIndex","newData","swapDragArrayElement","data","current","target","currentData","beforeDragSort","_props$onDragSort","onDragSort","call","onEnhancedTableRowClick","p","_props$tree","_props$onRowClick","expandTreeNodeOnClick","row","rowIndex","index","onRowClick","getScrollRowIndex","rowStateData","key","parent","scrollToElement","log","error","get","concat","expose","validateRowData","rowValue","validateTableData","clearValidateData","refreshTable","_props$tree2","_getCurrentInstance","getCurrentInstance","vnode","enhancedProps","rowKey","indeterminateSelectedRowKeys","disableDataPage","Boolean","onSelectChange","rowClassName","_ref","rowState","level","_createVNode","PrimaryTable","_mergeProps","slots"],"mappings":"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"}