Vue String Directives
Vue string directives library can change form input value dynamically. All languages are supported.
Contents
Compatibility
Installation
NPM
npm install vue-string-directives
Usage
Add following code to your main.js file created by Vue CLI:
import { createApp } from 'vue'
import { VueStringDirectives } from 'vue-string-directives'
import App from './App.vue'
const app = createApp(App)
app.use(VueStringDirectives)
app.mount('#app')
Alternatively you can use a specific directive to import it into a specific component:
import { upper, lower } from 'vue-string-directives'
export default {
directives: {
upper,
lower
}
}
Also you can import all directives to component:
import { StringDirectivesMixin } from 'vue-string-directives'
export default {
mixins: [StringDirectivesMixin]
}
Camel case
const camel = defineModel('camel')
<template>
<input type="text" v-model="camel" v-camel>
<input type="text" v-model="camel" v-camel.numbers>
<input type="text" v-model="camel" v-camel="{ numbers: true }">
<input type="text" v-model="camel" v-camel.lower>
<input type="text" v-model="camel" v-camel="{ lower: true }">
<input type="text" v-model="camel" v-camel.numbers.lower>
<input type="text" v-model="camel" v-camel="{ numbers: true, lower: true }">
</template>
Capitalize
const capitalize = defineModel('capitalize')
<template>
<input type="text" v-model="capitalize" v-capitalize>
<input type="text" v-model="capitalize" v-capitalize.lower>
<input type="text" v-model="capitalize" v-capitalize="{ lower: true }">
</template>
Flat case
const flat = defineModel('flat')
<template>
<input type="text" v-model="flat" v-flat>
<input type="text" v-model="flat" v-flat.numbers>
<input type="text" v-model="flat" v-flat="{ numbers: true }">
</template>
Kebab case
const kebab = defineModel('kebab')
<template>
<input type="text" v-model="kebab" v-kebab>
<input type="text" v-model="kebab" v-kebab.numbers>
<input type="text" v-model="kebab" v-kebab="{ numbers: true }">
</template>
Lower case
const lower = defineModel('lower')
<template>
<input type="text" v-model="lower" v-lower>
<input type="text" v-model="lower" v-lower.first>
<input type="text" v-model="lower" v-lower="{ first: true }">
</template>
Pad
const lower = defineModel('plowerd')
<template>
<input type="text" v-model="pad" v-pad:10="_">
<input type="text" v-model="pad" v-pad="{ count: 10, chars: '_' }">
<input type="text" v-model="pad" v-pad:10.start="_">
<input type="text" v-model="pad" v-pad="{ count: 10, chars: '_', start: true }">
<input type="text" v-model="pad" v-pad:10.end="_">
<input type="text" v-model="pad" v-pad="{ count: 10, chars: '_', end: true }">
</template>
Pascal case
const pascal = defineModel('pascal')
<template>
<input type="text" v-model="pascal" v-pascal>
<input type="text" v-model="pascal" v-pascal.numbers>
<input type="text" v-model="pascal" v-pascal="{ numbers: true }">
<input type="text" v-model="pascal" v-pascal.lower>
<input type="text" v-model="pascal" v-pascal="{ lower: true }">
<input type="text" v-model="pascal" v-pascal.numbers.lower>
<input type="text" v-model="pascal" v-pascal="{ numbers: true, lower: true }">
</template>
Repeat
const repeat = defineModel('repeat')
<template>
<input type="text" v-model="repeat" v-repeat:5="-">
<input type="text" v-model="repeat" v-repeat="{ count: 5, string: '-' }">
</template>
Replace
const replace = defineModel('replace')
<template>
<input type="text" v-model="replace" v-replace="{ regexp: '[0-9]', flags: 'g', string: '-' }">
</template>
Snake case
const snake = defineModel('snake')
<template>
<input type="text" v-model="snake" v-snake>
<input type="text" v-model="snake" v-snake.numbers>
<input type="text" v-model="snake" v-snake="{ numbers: true }">
</template>
Title case
const title = defineModel('title')
<template>
<input type="text" v-model="title" v-title>
<input type="text" v-model="title" v-title.numbers>
<input type="text" v-model="title" v-title="{ numbers: true }">
<input type="text" v-model="title" v-title.lower>
<input type="text" v-model="title" v-title="{ lower: true }">
<input type="text" v-model="title" v-title.numbers.lower>
<input type="text" v-model="title" v-title="{ numbers: true, lower: true }">
</template>
Train case
const train = defineModel('train')
<template>
<input type="text" v-model="train" v-train>
<input type="text" v-model="train" v-train.numbers>
<input type="text" v-model="train" v-train="{ numbers: true }">
<input type="text" v-model="train" v-train.lower>
<input type="text" v-model="train" v-train="{ lower: true }">
<input type="text" v-model="train" v-train.numbers.lower>
<input type="text" v-model="train" v-train="{ numbers: true, lower: true }">
</template>
Truncate
const truncate = defineModel('truncate')
<template>
<input type="text" v-model="truncate" v-truncate:5="'...'">
<input type="text" v-model="truncate" v-truncate="{ count: 5, omission: '...' }">
</template>
Upper case
const upper = defineModel('upper')
<template>
<input type="text" v-model="upper" v-upper>
<input type="text" v-model="upper" v-upper.first>
<input type="text" v-model="upper" v-upper="{ first: true }">
<input type="text" v-model="upper" v-upper.first.every>
<input type="text" v-model="upper" v-upper="{ first: true, every: true }">
</template>
Author
License
This project is licensed under the MIT License - see the LICENSE file for details.