36 lines
1.1 KiB
JavaScript
36 lines
1.1 KiB
JavaScript
|
import zIndexManager from './z-index-manager';
|
||
|
const ctx = '@@ziContext';
|
||
|
// We don't expect manually bound zindex should be changed
|
||
|
const zindexable = {
|
||
|
mounted(el, bindings) {
|
||
|
const { value = {} } = bindings;
|
||
|
const { zIndex, enabled } = value;
|
||
|
el[ctx] = {
|
||
|
enabled: !!enabled,
|
||
|
initialized: false
|
||
|
};
|
||
|
if (enabled) {
|
||
|
zIndexManager.ensureZIndex(el, zIndex);
|
||
|
el[ctx].initialized = true;
|
||
|
}
|
||
|
},
|
||
|
updated(el, bindings) {
|
||
|
const { value = {} } = bindings;
|
||
|
const { zIndex, enabled } = value;
|
||
|
const cachedEnabled = el[ctx].enabled;
|
||
|
if (enabled && !cachedEnabled) {
|
||
|
zIndexManager.ensureZIndex(el, zIndex);
|
||
|
el[ctx].initialized = true;
|
||
|
}
|
||
|
el[ctx].enabled = !!enabled;
|
||
|
},
|
||
|
unmounted(el, bindings) {
|
||
|
if (!el[ctx].initialized)
|
||
|
return;
|
||
|
const { value = {} } = bindings;
|
||
|
const { zIndex } = value;
|
||
|
zIndexManager.unregister(el, zIndex);
|
||
|
}
|
||
|
};
|
||
|
export default zindexable;
|