|
|
import {isArray} from 'lodash';
|
|
|
|
|
|
export default {
|
|
|
install(Vue) {
|
|
|
let promptVM = null;
|
|
|
let promptEle = null;
|
|
|
let timer = null;
|
|
|
|
|
|
function creatPromptVM(self) {
|
|
|
let tpl = Vue.extend({
|
|
|
data: function () {
|
|
|
return {
|
|
|
type: '',
|
|
|
img: '',
|
|
|
title: '',
|
|
|
desc: '',
|
|
|
onClick: null,
|
|
|
classNames: []
|
|
|
}
|
|
|
},
|
|
|
render: function(h) {
|
|
|
let classNames = ['yoho-grass-prompt-wrap', ...this.classNames];
|
|
|
|
|
|
return h('div', {class: ['yoho-grass-prompt', `yoho-grass-prompt-${this.type}`]}, [
|
|
|
h(this.url ? 'router-link' : 'div', {
|
|
|
class: classNames,
|
|
|
on: {
|
|
|
click: () => {
|
|
|
this.onClick && this.onClick();
|
|
|
}
|
|
|
}
|
|
|
}, [
|
|
|
h('ImageFormat', {
|
|
|
class: ['prompt-thumb'],
|
|
|
props: {
|
|
|
src: this.img,
|
|
|
lazy: false,
|
|
|
width: 100,
|
|
|
height: 100
|
|
|
}
|
|
|
}),
|
|
|
h('div', {class: ['prompt-info']}, [
|
|
|
h('p', {
|
|
|
class: ['prompt-info-title'],
|
|
|
domProps: {
|
|
|
innerHTML: this.title
|
|
|
}
|
|
|
}),
|
|
|
h('p', {
|
|
|
class: ['prompt-info-desc'],
|
|
|
domProps: {
|
|
|
innerHTML: this.desc
|
|
|
}
|
|
|
})
|
|
|
]),
|
|
|
h('span', {class: ['iconfont', 'icon-right', 'prompt-icon']})
|
|
|
])
|
|
|
])
|
|
|
}
|
|
|
});
|
|
|
|
|
|
promptVM = new tpl();
|
|
|
promptEle = promptVM.$mount().$el;
|
|
|
document.body.appendChild(promptEle);
|
|
|
}
|
|
|
|
|
|
Vue.prototype.$grassPrompt = function(data = {}, time) {
|
|
|
let {img, title, desc, type, className, onClick} = data;
|
|
|
|
|
|
if (!promptVM) {
|
|
|
creatPromptVM(this);
|
|
|
}
|
|
|
|
|
|
promptVM.img = img || '';
|
|
|
promptVM.title = title;
|
|
|
promptVM.desc = desc;
|
|
|
promptVM.type = type || 'bottom';
|
|
|
|
|
|
if (className && !isArray(className)) {
|
|
|
className = [className];
|
|
|
}
|
|
|
|
|
|
promptVM.classNames = className || [];
|
|
|
|
|
|
if (typeof onClick === 'function') {
|
|
|
promptVM.onClick = onClick;
|
|
|
}
|
|
|
|
|
|
let res = {
|
|
|
show() {
|
|
|
timer && clearTimeout(timer);
|
|
|
timer = setTimeout(function() {
|
|
|
promptVM.classNames.push('yoho-grass-prompt-enter-active');
|
|
|
|
|
|
timer = setTimeout(function() {
|
|
|
promptVM.classNames.push('yoho-grass-prompt-leave-active');
|
|
|
}, time || 8000);
|
|
|
}, 100);
|
|
|
},
|
|
|
hide() {
|
|
|
timer && clearTimeout(timer);
|
|
|
promptVM.classNames = [];
|
|
|
}
|
|
|
}
|
|
|
|
|
|
res.show();
|
|
|
|
|
|
return res;
|
|
|
}
|
|
|
}
|
|
|
} |
...
|
...
|
|