refactor: client structure + editor preview logic

This commit is contained in:
NGPixel
2018-02-24 17:35:56 -05:00
parent 37c28691ff
commit 4fa7ed4e93
19 changed files with 26 additions and 8 deletions

24
client/store/index.js Normal file
View File

@@ -0,0 +1,24 @@
import Vue from 'vue'
import Vuex from 'vuex'
import navigator from './modules/navigator'
Vue.use(Vuex)
export default new Vuex.Store({
state: {
loading: false
},
mutations: {
loadingChange: (state, loadingState) => { state.loading = loadingState }
},
actions: {
alert({ dispatch }, opts) { dispatch('navigator/alert', opts) },
startLoading({ commit }) { commit('loadingChange', true) },
stopLoading({ commit }) { commit('loadingChange', false) }
},
getters: {},
modules: {
navigator
}
})

View File

@@ -0,0 +1,40 @@
import debounce from 'lodash/debounce'
export default {
namespaced: true,
state: {
subtitleShown: false,
subtitleStyle: '',
subtitleIcon: false,
subtitleText: '',
subtitleStatic: 'Welcome'
},
getters: {},
mutations: {
subtitleChange (state, opts) {
state.subtitleShown = (opts.shown === true)
state.subtitleStyle = opts.style || ''
state.subtitleIcon = opts.icon || false
state.subtitleText = opts.msg || ''
},
subtitleStatic (state, text) {
state.subtitleText = text
state.subtitleStatic = text
}
},
actions: {
alert ({ commit, dispatch }, opts) {
opts.shown = true
commit('subtitleChange', opts)
dispatch('alertDismiss')
},
alertDismiss: debounce(({ commit, state }) => {
let opts = {
shown: false,
style: state.subtitleStyle,
msg: state.subtitleStatic
}
commit('subtitleChange', opts)
}, 5000)
}
}