EditElementExists.vue 1.6 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364
  1. <template>
  2. <div>
  3. <ui-select
  4. :model-value="data.findBy || 'cssSelector'"
  5. :placeholder="t('workflow.blocks.base.findElement.placeholder')"
  6. class="w-full mb-2"
  7. @change="updateData({ findBy: $event })"
  8. >
  9. <option v-for="type in selectorTypes" :key="type" :value="type">
  10. {{ t(`workflow.blocks.base.findElement.options.${type}`) }}
  11. </option>
  12. </ui-select>
  13. <ui-input
  14. :model-value="data.selector"
  15. :label="t('workflow.blocks.element-exists.selector')"
  16. class="mb-1 w-full"
  17. @change="updateData({ selector: $event })"
  18. />
  19. <ui-input
  20. :model-value="data.tryCount"
  21. :title="t('workflow.blocks.element-exists.tryFor.title')"
  22. :label="t('workflow.blocks.element-exists.tryFor.label')"
  23. class="w-full mb-1"
  24. type="number"
  25. min="1"
  26. @change="updateData({ tryCount: +$event })"
  27. />
  28. <ui-input
  29. :model-value="data.timeout"
  30. :label="t('workflow.blocks.element-exists.timeout.label')"
  31. :title="t('workflow.blocks.element-exists.timeout.title')"
  32. class="w-full"
  33. type="number"
  34. min="200"
  35. @change="updateData({ timeout: +$event })"
  36. />
  37. </div>
  38. </template>
  39. <script setup>
  40. import { onMounted } from 'vue';
  41. import { useI18n } from 'vue-i18n';
  42. const props = defineProps({
  43. data: {
  44. type: Object,
  45. default: () => ({}),
  46. },
  47. });
  48. const emit = defineEmits(['update:data']);
  49. const { t } = useI18n();
  50. const selectorTypes = ['cssSelector', 'xpath'];
  51. function updateData(value) {
  52. emit('update:data', { ...props.data, ...value });
  53. }
  54. onMounted(() => {
  55. if (!props.data.findBy) {
  56. updateData({ findBy: 'cssSelector' });
  57. }
  58. });
  59. </script>