All files / src/decorators Event.ts

100% Statements 16/16
66.66% Branches 6/9
60% Functions 3/5
100% Lines 16/16

Press n or j to go to the next uncovered block, b, p or k for the previous block.

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  1x 1x             1x 1x 1x 1x 1x 1x 1x 1x 1x 1x 1x 1x   1x       1x            
import { Doraemon } from '../instance/init'
 
interface CustomEvent extends WechatMiniprogram.CustomEvent {
  target: any
  currentTarget: any
  preventDefault(): void
  stopPropagation(): void
}
 
/**
 * decorator of an event function
 *
 * @return MethodDecorator
 */E
export function Event(): MethodDecorator {
  return function (_target: Doraemon, propertyKey: string, descriptor: any) {
    const original = descriptor.value
    descriptor.value = function dispatchEvent(e) {
      const event: CustomEvent = { ...e }
      if (event) {
        event.preventDefault = function () {}
        event.stopPropagation = function () {}
        event.target = event.target || {}
        event.currentTarget = event.currentTarget || event.target || {}
        event.detail = event.detail || {}
        Object.assign(event.target, event.detail)
        Object.assign(event.currentTarget, event.detail)
      }
      return original.call(this, event)
    }
  }
}