UNPKG

tdesign-mobile-vue

Version:
1 lines 28.4 kB
{"version":3,"file":"base-table.mjs","sources":["../../src/table/base-table.tsx"],"sourcesContent":["import { defineComponent, computed, h, ref, SetupContext, toRefs } from 'vue';\nimport { get, isFunction, isString } from 'lodash-es';\nimport baseTableProps from './base-table-props';\nimport config from '../config';\nimport useClassName from './hooks/useClassName';\nimport useStyle, { formatCSSUnit } from './hooks/useStyle';\nimport useFixed, { getRowFixedStyles, getColumnFixedStyles } from './hooks/useFixed';\nimport { renderTitle } from './hooks/useTableHeader';\nimport useRowspanAndColspan from './hooks/useRowspanAndColspan';\nimport {\n formatClassNames,\n formatRowAttributes,\n formatRowClassNames,\n handleCellSpan,\n isFirstColumnInSpan,\n isLastRowInSpan,\n} from './utils';\nimport { ClassName } from '../common';\n\nimport { BaseTableCellParams, BaseTableCol, TableRowData, TdBaseTableProps } from './type';\nimport TLoading from '../loading';\nimport { TdLoadingProps } from '../loading/type';\nimport { useConfig } from '../config-provider/useConfig';\nimport { useTNodeJSX } from '../hooks/tnode';\n\nconst { prefix } = config;\n\nexport default defineComponent({\n name: `${prefix}-base-table`,\n props: baseTableProps,\n emits: ['cell-click', 'row-click', 'scroll'],\n setup(props, context) {\n const tableRef = ref();\n const theadRef = ref();\n const tableElmRef = ref();\n const renderTNodeJSX = useTNodeJSX();\n const { data, columns, rowKey, rowspanAndColspan } = toRefs(props);\n const {\n classPrefix,\n tableLayoutClasses,\n tableHeaderClasses,\n tableBaseClass,\n tdAlignClasses,\n tdEllipsisClass,\n tableRowFixedClasses,\n tableColFixedClasses,\n } = useClassName();\n const { globalConfig, t } = useConfig('table');\n const defaultLoadingContent = h(TLoading, { ...(props.loadingProps as TdLoadingProps) });\n // 表格基础样式类\n const { tableClasses, tableContentStyles, tableElementStyles } = useStyle(props);\n const {\n rowAndColFixedPosition,\n tableContentRef,\n isFixedColumn,\n isFixedHeader,\n showColumnShadow,\n refreshTable,\n updateColumnFixedShadow,\n } = useFixed(props);\n\n const { skipSpansMap } = useRowspanAndColspan(data, columns, rowKey, rowspanAndColspan);\n\n const defaultColWidth = props.tableLayout === 'fixed' ? '80px' : undefined;\n\n const theadClasses = computed(() => [\n tableHeaderClasses.header,\n {\n [tableHeaderClasses.fixed]: Boolean(props.maxHeight || props.height),\n [tableBaseClass.bordered]: props.bordered,\n },\n ]);\n\n const tbodyClasses = computed(() => [tableBaseClass.body]);\n\n const ellipsisClasses = computed(() => [`${classPrefix}-table__ellipsis`, `${classPrefix}-text-ellipsis`]);\n\n const handleRowClick = (row: TableRowData, rowIndex: number, e: MouseEvent) => {\n props.onRowClick?.({ row, index: rowIndex, e });\n };\n\n const handleCellClick = (row: TableRowData, col: any, rowIndex: number, colIndex: number, e: MouseEvent) => {\n if (col.stopPropagation) {\n e.stopPropagation();\n }\n props.onCellClick?.({ row, col, rowIndex, colIndex, e });\n };\n\n const dynamicBaseTableClasses = computed(() => [\n {\n [tableBaseClass.headerFixed]: isFixedHeader.value,\n [tableBaseClass.columnFixed]: isFixedColumn.value,\n [tableColFixedClasses.leftShadow]: showColumnShadow.left,\n [tableColFixedClasses.rightShadow]: showColumnShadow.right,\n },\n tableClasses.value,\n ]);\n\n const tableElmClasses = computed(() => [[tableLayoutClasses[props.tableLayout || 'fixed']]]);\n\n const renderCell = (\n params: BaseTableCellParams<TableRowData>,\n slots: SetupContext['slots'],\n cellEmptyContent?: TdBaseTableProps['cellEmptyContent'],\n ) => {\n const { col, row, rowIndex } = params;\n // support serial number column\n if (col.colKey === 'serial-number') {\n return rowIndex + 1;\n }\n\n if (isFunction(col.cell)) {\n return col.cell(h, params);\n }\n\n if (slots[col.colKey]) {\n return slots[col.colKey](params);\n }\n\n if (isString(col.cell) && slots?.[col.cell]) {\n return slots[col.cell](params);\n }\n\n if (isFunction(col.render)) {\n return col.render(h, { ...params, type: 'cell' });\n }\n\n const r = get(row, col.colKey);\n // 0 和 false 属于正常可用值,不能使用兜底逻辑 cellEmptyContent\n if (![undefined, '', null].includes(r)) return r;\n\n // cellEmptyContent 作为空数据兜底显示,用户可自定义\n if (cellEmptyContent) {\n return isFunction(cellEmptyContent) ? cellEmptyContent(h, params) : cellEmptyContent;\n }\n if (context.slots.cellEmptyContent) return context.slots.cellEmptyContent(params);\n if (context.slots['cell-empty-content']) return context.slots['cell-empty-content'](params);\n return r;\n };\n\n const loadingClasses = computed(() => [`${classPrefix}-table__loading--full`]);\n\n const onInnerVirtualScroll = (e: Event) => {\n const target = (e.target || e.srcElement) as HTMLElement;\n updateColumnFixedShadow(target);\n props.onScroll?.({ params: e });\n };\n\n const tdClassName = (td_item: BaseTableCol<TableRowData>, extra?: Array<ClassName>) => {\n let className = '';\n if (td_item.ellipsis) {\n className = tdEllipsisClass;\n }\n if (td_item.align && td_item.align !== 'left') {\n className = `${className} ${tdAlignClasses[`${td_item.align}`]}`;\n }\n return [className, ...extra];\n };\n\n const colStyle = (col_item: BaseTableCol<TableRowData>) => {\n return {\n width: `${formatCSSUnit(col_item.width || defaultColWidth)}`,\n minWidth: `${\n !formatCSSUnit(col_item.width || defaultColWidth) && !col_item.minWidth && props.tableLayout === 'fixed'\n ? '80px'\n : formatCSSUnit(col_item.minWidth)\n }`,\n };\n };\n\n const thClassName = (item_th: BaseTableCol<TableRowData>, extra?: ClassName) => {\n let className = '';\n if (item_th.colKey) {\n className = `${classPrefix}-table__th-${item_th.colKey}`;\n }\n if (item_th.ellipsisTitle || item_th.ellipsis) {\n className = `${className} ${tdEllipsisClass}`;\n }\n if (item_th.align && item_th.align !== 'left') {\n className = `${className} ${tdAlignClasses[`${item_th.align}`]}`;\n }\n return [className, extra];\n };\n\n const renderTableBody = () => {\n const renderContentEmpty = renderTNodeJSX('empty') || t(globalConfig.value.empty);\n if (!props.data?.length && renderContentEmpty) {\n return (\n <tr class={tableBaseClass.emptyRow}>\n <td colspan={props.columns?.length}>\n <div class={tableBaseClass.empty}>{renderContentEmpty}</div>\n </td>\n </tr>\n );\n }\n if (props.data?.length) {\n return props.data?.map((tr_item, tr_index) => {\n const rowId = get(tr_item, props.rowKey || 'id') as string | number;\n const { style, classes } = getRowFixedStyles(\n rowId,\n tr_index,\n props.data?.length || 0,\n props.fixedRows as TdBaseTableProps['fixedRows'],\n rowAndColFixedPosition.value,\n tableRowFixedClasses,\n );\n\n const customClasses = formatRowClassNames(\n props.rowClassName,\n { row: tr_item, rowKey: props.rowKey, rowIndex: tr_index, type: 'body' },\n props.rowKey || 'id',\n );\n\n const trAttributes =\n formatRowAttributes(props.rowAttributes, { row: tr_item, rowIndex: tr_index, type: 'body' }) || {};\n\n return (\n <tr\n {...trAttributes}\n key={tr_index}\n style={style}\n class={[classes, customClasses]}\n onClick={($event) => {\n handleRowClick(tr_item, tr_index, $event);\n }}\n >\n {props.columns?.map((td_item, td_index) => {\n const params = { row: tr_item, col: td_item, rowIndex: tr_index, colIndex: td_index };\n const cellSpans: Record<string, number> = {};\n // 处理合并单元格\n const cellKey = `${get(tr_item, props.rowKey || 'id')}_${td_item.colKey || td_index}`;\n const { skipped, rowspan, colspan } = handleCellSpan(cellKey, skipSpansMap.value);\n\n if (skipped) return null;\n\n rowspan && (cellSpans.rowspan = rowspan);\n colspan && (cellSpans.colspan = colspan);\n\n const tdStyles = getColumnFixedStyles(\n td_item,\n td_index,\n rowAndColFixedPosition.value,\n tableColFixedClasses,\n );\n\n const customClasses = formatClassNames(td_item.className, {\n col: td_item,\n colIndex: td_index,\n row: tr_item,\n rowIndex: tr_index,\n type: 'td',\n });\n\n const cellClasses = [\n tdClassName(td_item, [tdStyles.classes, customClasses]),\n {\n // 合并单元格场景:最后一行移除底部边框\n [tableBaseClass.tdLastRow]: isLastRowInSpan(tr_index, rowspan, props.data?.length),\n // 合并单元格场景:第一列移除左边框\n [tableBaseClass.tdFirstCol]: props.rowspanAndColspan && isFirstColumnInSpan(td_index, rowspan),\n },\n ];\n\n return (\n <td\n key={td_index}\n style={tdStyles.style}\n class={cellClasses}\n onClick={($event) => {\n handleCellClick(tr_item, td_item, tr_index, td_index, $event);\n }}\n {...cellSpans}\n >\n <div class={td_item.ellipsis && ellipsisClasses.value}>\n {renderCell(params, context.slots, props.cellEmptyContent)}\n </div>\n </td>\n );\n })}\n </tr>\n );\n });\n }\n };\n\n context.expose({\n refreshTable,\n });\n\n return () => {\n const renderLoading = renderTNodeJSX('loading', { defaultNode: defaultLoadingContent });\n\n return (\n <div ref={tableRef} class={dynamicBaseTableClasses.value} style=\"position: relative\">\n <div\n ref={tableContentRef}\n class={tableBaseClass.content}\n style={tableContentStyles.value}\n onScroll={onInnerVirtualScroll}\n >\n <table ref={tableElmRef} class={tableElmClasses.value} style={tableElementStyles.value}>\n <colgroup>\n {props.columns?.map((col_item) => {\n return <col key={col_item.colKey} style={colStyle(col_item)} />;\n })}\n </colgroup>\n {props.showHeader && (\n <thead ref={theadRef} class={theadClasses.value}>\n <tr>\n {props.columns?.map((item_th, index_th) => {\n const thStyles = getColumnFixedStyles(\n item_th,\n index_th,\n rowAndColFixedPosition.value,\n tableColFixedClasses,\n );\n return (\n <th\n key={index_th}\n class={thClassName(item_th, thStyles.classes)}\n style={thStyles.style}\n data-colKey={item_th.colKey}\n >\n <div class={(item_th.ellipsisTitle || item_th.ellipsis) && ellipsisClasses.value}>\n {renderTitle(context.slots, item_th, index_th)}\n </div>\n </th>\n );\n })}\n </tr>\n </thead>\n )}\n <tbody class={tbodyClasses.value}>{renderTableBody()}</tbody>\n </table>\n {renderLoading && <div class={loadingClasses.value}>{renderLoading}</div>}\n </div>\n </div>\n );\n };\n },\n});\n"],"names":["prefix","config","defineComponent","name","props","baseTableProps","emits","setup","context","tableRef","ref","theadRef","tableElmRef","renderTNodeJSX","useTNodeJSX","_toRefs","toRefs","data","columns","rowKey","rowspanAndColspan","_useClassName","useClassName","classPrefix","tableLayoutClasses","tableHeaderClasses","tableBaseClass","tdAlignClasses","tdEllipsisClass","tableRowFixedClasses","tableColFixedClasses","_useConfig","useConfig","globalConfig","t","defaultLoadingContent","h","TLoading","_objectSpread","loadingProps","_useStyle","useStyle","tableClasses","tableContentStyles","tableElementStyles","_useFixed","useFixed","rowAndColFixedPosition","tableContentRef","isFixedColumn","isFixedHeader","showColumnShadow","refreshTable","updateColumnFixedShadow","_useRowspanAndColspan","useRowspanAndColspan","skipSpansMap","defaultColWidth","tableLayout","theadClasses","computed","header","_defineProperty","fixed","Boolean","maxHeight","height","bordered","tbodyClasses","body","ellipsisClasses","concat","handleRowClick","row","rowIndex","e","_props$onRowClick","onRowClick","call","index","handleCellClick","col","colIndex","_props$onCellClick","stopPropagation","onCellClick","dynamicBaseTableClasses","headerFixed","value","columnFixed","leftShadow","left","rightShadow","right","tableElmClasses","renderCell","params","slots","cellEmptyContent","colKey","isFunction","cell","isString","render","type","r","get","includes","loadingClasses","onInnerVirtualScroll","_props$onScroll","target","srcElement","onScroll","tdClassName","td_item","extra","className","ellipsis","align","_toConsumableArray","colStyle","col_item","width","formatCSSUnit","minWidth","thClassName","item_th","ellipsisTitle","renderTableBody","_props$data","_props$data2","renderContentEmpty","empty","length","_props$columns","_createVNode","emptyRow","_props$data3","map","tr_item","tr_index","_props$data4","_props$columns2","rowId","_getRowFixedStyles","getRowFixedStyles","fixedRows","style","classes","customClasses","formatRowClassNames","rowClassName","trAttributes","formatRowAttributes","rowAttributes","_mergeProps","onClick","$event","td_index","_props$data5","cellSpans","cellKey","_handleCellSpan","handleCellSpan","skipped","rowspan","colspan","tdStyles","getColumnFixedStyles","formatClassNames","cellClasses","tdLastRow","isLastRowInSpan","tdFirstCol","isFirstColumnInSpan","expose","_props$columns3","_props$columns4","renderLoading","defaultNode","content","showHeader","index_th","thStyles","renderTitle"],"mappings":"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"}