UNPKG

xdesign-vue-next

Version:

XDesign Component for vue-next

1 lines 19.4 kB
{"version":3,"file":"tr.mjs","sources":["../../src/table/tr.tsx"],"sourcesContent":["import { defineComponent, PropType, SetupContext, h, computed, ref, reactive, toRefs, watch } from 'vue';\nimport isFunction from 'lodash/isFunction';\nimport upperFirst from 'lodash/upperFirst';\nimport isString from 'lodash/isString';\nimport pick from 'lodash/pick';\nimport get from 'lodash/get';\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 './interface';\nimport { getCellKey, SkipSpansValue } from './hooks/useRowspanAndColspan';\nimport { TooltipProps } from '../tooltip';\nimport { PaginationProps } from '..';\nimport { VirtualScrollConfig } from '../hooks/useVirtualScrollNew';\nimport { AttachNode } 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}\n\nexport const ROW_LISTENERS = ['click', 'dblclick', 'mouseover', 'mousedown', 'mouseenter', 'mouseleave', 'mouseup'];\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: 'XR',\n\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 ...pick(baseTableProps, TABLE_PROPS),\n // eslint-disable-next-line\n tableElm: {},\n // eslint-disable-next-line\n tableContentElm: {},\n },\n\n emits: ['row-mounted'],\n\n setup(props: TrProps, context: SetupContext) {\n const { tableContentElm } = 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 ),\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, rowIndex: props.rowIndex, type: 'body' },\n props.rowKey || 'id',\n );\n return [trStyles.value?.classes, customClasses].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)}`]?.(p);\n };\n });\n return trListeners;\n };\n\n watch([trRef], () => {\n if (props.virtualConfig?.isVirtualScroll.value) {\n context.emit('row-mounted', {\n ref: trRef,\n data: props.row,\n });\n }\n });\n\n function renderEllipsisCell(cellParams: BaseTableCellParams<TableRowData>, params: RenderEllipsisCellParams) {\n const { cellNode } = params;\n const { col, colIndex } = cellParams;\n let content = isFunction(col.ellipsis) ? col.ellipsis(h, cellParams) : undefined;\n if (typeof col.ellipsis === 'object' && isFunction(col.ellipsis.content)) {\n content = col.ellipsis.content(h, cellParams);\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 columVNodeList = 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 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 : columVNodeList}\n </tr>\n );\n };\n },\n});\n"],"names":["_isVNode","isFunction","isString","type","name","row","rowIndex","dataLength","ellipsisOverlayClassName","classPrefix","rowAndColFixedPosition","skipSpansMap","virtualConfig","pick","tableContentElm","setup","get","ROW_LISTENERS","e","index","watch","context","ref","tooltipProps","placement","cellNode","col","colIndex","cellSpans","_createVNode","height","border"],"mappings":"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"}