EditGetText.vue 2.7 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899
  1. <template>
  2. <edit-interaction-base v-bind="{ data }" @change="updateData">
  3. <hr />
  4. <div class="flex rounded-lg bg-input px-4 items-center transition">
  5. <span>/</span>
  6. <input
  7. :value="data.regex"
  8. placeholder="Regex"
  9. class="w-11/12 bg-transparent p-2 focus:ring-0"
  10. @input="updateData({ regex: $event.target.value })"
  11. />
  12. <ui-popover>
  13. <template #trigger>
  14. <button>/{{ regexExp.join('') }}</button>
  15. </template>
  16. <p class="mb-2 text-gray-600 dark:text-gray-200">Expression flags</p>
  17. <div class="space-y-1">
  18. <div v-for="item in exps" :key="item.id">
  19. <ui-checkbox
  20. :model-value="regexExp.includes(item.id)"
  21. @change="handleExpCheckbox(item.id, $event)"
  22. >
  23. {{ item.name }}
  24. </ui-checkbox>
  25. </div>
  26. </div>
  27. </ui-popover>
  28. </div>
  29. <div class="mt-2 flex space-x-2">
  30. <ui-input
  31. :model-value="data.prefixText"
  32. :title="t('workflow.blocks.get-text.prefixText.title')"
  33. :label="t('workflow.blocks.get-text.prefixText.placeholder')"
  34. placeholder="Text"
  35. class="w-full"
  36. @change="updateData({ prefixText: $event })"
  37. />
  38. <ui-input
  39. :model-value="data.suffixText"
  40. :title="t('workflow.blocks.get-text.suffixText.title')"
  41. :label="t('workflow.blocks.get-text.suffixText.placeholder')"
  42. placeholder="Text"
  43. class="w-full"
  44. @change="updateData({ suffixText: $event })"
  45. />
  46. </div>
  47. <ui-checkbox
  48. :model-value="data.includeTags"
  49. class="mt-4"
  50. @change="updateData({ includeTags: $event })"
  51. >
  52. {{ t('workflow.blocks.get-text.includeTags') }}
  53. </ui-checkbox>
  54. <hr />
  55. <insert-workflow-data
  56. :data="data"
  57. variables
  58. extra-row
  59. @update="updateData"
  60. />
  61. </edit-interaction-base>
  62. </template>
  63. <script setup>
  64. import { ref } from 'vue';
  65. import { useI18n } from 'vue-i18n';
  66. import InsertWorkflowData from './InsertWorkflowData.vue';
  67. import EditInteractionBase from './EditInteractionBase.vue';
  68. const props = defineProps({
  69. data: {
  70. type: Object,
  71. default: () => ({}),
  72. },
  73. });
  74. const emit = defineEmits(['update:data']);
  75. const { t } = useI18n();
  76. const regexExp = ref([...new Set(props.data.regexExp)]);
  77. const exps = [
  78. { id: 'g', name: 'global' },
  79. { id: 'i', name: 'ignore case' },
  80. { id: 'm', name: 'multiline' },
  81. ];
  82. function updateData(value) {
  83. emit('update:data', { ...props.data, ...value });
  84. }
  85. function handleExpCheckbox(id, value) {
  86. if (value) {
  87. regexExp.value.push(id);
  88. } else {
  89. regexExp.value.splice(regexExp.value.indexOf(id), 1);
  90. }
  91. updateData({ regexExp: regexExp.value });
  92. }
  93. </script>