it-tools/tools/web/url-encoder-decoder.vue

81 lines
1.6 KiB
Vue
Raw Normal View History

2021-05-31 17:53:04 +02:00
<template>
<ToolWrapper :config="$toolConfig">
<v-textarea
v-model="decoded"
outlined
label="URL decoded string"
:rules="rules.decoded"
/>
<v-textarea
v-model="encoded"
outlined
label="URL encoded string"
:rules="rules.encoder"
/>
<div class="text-center">
2021-05-31 22:56:25 +02:00
<v-btn @click="copy(decoded)">
Copy decoded
</v-btn>
<v-btn @click="copy(encoded)">
Copy encoded
</v-btn>
2021-05-31 17:53:04 +02:00
</div>
</ToolWrapper>
</template>
<tool>
title: 'URL encode / decode'
description: 'Lorem Ipsum dolor sit amet'
icon: 'mdi-link-variant'
keywords: [ 'system', 'port', 'lan' ]
path: '/url-encoder-decoder'
</tool>
<script lang="ts">
import {Component} from 'nuxt-property-decorator'
import {CopyableMixin} from '@/mixins/copyable.mixin'
import Tool from '~/components/Tool.vue'
@Component({
mixins: [CopyableMixin]
})
2021-05-31 23:43:45 +02:00
export default class UrlEncoderDecoder extends Tool {
2021-05-31 17:53:04 +02:00
decoded = 'Hello world :)'
rules = {
decoder: [
(v: string) => {
try {
decodeURIComponent(v)
return true
} catch (_) {
return 'Impossible to parse this string'
}
}
],
encoder: [
(v: string) => {
try {
encodeURIComponent(v)
return true
} catch (_) {
return 'Impossible to parse this string'
}
}
]
}
get encoded() {
return encodeURIComponent(this.decoded)
}
set encoded(value: string) {
try {
this.decoded = decodeURIComponent(value)
} catch (_) {
}
}
}
</script>