Skip to content

Commit 629fdce

Browse files
move ToolSourceMenuItem out to parent; use GModal
1 parent 3c1b82b commit 629fdce

3 files changed

Lines changed: 55 additions & 95 deletions

File tree

client/src/components/Tool/Buttons/ToolOptionsButton.vue

Lines changed: 55 additions & 43 deletions
Original file line numberDiff line numberDiff line change
@@ -1,12 +1,13 @@
11
<script setup lang="ts">
2-
import { faCopy } from "@fortawesome/free-regular-svg-icons";
2+
import { faCopy, faEye } from "@fortawesome/free-regular-svg-icons";
33
import { faCaretDown, faDownload, faExternalLinkAlt, faLink } from "@fortawesome/free-solid-svg-icons";
44
import { FontAwesomeIcon } from "@fortawesome/vue-fontawesome";
55
import { BDropdown, BDropdownItem } from "bootstrap-vue";
66
import { storeToRefs } from "pinia";
77
import { computed, ref } from "vue";
88
99
import { isAdminUser } from "@/api";
10+
import { useConfig } from "@/composables/config";
1011
import { useUserStore } from "@/stores/userStore";
1112
import localize from "@/utils/localization";
1213
import { loadWebhooks } from "@/utils/webhooks";
@@ -15,9 +16,11 @@ import { copyId, copyLink, downloadTool, openLink } from "../utilities";
1516
1617
import ToolTourGeneratorItem from "./ToolTourGeneratorItem.vue";
1718
import GButton from "@/components/BaseComponents/GButton.vue";
18-
import ToolSourceMenuItem from "@/components/Tool/ToolSourceMenuItem.vue";
19+
import GModal from "@/components/BaseComponents/GModal.vue";
20+
import ToolSource from "@/components/Tool/ToolSource.vue";
1921
20-
const { currentUser } = storeToRefs(useUserStore());
22+
const { currentUser, isAdmin } = storeToRefs(useUserStore());
23+
const { config } = useConfig(true);
2124
2225
interface Props {
2326
id: string;
@@ -34,6 +37,7 @@ const props = withDefaults(defineProps<Props>(), {
3437
version: "1.0",
3538
});
3639
40+
const showToolSource = ref(false);
3741
const webhookDetails = ref<any[]>([]);
3842
3943
const showDownload = computed(() => isAdminUser(currentUser.value));
@@ -75,44 +79,52 @@ loadToolMenuWebhooks();
7579
</script>
7680

7781
<template>
78-
<BDropdown
79-
no-caret
80-
right
81-
role="button"
82-
title="Options"
83-
variant="link"
84-
aria-label="View all Options"
85-
class="tool-dropdown"
86-
toggle-class="p-0"
87-
size="sm">
88-
<template v-slot:button-content>
89-
<GButton class="d-block" color="blue" transparent size="small" tooltip title="Options">
90-
<FontAwesomeIcon :icon="faCaretDown" />
91-
</GButton>
92-
</template>
93-
94-
<BDropdownItem @click="onCopyLink">
95-
<FontAwesomeIcon :icon="faLink" /><span v-localize>Copy Link</span>
96-
</BDropdownItem>
97-
98-
<BDropdownItem @click="onCopyId">
99-
<FontAwesomeIcon :icon="faCopy" /><span v-localize>Copy Tool ID</span>
100-
</BDropdownItem>
101-
102-
<BDropdownItem v-if="showDownload" @click="onDownload">
103-
<FontAwesomeIcon :icon="faDownload" /><span v-localize>Download</span>
104-
</BDropdownItem>
105-
106-
<ToolSourceMenuItem :tool-id="id" :tool-uuid="toolUuid || undefined" />
107-
108-
<BDropdownItem v-if="showLink" @click="onLink">
109-
<FontAwesomeIcon :icon="faExternalLinkAlt" /><span v-localize>See in Tool Shed</span>
110-
</BDropdownItem>
111-
112-
<ToolTourGeneratorItem v-if="props.allowGeneratedTours" :tool-id="props.id" :tool-version="props.version" />
113-
114-
<BDropdownItem v-for="w of webhookDetails" :key="w.title" @click="w.onclick">
115-
<span :class="w.icon" />{{ localize(w.title) }}
116-
</BDropdownItem>
117-
</BDropdown>
82+
<div>
83+
<BDropdown
84+
no-caret
85+
right
86+
role="button"
87+
title="Options"
88+
variant="link"
89+
aria-label="View all Options"
90+
class="tool-dropdown"
91+
toggle-class="p-0"
92+
size="sm">
93+
<template v-slot:button-content>
94+
<GButton class="d-block" color="blue" transparent size="small" tooltip title="Options">
95+
<FontAwesomeIcon :icon="faCaretDown" />
96+
</GButton>
97+
</template>
98+
99+
<BDropdownItem @click="onCopyLink">
100+
<FontAwesomeIcon :icon="faLink" /><span v-localize>Copy Link</span>
101+
</BDropdownItem>
102+
103+
<BDropdownItem @click="onCopyId">
104+
<FontAwesomeIcon :icon="faCopy" /><span v-localize>Copy Tool ID</span>
105+
</BDropdownItem>
106+
107+
<BDropdownItem v-if="showDownload" @click="onDownload">
108+
<FontAwesomeIcon :icon="faDownload" /><span v-localize>Download</span>
109+
</BDropdownItem>
110+
111+
<BDropdownItem v-if="config.enable_tool_source_display || isAdmin" @click="showToolSource = true">
112+
<FontAwesomeIcon :icon="faEye" /><span v-localize>View Tool source</span>
113+
</BDropdownItem>
114+
115+
<BDropdownItem v-if="showLink" @click="onLink">
116+
<FontAwesomeIcon :icon="faExternalLinkAlt" /><span v-localize>See in Tool Shed</span>
117+
</BDropdownItem>
118+
119+
<ToolTourGeneratorItem v-if="props.allowGeneratedTours" :tool-id="props.id" :tool-version="props.version" />
120+
121+
<BDropdownItem v-for="w of webhookDetails" :key="w.title" @click="w.onclick">
122+
<span :class="w.icon" />{{ localize(w.title) }}
123+
</BDropdownItem>
124+
</BDropdown>
125+
126+
<GModal :show.sync="showToolSource" fullscreen :title="`Tool Source for ${id}`">
127+
<ToolSource v-if="showToolSource" :tool-id="id" :tool-uuid="toolUuid || undefined" />
128+
</GModal>
129+
</div>
118130
</template>

client/src/components/Tool/ToolCard.test.js

Lines changed: 0 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -57,9 +57,6 @@ describe("ToolCard", () => {
5757
messageVariant: "warning",
5858
disabled: false,
5959
},
60-
stubs: {
61-
ToolSourceMenuItem: { template: "<div></div>" },
62-
},
6360
localVue,
6461
pinia,
6562
});

client/src/components/Tool/ToolSourceMenuItem.vue

Lines changed: 0 additions & 49 deletions
This file was deleted.

0 commit comments

Comments
 (0)