EditForms.vue 3.2 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113
  1. <template>
  2. <edit-interaction-base v-bind="{ data, hide: hideBase }" @change="updateData">
  3. <ui-checkbox
  4. :model-value="data.getValue"
  5. class="my-2"
  6. @change="updateData({ getValue: $event })"
  7. >
  8. {{ t('workflow.blocks.forms.getValue') }}
  9. </ui-checkbox>
  10. <template v-if="data.getValue">
  11. <ui-checkbox
  12. :model-value="data.saveData"
  13. class="mb-2 ml-2"
  14. @change="updateData({ saveData: $event })"
  15. >
  16. Save data
  17. </ui-checkbox>
  18. <div class="flex items-center">
  19. <ui-select
  20. :model-value="data.dataColumn"
  21. placeholder="Data column"
  22. class="mr-2 flex-1"
  23. @change="updateData({ dataColumn: $event })"
  24. >
  25. <option
  26. v-for="column in workflow.data.value.dataColumns"
  27. :key="column.name"
  28. :value="column.name"
  29. >
  30. {{ column.name }}
  31. </option>
  32. </ui-select>
  33. <ui-button
  34. icon
  35. title="Data columns"
  36. @click="workflow.showDataColumnsModal(true)"
  37. >
  38. <v-remixicon name="riKey2Line" />
  39. </ui-button>
  40. </div>
  41. </template>
  42. <template v-else>
  43. <ui-select
  44. :model-value="data.type"
  45. class="block w-full mb-3"
  46. :placeholder="t('workflow.blocks.forms.type')"
  47. @change="updateData({ type: $event })"
  48. >
  49. <option v-for="form in forms" :key="form" :value="form">
  50. {{ t(`workflow.blocks.forms.${form}.name`) }}
  51. </option>
  52. </ui-select>
  53. <ui-checkbox
  54. v-if="data.type === 'checkbox' || data.type === 'radio'"
  55. :model-value="data.selected"
  56. @change="updateData({ selected: $event })"
  57. >
  58. {{ t('workflow.blocks.forms.selected') }}
  59. </ui-checkbox>
  60. <template v-if="data.type === 'text-field' || data.type === 'select'">
  61. <ui-textarea
  62. :model-value="data.value"
  63. :placeholder="t('workflow.blocks.forms.text-field.value')"
  64. class="w-full"
  65. @change="updateData({ value: $event })"
  66. />
  67. <ui-checkbox
  68. :model-value="data.clearValue"
  69. class="mb-1 ml-1"
  70. @change="updateData({ clearValue: $event })"
  71. >
  72. {{ t('workflow.blocks.forms.text-field.clearValue') }}
  73. </ui-checkbox>
  74. </template>
  75. <ui-input
  76. v-if="data.type === 'text-field'"
  77. :model-value="data.delay"
  78. :label="t('workflow.blocks.forms.text-field.delay.label')"
  79. :placeholder="t('workflow.blocks.forms.text-field.delay.placeholder')"
  80. class="w-full"
  81. min="0"
  82. type="number"
  83. @change="updateData({ delay: +$event })"
  84. />
  85. </template>
  86. </edit-interaction-base>
  87. </template>
  88. <script setup>
  89. import { inject } from 'vue';
  90. import { useI18n } from 'vue-i18n';
  91. import EditInteractionBase from './EditInteractionBase.vue';
  92. const props = defineProps({
  93. data: {
  94. type: Object,
  95. default: () => ({}),
  96. },
  97. hideBase: {
  98. type: Boolean,
  99. default: false,
  100. },
  101. });
  102. const emit = defineEmits(['update:data']);
  103. const { t } = useI18n();
  104. const workflow = inject('workflow');
  105. const forms = ['text-field', 'select', 'checkbox', 'radio'];
  106. function updateData(value) {
  107. emit('update:data', { ...props.data, ...value });
  108. }
  109. </script>