drip-ui
Version:
Lightweight Mobile UI Components built on Vue
64 lines (50 loc) • 1.05 kB
JavaScript
import Vue from 'vue'
import DripLoading from './Loading'
import {
isServer
} from '../utils'
let instance
const initInstance = () => {
instance = new(Vue.extend(DripLoading))({
el: document.createElement('div')
})
document.body.appendChild(instance.$el)
}
const Loading = (options) => {
/* istanbul ignore if */
if (isServer) {
return
}
if (!instance) {
initInstance()
}
return Object.assign(instance, ...options)
}
Loading.defaultOptions = {
show: '',
text: '请求中',
type: 'circle'
}
Loading.show = options => Loading({
...Loading.currentOptions,
show: true,
...options
})
Loading.hide = () => {
if (instance) {
instance.show = false
}
}
Loading.setDefaultOptions = options => {
Object.assign(Loading.currentOptions, options)
}
Loading.resetDefaultOptions = () => {
Loading.currentOptions = { ...Loading.defaultOptions
}
}
Loading.install = () => {
Vue.use(DripLoading)
}
Vue.loading = Vue.prototype.$loading = Loading
Loading.resetDefaultOptions()
export default Loading