tdesign-vue-next
Version:
TDesign Component for vue-next
1 lines • 26.6 kB
Source Map (JSON)
{"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}\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 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 },\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 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","virtualConfig","active","Boolean","isHover","pick","baseTableProps","tableElm","tableContentElm","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","spanState","size","_spanState","_spanState2","cellKey","getCellKey","colspan","skipped","columnLength","height","border"],"mappings":"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"}