UNPKG

tav-ui

Version:
1 lines 6.02 kB
{"version":3,"file":"useCustomRow2.mjs","sources":["../../../../../../../../packages/components/table/src/hooks/useCustomRow.ts"],"sourcesContent":["import { unref } from 'vue'\nimport { isFunction, isString } from '@tav-ui/utils/is'\nimport { ROW_KEY } from '../const'\nimport type { ComputedRef } from 'vue'\nimport type { BasicTableProps, TableEmitType } from '../types/table'\n\ntype Recordable<T = any> = Record<string, T>\ninterface Options {\n setSelectedRowKeys: (keys: string[]) => void\n getSelectRowKeys: () => string[]\n clearSelectedRowKeys: () => void\n emit: TableEmitType\n getAutoCreateKey: ComputedRef<boolean | undefined>\n}\n\nfunction getKey(\n record: Recordable,\n rowKey: string | ((record: Record<string, any>) => string) | undefined,\n autoCreateKey?: boolean\n) {\n if (!rowKey || autoCreateKey) {\n return record[ROW_KEY]\n }\n if (isString(rowKey)) {\n return record[rowKey]\n }\n if (isFunction(rowKey)) {\n return record[rowKey(record)]\n }\n return null\n}\n\nexport function useCustomRow(\n propsRef: ComputedRef<BasicTableProps>,\n { setSelectedRowKeys, getSelectRowKeys, getAutoCreateKey, clearSelectedRowKeys, emit }: Options\n) {\n const customRow = (record: Recordable, index: number) => {\n return {\n onClick: (e: Event) => {\n e?.stopPropagation()\n function handleClick() {\n const { rowSelection, rowKey, clickToRowSelect } = unref(propsRef)\n if (!rowSelection || !clickToRowSelect) return\n const keys = getSelectRowKeys()\n const key = getKey(record, rowKey, unref(getAutoCreateKey))\n if (!key) return\n\n const isCheckbox = rowSelection.type === 'checkbox'\n if (isCheckbox) {\n // 找到tr\n const tr: any = (e as MouseEvent)\n .composedPath?.()\n .find((dom: any) => dom.tagName === 'TR')\n if (!tr) return\n // 找到Checkbox,检查是否为disabled\n const checkBox = tr.querySelector('input[type=checkbox]')\n if (!checkBox || checkBox.hasAttribute('disabled')) return\n if (!keys.includes(key)) {\n setSelectedRowKeys([...keys, key])\n return\n }\n const keyIndex = keys.findIndex((item) => item === key)\n keys.splice(keyIndex, 1)\n setSelectedRowKeys(keys)\n return\n }\n\n const isRadio = rowSelection.type === 'radio'\n if (isRadio) {\n if (!keys.includes(key)) {\n if (keys.length) {\n clearSelectedRowKeys()\n }\n setSelectedRowKeys([key])\n return\n }\n clearSelectedRowKeys()\n }\n }\n handleClick()\n emit('row-click', record, index, e)\n },\n onDblclick: (event: Event) => {\n emit('row-dbClick', record, index, event)\n },\n onContextmenu: (event: Event) => {\n emit('row-contextmenu', record, index, event)\n },\n onMouseenter: (event: Event) => {\n emit('row-mouseenter', record, index, event)\n },\n onMouseleave: (event: Event) => {\n emit('row-mouseleave', record, index, event)\n },\n }\n }\n\n return {\n customRow,\n }\n}\n"],"names":[],"mappings":"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"}