UNPKG

@fe6/water-pro

Version:

An enterprise-class UI design language and Vue-based implementation

91 lines (78 loc) 2.78 kB
function _extends() { _extends = Object.assign || function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; }; return _extends.apply(this, arguments); } /** @format */ import { computed, ref, unref, toRaw } from 'vue'; import { ROW_KEY } from '../const'; export function useRowSelection(propsRef, tableData, emit) { var selectedRowKeysRef = ref([]); var selectedRowRef = ref([]); var getRowSelectionRef = computed(function () { var _unref = unref(propsRef), rowSelection = _unref.rowSelection; if (!rowSelection) { return null; } return _extends({ selectedRowKeys: unref(selectedRowKeysRef), hideDefaultSelections: false, onChange: function onChange(selectedRowKeys, selectedRows) { selectedRowKeysRef.value = selectedRowKeys; selectedRowRef.value = selectedRows; emit('selection-change', { keys: selectedRowKeys, rows: selectedRows }); } }, rowSelection); }); var getAutoCreateKey = computed(function () { return unref(propsRef).autoCreateKey && !unref(propsRef).rowKey; }); var getRowKey = computed(function () { var _unref2 = unref(propsRef), rowKey = _unref2.rowKey; return unref(getAutoCreateKey) ? ROW_KEY : rowKey; }); function setSelectedRowKeys(rowKeys) { selectedRowKeysRef.value = rowKeys; var rows = toRaw(unref(tableData)).filter(function (item) { return rowKeys.includes(item[unref(getRowKey)]); }); selectedRowRef.value = rows; } function setSelectedRows(rows) { selectedRowRef.value = rows; } function clearSelectedRowKeys() { selectedRowRef.value = []; selectedRowKeysRef.value = []; } function deleteSelectRowByKey(key) { var selectedRowKeys = unref(selectedRowKeysRef); var index = selectedRowKeys.findIndex(function (item) { return item === key; }); if (index !== -1) { unref(selectedRowKeysRef).splice(index, 1); } } function getSelectRowKeys() { return unref(selectedRowKeysRef); } function getSelectRows() { // const ret = toRaw(unref(selectedRowRef)).map((item) => toRaw(item)); return unref(selectedRowRef); } function getRowSelection() { return unref(getRowSelectionRef); } return { getRowSelection: getRowSelection, getRowSelectionRef: getRowSelectionRef, getSelectRows: getSelectRows, getSelectRowKeys: getSelectRowKeys, setSelectedRowKeys: setSelectedRowKeys, clearSelectedRowKeys: clearSelectedRowKeys, deleteSelectRowByKey: deleteSelectRowByKey, setSelectedRows: setSelectedRows }; }