| 12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879 |
- 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();
- }
- },
- },
- });
|