You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

128 lines
2.5 KiB

import zIndex from '../behaviors/zIndex';
import validator from '../behaviors/validator';
import eventUtil from '../core/utils/event-util';
Component({
/**
* 组件的属性列表
*/
behaviors: [zIndex, validator],
externalClasses: ['l-bg-class', 'l-panel-class', 'l-class'],
properties: {
// 显示与隐藏
show: {
type: Boolean,
value: false
},
// 动画效果的显示和隐藏
animation: {
type: Boolean,
value: true
},
// 替代 animation
transition: {
type: Boolean,
value: null
},
// slot的位置
contentAlign: {
type: String,
value: 'center',
options: ['top', 'right', 'left', 'bottom', 'center']
},
// 替代 contentAlign
direction: {
type: String,
value: null,
options: ['top', 'right', 'left', 'bottom', 'center']
},
// 锁定
locked: {
type: Boolean,
value: false
}
},
attached() {
this._init();
},
pageLifetimes: {
show() {
this._init();
},
},
/**
* 组件的初始数据
*/
data: {
status: 'show'
},
/**
* 组件的方法列表
*/
methods: {
_init() {
wx.lin = wx.lin || {};
wx.lin.showPopup = (options) => {
const {
zIndex = 99,
animation = true,
contentAlign = 'center',
locked = false
} = {...options};
this.setData({
zIndex,
animation,
contentAlign,
locked,
show: true
});
};
wx.lin.hidePopup = () => {
this.setData({
status: 'hide'
});
setTimeout(() => {
this.setData({
show: false
});
}, 300);
};
},
// 阻止滑动
doNothingMove() {
// do nothing……
},
doNothingTap() {
// do nathing
},
// 点击事件
onPopupTap() {
let detail = true;
if (this.data.locked !== true) {
if (!this.data.show) {
this.setData({
show: true,
status: 'show'
});
} else {
this.setData({
status: 'hide'
});
setTimeout(() => {
this.setData({
show: false,
status: 'show'
});
}, 300);
}
}
eventUtil.emit(this,'lintap', detail);
}
}
});