Ecosyste.ms: Awesome

An open API service indexing awesome lists of open source software.

Awesome Lists | Featured Topics | Projects

https://github.com/posva/vue-coerce-props

Coerce props to whatever you want
https://github.com/posva/vue-coerce-props

coerce props utility vue

Last synced: 13 days ago
JSON representation

Coerce props to whatever you want

Awesome Lists containing this project

README

        

# VueCoerceProps [![Build Status](https://img.shields.io/circleci/project/posva/vue-coerce-props/master.svg)](https://circleci.com/gh/posva/vue-coerce-props) [![npm package](https://img.shields.io/npm/v/vue-coerce-props.svg)](https://www.npmjs.com/package/vue-coerce-props) [![coverage](https://img.shields.io/codecov/c/github/posva/vue-coerce-props.svg)](https://codecov.io/github/posva/vue-coerce-props) [![thanks](https://img.shields.io/badge/thanks-%E2%99%A5-ff69b4.svg)](https://github.com/posva/thanks)

> Transform/Coerce props values to whatever you want

## Installation

```sh
npm install vue-coerce-props
```

Install the mixin globally or locally:

```js
// main.js
import CoercePropsMixin from 'vue-coerce-props'

Vue.mixin(CoercePropsMixin)
```

```js
// MyComponent.vue
import CoercePropsMixin from 'vue-coerce-props'

export default {
// other options
mixins: [CoercePropsMixin],
}
```

## Usage

To coerce a prop, add a `coerce` function to any prop:

```js
const SpaceTrimmer = {
props: {
text: {
type: String,
// this function is called by VueCoerceProps
coerce: text => text.trim(),
},
style: {
type: String,
coerce(style) {
// you can access the context as in a computed property
// NEVER use this.$coerced here as it would create an infinite loop
// if you use things coming from data, you may consider using
// a computed property instead
return this.possibleValues.includes(style) ? style : 'default'
},
},
},
}
```

VueCoerceProps will inject a computed property named `$coerced` containing every single coerced prop:

```html


Original value: {{ text }}
Coerced value: {{ $coerced.text }}


```

## FAQ

* Q: Why not passing component props as second argument?
A: That would make every coerce value depend on every prop. At the end `$coerced` is just a computed property

## License

[MIT](http://opensource.org/licenses/MIT)