-
Notifications
You must be signed in to change notification settings - Fork 0
/
SimpleInput.vue
66 lines (65 loc) · 1.3 KB
/
SimpleInput.vue
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
<script>
export default {
props: {
id:String,
classString:String,
required: {
type:Boolean,
default: false
},
disabled: {
type: Boolean,
default: false
},
suffix:String,
placeholder:String,
type:{
type: String,
default: 'text'
},
validator: {
type: Function,
default: null
},
validateWhen:{
type:Function,
default:model=>model.length
},
value:{
required: true
}
},
computed:{
props(){return {}},
model:{
get(){
return this.inputTransform(this.value);
},
set(value){
this.$emit('input', this.outputTransform(value));
if(this.validator)
this.$emit('isValid', this.validator(value));
}
},
validationColor(){
return this.isValid() ? 'success' : 'error';
}
},
methods:{
isValid(){
// se quiser validar sem transformação inputTransform, aplicar validator a this.value
if(this.validator)
return this.validator(this.model);
return false;
},
inputTransform(value){
return value;
},
outputTransform(value){
return value;
}
}
}
</script>
<template src='./SimpleInput.htm'></template>
<style lang='scss' src='./SimpleInput.scss' scoped></style>