element-plus
Version:
A Component Library for Vue3.0
44 lines (40 loc) • 1.22 kB
text/typescript
import Loading from './index'
const createInstance = (el, binding) => {
const textExr = el.getAttribute('element-loading-text')
const spinnerExr = el.getAttribute('element-loading-spinner')
const backgroundExr = el.getAttribute('element-loading-background')
const customClassExr = el.getAttribute('element-loading-custom-class')
const vm = binding.instance
el.instance = Loading({
text: vm && vm[textExr] || textExr,
spinner: vm && vm[spinnerExr] || spinnerExr,
background: vm && vm[backgroundExr] || backgroundExr,
customClass: vm && vm[customClassExr] || customClassExr,
fullscreen: !!binding.modifiers.fullscreen,
target: !!binding.modifiers.fullscreen ? null : el,
body: !!binding.modifiers.body,
visible: true,
lock: !!binding.modifiers.lock,
})
}
const vLoading = {
mounted(el, binding) {
if(!!binding.value){
createInstance(el, binding)
}
},
updated(el, binding) {
const instance = el.instance
if (binding.oldValue !== binding.value) {
if(binding.value) {
createInstance(el, binding)
} else {
instance.close()
}
}
},
unmounted(el) {
el?.instance?.close()
},
}
export default vLoading