WorkflowDetailsCard.vue 2.5 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107
  1. <template>
  2. <ui-card class="w-80 h-full" padding="p-0">
  3. <div class="mb-4 px-4 pt-4">
  4. <span
  5. class="p-2 inline-block align-middle rounded-lg bg-box-transparent mr-2"
  6. >
  7. <v-remixicon name="riGlobalLine" />
  8. </span>
  9. <p class="font-semibold text-lg inline-block align-middle">
  10. Workflow name
  11. </p>
  12. </div>
  13. <div class="flex items-center px-4">
  14. <ui-button variant="accent" class="flex-1 mr-2">
  15. <v-remixicon class="-ml-1 mr-1" name="riPlayLine" />
  16. Execute
  17. </ui-button>
  18. <ui-button icon class="text-red-500">
  19. <v-remixicon name="riDeleteBin7Line" />
  20. </ui-button>
  21. </div>
  22. <ui-tabs v-model="state.activeTab" fill class="mx-4 mt-5 mb-4">
  23. <ui-tab value="tasks">Tasks</ui-tab>
  24. <ui-tab value="data-schema">Data Schema</ui-tab>
  25. </ui-tabs>
  26. <ui-tab-panels v-model="state.activeTab">
  27. <ui-tab-panel
  28. value="tasks"
  29. class="px-4 grid grid-cols-2 gap-2 pb-4 overflow-auto pt-1"
  30. style="max-height: calc(100vh - 200px)"
  31. >
  32. <div
  33. v-for="task in taskList"
  34. :key="task.id"
  35. :title="task.name"
  36. class="
  37. cursor-move
  38. select-none
  39. group
  40. p-4
  41. rounded-lg
  42. bg-input
  43. transition
  44. "
  45. >
  46. <v-remixicon :name="task.icon" size="24" class="mb-3" />
  47. <p class="leading-tight text-overflow">
  48. {{ task.name }}
  49. </p>
  50. </div>
  51. </ui-tab-panel>
  52. <ui-tab-panel value="data-schema">
  53. <p>sss</p>
  54. </ui-tab-panel>
  55. </ui-tab-panels>
  56. </ui-card>
  57. </template>
  58. <script setup>
  59. import { shallowReactive } from 'vue';
  60. const taskList = [
  61. {
  62. id: 'event-click',
  63. name: 'Click element',
  64. icon: 'riCursorLine',
  65. },
  66. {
  67. id: 'export-data',
  68. name: 'Export data',
  69. icon: 'riDownloadLine',
  70. },
  71. {
  72. id: 'element-scroll',
  73. name: 'Scroll element',
  74. icon: 'riMouseLine',
  75. },
  76. {
  77. id: 'open-website',
  78. name: 'Open website',
  79. icon: 'riGlobalLine',
  80. },
  81. {
  82. id: 'text-input',
  83. name: 'Text input',
  84. icon: 'riInputCursorMove',
  85. },
  86. {
  87. id: 'repeat-task',
  88. name: 'Repeat tasks',
  89. icon: 'riRepeat2Line',
  90. },
  91. {
  92. id: 'get-attribute',
  93. name: 'Get attribute',
  94. icon: 'riBracketsLine',
  95. },
  96. {
  97. id: 'trigger-events',
  98. name: 'Trigger events',
  99. icon: 'riEqualizerLine',
  100. },
  101. ].sort((a, b) => (a.name > b.name ? 1 : -1));
  102. const state = shallowReactive({
  103. activeTab: 'tasks',
  104. });
  105. </script>