UNPKG

element-plus

Version:

A Component Library for Vue 3

98 lines (93 loc) 3.75 kB
'use strict'; Object.defineProperty(exports, '__esModule', { value: true }); var vue = require('vue'); var lodashUnified = require('lodash-unified'); require('../../../../utils/index.js'); var util = require('../util.js'); var tokens = require('../tokens.js'); var style = require('../../../../utils/dom/style.js'); function useEvents(props) { const parent = vue.inject(tokens.TABLE_INJECTION_KEY); const tooltipContent = vue.ref(""); const tooltipTrigger = vue.ref(vue.h("div")); const handleEvent = (event, row, name) => { var _a; const table = parent; const cell = util.getCell(event); let column; const namespace = (_a = table == null ? void 0 : table.vnode.el) == null ? void 0 : _a.dataset.prefix; if (cell) { column = util.getColumnByCell({ columns: props.store.states.columns.value }, cell, namespace); if (column) { table == null ? void 0 : table.emit(`cell-${name}`, row, column, cell, event); } } table == null ? void 0 : table.emit(`row-${name}`, row, column, event); }; const handleDoubleClick = (event, row) => { handleEvent(event, row, "dblclick"); }; const handleClick = (event, row) => { props.store.commit("setCurrentRow", row); handleEvent(event, row, "click"); }; const handleContextMenu = (event, row) => { handleEvent(event, row, "contextmenu"); }; const handleMouseEnter = lodashUnified.debounce((index) => { props.store.commit("setHoverRow", index); }, 30); const handleMouseLeave = lodashUnified.debounce(() => { props.store.commit("setHoverRow", null); }, 30); const handleCellMouseEnter = (event, row, tooltipEffect) => { var _a; const table = parent; const cell = util.getCell(event); const namespace = (_a = table == null ? void 0 : table.vnode.el) == null ? void 0 : _a.dataset.prefix; if (cell) { const column = util.getColumnByCell({ columns: props.store.states.columns.value }, cell, namespace); const hoverState = table.hoverState = { cell, column, row }; table == null ? void 0 : table.emit("cell-mouse-enter", hoverState.row, hoverState.column, hoverState.cell, event); } const cellChild = event.target.querySelector(".cell"); if (!(style.hasClass(cellChild, `${namespace}-tooltip`) && cellChild.childNodes.length)) { return; } const range = document.createRange(); range.setStart(cellChild, 0); range.setEnd(cellChild, cellChild.childNodes.length); const rangeWidth = range.getBoundingClientRect().width; const padding = (Number.parseInt(style.getStyle(cellChild, "paddingLeft"), 10) || 0) + (Number.parseInt(style.getStyle(cellChild, "paddingRight"), 10) || 0); if (rangeWidth + padding > cellChild.offsetWidth || cellChild.scrollWidth > cellChild.offsetWidth) { util.createTablePopper(parent == null ? void 0 : parent.refs.tableWrapper, cell, cell.innerText || cell.textContent, { placement: "top", strategy: "fixed" }, tooltipEffect); } }; const handleCellMouseLeave = (event) => { const cell = util.getCell(event); if (!cell) return; const oldHoverState = parent == null ? void 0 : parent.hoverState; parent == null ? void 0 : parent.emit("cell-mouse-leave", oldHoverState == null ? void 0 : oldHoverState.row, oldHoverState == null ? void 0 : oldHoverState.column, oldHoverState == null ? void 0 : oldHoverState.cell, event); }; return { handleDoubleClick, handleClick, handleContextMenu, handleMouseEnter, handleMouseLeave, handleCellMouseEnter, handleCellMouseLeave, tooltipContent, tooltipTrigger }; } exports["default"] = useEvents; //# sourceMappingURL=events-helper.js.map