Skip to content

Commit af38d15

Browse files
authored
Merge pull request niksmr#15 from dmitrichev/feature/mask-as-object
Added the ability to specify an object as a mask
2 parents 6121126 + 9fe4fa3 commit af38d15

File tree

1 file changed

+30
-27
lines changed

1 file changed

+30
-27
lines changed

src/MaskedInput.js

Lines changed: 30 additions & 27 deletions
Original file line numberDiff line numberDiff line change
@@ -39,9 +39,8 @@ export default {
3939
type: String,
4040
},
4141
mask: {
42-
type: String,
4342
required: true,
44-
validator: value => !!(value && value.length >= 1),
43+
validator: value => !! ((value && value.length >= 1) || value instanceof Object)
4544
},
4645
placeholderChar: {
4746
type: String,
@@ -70,32 +69,36 @@ export default {
7069
methods: {
7170
initMask() {
7271
try {
73-
this.maskCore = new InputMask({
74-
pattern: this.mask,
75-
value: '',
76-
placeholderChar: this.placeholderChar,
77-
/* eslint-disable quote-props */
78-
formatCharacters: {
79-
'a': {
80-
validate: char => /^[A-Za-zА-Яа-я]$/.test(char),
81-
},
82-
'A': {
83-
validate: char => /^[A-Za-zА-Яа-я]$/.test(char),
84-
transform: char => char.toUpperCase(),
85-
},
86-
'*': {
87-
validate: char => /^[\dA-Za-zА-Яа-я]$/.test(char),
88-
},
89-
'#': {
90-
validate: char => /^[\dA-Za-zА-Яа-я]$/.test(char),
91-
transform: char => char.toUpperCase(),
92-
},
93-
'+': {
94-
validate: () => true,
72+
if (this.mask instanceof Object) {
73+
this.maskСore = new InputMask(this.mask)
74+
} else {
75+
this.maskCore = new InputMask({
76+
pattern: this.mask,
77+
value: '',
78+
placeholderChar: this.placeholderChar,
79+
/* eslint-disable quote-props */
80+
formatCharacters: {
81+
'a': {
82+
validate: char => /^[A-Za-zА-Яа-я]$/.test(char),
83+
},
84+
'A': {
85+
validate: char => /^[A-Za-zА-Яа-я]$/.test(char),
86+
transform: char => char.toUpperCase(),
87+
},
88+
'*': {
89+
validate: char => /^[\dA-Za-zА-Яа-я]$/.test(char),
90+
},
91+
'#': {
92+
validate: char => /^[\dA-Za-zА-Яа-я]$/.test(char),
93+
transform: char => char.toUpperCase(),
94+
},
95+
'+': {
96+
validate: () => true,
97+
},
9598
},
96-
},
97-
/* eslint-enable */
98-
});
99+
/* eslint-enable */
100+
});
101+
}
99102
[...this.$refs.input.value].reduce((memo, item) => this.maskCore.input(item), null);
100103
this.maskCore.setSelection({
101104
start: 0,

0 commit comments

Comments
 (0)