UNPKG

tav-ui

Version:
87 lines (82 loc) 2.63 kB
'use strict'; Object.defineProperty(exports, '__esModule', { value: true }); var vue = require('vue'); var is = require('../../../../utils/is2.js'); var _const = require('../const2.js'); function getKey(record, rowKey, autoCreateKey) { if (!rowKey || autoCreateKey) { return record[_const.ROW_KEY]; } if (is.isString(rowKey)) { return record[rowKey]; } if (is.isFunction(rowKey)) { return record[rowKey(record)]; } return null; } function useCustomRow(propsRef, { setSelectedRowKeys, getSelectRowKeys, getAutoCreateKey, clearSelectedRowKeys, emit }) { const customRow = (record, index) => { return { onClick: (e) => { e?.stopPropagation(); function handleClick() { const { rowSelection, rowKey, clickToRowSelect } = vue.unref(propsRef); if (!rowSelection || !clickToRowSelect) return; const keys = getSelectRowKeys(); const key = getKey(record, rowKey, vue.unref(getAutoCreateKey)); if (!key) return; const isCheckbox = rowSelection.type === "checkbox"; if (isCheckbox) { const tr = e.composedPath?.().find((dom) => dom.tagName === "TR"); if (!tr) return; const checkBox = tr.querySelector("input[type=checkbox]"); if (!checkBox || checkBox.hasAttribute("disabled")) return; if (!keys.includes(key)) { setSelectedRowKeys([...keys, key]); return; } const keyIndex = keys.findIndex((item) => item === key); keys.splice(keyIndex, 1); setSelectedRowKeys(keys); return; } const isRadio = rowSelection.type === "radio"; if (isRadio) { if (!keys.includes(key)) { if (keys.length) { clearSelectedRowKeys(); } setSelectedRowKeys([key]); return; } clearSelectedRowKeys(); } } handleClick(); emit("row-click", record, index, e); }, onDblclick: (event) => { emit("row-dbClick", record, index, event); }, onContextmenu: (event) => { emit("row-contextmenu", record, index, event); }, onMouseenter: (event) => { emit("row-mouseenter", record, index, event); }, onMouseleave: (event) => { emit("row-mouseleave", record, index, event); } }; }; return { customRow }; } exports.useCustomRow = useCustomRow; //# sourceMappingURL=useCustomRow2.js.map