first commit
This commit is contained in:
174
衣莎项目/源码/YiShaXiYi/extend/wux/dist/toast/index.js
vendored
Normal file
174
衣莎项目/源码/YiShaXiYi/extend/wux/dist/toast/index.js
vendored
Normal file
@@ -0,0 +1,174 @@
|
||||
import baseComponent from '../helpers/baseComponent'
|
||||
import classNames from '../helpers/classNames'
|
||||
import { $wuxBackdrop } from '../index'
|
||||
|
||||
const defaults = {
|
||||
prefixCls: 'wux-toast',
|
||||
classNames: 'wux-animate--fadeIn',
|
||||
type: 'default',
|
||||
duration: 1500,
|
||||
color: '#fff',
|
||||
text: '',
|
||||
icon: '',
|
||||
mask: true,
|
||||
transparent: true,
|
||||
success() {},
|
||||
}
|
||||
|
||||
const iconTypes = {
|
||||
success: 'ios-checkmark-circle-outline',
|
||||
cancel: 'ios-close-circle-outline',
|
||||
forbidden: 'ios-alert',
|
||||
text: '',
|
||||
'default': '',
|
||||
}
|
||||
|
||||
let _toast = null
|
||||
|
||||
baseComponent({
|
||||
useFunc: true,
|
||||
data: defaults,
|
||||
computed: {
|
||||
classes: ['prefixCls, icon', function(prefixCls, hasIcon) {
|
||||
const wrap = classNames(prefixCls)
|
||||
const content = classNames(`${prefixCls}__content`, {
|
||||
[`${prefixCls}__content--has-icon`]: hasIcon,
|
||||
})
|
||||
const icon = `${prefixCls}__icon`
|
||||
const text = `${prefixCls}__text`
|
||||
|
||||
return {
|
||||
wrap,
|
||||
content,
|
||||
icon,
|
||||
text,
|
||||
}
|
||||
}],
|
||||
},
|
||||
methods: {
|
||||
/**
|
||||
* 隐藏
|
||||
*/
|
||||
hide() {
|
||||
if (this.removed) return false
|
||||
this.removed = true
|
||||
if (_toast) {
|
||||
clearTimeout(_toast.timeout)
|
||||
_toast = null
|
||||
}
|
||||
this.$$setData({ in: false })
|
||||
this.$wuxBackdrop && this.$wuxBackdrop.release()
|
||||
if (typeof this.fns.success === 'function') {
|
||||
this.fns.success()
|
||||
}
|
||||
},
|
||||
/**
|
||||
* 显示
|
||||
*/
|
||||
show(opts) {
|
||||
if (typeof opts === 'string') {
|
||||
opts = Object.assign({}, {
|
||||
text: arguments[0],
|
||||
}, arguments[1])
|
||||
}
|
||||
|
||||
const closePromise = new Promise((resolve) => {
|
||||
const options = this.$$mergeOptionsAndBindMethods(Object.assign({}, defaults, opts))
|
||||
const iconType = iconTypes[options.type] || options.icon
|
||||
const callback = () => {
|
||||
this.hide()
|
||||
return resolve(true)
|
||||
}
|
||||
|
||||
options.icon = iconType
|
||||
|
||||
this.removed = false
|
||||
this.$$setData({ in: true, ...options })
|
||||
this.$wuxBackdrop && this.$wuxBackdrop.retain()
|
||||
|
||||
if (_toast) {
|
||||
clearTimeout(_toast.timeout)
|
||||
_toast = null
|
||||
}
|
||||
|
||||
_toast = {
|
||||
hide: this.hide,
|
||||
}
|
||||
|
||||
_toast.timeout = setTimeout(callback, Math.max(0, options.duration))
|
||||
})
|
||||
|
||||
const result = () => {
|
||||
if (_toast) {
|
||||
_toast.hide.call(this)
|
||||
}
|
||||
}
|
||||
|
||||
result.then = (resolve, reject) => closePromise.then(resolve, reject)
|
||||
result.promise = closePromise
|
||||
|
||||
return result
|
||||
},
|
||||
/**
|
||||
* 成功提示
|
||||
*/
|
||||
success(opts) {
|
||||
if (typeof opts === 'string') {
|
||||
opts = Object.assign({}, {
|
||||
text: arguments[0],
|
||||
}, arguments[1])
|
||||
}
|
||||
|
||||
return this.show(Object.assign({
|
||||
type: 'success',
|
||||
}, opts))
|
||||
},
|
||||
/**
|
||||
* 警告提示
|
||||
*/
|
||||
warning(opts) {
|
||||
if (typeof opts === 'string') {
|
||||
opts = Object.assign({}, {
|
||||
text: arguments[0],
|
||||
}, arguments[1])
|
||||
}
|
||||
|
||||
return this.show(Object.assign({
|
||||
type: 'forbidden',
|
||||
}, opts))
|
||||
},
|
||||
/**
|
||||
* 错误提示
|
||||
*/
|
||||
error(opts) {
|
||||
if (typeof opts === 'string') {
|
||||
opts = Object.assign({}, {
|
||||
text: arguments[0],
|
||||
}, arguments[1])
|
||||
}
|
||||
|
||||
return this.show(Object.assign({
|
||||
type: 'cancel',
|
||||
}, opts))
|
||||
},
|
||||
/**
|
||||
* 文本提示
|
||||
*/
|
||||
info(opts) {
|
||||
if (typeof opts === 'string') {
|
||||
opts = Object.assign({}, {
|
||||
text: arguments[0],
|
||||
}, arguments[1])
|
||||
}
|
||||
|
||||
return this.show(Object.assign({
|
||||
type: 'text',
|
||||
}, opts))
|
||||
},
|
||||
},
|
||||
created() {
|
||||
if (this.data.mask) {
|
||||
this.$wuxBackdrop = $wuxBackdrop('#wux-backdrop', this)
|
||||
}
|
||||
},
|
||||
})
|
||||
Reference in New Issue
Block a user