UNPKG

tav-ui

Version:
1 lines 8 kB
{"version":3,"file":"useCellHover2.mjs","sources":["../../../../../../../../packages/components/table-pro/src/hooks/useCellHover.ts"],"sourcesContent":["import { unref } from 'vue'\nimport { $Tooltip } from '@tav-ui/hooks/web/useTooltip'\nimport { isBoolean } from '@tav-ui/utils/is'\nimport { ContentPrefixCls } from '../components/cell'\nimport { TOOLTIP_PLACEMENT } from '../const'\nimport type { ComputedRef } from 'vue'\nimport type { VxeGridDefines } from 'vxe-table'\nimport type { TableProGridEmit, TableProProps } from '../types'\n\nfunction showCellTooltip(\n instances: Map<any, any>,\n tablePropsRef: ComputedRef<TableProProps>,\n // tableId: TableProProps['id'],\n // showTooltip: TableProProps['showTooltip'],\n params: VxeGridDefines.CellMouseenterEventParams\n) {\n const { cell, column, _rowIndex, _columnIndex, rowid } = params\n const { params: columnParams = {} } = column\n const { showTooltip: columnShowTooltip } = columnParams\n const { showTooltip, id: tableId } = unref(tablePropsRef)\n const isColumnShowTooltip = isBoolean(columnShowTooltip) ? columnShowTooltip : showTooltip\n if (isColumnShowTooltip) {\n const id = `${tableId}:row_${_rowIndex}-${_columnIndex}-${rowid}`\n const el = (cell as HTMLElement).querySelector(`.${ContentPrefixCls}`) as HTMLElement\n let title = ''\n let isCellOverflow = false\n if (el) {\n title = ((column.type === 'html' ? el.innerText : el.textContent) ?? '').trim()\n isCellOverflow = el.scrollWidth > el.clientWidth\n }\n // let instance\n // if (!instances.has(id)) {\n // instance = $Tooltip(el as HTMLElement, {\n // placement: TOOLTIP_PLACEMENT,\n // title,\n // id,\n // delay: 100,\n // })\n // instances.set(id, instance)\n // } else {\n // instance = instances.get(id)\n // }\n const instance = $Tooltip(el as HTMLElement, {\n placement: TOOLTIP_PLACEMENT,\n title,\n id,\n delay: 100,\n })\n instances.set(id, instance)\n isCellOverflow && instance?.showTooltip(el)\n }\n}\n\nfunction hideCellTooltip(\n instances: Map<any, any>,\n tablePropsRef: ComputedRef<TableProProps>,\n // tableId: TableProProps['id'],\n // showTooltip: TableProProps['showTooltip'],\n params: VxeGridDefines.CellMouseenterEventParams\n) {\n const { column, _rowIndex, _columnIndex, rowid } = params\n const { params: columnParams = {} } = column\n const { showTooltip: columnShowTooltip } = columnParams\n const { showTooltip, id: tableId } = unref(tablePropsRef)\n const isColumnShowTooltip = isBoolean(columnShowTooltip) ? columnShowTooltip : showTooltip\n if (isColumnShowTooltip) {\n const id = `${tableId}:row_${_rowIndex}-${_columnIndex}-${rowid}`\n const instance = instances.get(id)\n instance?.hideTooltip()\n }\n}\n\nfunction hideCellAllTooltip(instances: Map<any, any>) {\n if (instances.size > 0) {\n instances.forEach((instance) => {\n instance?.hideTooltip()\n })\n }\n}\n\nfunction deleteTitle(cellEl: HTMLElement) {\n const targetCls = ['vxe-header--column', 'vxe-body--column', 'vxe-footer--column']\n const cotainsNum = targetCls.reduce((total, cur) => {\n if (cellEl.classList.contains(cur)) {\n total += 1\n }\n return total\n }, 0)\n const isColumnTdEL = cotainsNum > 0\n if (isColumnTdEL) {\n cellEl.removeAttribute('title')\n cellEl.querySelector('.vxe-cell')!.removeAttribute('title')\n }\n}\n\nexport function useCellHover(\n tablePropsRef: ComputedRef<TableProProps>,\n // id: TableProProps['id'],\n // showTooltip: TableProProps['showTooltip'],\n emit: TableProGridEmit\n) {\n const instances = new Map<string, any>()\n\n const onCellMouseenter = (params: VxeGridDefines.CellMouseenterEventParams) => {\n // 详情可参考 vxetable body.ts triggerHeaderTooltipEvent/triggerBodyTooltipEvent/triggerFooterTooltipEvent\n if (!params || ['action', 'actions'].includes(params.column.field)) return\n showCellTooltip(instances, tablePropsRef, params)\n // showCellTooltip(instances, id, showTooltip, params)\n emit('CellMouseenter', params)\n // setTimeout(() => {\n // deleteTitle(params.cell)\n // }, 150)\n }\n\n const onCellMouseleave = (params?: VxeGridDefines.CellMouseleaveEventParams) => {\n if (!params) {\n hideCellAllTooltip(instances)\n } else {\n hideCellTooltip(instances, tablePropsRef, params)\n // hideCellTooltip(instances, id, showTooltip, params)\n emit('CellMouseleave', params)\n }\n }\n\n return {\n onCellMouseenter,\n onCellMouseleave,\n instances,\n }\n}\n"],"names":[],"mappings":"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"}