소스 검색

improve(apis): events data for injected ui

charlie 2 년 전
부모
커밋
316ac6afd9
1개의 변경된 파일6개의 추가작업 그리고 2개의 파일을 삭제
  1. 6 2
      libs/src/helpers.ts

+ 6 - 2
libs/src/helpers.ts

@@ -424,6 +424,7 @@ export function setupInjectedUI(
     'keydown',
     'change',
     'input',
+    'contextmenu'
   ].forEach((type) => {
     el.addEventListener(
       type,
@@ -432,9 +433,10 @@ export function setupInjectedUI(
         const trigger = target.closest(`[data-on-${type}]`) as HTMLElement
         if (!trigger) return
 
+        const { preventDefault } = trigger.dataset
         const msgType = trigger.dataset[`on${ucFirst(type)}`]
-        msgType &&
-        pl.caller?.callUserModel(msgType, transformableEvent(trigger, e))
+        if (msgType) pl.caller?.callUserModel(msgType, transformableEvent(trigger, e))
+        if (preventDefault?.toLowerCase() === 'true') e.preventDefault()
       },
       false
     )
@@ -473,6 +475,8 @@ export function transformableEvent(target: HTMLElement, e: Event) {
   const obj: any = {}
 
   if (target) {
+    obj.type = e.type
+
     const ds = target.dataset
     const FLAG_RECT = 'rect'