Browse Source

fix: click block doesn't work on some elements

Ahmad Kholid 3 years ago
parent
commit
4f857d2679

+ 4 - 1
src/background/workflow-engine/blocks-handler/handler-interaction-block.js

@@ -2,12 +2,15 @@ import { objectHasKey } from '@/utils/helper';
 import { getBlockConnection } from '../helper';
 
 async function interactionHandler(block, { refData }) {
+  const { executedBlockOnWeb, debugMode } = this.workflow.settings;
+
   const nextBlockId = getBlockConnection(block);
   const messagePayload = {
     ...block,
     refData,
+    debugMode,
+    executedBlockOnWeb,
     frameSelector: this.frameSelector,
-    executedBlockOnWeb: this.workflow.settings?.executedBlockOnWeb,
   };
 
   try {

+ 25 - 19
src/components/newtab/workflow/WorkflowSettings.vue

@@ -1,22 +1,29 @@
 <template>
   <div class="workflow-settings">
-    <div class="mb-6">
-      <p class="mb-1">{{ t('workflow.settings.onError.title') }}</p>
-      <div class="space-x-4">
-        <ui-radio
+    <div class="mb-4">
+      <p class="mb-1 capitalize">
+        {{ t('workflow.settings.onError.title') }}
+      </p>
+      <div class="space-x-4 flex w-full max-w-sm items-center">
+        <div
           v-for="item in onError"
           :key="item.id"
-          :model-value="settings.onError"
-          :value="item.id"
-          class="mr-4"
-          @change="settings.onError = $event"
+          class="p-3 rounded-lg border transition-colors w-full hoverable"
+          @click="settings.onError = item.id"
         >
-          {{ item.name }}
-        </ui-radio>
+          <ui-radio
+            :model-value="settings.onError"
+            :value="item.id"
+            class="capitalize"
+            @change="settings.onError = $event"
+          >
+            {{ item.name }}
+          </ui-radio>
+        </div>
       </div>
     </div>
     <div>
-      <p class="mb-1">
+      <p class="mb-1 capitalize">
         {{ t('workflow.settings.blockDelay.title') }}
         <span :title="t('workflow.settings.blockDelay.description')">
           &#128712;
@@ -28,13 +35,17 @@
         class="w-full max-w-sm"
       />
     </div>
+    <div v-if="false" class="flex mt-6">
+      <ui-switch v-model="settings.debugMode" class="mr-4" />
+      <p class="capitalize">{{ t('workflow.settings.debugMode') }}</p>
+    </div>
     <div class="flex mt-6">
       <ui-switch v-model="settings.saveLog" class="mr-4" />
-      <p>{{ t('workflow.settings.saveLog') }}</p>
+      <p class="capitalize">{{ t('workflow.settings.saveLog') }}</p>
     </div>
     <div class="flex mt-6">
       <ui-switch v-model="settings.executedBlockOnWeb" class="mr-4" />
-      <p>{{ t('workflow.settings.executedBlockOnWeb') }}</p>
+      <p class="capitalize">{{ t('workflow.settings.executedBlockOnWeb') }}</p>
     </div>
   </div>
 </template>
@@ -63,12 +74,7 @@ const onError = [
   },
 ];
 
-const settings = reactive({
-  blockDelay: 0,
-  saveLog: true,
-  onError: 'stop-workflow',
-  executedBlockOnWeb: false,
-});
+const settings = reactive({});
 
 watch(
   settings,

+ 5 - 1
src/content/blocks-handler/handler-event-click.js

@@ -4,7 +4,11 @@ function eventClick(block) {
   return new Promise((resolve, reject) => {
     handleElement(block, {
       onSelected(element) {
-        element.click();
+        if (element.click) {
+          element.click();
+        } else {
+          element.dispatchEvent(new MouseEvent('click', { bubbles: true }));
+        }
       },
       onError(error) {
         reject(error);

+ 4 - 3
src/locales/en/newtab.json

@@ -52,6 +52,9 @@
       "duplicate": "Duplicate"
     },
     "settings": {
+      "saveLog": "Save workflow log",
+      "executedBlockOnWeb": "Show executed block on web page",
+      "debugMode": "Debug mode",
       "onError": {
         "title": "On workflow error",
         "items": {
@@ -65,9 +68,7 @@
       "blockDelay": {
         "title": "Block delay (milliseconds)",
         "description": "Add delay before executing each of the blocks"
-      },
-      "saveLog": "Save workflow log",
-      "executedBlockOnWeb": "Show executed block on web page"
+      }
     }
   },
   "collection": {

+ 0 - 1
src/manifest.json

@@ -31,7 +31,6 @@
     "proxy",
     "alarms",
     "storage",
-    "downloads",
     "webNavigation",
     "unlimitedStorage",
     "<all_urls>"

+ 1 - 0
src/models/workflow.js

@@ -26,6 +26,7 @@ class Workflow extends Model {
       settings: this.attr({
         blockDelay: 0,
         saveLog: true,
+        debugMode: false,
         onError: 'stop-workflow',
         executedBlockOnWeb: false,
       }),