diff --git a/.eslintrc.cjs b/.eslintrc.cjs
index 8155910c..37a67b34 100644
--- a/.eslintrc.cjs
+++ b/.eslintrc.cjs
@@ -10,5 +10,12 @@ module.exports = {
'@typescript-eslint/semi': ['error', 'always'],
'@typescript-eslint/no-use-before-define': ['error', { allowNamedExports: true, functions: false }],
'vue/no-empty-component-block': ['error'],
+ 'no-restricted-imports': ['error', {
+ paths: [{
+ name: '@vueuse/core',
+ importNames: ['useClipboard'],
+ message: 'Please use local useCopy from src/composable/copy.ts instead of useClipboard.',
+ }],
+ }],
},
};
diff --git a/src/components/InputCopyable.vue b/src/components/InputCopyable.vue
index db26f458..ed678954 100644
--- a/src/components/InputCopyable.vue
+++ b/src/components/InputCopyable.vue
@@ -1,22 +1,13 @@
@@ -24,7 +15,7 @@ function onCopyClicked() {
-
+
diff --git a/src/components/SpanCopyable.vue b/src/components/SpanCopyable.vue
index 17b1a59b..7ab3a1d1 100644
--- a/src/components/SpanCopyable.vue
+++ b/src/components/SpanCopyable.vue
@@ -1,26 +1,19 @@
- {{ value }}
+ {{ value }}
{{ tooltipText }}
diff --git a/src/components/TextareaCopyable.vue b/src/components/TextareaCopyable.vue
index e0c4d8fb..b349d041 100644
--- a/src/components/TextareaCopyable.vue
+++ b/src/components/TextareaCopyable.vue
@@ -1,12 +1,13 @@
@@ -61,7 +53,7 @@ function onCopyClicked() {
-
+
@@ -70,7 +62,7 @@ function onCopyClicked() {
-
+
{{ tooltipText }}
diff --git a/src/composable/copy.ts b/src/composable/copy.ts
index dcaed848..5f853bac 100644
--- a/src/composable/copy.ts
+++ b/src/composable/copy.ts
@@ -1,11 +1,19 @@
-import { type MaybeRef, get, useClipboard } from '@vueuse/core';
+// eslint-disable-next-line no-restricted-imports
+import { useClipboard } from '@vueuse/core';
import { useMessage } from 'naive-ui';
+import type { MaybeRefOrGetter } from 'vue';
+
+export function useCopy({ source, text = 'Copied to the clipboard', createToast = true }: { source?: MaybeRefOrGetter; text?: string; createToast?: boolean } = {}) {
+ const { copy, copied, ...rest } = useClipboard({
+ source,
+ legacy: true,
+ });
-export function useCopy({ source, text = 'Copied to the clipboard' }: { source?: MaybeRef; text?: string } = {}) {
- const { copy } = useClipboard(source ? { source: computed(() => String(get(source))) } : {});
const message = useMessage();
return {
+ ...rest,
+ isJustCopied: copied,
async copy(content?: string, { notificationMessage }: { notificationMessage?: string } = {}) {
if (source) {
await copy();
@@ -14,7 +22,9 @@ export function useCopy({ source, text = 'Copied to the clipboard' }: { source?:
await copy(content);
}
- message.success(notificationMessage ?? text);
+ if (createToast) {
+ message.success(notificationMessage ?? text);
+ }
},
};
}
diff --git a/src/tools/benchmark-builder/benchmark-builder.vue b/src/tools/benchmark-builder/benchmark-builder.vue
index 91f3155d..7922791c 100644
--- a/src/tools/benchmark-builder/benchmark-builder.vue
+++ b/src/tools/benchmark-builder/benchmark-builder.vue
@@ -1,10 +1,11 @@
diff --git a/src/tools/otp-code-generator-and-validator/token-display.vue b/src/tools/otp-code-generator-and-validator/token-display.vue
index a40c9af9..5313b0be 100644
--- a/src/tools/otp-code-generator-and-validator/token-display.vue
+++ b/src/tools/otp-code-generator-and-validator/token-display.vue
@@ -1,10 +1,10 @@
diff --git a/src/tools/roman-numeral-converter/roman-numeral-converter.vue b/src/tools/roman-numeral-converter/roman-numeral-converter.vue
index d365cc5a..498c340c 100644
--- a/src/tools/roman-numeral-converter/roman-numeral-converter.vue
+++ b/src/tools/roman-numeral-converter/roman-numeral-converter.vue
@@ -36,7 +36,7 @@ const validationRoman = useValidation({
});
const { copy: copyRoman } = useCopy({ source: outputRoman, text: 'Roman number copied to the clipboard' });
-const { copy: copyArabic } = useCopy({ source: outputNumeral, text: 'Arabic number copied to the clipboard' });
+const { copy: copyArabic } = useCopy({ source: () => String(outputNumeral), text: 'Arabic number copied to the clipboard' });
diff --git a/src/tools/string-obfuscator/string-obfuscator.vue b/src/tools/string-obfuscator/string-obfuscator.vue
index 0f11fca1..512d3781 100644
--- a/src/tools/string-obfuscator/string-obfuscator.vue
+++ b/src/tools/string-obfuscator/string-obfuscator.vue
@@ -39,7 +39,7 @@ const { copy } = useCopy({ source: obfuscatedString });
{{ obfuscatedString }}
-
+
diff --git a/src/tools/uuid-generator/uuid-generator.vue b/src/tools/uuid-generator/uuid-generator.vue
index a393781b..e9f55e6b 100644
--- a/src/tools/uuid-generator/uuid-generator.vue
+++ b/src/tools/uuid-generator/uuid-generator.vue
@@ -34,7 +34,7 @@ const { copy } = useCopy({ source: uuids, text: 'UUIDs copied to the clipboard'
/>
-
+
Copy