2023-05-28 23:13:24 +02:00
|
|
|
<script setup lang="ts">
|
|
|
|
import {
|
|
|
|
camelCase,
|
|
|
|
capitalCase,
|
|
|
|
constantCase,
|
|
|
|
dotCase,
|
|
|
|
headerCase,
|
|
|
|
noCase,
|
|
|
|
paramCase,
|
|
|
|
pascalCase,
|
|
|
|
pathCase,
|
|
|
|
sentenceCase,
|
|
|
|
snakeCase,
|
|
|
|
} from 'change-case';
|
2024-04-21 02:55:19 +08:00
|
|
|
import InputCopyable from '@/components/InputCopyable.vue';
|
2023-05-28 23:13:24 +02:00
|
|
|
|
|
|
|
const baseConfig = {
|
|
|
|
stripRegexp: /[^A-Za-zÀ-ÖØ-öø-ÿ]+/gi,
|
|
|
|
};
|
|
|
|
|
|
|
|
const input = ref('lorem ipsum dolor sit amet');
|
2023-08-09 23:45:21 +02:00
|
|
|
|
|
|
|
const formats = computed(() => [
|
|
|
|
{
|
|
|
|
label: 'Lowercase:',
|
2023-11-13 01:00:55 +01:00
|
|
|
value: input.value.toLocaleLowerCase(),
|
2023-08-09 23:45:21 +02:00
|
|
|
},
|
|
|
|
{
|
|
|
|
label: 'Uppercase:',
|
2023-11-13 01:00:55 +01:00
|
|
|
value: input.value.toLocaleUpperCase(),
|
2023-08-09 23:45:21 +02:00
|
|
|
},
|
|
|
|
{
|
|
|
|
label: 'Camelcase:',
|
|
|
|
value: camelCase(input.value, baseConfig),
|
|
|
|
},
|
|
|
|
{
|
|
|
|
label: 'Capitalcase:',
|
|
|
|
value: capitalCase(input.value, baseConfig),
|
|
|
|
},
|
|
|
|
{
|
|
|
|
label: 'Constantcase:',
|
|
|
|
value: constantCase(input.value, baseConfig),
|
|
|
|
},
|
|
|
|
{
|
|
|
|
label: 'Dotcase:',
|
|
|
|
value: dotCase(input.value, baseConfig),
|
|
|
|
},
|
|
|
|
{
|
|
|
|
label: 'Headercase:',
|
|
|
|
value: headerCase(input.value, baseConfig),
|
|
|
|
},
|
|
|
|
{
|
|
|
|
label: 'Nocase:',
|
|
|
|
value: noCase(input.value, baseConfig),
|
|
|
|
},
|
|
|
|
{
|
|
|
|
label: 'Paramcase:',
|
|
|
|
value: paramCase(input.value, baseConfig),
|
|
|
|
},
|
|
|
|
{
|
|
|
|
label: 'Pascalcase:',
|
|
|
|
value: pascalCase(input.value, baseConfig),
|
|
|
|
},
|
|
|
|
{
|
|
|
|
label: 'Pathcase:',
|
|
|
|
value: pathCase(input.value, baseConfig),
|
|
|
|
},
|
|
|
|
{
|
|
|
|
label: 'Sentencecase:',
|
|
|
|
value: sentenceCase(input.value, baseConfig),
|
|
|
|
},
|
|
|
|
{
|
|
|
|
label: 'Snakecase:',
|
|
|
|
value: snakeCase(input.value, baseConfig),
|
|
|
|
},
|
2023-10-31 10:52:01 +01:00
|
|
|
{
|
|
|
|
label: 'Mockingcase:',
|
2023-11-13 01:00:55 +01:00
|
|
|
value: input.value
|
2023-10-31 10:52:01 +01:00
|
|
|
.split('')
|
|
|
|
.map((char, index) => (index % 2 === 0 ? char.toUpperCase() : char.toLowerCase()))
|
|
|
|
.join(''),
|
|
|
|
},
|
2023-08-09 23:45:21 +02:00
|
|
|
]);
|
|
|
|
|
|
|
|
const inputLabelAlignmentConfig = {
|
|
|
|
labelPosition: 'left',
|
|
|
|
labelWidth: '120px',
|
|
|
|
labelAlign: 'right',
|
|
|
|
};
|
2023-05-28 23:13:24 +02:00
|
|
|
</script>
|
|
|
|
|
2022-04-16 00:03:31 +02:00
|
|
|
<template>
|
2023-04-20 20:49:28 +02:00
|
|
|
<c-card>
|
2023-08-09 23:45:21 +02:00
|
|
|
<c-input-text
|
|
|
|
v-model:value="input"
|
|
|
|
label="Your string:"
|
|
|
|
placeholder="Your string..."
|
|
|
|
raw-text
|
|
|
|
v-bind="inputLabelAlignmentConfig"
|
|
|
|
/>
|
2022-04-16 00:03:31 +02:00
|
|
|
|
2023-08-21 18:27:08 +00:00
|
|
|
<div my-16px divider />
|
2022-04-16 00:03:31 +02:00
|
|
|
|
2023-08-09 23:45:21 +02:00
|
|
|
<InputCopyable
|
|
|
|
v-for="format in formats"
|
|
|
|
:key="format.label"
|
|
|
|
:value="format.value"
|
|
|
|
:label="format.label"
|
|
|
|
v-bind="inputLabelAlignmentConfig"
|
|
|
|
mb-1
|
|
|
|
/>
|
2023-04-20 20:49:28 +02:00
|
|
|
</c-card>
|
2022-04-16 00:03:31 +02:00
|
|
|
</template>
|