awesome-mask
Version:
An awesome mask directive for Vue.js using vanilla-masker from `https://github.com/BankFacil/vanilla-masker`
70 lines (60 loc) • 2.28 kB
JavaScript
;
Object.defineProperty(exports, "__esModule", {
value: true
});
var _vanillaMasker = require('vanilla-masker');
var _vanillaMasker2 = _interopRequireDefault(_vanillaMasker);
var _vue = require('vue');
var _vue2 = _interopRequireDefault(_vue);
var _eventListener = require('./event-listener');
function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
var applyMaskToDefault = function applyMaskToDefault(el, mask, isMoney) {
var inputText = getInputText(el);
if (isMoney && inputText.value.length > 0) {
inputText.value = _vanillaMasker2.default.toMoney(inputText.value, { showSignal: true });
} else {
inputText.value = mask && mask.length > 0 ? _vanillaMasker2.default.toPattern(inputText.value, mask) : inputText.value;
}
};
var getInputText = function getInputText(el) {
var isInputText = el instanceof HTMLInputElement;
var inputText = el;
if (!isInputText) {
inputText = el.querySelector('input');
}
return inputText;
};
exports.default = {
bind: function bind(el, binding) {
var isMoney = false;
if (binding.value.length < 1) return;
var inputText = getInputText(el);
inputText.setAttribute('data-mask', binding.value);
if (binding.value === 'money') {
isMoney = true;
} else {
var maskSize = inputText.getAttribute('data-mask').length;
inputText.setAttribute('maxlength', maskSize);
}
applyMaskToDefault(inputText, binding.value, isMoney);
inputText.addEventListener('keyup', _eventListener.inputHandler);
},
update: function update(el, binding) {
// this is only for v-model
if (binding.value.length < 1) return;
var inputText = getInputText(el);
if (binding.value === 'money') {
applyMaskToDefault(inputText, binding.value, true);
return;
}
inputText.setAttribute('data-mask', binding.value);
inputText.setAttribute('maxlength', inputText.getAttribute('data-mask').length);
applyMaskToDefault(inputText, binding.value);
},
unbind: function unbind(el, binding) {
if (binding.value.length < 1) return;
var inputText = getInputText(el);
inputText.removeAttribute('maxlength');
inputText.removeEventListener('keyup', _eventListener.inputHandler);
}
};