diff options
Diffstat (limited to 'src/tools/base64-string-converter/base64-string-converter.vue')
-rw-r--r-- | src/tools/base64-string-converter/base64-string-converter.vue | 23 |
1 files changed, 19 insertions, 4 deletions
diff --git a/src/tools/base64-string-converter/base64-string-converter.vue b/src/tools/base64-string-converter/base64-string-converter.vue index 0bcd966..9d574c9 100644 --- a/src/tools/base64-string-converter/base64-string-converter.vue +++ b/src/tools/base64-string-converter/base64-string-converter.vue @@ -1,5 +1,8 @@ <template> <c-card title="String to base64"> + <n-form-item label="Encode URL safe" label-placement="left"> + <n-switch v-model:value="encodeUrlSafe" /> + </n-form-item> <c-input-text v-model:value="textInput" multiline @@ -26,12 +29,16 @@ </c-card> <c-card title="Base64 to string"> + <n-form-item label="Decode URL safe" label-placement="left"> + <n-switch v-model:value="decodeUrlSafe" /> + </n-form-item> <c-input-text v-model:value="base64Input" multiline placeholder="Your base64 string..." rows="5" :validation-rules="b64ValidationRules" + :validation-watch="b64ValidationWatch" label="Base64 string to decode" mb-5 /> @@ -58,15 +65,23 @@ import { base64ToText, isValidBase64, textToBase64 } from '@/utils/base64'; import { withDefaultOnError } from '@/utils/defaults'; import { computed, ref } from 'vue'; +const encodeUrlSafe = useStorage('base64-string-converter--encode-url-safe', false); +const decodeUrlSafe = useStorage('base64-string-converter--decode-url-safe', false); + const textInput = ref(''); -const base64Output = computed(() => textToBase64(textInput.value)); +const base64Output = computed(() => textToBase64(textInput.value, { makeUrlSafe: encodeUrlSafe.value })); const { copy: copyTextBase64 } = useCopy({ source: base64Output, text: 'Base64 string copied to the clipboard' }); const base64Input = ref(''); -const textOutput = computed(() => withDefaultOnError(() => base64ToText(base64Input.value.trim()), '')); +const textOutput = computed(() => + withDefaultOnError(() => base64ToText(base64Input.value.trim(), { makeUrlSafe: decodeUrlSafe.value }), ''), +); const { copy: copyText } = useCopy({ source: textOutput, text: 'String copied to the clipboard' }); - const b64ValidationRules = [ - { message: 'Invalid base64 string', validator: (value: string) => isValidBase64(value.trim()) }, + { + message: 'Invalid base64 string', + validator: (value: string) => isValidBase64(value.trim(), { makeUrlSafe: decodeUrlSafe.value }), + }, ]; +const b64ValidationWatch = [decodeUrlSafe]; </script> |