tav-ui
Version:
87 lines (82 loc) • 2.63 kB
JavaScript
;
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