diff options
Diffstat (limited to 'src/components')
-rw-r--r-- | src/components/FavoriteButton.vue | 27 | ||||
-rw-r--r-- | src/components/InputCopyable.vue | 13 | ||||
-rw-r--r-- | src/components/NavbarButtons.vue | 83 | ||||
-rw-r--r-- | src/components/SpanCopyable.vue | 16 | ||||
-rw-r--r-- | src/components/TextareaCopyable.vue | 40 |
5 files changed, 62 insertions, 117 deletions
diff --git a/src/components/FavoriteButton.vue b/src/components/FavoriteButton.vue index ef180a6..c3f0aaa 100644 --- a/src/components/FavoriteButton.vue +++ b/src/components/FavoriteButton.vue @@ -1,6 +1,4 @@ <script setup lang="ts"> -import { FavoriteFilled } from '@vicons/material'; - import { useToolStore } from '@/tools/tools.store'; import type { Tool } from '@/tools/tools.types'; @@ -26,18 +24,15 @@ function toggleFavorite(event: MouseEvent) { </script> <template> - <n-tooltip trigger="hover"> - <template #trigger> - <c-button - variant="text" - circle - :type="buttonType" - :style="{ opacity: isFavorite ? 1 : 0.2 }" - @click="toggleFavorite" - > - <n-icon :component="FavoriteFilled" /> - </c-button> - </template> - {{ isFavorite ? 'Remove from favorites' : 'Add to favorites' }} - </n-tooltip> + <c-tooltip :tooltip="isFavorite ? 'Remove from favorites' : 'Add to favorites' "> + <c-button + variant="text" + circle + :type="buttonType" + :style="{ opacity: isFavorite ? 1 : 0.2 }" + @click="toggleFavorite" + > + <icon-mdi-heart /> + </c-button> + </c-tooltip> </template> diff --git a/src/components/InputCopyable.vue b/src/components/InputCopyable.vue index ed67895..a69a039 100644 --- a/src/components/InputCopyable.vue +++ b/src/components/InputCopyable.vue @@ -13,14 +13,11 @@ const tooltipText = computed(() => isJustCopied.value ? 'Copied!' : 'Copy to cli <template> <c-input-text v-model:value="value"> <template #suffix> - <n-tooltip trigger="hover"> - <template #trigger> - <c-button circle variant="text" size="small" @click="copy()"> - <icon-mdi-content-copy /> - </c-button> - </template> - {{ tooltipText }} - </n-tooltip> + <c-tooltip :tooltip="tooltipText"> + <c-button circle variant="text" size="small" @click="copy()"> + <icon-mdi-content-copy /> + </c-button> + </c-tooltip> </template> </c-input-text> </template> diff --git a/src/components/NavbarButtons.vue b/src/components/NavbarButtons.vue index 5b1a3a4..653afdd 100644 --- a/src/components/NavbarButtons.vue +++ b/src/components/NavbarButtons.vue @@ -7,56 +7,43 @@ const { isDarkTheme } = toRefs(styleStore); </script> <template> - <n-tooltip trigger="hover"> - <template #trigger> - <c-button - circle - variant="text" - href="https://github.com/CorentinTh/it-tools" - target="_blank" - rel="noopener noreferrer" - aria-label="IT-Tools' GitHub repository" - > - <n-icon size="25" :component="BrandGithub" /> - </c-button> - </template> - Github repository - </n-tooltip> + <c-tooltip tooltip="Github repository" position="bottom"> + <c-button + circle + variant="text" + href="https://github.com/CorentinTh/it-tools" + target="_blank" + rel="noopener noreferrer" + aria-label="IT-Tools' GitHub repository" + > + <n-icon size="25" :component="BrandGithub" /> + </c-button> + </c-tooltip> - <n-tooltip trigger="hover"> - <template #trigger> - <c-button - circle - variant="text" - href="https://twitter.com/ittoolsdottech" - rel="noopener" - target="_blank" - aria-label="IT Tools' Twitter account" - > - <n-icon size="25" :component="BrandTwitter" /> - </c-button> - </template> - IT Tools' Twitter account - </n-tooltip> + <c-tooltip tooltip="Twitter account" position="bottom"> + <c-button + circle + variant="text" + href="https://twitter.com/ittoolsdottech" + rel="noopener" + target="_blank" + aria-label="IT Tools' Twitter account" + > + <n-icon size="25" :component="BrandTwitter" /> + </c-button> + </c-tooltip> - <n-tooltip trigger="hover"> - <template #trigger> - <c-button circle variant="text" to="/about" aria-label="About"> - <n-icon size="25" :component="InfoCircle" /> - </c-button> - </template> - About - </n-tooltip> - <n-tooltip trigger="hover"> - <template #trigger> - <c-button circle variant="text" aria-label="Toggle dark/light mode" @click="() => styleStore.toggleDark()"> - <n-icon v-if="isDarkTheme" size="25" :component="Sun" /> - <n-icon v-else size="25" :component="Moon" /> - </c-button> - </template> - <span v-if="isDarkTheme">Light mode</span> - <span v-else>Dark mode</span> - </n-tooltip> + <c-tooltip tooltip="About IT-Tools" position="bottom"> + <c-button circle variant="text" to="/about" aria-label="About"> + <n-icon size="25" :component="InfoCircle" /> + </c-button> + </c-tooltip> + <c-tooltip :tooltip="isDarkTheme ? 'Light mode' : 'Dark mode'" position="bottom"> + <c-button circle variant="text" aria-label="Toggle dark/light mode" @click="() => styleStore.toggleDark()"> + <n-icon v-if="isDarkTheme" size="25" :component="Sun" /> + <n-icon v-else size="25" :component="Moon" /> + </c-button> + </c-tooltip> </template> <style lang="less" scoped> diff --git a/src/components/SpanCopyable.vue b/src/components/SpanCopyable.vue index 7ab3a1d..5643cff 100644 --- a/src/components/SpanCopyable.vue +++ b/src/components/SpanCopyable.vue @@ -11,17 +11,7 @@ const tooltipText = computed(() => isJustCopied.value ? 'Copied!' : initialText) </script> <template> - <n-tooltip trigger="hover"> - <template #trigger> - <span class="value" @click="copy()">{{ value }}</span> - </template> - {{ tooltipText }} - </n-tooltip> + <c-tooltip :tooltip="tooltipText"> + <span cursor-pointer font-mono @click="copy()">{{ value }}</span> + </c-tooltip> </template> - -<style scoped lang="less"> -.value { - cursor: pointer; - font-family: monospace; -} -</style> diff --git a/src/components/TextareaCopyable.vue b/src/components/TextareaCopyable.vue index b349d04..8b0aae6 100644 --- a/src/components/TextareaCopyable.vue +++ b/src/components/TextareaCopyable.vue @@ -40,7 +40,7 @@ const tooltipText = computed(() => isJustCopied.value ? 'Copied!' : copyMessage. <template> <div style="overflow-x: hidden; width: 100%"> - <c-card class="result-card"> + <c-card relative> <n-scrollbar x-scrollable trigger="none" @@ -50,16 +50,13 @@ const tooltipText = computed(() => isJustCopied.value ? 'Copied!' : copyMessage. <n-code :code="value" :language="language" :trim="false" data-test-id="area-content" /> </n-config-provider> </n-scrollbar> - <n-tooltip v-if="value" trigger="hover"> - <template #trigger> - <div class="copy-button" :class="[copyPlacement]"> - <c-button circle important:h-10 important:w-10 @click="copy()"> - <n-icon size="22" :component="Copy" /> - </c-button> - </div> - </template> - <span>{{ tooltipText }}</span> - </n-tooltip> + <div absolute right-10px top-10px> + <c-tooltip v-if="value" :tooltip="tooltipText" position="left"> + <c-button circle important:h-10 important:w-10 @click="copy()"> + <n-icon size="22" :component="Copy" /> + </c-button> + </c-tooltip> + </div> </c-card> <div v-if="copyPlacement === 'outside'" mt-4 flex justify-center> <c-button @click="copy()"> @@ -74,25 +71,4 @@ const tooltipText = computed(() => isJustCopied.value ? 'Copied!' : copyMessage. padding-bottom: 10px; margin-bottom: -10px; } -.result-card { - position: relative; - .copy-button { - position: absolute; - opacity: 1; - - &.top-right { - top: 10px; - right: 10px; - } - - &.bottom-right { - bottom: 10px; - right: 10px; - } - &.outside, - &.none { - display: none; - } - } -} </style> |