闫增涛
2024-02-23 fdfb3ca757ecd6c396632ed276ff354671d3a7e5
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
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();
      }
    },
  },
});