31 lines
838 B
JavaScript
31 lines
838 B
JavaScript
import { omit } from 'lodash'
|
|
import { set } from 'vue'
|
|
|
|
const popover = {
|
|
state: {
|
|
popovers: {}
|
|
},
|
|
mutations: {
|
|
registerPopover (state, { id, el }) {
|
|
set(state.popovers, id, el)
|
|
},
|
|
unregisterPopover (state, { id }) {
|
|
state.popovers = omit(state.popovers, id)
|
|
}
|
|
},
|
|
actions: {
|
|
registerPopover (store, el) {
|
|
// Generate unique id, it will be used to link portal and portal-target
|
|
// popover-target will make portal targets for each registered popover
|
|
// el will be used by popover target to put popovers in their places.
|
|
let id = Math.floor(Math.random() * 1000000).toString()
|
|
store.commit('registerPopover', { id, el })
|
|
return id
|
|
},
|
|
unregisterPopover (store, id) {
|
|
store.commit('unregisterPopover', { id })
|
|
}
|
|
}
|
|
}
|
|
|
|
export default popover
|