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.
git/scr/miniprogram-2/components/swipeout/index.js

80 lines
1.3 KiB

let ARRAY = [];
Component({
externalClasses: ['wr-class'],
options: {
multipleSlots: true,
},
properties: {
disabled: Boolean,
leftWidth: {
type: Number,
value: 0,
},
rightWidth: {
type: Number,
value: 0,
},
asyncClose: Boolean,
},
attached() {
ARRAY.push(this);
},
detached() {
ARRAY = ARRAY.filter((item) => item !== this);
},
/**
* Component initial data
*/
data: {
wrapperStyle: '',
asyncClose: false,
closed: true,
},
/**
* Component methods
*/
methods: {
open(position) {
this.setData({ closed: false });
this.triggerEvent('close', {
position,
instance: this,
});
},
close() {
this.setData({ closed: true });
},
closeOther() {
ARRAY.filter((item) => item !== this).forEach((item) => item.close());
},
noop() {
return;
},
onClick(event) {
const { key: position = 'outside' } = event.currentTarget.dataset;
this.triggerEvent('click', position);
if (this.data.closed) {
return;
}
if (this.data.asyncClose) {
this.triggerEvent('close', {
position,
instance: this,
});
} else {
this.close();
}
},
},
});