EditTrigger.vue 2.4 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980
  1. <template>
  2. <div class="trigger">
  3. <ui-textarea
  4. :model-value="data.description"
  5. autoresize
  6. :placeholder="t('common.description')"
  7. class="w-full mb-2"
  8. @change="updateData({ description: $event })"
  9. />
  10. <ui-select
  11. :model-value="data.type || 'manual'"
  12. :placeholder="t('workflow.blocks.trigger.forms.triggerWorkflow')"
  13. class="w-full"
  14. @change="updateData({ type: $event })"
  15. >
  16. <option v-for="(_, trigger) in triggers" :key="trigger" :value="trigger">
  17. {{ t(`workflow.blocks.trigger.items.${trigger}`) }}
  18. </option>
  19. </ui-select>
  20. <transition-expand mode="out-in">
  21. <keep-alive>
  22. <component
  23. :is="triggers[data.type]"
  24. :data="data"
  25. @update="updateData"
  26. />
  27. </keep-alive>
  28. </transition-expand>
  29. <ui-button class="mt-4" @click="showModal = true">
  30. <v-remixicon name="riCommandLine" class="mr-2 -ml-1" />
  31. <span>Parameters</span>
  32. </ui-button>
  33. <ui-modal v-model="showModal" title="Parameters" content-class="max-w-4xl">
  34. <edit-workflow-parameters
  35. :data="data.parameters"
  36. @update="updateData({ parameters: $event })"
  37. />
  38. </ui-modal>
  39. </div>
  40. </template>
  41. <script setup>
  42. import { shallowRef } from 'vue';
  43. import { useI18n } from 'vue-i18n';
  44. import TriggerDate from './Trigger/TriggerDate.vue';
  45. import TriggerInterval from './Trigger/TriggerInterval.vue';
  46. import TriggerVisitWeb from './Trigger/TriggerVisitWeb.vue';
  47. import TriggerContextMenu from './Trigger/TriggerContextMenu.vue';
  48. import TriggerSpecificDay from './Trigger/TriggerSpecificDay.vue';
  49. // import TriggerElementChange from './Trigger/TriggerElementChange.vue';
  50. import TriggerKeyboardShortcut from './Trigger/TriggerKeyboardShortcut.vue';
  51. import EditWorkflowParameters from './EditWorkflowParameters.vue';
  52. const props = defineProps({
  53. data: {
  54. type: Object,
  55. default: () => ({}),
  56. },
  57. });
  58. const emit = defineEmits(['update:data']);
  59. const triggers = {
  60. manual: null,
  61. interval: TriggerInterval,
  62. 'context-menu': TriggerContextMenu,
  63. // 'element-change': TriggerElementChange,
  64. date: TriggerDate,
  65. 'specific-day': TriggerSpecificDay,
  66. 'on-startup': null,
  67. 'visit-web': TriggerVisitWeb,
  68. 'keyboard-shortcut': TriggerKeyboardShortcut,
  69. };
  70. const { t } = useI18n();
  71. const showModal = shallowRef(false);
  72. function updateData(value) {
  73. emit('update:data', { ...props.data, ...value });
  74. }
  75. </script>