EditClipboard.vue 2.8 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103
  1. <template>
  2. <div>
  3. <ui-textarea
  4. :model-value="data.description"
  5. class="w-full"
  6. :placeholder="t('common.description')"
  7. @change="updateData({ description: $event })"
  8. />
  9. <template v-if="hasPermission">
  10. <p class="mt-4">
  11. {{ t('workflow.blocks.clipboard.data') }}
  12. </p>
  13. <ui-input
  14. v-if="data.responseType === 'json'"
  15. :model-value="data.dataPath"
  16. placeholder="path.to.data"
  17. label="Data path"
  18. class="w-full mt-2"
  19. @change="updateData({ dataPath: $event })"
  20. />
  21. <ui-checkbox
  22. :model-value="data.assignVariable"
  23. block
  24. class="mt-4"
  25. @change="updateData({ assignVariable: $event })"
  26. >
  27. {{ t('workflow.variables.assign') }}
  28. </ui-checkbox>
  29. <ui-input
  30. v-if="data.assignVariable"
  31. :model-value="data.variableName"
  32. :placeholder="t('workflow.variables.name')"
  33. :title="t('workflow.variables.name')"
  34. class="mt-2 w-full"
  35. @change="updateData({ variableName: $event })"
  36. />
  37. <ui-checkbox
  38. :model-value="data.saveData"
  39. block
  40. class="mt-4"
  41. @change="updateData({ saveData: $event })"
  42. >
  43. {{ t('workflow.blocks.get-text.checkbox') }}
  44. </ui-checkbox>
  45. <ui-select
  46. v-if="data.saveData"
  47. :model-value="data.dataColumn"
  48. placeholder="Select column"
  49. class="mt-2 w-full"
  50. @change="updateData({ dataColumn: $event })"
  51. >
  52. <option
  53. v-for="column in workflow.data.value.table"
  54. :key="column.name"
  55. :value="column.name"
  56. >
  57. {{ column.name }}
  58. </option>
  59. </ui-select>
  60. </template>
  61. <template v-else>
  62. <p class="mt-4">
  63. {{ t('workflow.blocks.clipboard.noPermission') }}
  64. </p>
  65. <ui-button variant="accent" class="mt-2" @click="requestPermission">
  66. {{ t('workflow.blocks.clipboard.grantPermission') }}
  67. </ui-button>
  68. </template>
  69. </div>
  70. </template>
  71. <script setup>
  72. import { ref, inject, onMounted } from 'vue';
  73. import { useI18n } from 'vue-i18n';
  74. import browser from 'webextension-polyfill';
  75. const props = defineProps({
  76. data: {
  77. type: Object,
  78. default: () => ({}),
  79. },
  80. });
  81. const emit = defineEmits(['update:data']);
  82. const permission = { permissions: ['clipboardRead'] };
  83. const { t } = useI18n();
  84. const workflow = inject('workflow');
  85. const hasPermission = ref(false);
  86. function handlePermission(status) {
  87. hasPermission.value = status;
  88. }
  89. function requestPermission() {
  90. browser.permissions.request(permission).then(handlePermission);
  91. }
  92. function updateData(value) {
  93. emit('update:data', { ...props.data, ...value });
  94. }
  95. onMounted(() => {
  96. browser.permissions.contains(permission).then(handlePermission);
  97. });
  98. </script>