| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197 |
- 'use strict';
- Object.defineProperty(exports, '__esModule', { value: true });
- var vue = require('vue');
- var lodashUnified = require('lodash-unified');
- var watcher = require('./watcher.js');
- var index = require('../../../../hooks/use-namespace/index.js');
- function replaceColumn(array, column) {
- return array.map((item) => {
- var _a;
- if (item.id === column.id) {
- return column;
- } else if ((_a = item.children) == null ? void 0 : _a.length) {
- item.children = replaceColumn(item.children, column);
- }
- return item;
- });
- }
- function sortColumn(array) {
- array.forEach((item) => {
- var _a, _b;
- item.no = (_a = item.getColumnIndex) == null ? void 0 : _a.call(item);
- if ((_b = item.children) == null ? void 0 : _b.length) {
- sortColumn(item.children);
- }
- });
- array.sort((cur, pre) => cur.no - pre.no);
- }
- function useStore() {
- const instance = vue.getCurrentInstance();
- const watcher$1 = watcher["default"]();
- const ns = index.useNamespace("table");
- const mutations = {
- setData(states, data) {
- const dataInstanceChanged = vue.unref(states._data) !== data;
- states.data.value = data;
- states._data.value = data;
- instance.store.execQuery();
- instance.store.updateCurrentRowData();
- instance.store.updateExpandRows();
- instance.store.updateTreeData(instance.store.states.defaultExpandAll.value);
- if (vue.unref(states.reserveSelection)) {
- instance.store.assertRowKey();
- } else {
- if (dataInstanceChanged) {
- instance.store.clearSelection();
- } else {
- instance.store.cleanSelection();
- }
- }
- instance.store.updateAllSelected();
- if (instance.$ready) {
- instance.store.scheduleLayout();
- }
- },
- insertColumn(states, column, parent, updateColumnOrder) {
- var _a;
- const array = vue.unref(states._columns);
- let newColumns = [];
- if (!parent) {
- array.push(column);
- newColumns = array;
- } else {
- if (parent && !parent.children) {
- parent.children = [];
- }
- (_a = parent.children) == null ? void 0 : _a.push(column);
- newColumns = replaceColumn(array, parent);
- }
- sortColumn(newColumns);
- states._columns.value = newColumns;
- states.updateOrderFns.push(updateColumnOrder);
- if (column.type === "selection") {
- states.selectable.value = column.selectable;
- states.reserveSelection.value = column.reserveSelection;
- }
- if (instance.$ready) {
- instance.store.updateColumns();
- instance.store.scheduleLayout();
- }
- },
- updateColumnOrder(states, column) {
- var _a;
- const newColumnIndex = (_a = column.getColumnIndex) == null ? void 0 : _a.call(column);
- if (newColumnIndex === column.no)
- return;
- sortColumn(states._columns.value);
- if (instance.$ready) {
- instance.store.updateColumns();
- }
- },
- removeColumn(states, column, parent, updateColumnOrder) {
- var _a;
- const array = vue.unref(states._columns) || [];
- if (parent) {
- (_a = parent.children) == null ? void 0 : _a.splice(parent.children.findIndex((item) => item.id === column.id), 1);
- vue.nextTick(() => {
- var _a2;
- if (((_a2 = parent.children) == null ? void 0 : _a2.length) === 0) {
- delete parent.children;
- }
- });
- states._columns.value = replaceColumn(array, parent);
- } else {
- const index = array.indexOf(column);
- if (index > -1) {
- array.splice(index, 1);
- states._columns.value = array;
- }
- }
- const updateFnIndex = states.updateOrderFns.indexOf(updateColumnOrder);
- updateFnIndex > -1 && states.updateOrderFns.splice(updateFnIndex, 1);
- if (instance.$ready) {
- instance.store.updateColumns();
- instance.store.scheduleLayout();
- }
- },
- sort(states, options) {
- const { prop, order, init } = options;
- if (prop) {
- const column = vue.unref(states.columns).find((column2) => column2.property === prop);
- if (column) {
- column.order = order;
- instance.store.updateSort(column, prop, order);
- instance.store.commit("changeSortCondition", { init });
- }
- }
- },
- changeSortCondition(states, options) {
- const { sortingColumn, sortProp, sortOrder } = states;
- const columnValue = vue.unref(sortingColumn), propValue = vue.unref(sortProp), orderValue = vue.unref(sortOrder);
- if (lodashUnified.isNull(orderValue)) {
- states.sortingColumn.value = null;
- states.sortProp.value = null;
- }
- const ignore = { filter: true };
- instance.store.execQuery(ignore);
- if (!options || !(options.silent || options.init)) {
- instance.emit("sort-change", {
- column: columnValue,
- prop: propValue,
- order: orderValue
- });
- }
- instance.store.updateTableScrollY();
- },
- filterChange(_states, options) {
- const { column, values, silent } = options;
- const newFilters = instance.store.updateFilters(column, values);
- instance.store.execQuery();
- if (!silent) {
- instance.emit("filter-change", newFilters);
- }
- instance.store.updateTableScrollY();
- },
- toggleAllSelection() {
- var _a, _b;
- (_b = (_a = instance.store).toggleAllSelection) == null ? void 0 : _b.call(_a);
- },
- rowSelectedChanged(_states, row) {
- instance.store.toggleRowSelection(row);
- instance.store.updateAllSelected();
- },
- setHoverRow(states, row) {
- states.hoverRow.value = row;
- },
- setCurrentRow(_states, row) {
- instance.store.updateCurrentRow(row);
- }
- };
- const commit = function(name, ...args) {
- const mutations2 = instance.store.mutations;
- if (mutations2[name]) {
- mutations2[name].apply(instance, [
- instance.store.states,
- ...args
- ]);
- } else {
- throw new Error(`Action not found: ${name}`);
- }
- };
- const updateTableScrollY = function() {
- vue.nextTick(() => instance.layout.updateScrollY.apply(instance.layout));
- };
- return {
- ns,
- ...watcher$1,
- mutations,
- commit,
- updateTableScrollY
- };
- }
- exports["default"] = useStore;
- //# sourceMappingURL=index.js.map
|