Vue component for numbers input.
- Accessible: uses ARIA agreements (100% accessibility in lighthouse)
- Use your keyboard to navigate and control
- Use your mousewheel or touchpad to increase or descrease value
- Flexible styling
- Support custom controls through slots
Use npm
npm i @smartweb/vue-number-input Or via cdn
<script src="https://unpkg.com/@smartweb/vue-number-input/build/vue-number-input.umd.min.js"></script>Import and register in your component.vue file
import VueNumberInput from '@smartweb/vue-number-input'; export default { components: { VueNumberInput } };Use it in your template with v-model directive
<template> <div id="app"> <VueNumberInput v-model="you_model" :min="0" :max="100" ></VueNumberInput> </div> </template>Or register it globally in your application entry point (main.js or as you called it)
import Vue from 'vue'; import VueNumberInput from '@smartweb/vue-number-input'; // Global registration of the component Vue.component('vue-number-input', VueNumberInput); new Vue({ render: h => h(App) }).$mount('#app');You can bind following props for vue-input-number element
| Prop | Type | Default value | Description |
|---|---|---|---|
| value | Number | 0 | Defines a value for 'value' and 'aria-valuenow' attributes of element. |
| min | Number | Number.MIN_SAFE_INTEGER | Minimum value of the number range. Provides a value for 'aria-valuemin' attributes of element. |
| max | Number | Number.MAX_SAFE_INTEGER | Maximum value of the number range. Provides a value for 'aria-valuemax' attributes of element. |
| step | Number | 1 | Incremental step |
| disabled | Boolean | false | Defines a value for 'aria-disabled' and 'disabled' attributes of element. Also disable controls buttons |
| readonly | Boolean | false | Defines a value for 'readonly' attribute of element. |
| autofocus | Boolean | false | Defines a value for 'autofocus' attribute of element. |
| controlsPosition | String | 'on edge' | Acceptable values: 'on edges', 'left', right'. Defines position of control buttons. |
| inputClass | String | - | Defines user's class for input element |
| buttonIncClass | String | - | Defines user's class for increase button |
| buttonDecClass | String | - | Defines user's class for decrease button |
<vue-number-input v-model="you_model" :value="50" :min="0" :max="100" :controlsPosition="'left'" />For more examples visit demo page
You can create your own controls and pass them to slots
Read more about slots in official docs
<vue-number-input class="custom-container" v-model="you_model" :inputClass="custom-input" :buttonIncClass="custom-btn-inc" :buttonDecClass="custom-btn-dec" > <!-- slot for decrease button --> <template #button-decrease> <custom-decrease-button></custom-decrease-button> </template> <!-- slot for increase button --> <template #button-increase> <custom-increase-button></custom-increase-button> </template> </vue-number-input>| Event | Description | Params |
|---|---|---|
| input | Triggered on user input or buttons clicks | Number |
| change | Triggered on value changed and focus leave input element | Number |
| focus | Triggered when user focused on input field | FocusEvent |
| blur | Triggered when focus leave input field | FocusEvent |
The MIT License (MIT). Please see License File for more information.