pleroma-fe/src/modules/popover.js
2020-02-12 19:22:40 +02:00

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