UNPKG

tav-ui

Version:
1 lines 5.29 kB
{"version":3,"file":"useColumnAutoWidth2.mjs","sources":["../../../../../../../../packages/components/table/src/hooks/useColumnAutoWidth.ts"],"sourcesContent":["import { MAX_ACTION_NUMBER } from '../const'\nimport type { ActionItem } from '../types/tableAction'\n\nconst containDotTextWidth = 12 * 2 + 7.5\nconst textWidth = (n: number) => 12 * n\nconst dividerWidth = 17\nconst padding = 10 * 2\nconst moreBtnWidth = 13.5 + 10\nconst maxWidth = containDotTextWidth * 3 + dividerWidth * 2\nconst minWidth = 60\n\n/**\n * @description 如果内容长度大于3,则修改为 xx.. 基于字体是12px的基础之下长度为32px。\n * @param actions\n * @param labelMaxLength\n * @returns\n */\nexport function limitActionLabel(actions: ActionItem[], labelMaxLength = 3) {\n return actions.map((action) => {\n const { label } = action\n if (label && label.length > labelMaxLength) {\n action.tooltip = label\n action.label = `${label.substring(0, 2)}..`\n }\n return action\n })\n}\n\nexport function isOverMaxWidth(actions: ActionItem[] | null) {\n if (!actions) return false\n\n const getTotal = (_actions: ActionItem[]) => {\n return _actions.reduce((total, action, idx) => {\n if (action.label) {\n total += textWidth(action.label.length)\n } else {\n total += 0\n }\n\n if (idx !== _actions.length - 1) {\n total += dividerWidth\n }\n return total\n }, 0)\n }\n\n const result = getTotal(actions) > maxWidth\n return result\n}\n\nexport function useColumnActionAutoWidth(actions: ActionItem[] | null, handleLimit = true) {\n if (!actions) return undefined\n\n const getTotal = (_actions: ActionItem[]) => {\n return _actions.reduce((total, action, idx) => {\n if (action.label) {\n if (action.label.includes('..')) {\n total += containDotTextWidth\n } else {\n total += textWidth(action.label.length)\n }\n } else {\n total += 0\n }\n\n if (idx !== _actions.length - 1) {\n total += dividerWidth\n } else {\n total += padding\n }\n return total\n }, 0)\n }\n\n const handledActions = handleLimit\n ? limitActionLabel(JSON.parse(JSON.stringify(actions)))\n : JSON.parse(JSON.stringify(actions))\n if (handledActions.length <= MAX_ACTION_NUMBER) {\n const total = getTotal(handledActions)\n return total < minWidth ? minWidth : total\n } else {\n const contentActions = handledActions.slice(0, 2)\n let total = getTotal(contentActions)\n total += moreBtnWidth\n return total < minWidth ? minWidth : total\n }\n}\n"],"names":[],"mappings":"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"}