| | |
| | | import { isFunction } from '/@/utils/is'; |
| | | import type { BasicTableProps, TableRowSelection } from '../types/table'; |
| | | import { computed, ref, unref, ComputedRef, Ref, toRaw, watch } from 'vue'; |
| | | import { computed, ref, unref, ComputedRef, Ref, toRaw, watch, nextTick } from 'vue'; |
| | | import { ROW_KEY } from '../const'; |
| | | import { omit } from 'lodash-es'; |
| | | |
| | |
| | | onChange: (selectedRowKeys: string[], selectedRows: Recordable[]) => { |
| | | selectedRowKeysRef.value = selectedRowKeys; |
| | | selectedRowRef.value = selectedRows; |
| | | const { onChange } = rowSelection; |
| | | if (onChange && isFunction(onChange)) onChange(selectedRowKeys, selectedRows); |
| | | emit('selection-change', { |
| | | keys: selectedRowKeys, |
| | | rows: selectedRows, |
| | | }); |
| | | }, |
| | | ...omit(rowSelection === undefined ? {} : rowSelection, ['onChange']), |
| | | }; |
| | |
| | | watch( |
| | | () => unref(propsRef).rowSelection?.selectedRowKeys, |
| | | (v: string[]) => { |
| | | selectedRowKeysRef.value = v; |
| | | setSelectedRowKeys(v); |
| | | } |
| | | ); |
| | | |
| | | watch( |
| | | () => unref(selectedRowKeysRef), |
| | | () => { |
| | | nextTick(() => { |
| | | const { rowSelection } = unref(propsRef); |
| | | if (rowSelection) { |
| | | const { onChange } = rowSelection; |
| | | if (onChange && isFunction(onChange)) onChange(getSelectRowKeys(), getSelectRows()); |
| | | } |
| | | emit('selection-change', { |
| | | keys: getSelectRowKeys(), |
| | | rows: getSelectRows(), |
| | | }); |
| | | }); |
| | | } |
| | | ); |
| | | |