Stackedit/src/store/modal.js
Benoit Schweblin e05e7717eb Added tests
2018-06-07 23:56:11 +00:00

41 lines
981 B
JavaScript

export default {
namespaced: true,
state: {
stack: [],
hidden: false,
},
mutations: {
setStack: (state, value) => {
state.stack = value;
},
setHidden: (state, value) => {
state.hidden = value;
},
},
getters: {
config: ({ hidden, stack }) => !hidden && stack[0],
},
actions: {
async open({ commit, state }, param) {
const config = typeof param === 'object' ? { ...param } : { type: param };
try {
return await new Promise((resolve, reject) => {
config.resolve = resolve;
config.reject = reject;
commit('setStack', [config, ...state.stack]);
});
} finally {
commit('setStack', state.stack.filter((otherConfig => otherConfig !== config)));
}
},
async hideUntil({ commit }, promise) {
try {
commit('setHidden', true);
return await promise;
} finally {
commit('setHidden', false);
}
},
},
};