diff options
Diffstat (limited to 'src/tools/url-encoder/url-encoder.vue')
-rw-r--r-- | src/tools/url-encoder/url-encoder.vue | 84 |
1 files changed, 44 insertions, 40 deletions
diff --git a/src/tools/url-encoder/url-encoder.vue b/src/tools/url-encoder/url-encoder.vue index 4f89986..5fdcade 100644 --- a/src/tools/url-encoder/url-encoder.vue +++ b/src/tools/url-encoder/url-encoder.vue @@ -1,3 +1,41 @@ +<script setup lang="ts"> +import { computed, ref } from 'vue'; +import { useCopy } from '@/composable/copy'; +import { useValidation } from '@/composable/validation'; +import { isNotThrowing } from '@/utils/boolean'; +import { withDefaultOnError } from '@/utils/defaults'; + +const encodeInput = ref('Hello world :)'); +const encodeOutput = computed(() => withDefaultOnError(() => encodeURIComponent(encodeInput.value), '')); + +const encodedValidation = useValidation({ + source: encodeInput, + rules: [ + { + validator: value => isNotThrowing(() => encodeURIComponent(value)), + message: 'Impossible to parse this string', + }, + ], +}); + +const { copy: copyEncoded } = useCopy({ source: encodeOutput, text: 'Encoded string copied to the clipboard' }); + +const decodeInput = ref('Hello%20world%20%3A)'); +const decodeOutput = computed(() => withDefaultOnError(() => decodeURIComponent(decodeInput.value), '')); + +const decodeValidation = useValidation({ + source: encodeInput, + rules: [ + { + validator: value => isNotThrowing(() => decodeURIComponent(value)), + message: 'Impossible to parse this string', + }, + ], +}); + +const { copy: copyDecoded } = useCopy({ source: decodeOutput, text: 'Decoded string copied to the clipboard' }); +</script> + <template> <c-card title="Encode"> <n-form-item @@ -24,7 +62,9 @@ </n-form-item> <div flex justify-center> - <c-button @click="copyEncoded"> Copy </c-button> + <c-button @click="copyEncoded"> + Copy + </c-button> </div> </c-card> <c-card title="Decode"> @@ -52,45 +92,9 @@ </n-form-item> <div flex justify-center> - <c-button @click="copyDecoded"> Copy </c-button> + <c-button @click="copyDecoded"> + Copy + </c-button> </div> </c-card> </template> - -<script setup lang="ts"> -import { useCopy } from '@/composable/copy'; -import { useValidation } from '@/composable/validation'; -import { isNotThrowing } from '@/utils/boolean'; -import { withDefaultOnError } from '@/utils/defaults'; -import { computed, ref } from 'vue'; - -const encodeInput = ref('Hello world :)'); -const encodeOutput = computed(() => withDefaultOnError(() => encodeURIComponent(encodeInput.value), '')); - -const encodedValidation = useValidation({ - source: encodeInput, - rules: [ - { - validator: (value) => isNotThrowing(() => encodeURIComponent(value)), - message: 'Impossible to parse this string', - }, - ], -}); - -const { copy: copyEncoded } = useCopy({ source: encodeOutput, text: 'Encoded string copied to the clipboard' }); - -const decodeInput = ref('Hello%20world%20%3A)'); -const decodeOutput = computed(() => withDefaultOnError(() => decodeURIComponent(decodeInput.value), '')); - -const decodeValidation = useValidation({ - source: encodeInput, - rules: [ - { - validator: (value) => isNotThrowing(() => decodeURIComponent(value)), - message: 'Impossible to parse this string', - }, - ], -}); - -const { copy: copyDecoded } = useCopy({ source: decodeOutput, text: 'Decoded string copied to the clipboard' }); -</script> |