|
|
|
@ -36,37 +36,40 @@ export function useCustomRow( |
|
|
|
const customRow = (record: Recordable, index: number) => { |
|
|
|
return { |
|
|
|
onClick: (e: Event) => { |
|
|
|
emit('row-click', record, index, e); |
|
|
|
e?.stopPropagation(); |
|
|
|
const { rowSelection, rowKey, clickToRowSelect } = unref(propsRef); |
|
|
|
if (!rowSelection || !clickToRowSelect) return; |
|
|
|
const keys = getSelectRowKeys(); |
|
|
|
const key = getKey(record, rowKey, unref(getAutoCreateKey)); |
|
|
|
if (!key) return; |
|
|
|
function handleClick() { |
|
|
|
const { rowSelection, rowKey, clickToRowSelect } = unref(propsRef); |
|
|
|
if (!rowSelection || !clickToRowSelect) return; |
|
|
|
const keys = getSelectRowKeys(); |
|
|
|
const key = getKey(record, rowKey, unref(getAutoCreateKey)); |
|
|
|
if (!key) return; |
|
|
|
|
|
|
|
const isCheckbox = rowSelection.type === 'checkbox'; |
|
|
|
if (isCheckbox) { |
|
|
|
if (!keys.includes(key)) { |
|
|
|
setSelectedRowKeys([...keys, key]); |
|
|
|
const isCheckbox = rowSelection.type === 'checkbox'; |
|
|
|
if (isCheckbox) { |
|
|
|
if (!keys.includes(key)) { |
|
|
|
setSelectedRowKeys([...keys, key]); |
|
|
|
return; |
|
|
|
} |
|
|
|
const keyIndex = keys.findIndex((item) => item === key); |
|
|
|
keys.splice(keyIndex, 1); |
|
|
|
setSelectedRowKeys(keys); |
|
|
|
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(); |
|
|
|
const isRadio = rowSelection.type === 'radio'; |
|
|
|
if (isRadio) { |
|
|
|
if (!keys.includes(key)) { |
|
|
|
if (keys.length) { |
|
|
|
clearSelectedRowKeys(); |
|
|
|
} |
|
|
|
setSelectedRowKeys([key]); |
|
|
|
return; |
|
|
|
} |
|
|
|
setSelectedRowKeys([key]); |
|
|
|
return; |
|
|
|
clearSelectedRowKeys(); |
|
|
|
} |
|
|
|
clearSelectedRowKeys(); |
|
|
|
} |
|
|
|
handleClick(); |
|
|
|
emit('row-click', record, index, e); |
|
|
|
}, |
|
|
|
onDblclick: (event: Event) => { |
|
|
|
emit('row-dbClick', record, index, event); |
|
|
|
|