1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071 |
- let Siblings: CustomComponent[] = []
- Component({
- externalClasses: ['wr-class'],
- options: {
- multipleSlots: true,
- },
- properties: {
- disabled: Boolean,
- leftWidth: {
- type: Number,
- value: 0,
- },
- rightWidth: {
- type: Number,
- value: 0,
- },
- asyncClose: Boolean,
- },
- attached() {
- Siblings.push(this)
- },
- detached() {
- Siblings = Siblings.filter((item) => item !== this)
- },
- data: {
- wrapperStyle: '',
- asyncClose: false,
- closed: true,
- },
- methods: {
- open(position: number) {
- this.setData({ closed: false })
- this.triggerEvent('close', {
- position,
- instance: this,
- })
- },
- close() {
- this.setData({ closed: true })
- },
- closeOther() {
- Siblings.filter((item) => item !== this).forEach((item) => item.close())
- },
- noop() {
- return
- },
- onClick(event: WechatMiniprogram.BaseEvent) {
- 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()
- }
- },
- },
- })
|