const NumericInput = { template: [ '', '' ].join(' '), props: { name: String, value: String, placeholder: String, iconPack: String, icon: String, size: String, disabled: Boolean, allowEnter: Boolean }, methods: { focus() { this.$refs.input.focus() }, notifyFocus(event) { this.$emit('focus', event) }, notifyBlur(event) { this.$emit('blur', event) }, keyDown(event) { // by default we only allow numeric keys, and general navigation // keys, but we might also allow Enter key if (!key_modifies(event) && !key_allowed(event)) { if (!this.allowEnter || event.which != 13) { event.preventDefault() } } }, valueChanged(value) { this.$emit('input', value) } } } Vue.component('numeric-input', NumericInput)