UNPKG

tdesign-vue-next

Version:
1 lines 28.6 kB
{"version":3,"file":"tr.mjs","sources":["../../../../components/table/components/tr.tsx"],"sourcesContent":["import {\n defineComponent,\n PropType,\n SetupContext,\n h,\n computed,\n ref,\n reactive,\n toRefs,\n onUpdated,\n nextTick,\n onMounted,\n} from 'vue';\nimport { get, pick, isString, isFunction, upperFirst } from 'lodash-es';\n\nimport { formatClassNames, formatRowAttributes, formatRowClassNames } from '../utils';\nimport { getRowFixedStyles, getColumnFixedStyles } from '../hooks/useFixed';\nimport useClassName from '../hooks/useClassName';\nimport TEllipsis from './ellipsis';\nimport { BaseTableCellParams, TableRowData, RowspanColspan, TdPrimaryTableProps, TdBaseTableProps } from '../type';\nimport baseTableProps from '../base-table-props';\nimport useLazyLoad from '../hooks/useLazyLoad';\nimport { RowAndColFixedPosition } from '../types';\nimport { getCellKey, SkipSpansValue } from '../hooks/useRowspanAndColspan';\nimport { TooltipProps } from '../../tooltip';\nimport { PaginationProps } from '../../pagination';\nimport type { VirtualScrollConfig } from '@tdesign/shared-hooks';\nimport { AttachNode, SlotReturnValue } from '../../common';\n\nexport interface RenderTdExtra {\n rowAndColFixedPosition: RowAndColFixedPosition;\n columnLength: number;\n dataLength: number;\n cellSpans: RowspanColspan;\n cellEmptyContent: TdBaseTableProps['cellEmptyContent'];\n}\n\nexport interface RenderEllipsisCellParams {\n cellNode: any;\n}\n\nexport type TrCommonProps = Pick<TdPrimaryTableProps, TrPropsKeys>;\n\nexport const TABLE_PROPS = [\n 'rowKey',\n 'rowClassName',\n 'columns',\n 'fixedRows',\n 'footData',\n 'rowAttributes',\n 'rowspanAndColspan',\n 'scroll',\n 'cellEmptyContent',\n 'pagination',\n 'attach',\n 'onCellClick',\n 'onRowClick',\n 'onRowDblclick',\n 'onRowMouseover',\n 'onRowMousedown',\n 'onRowMouseenter',\n 'onRowMouseleave',\n 'onRowMouseup',\n] as const;\n\nexport type TrPropsKeys = typeof TABLE_PROPS[number];\n\nexport interface TrProps extends TrCommonProps {\n rowKey: string;\n row: TableRowData;\n rowIndex: number;\n ellipsisOverlayClassName: string;\n classPrefix: string;\n dataLength: number;\n rowAndColFixedPosition?: RowAndColFixedPosition;\n skipSpansMap?: Map<string, SkipSpansValue>;\n tableElm?: any;\n // HTMLDivElement\n tableContentElm?: any;\n cellEmptyContent: TdBaseTableProps['cellEmptyContent'];\n virtualConfig: VirtualScrollConfig;\n attach?: AttachNode;\n active?: boolean;\n isHover?: boolean;\n reviveCells?: Map<number, { row: TableRowData; rowspan: number; colspan: number }>;\n}\n\nexport const ROW_LISTENERS = [\n 'click',\n 'dblclick',\n 'mouseover',\n 'mousedown',\n 'mouseenter',\n 'mouseleave',\n 'mouseup',\n] as const;\n\nexport function renderCell(\n params: BaseTableCellParams<TableRowData>,\n slots: SetupContext['slots'],\n extra?: {\n cellEmptyContent?: TdBaseTableProps['cellEmptyContent'];\n pagination?: PaginationProps;\n },\n) {\n const { col, row, rowIndex } = params;\n // support serial number column\n if (col.colKey === 'serial-number') {\n const { current, pageSize, defaultCurrent, defaultPageSize } = extra?.pagination || {};\n const tCurrent = current || defaultCurrent;\n const tPageSize = pageSize || defaultPageSize;\n if (tPageSize && tCurrent) {\n return tPageSize * (tCurrent - 1) + rowIndex + 1;\n }\n return rowIndex + 1;\n }\n if (isFunction(col.cell)) {\n return col.cell(h, params);\n }\n if (slots[col.colKey]) {\n return slots[col.colKey](params);\n }\n if (isString(col.cell) && slots[col.cell]) {\n return slots[col.cell](params);\n }\n if (isFunction(col.render)) {\n return col.render(h, { ...params, type: 'cell' });\n }\n const r = get(row, col.colKey);\n // 0 和 false 属于正常可用之,不能使用兜底逻辑 cellEmptyContent\n if (![undefined, '', null].includes(r)) return r;\n // cellEmptyContent 作为空数据兜底显示,用户可自定义\n if (extra?.cellEmptyContent) {\n return isFunction(extra.cellEmptyContent) ? extra.cellEmptyContent(h, params) : extra.cellEmptyContent;\n }\n if (slots.cellEmptyContent) return slots.cellEmptyContent(params);\n if (slots['cell-empty-content']) return slots['cell-empty-content'](params);\n return r;\n}\n\n// 表格行组件\nexport default defineComponent({\n name: 'TR',\n props: {\n row: Object as PropType<TableRowData>,\n rowIndex: Number,\n dataLength: Number,\n ellipsisOverlayClassName: String,\n classPrefix: String,\n rowAndColFixedPosition: Map as PropType<RowAndColFixedPosition>,\n // 合并单元格,是否跳过渲染\n skipSpansMap: Map as PropType<TrProps['skipSpansMap']>,\n // 虚拟滚动场景下,需要在窗口首行复活的合并单元格\n reviveCells: Map as PropType<TrProps['reviveCells']>,\n virtualConfig: Object as PropType<TrProps['virtualConfig']>,\n active: Boolean,\n isHover: Boolean,\n ...pick(baseTableProps, TABLE_PROPS),\n // eslint-disable-next-line\n tableElm: {},\n // eslint-disable-next-line\n tableContentElm: {},\n onRowMounted: Function,\n },\n emits: ['row-mounted'],\n setup(props: TrProps, context: SetupContext) {\n const { tableContentElm, active, isHover } = toRefs(props);\n const trRef = ref(null);\n const {\n tdEllipsisClass,\n tableBaseClass,\n tableColFixedClasses,\n tableRowFixedClasses,\n tdAlignClasses,\n tableDraggableClasses,\n } = useClassName();\n const trStyles = computed(() =>\n getRowFixedStyles(\n get(props.row, props.rowKey || 'id'),\n props.rowIndex,\n props.dataLength,\n props.fixedRows,\n props.rowAndColFixedPosition,\n tableRowFixedClasses,\n props.virtualConfig.isVirtualScroll.value ? props.virtualConfig.translateY.value : 0,\n ),\n );\n\n const trAttributes = computed(\n () => formatRowAttributes(props.rowAttributes, { row: props.row, rowIndex: props.rowIndex, type: 'body' }) || {},\n );\n\n const classes = computed(() => {\n const customClasses = formatRowClassNames(\n props.rowClassName,\n { row: props.row, rowKey: props.rowKey, rowIndex: props.rowIndex, type: 'body' },\n props.rowKey || 'id',\n );\n return [\n trStyles.value?.classes,\n customClasses,\n {\n [`${props.classPrefix}-table__row--active`]: active.value,\n [`${props.classPrefix}-table__row--hover`]: isHover.value,\n },\n ].filter((v) => v);\n });\n\n const { hasLazyLoadHolder, tRowHeight } = useLazyLoad(\n tableContentElm,\n trRef,\n reactive({ ...props.scroll, rowIndex: props.rowIndex }),\n );\n\n const getTrListeners = (row: TableRowData, rowIndex: number) => {\n const trListeners: { [eventName: string]: (e: MouseEvent) => void } = {};\n // add events to row\n ROW_LISTENERS.forEach((eventName) => {\n trListeners[`on${upperFirst(eventName)}`] = (e: MouseEvent) => {\n const p = { e, row, index: rowIndex };\n props[`onRow${upperFirst(eventName)}` as `onRow${Capitalize<typeof ROW_LISTENERS[number]>}`]?.(p);\n };\n });\n return trListeners;\n };\n\n // 触发 row 的更新行高事件,通知虚拟滚动相关逻辑\n const notifyVirtualSizeUpdate = () => {\n if (props.virtualConfig?.isVirtualScroll.value) {\n context.emit('row-mounted', {\n ref: trRef,\n data: props.row,\n });\n }\n };\n\n onMounted(() => {\n nextTick(() => {\n notifyVirtualSizeUpdate();\n });\n });\n\n // 有可能因为 row-key 带来组件复用,这时候通过 update 进行更新\n onUpdated(() => {\n nextTick(() => {\n notifyVirtualSizeUpdate();\n });\n });\n\n function renderEllipsisCell(cellParams: BaseTableCellParams<TableRowData>, params: RenderEllipsisCellParams) {\n const { cellNode } = params;\n const { col, colIndex } = cellParams;\n\n let content: SlotReturnValue;\n if (isFunction(col.ellipsis)) {\n content = col.ellipsis(h, cellParams);\n } else if (typeof col.ellipsis === 'object' && isFunction(col.ellipsis.content)) {\n content = col.ellipsis.content(h, cellParams);\n } else if (context.slots[`ellipsis-${col.colKey}`]) {\n // support ellipsis-<colKey> to define one column cell ellipsis-content\n content = context.slots[`ellipsis-${col.colKey}`](cellParams);\n } else if (context.slots.ellipsis) {\n // support ellipsis slot to define all table cell ellipsis-content\n content = context.slots.ellipsis(cellParams);\n }\n\n let tooltipProps = {};\n if (typeof col.ellipsis === 'object') {\n tooltipProps = 'props' in col.ellipsis ? col.ellipsis.props : col.ellipsis || undefined;\n }\n const tableElement = props.tableElm as HTMLDivElement;\n let placement: TooltipProps['placement'] = colIndex === 0 ? 'top-left' : 'top';\n placement = colIndex === props.columns.length - 1 ? 'top-right' : placement;\n return (\n <TEllipsis\n placement={placement}\n attach={tableElement ? () => tableElement : undefined}\n tooltipContent={content && (() => content)}\n tooltipProps={tooltipProps}\n overlayClassName={props.ellipsisOverlayClassName}\n classPrefix={props.classPrefix}\n >\n {cellNode}\n </TEllipsis>\n );\n }\n\n function renderTd(params: BaseTableCellParams<TableRowData>, extra: RenderTdExtra) {\n const { col, colIndex, rowIndex } = params;\n const { cellSpans, dataLength, rowAndColFixedPosition } = extra;\n const cellNode = renderCell(params, context.slots, {\n cellEmptyContent: extra.cellEmptyContent,\n pagination: props.pagination,\n });\n const tdStyles = getColumnFixedStyles(col, colIndex, rowAndColFixedPosition, tableColFixedClasses);\n const customClasses = formatClassNames(col.className, { ...params, type: 'td' });\n const classes = [\n tdStyles.classes,\n customClasses,\n {\n [tdEllipsisClass]: col.ellipsis,\n [tableBaseClass.tdLastRow]: rowIndex + cellSpans.rowspan === dataLength,\n [tableBaseClass.tdFirstCol]: colIndex === 0 && props.rowspanAndColspan,\n [tdAlignClasses[col.align]]: col.align && col.align !== 'left',\n // 标记可拖拽列\n [tableDraggableClasses.handle]: col.colKey === 'drag',\n },\n ];\n const onClick = (e: MouseEvent) => {\n const p = { ...params, e };\n if (col.stopPropagation) {\n e.stopPropagation();\n }\n props.onCellClick?.(p);\n };\n const normalAttrs = isFunction(col.attrs) ? col.attrs({ ...params, type: 'td' }) : col.attrs;\n const attrs = { ...normalAttrs, ...cellSpans };\n return (\n <td key={col.colKey || colIndex} class={classes} style={tdStyles.style} {...attrs} onClick={onClick}>\n {col.ellipsis ? renderEllipsisCell(params, { cellNode }) : cellNode}\n </td>\n );\n }\n\n return () => {\n const { columns, skipSpansMap, row, dataLength, rowAndColFixedPosition } = props;\n const columnVNodeList = columns?.map((col, colIndex) => {\n const cellSpans: RowspanColspan = {};\n const params = {\n row,\n col,\n rowIndex: props.rowIndex,\n colIndex,\n };\n // 虚拟滚动场景下,合并块起始单元格已滚出渲染窗口时,在窗口首行复活该合并单元格,\n // 使用合并块起始行数据渲染,并将 rowspan 调整为剩余可见行数,避免表格错位\n const reviveCell = props.reviveCells?.get(colIndex);\n if (reviveCell) {\n reviveCell.rowspan > 1 && (cellSpans.rowspan = reviveCell.rowspan);\n reviveCell.colspan > 1 && (cellSpans.colspan = reviveCell.colspan);\n return renderTd(\n { row: reviveCell.row, col, rowIndex: props.rowIndex, colIndex },\n {\n dataLength,\n rowAndColFixedPosition,\n columnLength: columns.length,\n cellSpans,\n cellEmptyContent: props.cellEmptyContent,\n },\n );\n }\n let spanState = null;\n if (props.skipSpansMap.size) {\n const cellKey = getCellKey(row, props.rowKey, col.colKey, colIndex);\n spanState = skipSpansMap.get(cellKey) || {};\n spanState?.rowspan > 1 && (cellSpans.rowspan = spanState.rowspan);\n spanState?.colspan > 1 && (cellSpans.colspan = spanState.colspan);\n if (spanState.skipped) return null;\n }\n return renderTd(params, {\n dataLength,\n rowAndColFixedPosition,\n columnLength: columns.length,\n cellSpans,\n cellEmptyContent: props.cellEmptyContent,\n });\n });\n\n return (\n <tr\n ref={trRef}\n {...trAttributes.value}\n style={trStyles.value?.style}\n class={classes.value}\n {...getTrListeners(row, props.rowIndex)}\n >\n {hasLazyLoadHolder.value\n ? [<td style={{ height: `${tRowHeight.value}px`, border: 'none' }} />]\n : columnVNodeList}\n </tr>\n );\n };\n },\n});\n"],"names":["_isSlot","s","Object","prototype","toString","call","_isVNode","TABLE_PROPS","ROW_LISTENERS","renderCell","params","slots","extra","col","row","rowIndex","colKey","_ref","pagination","current","pageSize","defaultCurrent","defaultPageSize","tCurrent","tPageSize","isFunction","cell","h","isString","render","_objectSpread","type","r","get","includes","cellEmptyContent","defineComponent","name","props","Number","dataLength","ellipsisOverlayClassName","String","classPrefix","rowAndColFixedPosition","Map","skipSpansMap","reviveCells","virtualConfig","active","Boolean","isHover","pick","baseTableProps","tableElm","tableContentElm","onRowMounted","Function","emits","setup","context","_toRefs","toRefs","trRef","ref","_useClassName","useClassName","tdEllipsisClass","tableBaseClass","tableColFixedClasses","tableRowFixedClasses","tdAlignClasses","tableDraggableClasses","trStyles","computed","getRowFixedStyles","rowKey","fixedRows","isVirtualScroll","value","translateY","trAttributes","formatRowAttributes","rowAttributes","classes","_trStyles$value","customClasses","formatRowClassNames","rowClassName","_defineProperty","concat","filter","v","_useLazyLoad","useLazyLoad","reactive","scroll","hasLazyLoadHolder","tRowHeight","getTrListeners","trListeners","forEach","eventName","upperFirst","e","_props","p","index","notifyVirtualSizeUpdate","_props$virtualConfig","emit","data","onMounted","nextTick","onUpdated","renderEllipsisCell","cellParams","cellNode","colIndex","content","ellipsis","_typeof","tooltipProps","tableElement","placement","columns","length","_createVNode","TEllipsis","_default","renderTd","cellSpans","tdStyles","getColumnFixedStyles","formatClassNames","className","tdLastRow","rowspan","tdFirstCol","rowspanAndColspan","align","handle","onClick","_props$onCellClick","stopPropagation","onCellClick","normalAttrs","attrs","_mergeProps","style","_trStyles$value2","columnVNodeList","map","_props$reviveCells","reviveCell","colspan","columnLength","spanState","size","_spanState","_spanState2","cellKey","getCellKey","skipped","height","border"],"mappings":"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"}