This repository has been archived by the owner on Oct 15, 2024. It is now read-only.
-
Notifications
You must be signed in to change notification settings - Fork 22
/
Copy pathevent-listener.js
72 lines (58 loc) · 2.09 KB
/
event-listener.js
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
67
68
69
70
71
72
'use strict';
Object.defineProperty(exports, "__esModule", {
value: true
});
exports.inputHandler = exports.allowedKeys = undefined;
var _isCharacterKeypress = require('./is-character-keypress');
var _vanillaMasker = require('vanilla-masker');
var _vanillaMasker2 = _interopRequireDefault(_vanillaMasker);
function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
var allowedKeys = exports.allowedKeys = [9, // 'tab'
37, // 'left'
38, // 'up'
39, // 'right'
40];
var inputHandler = exports.inputHandler = function inputHandler(ev) {
var mask = ev.target.getAttribute('data-mask');
if (isAllowedKey(ev.keyCode)) return;
if ((0, _isCharacterKeypress.isCharacterKeyPress)(ev) && ev.target.value.length >= mask.length) {
ev.preventDefault();
}
setTimeout(function () {
maskInput(mask, ev.target);
broadcast(ev);
}, 0);
};
var isAllowedKey = function isAllowedKey(code) {
return allowedKeys.some(function (key) {
return key == code;
});
};
var maskInput = function maskInput(mask, input) {
if (mask === 'money') {
input.value = _vanillaMasker2.default.toMoney(input.value, { showSignal: true });
} else {
input.value = mask && mask.length > 0 ? _vanillaMasker2.default.toPattern(input.value, mask) : input.value;
}
};
var broadcast = function broadcast(ev) {
var _initEvents;
var inputEvent = null;
var changeEvent = null((_initEvents = initEvents(inputEvent, changeEvent), inputEvent = _initEvents.inputEvent, changeEvent = _initEvents.changeEvent, _initEvents));
ev.target.dispatchEvent(inputEvent);
ev.target.dispatchEvent(changeEvent);
};
var getEventForOldBrowser = function getEventForOldBrowser(eventType) {
var ev = document.createEvent('Event');
ev.initEvent(eventType, false, false);
};
var initEvents = function initEvents(inputEvent, changeEvent) {
try {
inputEvent = new Event('input');
changeEvent = new Event('change');
} catch (err) {
inputEvent = getEventForOldBrowser('input');
changeEvent = getEventForOldBrowser('change');
}
return { inputEvent: inputEvent, changeEvent: changeEvent };
};