123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899 |
- import baseComponent from '../helpers/baseComponent'
- import classNames from '../helpers/classNames'
- const defaults = {
- prefixCls: 'wux-notification',
- classNames: 'wux-animate--slideInDown',
- image: '',
- title: '',
- text: '',
- duration: 3000,
- data: '',
- onClick() {},
- onClose() {},
- }
- let _notification = null
- baseComponent({
- useFunc: true,
- data: defaults,
- computed: {
- classes() {
- const { prefixCls } = this.data
- const wrap = classNames(prefixCls)
- const content = `${prefixCls}__content`
- const hd = `${prefixCls}__hd`
- const image = `${prefixCls}__image`
- const bd = `${prefixCls}__bd`
- const title = `${prefixCls}__title`
- const text = `${prefixCls}__text`
- const ft = `${prefixCls}__ft`
- return {
- wrap,
- content,
- hd,
- image,
- bd,
- title,
- text,
- ft,
- }
- },
- },
- methods: {
- /**
- * 隐藏
- */
- hide() {
- this.$$setData({ in: false })
- if (typeof this.fns.onClose === 'function') {
- this.fns.onClose(this.data.data)
- }
- },
- /**
- * 显示
- */
- show(opts = {}) {
- const closePromise = new Promise((resolve) => {
- const options = this.$$mergeOptionsAndBindMethods(Object.assign({}, defaults, opts))
- const callback = () => {
- this.hide()
- return resolve(true)
- }
- this.$$setData({ in: true, ...options })
- if (_notification) {
- clearTimeout(_notification.timeout)
- _notification = null
- }
- _notification = {
- hide: this.hide,
- }
- _notification.timeout = setTimeout(callback, options.duration)
- })
- const result = () => {
- if (_notification) {
- _notification.hide.call(this)
- }
- }
- result.then = (resolve, reject) => closePromise.then(resolve, reject)
- result.promise = closePromise
- return result
- },
- /**
- * 点击事件
- */
- onClick() {
- if (typeof this.fns.onClick === 'function') {
- this.fns.onClick(this.data.data)
- }
- },
- },
- })
|