@mee4dy/crud
Version:
Create a backend and frontend in 5 minutes! With our powerful full stack crud system, customize it to suit you.
79 lines (65 loc) • 1.77 kB
text/typescript
import * as _ from 'lodash';
export default {
setState(state, { path, value }) {
return _.set(state, path, value);
},
setCtx(state, ctx) {
state.ctx = ctx;
},
setFields(state, fields) {
state.fields = fields;
},
setItems(state, items) {
state.items = items;
},
pushItem(state, item = {}) {
state.items.push(item);
},
setLoading(state, status) {
state.loading = status;
},
setQuery(state, query) {
state.query = query;
},
update: (state, { pk: pkval, data, level }) => {
const pk = state.pk;
if (level && level.path && level.parentPK) {
let item = state.items.find((i) => i[pk] === level.parentPK);
if (item) {
const { path } = level;
_.merge(_.get(item, path), { ...data });
}
return;
}
const index = state.items.findIndex((i) => i[pk] === pkval);
if (index >= 0) {
const item = state.items[index];
state.items.splice(index, 1, { ...item, ...data });
}
},
delete: (state, { pk: pkval, level }) => {
const pk = state.pk;
if (level && level.path && level.parentPK) {
const index = state.items.findIndex((i) => i[pk] === level.parentPK);
if (index >= 0) {
const { path } = level;
const pathParse = _.toPath(path);
state.items[index][pathParse[0]].splice(pathParse[1], 1);
}
return;
}
const index = state.items.findIndex((i) => i[pk] === pkval);
if (index >= 0) {
state.items.splice(index, 1);
}
},
setSelectedFilters: (state, value) => {
state.selectedFilters = value;
},
setSelectedGroups: (state, value) => {
state.selectedGroups = value;
},
setSelectedOrders: (state, value) => {
state.selectedOrders = value;
},
};