EditSwitchTo.vue 1.7 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263
  1. <template>
  2. <div class="space-y-2">
  3. <ui-textarea
  4. :model-value="data.description"
  5. :placeholder="t('common.description')"
  6. autoresize
  7. class="w-full"
  8. @change="updateData({ description: $event })"
  9. />
  10. <ui-select
  11. :model-value="data.windowType"
  12. class="w-full"
  13. @change="updateData({ windowType: $event })"
  14. >
  15. <option value="main-window">
  16. {{ t('workflow.blocks.switch-to.windowTypes.main') }}
  17. </option>
  18. <option value="iframe">
  19. {{ t('workflow.blocks.switch-to.windowTypes.iframe') }}
  20. </option>
  21. </ui-select>
  22. <edit-autocomplete
  23. v-if="data.windowType === 'iframe'"
  24. :trigger-char="['{{', '}}']"
  25. block
  26. hide-empty
  27. class="mt-2"
  28. trigger-class="!flex items-end"
  29. >
  30. <ui-input
  31. :model-value="data.selector"
  32. :label="t('workflow.blocks.switch-to.iframeSelector')"
  33. placeholder="CSS Selector or XPath"
  34. autocomplete="off"
  35. class="mr-2 w-full"
  36. @change="updateData({ selector: $event })"
  37. />
  38. <shared-el-selector-actions
  39. :selector="data.selector"
  40. @update:selector="updateData({ selector: $event })"
  41. />
  42. </edit-autocomplete>
  43. </div>
  44. </template>
  45. <script setup>
  46. import { useI18n } from 'vue-i18n';
  47. import SharedElSelectorActions from '@/components/newtab/shared/SharedElSelectorActions.vue';
  48. import EditAutocomplete from './EditAutocomplete.vue';
  49. const props = defineProps({
  50. data: {
  51. type: Object,
  52. default: () => ({}),
  53. },
  54. });
  55. const emit = defineEmits(['update:data']);
  56. const { t } = useI18n();
  57. function updateData(value) {
  58. emit('update:data', { ...props.data, ...value });
  59. }
  60. </script>