UNPKG

tdesign-vue-next

Version:
1 lines 7.12 kB
{"version":3,"file":"useTableHeader.mjs","sources":["../../../../components/table/hooks/useTableHeader.tsx"],"sourcesContent":["import { SetupContext, computed, h } from 'vue';\nimport { isString, isFunction } from 'lodash-es';\n\nimport { BaseTableCol, PrimaryTableCol, TableRowData, TdBaseTableProps } from '../type';\nimport { getThRowspanAndColspan, getThList } from './useMultiHeader';\nimport useClassName from './useClassName';\nimport { TNodeReturnValue } from '../../common';\nimport { BaseTableColumns } from '../types';\nimport TEllipsis from '../components/ellipsis';\n\n// 渲染表头的通用方法\nexport function renderTitle(slots: SetupContext['slots'], col: BaseTableColumns[0], index: number) {\n const params = { col, colIndex: index };\n if (isFunction(col.title)) {\n return col.title(h, params);\n }\n if (isString(col.title) && slots[col.title]) {\n return slots[col.title](params);\n }\n if (isFunction(col.render)) {\n return (\n col.render(h, {\n ...params,\n type: 'title',\n row: {},\n rowIndex: -1,\n }) || col.title\n );\n }\n return col.title;\n}\n\nexport default function useTableHeader(props: TdBaseTableProps) {\n const { tableSortClasses, tableFilterClasses } = useClassName();\n // 一次性获取 colspan 和 rowspan 可以避免其他数据更新导致的重复计算\n const spansAndLeafNodes = computed(() => getThRowspanAndColspan(props.columns));\n // 表头二维数据\n const thList = computed(() => getThList(props.columns));\n const isMultipleHeader = computed(() => thList.value.length > 1);\n\n const renderTitleWidthIcon = (\n [title, sortIcon, filterIcon]: TNodeReturnValue[],\n col: PrimaryTableCol<TableRowData>,\n colIndex: number,\n ellipsisTitle: BaseTableCol['ellipsisTitle'],\n attach: HTMLElement,\n extra?: {\n classPrefix: string;\n ellipsisOverlayClassName: string;\n },\n ) => {\n const classes = {\n [tableSortClasses.sortable]: sortIcon,\n [tableFilterClasses.filterable]: filterIcon,\n };\n const content = isFunction(ellipsisTitle) ? ellipsisTitle(h, { col, colIndex }) : undefined;\n const isEllipsis = ellipsisTitle !== undefined ? Boolean(ellipsisTitle) : Boolean(col.ellipsis);\n return (\n <div class={classes}>\n <div class={tableSortClasses.title}>\n {isEllipsis ? (\n <TEllipsis\n placement=\"bottom\"\n attach={props.attach || (attach ? () => attach : undefined)}\n tooltipContent={content && (() => content)}\n tooltipProps={typeof ellipsisTitle === 'object' ? ellipsisTitle : undefined}\n classPrefix={extra?.classPrefix}\n overlayClassName={extra?.ellipsisOverlayClassName}\n >\n {title}\n </TEllipsis>\n ) : (\n <div>{title}</div>\n )}\n {Boolean(sortIcon || filterIcon) && (\n <div class={tableFilterClasses.iconWrap}>\n {sortIcon}\n {filterIcon}\n </div>\n )}\n </div>\n </div>\n );\n };\n\n return {\n thList,\n isMultipleHeader,\n spansAndLeafNodes,\n renderTitleWidthIcon,\n };\n}\n"],"names":["_isSlot","s","Object","prototype","toString","call","_isVNode","renderTitle","slots","col","index","params","colIndex","isFunction","title","h","isString","render","_objectSpread","type","row","rowIndex","useTableHeader","props","_useClassName","useClassName","tableSortClasses","tableFilterClasses","spansAndLeafNodes","computed","getThRowspanAndColspan","columns","thList","getThList","isMultipleHeader","value","length","renderTitleWidthIcon","_ref","ellipsisTitle","attach","extra","_ref2","_slicedToArray","sortIcon","filterIcon","classes","_defineProperty","sortable","filterable","content","isEllipsis","Boolean","ellipsis","_createVNode","TEllipsis","_typeof","classPrefix","ellipsisOverlayClassName","iconWrap"],"mappings":"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"}