inputmask
Advanced tools
Comparing version 5.0.8-beta.1 to 5.0.8-beta.7
@@ -9,3 +9,3 @@ import extend from "./extend"; | ||
function isValidElement(elem) { | ||
return elem instanceof Element; | ||
return elem instanceof Element; | ||
} | ||
@@ -15,13 +15,13 @@ | ||
if (typeof window.CustomEvent === "function") { | ||
Event = window.CustomEvent; | ||
Event = window.CustomEvent; | ||
} else { | ||
if (canUseDOM) { | ||
Event = function (event, params) { | ||
params = params || {bubbles: false, cancelable: false, detail: undefined}; | ||
var evt = document.createEvent("CustomEvent"); | ||
evt.initCustomEvent(event, params.bubbles, params.cancelable, params.detail); | ||
return evt; | ||
}; | ||
Event.prototype = window.Event.prototype; | ||
} | ||
if (canUseDOM) { | ||
Event = function (event, params) { | ||
params = params || {bubbles: false, cancelable: false, composed: true, detail: undefined}; | ||
var evt = document.createEvent("CustomEvent"); | ||
evt.initCustomEvent(event, params.bubbles, params.cancelable, params.detail); | ||
return evt; | ||
}; | ||
Event.prototype = window.Event.prototype; | ||
} | ||
} | ||
@@ -31,172 +31,173 @@ | ||
function on(events, handler) { | ||
function addEvent(ev, namespace) { | ||
//register domevent | ||
if (elem.addEventListener) { // all browsers except IE before version 9 | ||
elem.addEventListener(ev, handler, false); | ||
} else if (elem.attachEvent) { // IE before version 9 | ||
elem.attachEvent("on" + ev, handler); | ||
} | ||
eventRegistry[ev] = eventRegistry[ev] || {}; | ||
eventRegistry[ev][namespace] = eventRegistry[ev][namespace] || []; | ||
eventRegistry[ev][namespace].push(handler); | ||
} | ||
function addEvent(ev, namespace) { | ||
//register domevent | ||
if (elem.addEventListener) { // all browsers except IE before version 9 | ||
elem.addEventListener(ev, handler, false); | ||
} else if (elem.attachEvent) { // IE before version 9 | ||
elem.attachEvent("on" + ev, handler); | ||
} | ||
eventRegistry[ev] = eventRegistry[ev] || {}; | ||
eventRegistry[ev][namespace] = eventRegistry[ev][namespace] || []; | ||
eventRegistry[ev][namespace].push(handler); | ||
} | ||
if (isValidElement(this[0])) { | ||
var eventRegistry = this[0].eventRegistry, | ||
elem = this[0]; | ||
if (isValidElement(this[0])) { | ||
var eventRegistry = this[0].eventRegistry, | ||
elem = this[0]; | ||
var _events = events.split(" "); | ||
for (var endx = 0; endx < _events.length; endx++) { | ||
var nsEvent = _events[endx].split("."), | ||
ev = nsEvent[0], | ||
namespace = nsEvent[1] || "global"; | ||
addEvent(ev, namespace); | ||
} | ||
} | ||
return this; | ||
var _events = events.split(" "); | ||
for (var endx = 0; endx < _events.length; endx++) { | ||
var nsEvent = _events[endx].split("."), | ||
ev = nsEvent[0], | ||
namespace = nsEvent[1] || "global"; | ||
addEvent(ev, namespace); | ||
} | ||
} | ||
return this; | ||
} | ||
function off(events, handler) { | ||
var eventRegistry, elem; | ||
var eventRegistry, elem; | ||
function removeEvent(ev, namespace, handler) { | ||
if (ev in eventRegistry === true) { | ||
//unbind to dom events | ||
if (elem.removeEventListener) { // all browsers except IE before version 9 | ||
elem.removeEventListener(ev, handler, false); | ||
} else if (elem.detachEvent) { // IE before version 9 | ||
elem.detachEvent("on" + ev, handler); | ||
} | ||
if (namespace === "global") { | ||
for (var nmsp in eventRegistry[ev]) { | ||
eventRegistry[ev][nmsp].splice(eventRegistry[ev][nmsp].indexOf(handler), 1); | ||
} | ||
} else { | ||
eventRegistry[ev][namespace].splice(eventRegistry[ev][namespace].indexOf(handler), 1); | ||
} | ||
} | ||
} | ||
function removeEvent(ev, namespace, handler) { | ||
if (ev in eventRegistry === true) { | ||
//unbind to dom events | ||
if (elem.removeEventListener) { // all browsers except IE before version 9 | ||
elem.removeEventListener(ev, handler, false); | ||
} else if (elem.detachEvent) { // IE before version 9 | ||
elem.detachEvent("on" + ev, handler); | ||
} | ||
if (namespace === "global") { | ||
for (var nmsp in eventRegistry[ev]) { | ||
eventRegistry[ev][nmsp].splice(eventRegistry[ev][nmsp].indexOf(handler), 1); | ||
} | ||
} else { | ||
eventRegistry[ev][namespace].splice(eventRegistry[ev][namespace].indexOf(handler), 1); | ||
} | ||
} | ||
} | ||
function resolveNamespace(ev, namespace) { | ||
var evts = [], | ||
hndx, hndL; | ||
if (ev.length > 0) { | ||
if (handler === undefined) { | ||
for (hndx = 0, hndL = eventRegistry[ev][namespace].length; hndx < hndL; hndx++) { | ||
evts.push({ | ||
ev: ev, | ||
namespace: namespace && namespace.length > 0 ? namespace : "global", | ||
handler: eventRegistry[ev][namespace][hndx] | ||
}); | ||
} | ||
} else { | ||
evts.push({ | ||
ev: ev, | ||
namespace: namespace && namespace.length > 0 ? namespace : "global", | ||
handler: handler | ||
}); | ||
} | ||
} else if (namespace.length > 0) { | ||
for (var evNdx in eventRegistry) { | ||
for (var nmsp in eventRegistry[evNdx]) { | ||
if (nmsp === namespace) { | ||
if (handler === undefined) { | ||
for (hndx = 0, hndL = eventRegistry[evNdx][nmsp].length; hndx < hndL; hndx++) { | ||
evts.push({ | ||
ev: evNdx, | ||
namespace: nmsp, | ||
handler: eventRegistry[evNdx][nmsp][hndx] | ||
}); | ||
} | ||
} else { | ||
evts.push({ | ||
ev: evNdx, | ||
namespace: nmsp, | ||
handler: handler | ||
}); | ||
} | ||
} | ||
} | ||
} | ||
} | ||
function resolveNamespace(ev, namespace) { | ||
var evts = [], | ||
hndx, hndL; | ||
if (ev.length > 0) { | ||
if (handler === undefined) { | ||
for (hndx = 0, hndL = eventRegistry[ev][namespace].length; hndx < hndL; hndx++) { | ||
evts.push({ | ||
ev: ev, | ||
namespace: namespace && namespace.length > 0 ? namespace : "global", | ||
handler: eventRegistry[ev][namespace][hndx] | ||
}); | ||
} | ||
} else { | ||
evts.push({ | ||
ev: ev, | ||
namespace: namespace && namespace.length > 0 ? namespace : "global", | ||
handler: handler | ||
}); | ||
} | ||
} else if (namespace.length > 0) { | ||
for (var evNdx in eventRegistry) { | ||
for (var nmsp in eventRegistry[evNdx]) { | ||
if (nmsp === namespace) { | ||
if (handler === undefined) { | ||
for (hndx = 0, hndL = eventRegistry[evNdx][nmsp].length; hndx < hndL; hndx++) { | ||
evts.push({ | ||
ev: evNdx, | ||
namespace: nmsp, | ||
handler: eventRegistry[evNdx][nmsp][hndx] | ||
}); | ||
} | ||
} else { | ||
evts.push({ | ||
ev: evNdx, | ||
namespace: nmsp, | ||
handler: handler | ||
}); | ||
} | ||
} | ||
} | ||
} | ||
} | ||
return evts; | ||
} | ||
return evts; | ||
} | ||
if (isValidElement(this[0]) && events) { | ||
eventRegistry = this[0].eventRegistry; | ||
elem = this[0]; | ||
if (isValidElement(this[0]) && events) { | ||
eventRegistry = this[0].eventRegistry; | ||
elem = this[0]; | ||
var _events = events.split(" "); | ||
for (var endx = 0; endx < _events.length; endx++) { | ||
var nsEvent = _events[endx].split("."), | ||
offEvents = resolveNamespace(nsEvent[0], nsEvent[1]); | ||
for (var i = 0, offEventsL = offEvents.length; i < offEventsL; i++) { | ||
removeEvent(offEvents[i].ev, offEvents[i].namespace, offEvents[i].handler); | ||
} | ||
} | ||
} | ||
return this; | ||
var _events = events.split(" "); | ||
for (var endx = 0; endx < _events.length; endx++) { | ||
var nsEvent = _events[endx].split("."), | ||
offEvents = resolveNamespace(nsEvent[0], nsEvent[1]); | ||
for (var i = 0, offEventsL = offEvents.length; i < offEventsL; i++) { | ||
removeEvent(offEvents[i].ev, offEvents[i].namespace, offEvents[i].handler); | ||
} | ||
} | ||
} | ||
return this; | ||
} | ||
function trigger(events /* , args... */) { | ||
if (isValidElement(this[0])) { | ||
var eventRegistry = this[0].eventRegistry, | ||
elem = this[0]; | ||
var _events = typeof events === "string" ? events.split(" ") : [events.type]; | ||
for (var endx = 0; endx < _events.length; endx++) { | ||
var nsEvent = _events[endx].split("."), | ||
ev = nsEvent[0], | ||
namespace = nsEvent[1] || "global"; | ||
if (document !== undefined && namespace === "global") { | ||
//trigger domevent | ||
var evnt, i, params = { | ||
bubbles: true, | ||
cancelable: true, | ||
detail: arguments[1] | ||
}; | ||
// The custom event that will be created | ||
if (document.createEvent) { | ||
try { | ||
switch (ev) { | ||
case "input": | ||
params.inputType = "insertText"; | ||
evnt = new InputEvent(ev, params); | ||
break; | ||
default: | ||
evnt = new CustomEvent(ev, params); | ||
} | ||
} catch (e) { | ||
evnt = document.createEvent("CustomEvent"); | ||
evnt.initCustomEvent(ev, params.bubbles, params.cancelable, params.detail); | ||
} | ||
if (events.type) extend(evnt, events); | ||
elem.dispatchEvent(evnt); | ||
} else { | ||
evnt = document.createEventObject(); | ||
evnt.eventType = ev; | ||
evnt.detail = arguments[1]; | ||
if (events.type) extend(evnt, events); | ||
elem.fireEvent("on" + evnt.eventType, evnt); | ||
} | ||
} else if (eventRegistry[ev] !== undefined) { | ||
arguments[0] = arguments[0].type ? arguments[0] : DependencyLib.Event(arguments[0]); | ||
arguments[0].detail = arguments.slice(1); | ||
if (namespace === "global") { | ||
for (var nmsp in eventRegistry[ev]) { | ||
for (i = 0; i < eventRegistry[ev][nmsp].length; i++) { | ||
eventRegistry[ev][nmsp][i].apply(elem, arguments); | ||
} | ||
} | ||
} else { | ||
for (i = 0; i < eventRegistry[ev][namespace].length; i++) { | ||
eventRegistry[ev][namespace][i].apply(elem, arguments); | ||
} | ||
} | ||
} | ||
} | ||
} | ||
return this; | ||
} | ||
if (isValidElement(this[0])) { | ||
var eventRegistry = this[0].eventRegistry, | ||
elem = this[0]; | ||
var _events = typeof events === "string" ? events.split(" ") : [events.type]; | ||
for (var endx = 0; endx < _events.length; endx++) { | ||
var nsEvent = _events[endx].split("."), | ||
ev = nsEvent[0], | ||
namespace = nsEvent[1] || "global"; | ||
if (document !== undefined && namespace === "global") { | ||
//trigger domevent | ||
var evnt, i, params = { | ||
bubbles: true, | ||
cancelable: true, | ||
composed: true, | ||
detail: arguments[1] | ||
}; | ||
// The custom event that will be created | ||
if (document.createEvent) { | ||
try { | ||
switch (ev) { | ||
case "input": | ||
params.inputType = "insertText"; | ||
evnt = new InputEvent(ev, params); | ||
break; | ||
default: | ||
evnt = new CustomEvent(ev, params); | ||
} | ||
} catch (e) { | ||
evnt = document.createEvent("CustomEvent"); | ||
evnt.initCustomEvent(ev, params.bubbles, params.cancelable, params.detail); | ||
} | ||
if (events.type) extend(evnt, events); | ||
elem.dispatchEvent(evnt); | ||
} else { | ||
evnt = document.createEventObject(); | ||
evnt.eventType = ev; | ||
evnt.detail = arguments[1]; | ||
if (events.type) extend(evnt, events); | ||
elem.fireEvent("on" + evnt.eventType, evnt); | ||
} | ||
} else if (eventRegistry[ev] !== undefined) { | ||
arguments[0] = arguments[0].type ? arguments[0] : DependencyLib.Event(arguments[0]); | ||
arguments[0].detail = arguments.slice(1); | ||
if (namespace === "global") { | ||
for (var nmsp in eventRegistry[ev]) { | ||
for (i = 0; i < eventRegistry[ev][nmsp].length; i++) { | ||
eventRegistry[ev][nmsp][i].apply(elem, arguments); | ||
} | ||
} | ||
} else { | ||
for (i = 0; i < eventRegistry[ev][namespace].length; i++) { | ||
eventRegistry[ev][namespace][i].apply(elem, arguments); | ||
} | ||
} | ||
} | ||
} | ||
} | ||
return this; | ||
} |
@@ -80,3 +80,3 @@ import Inputmask from "./inputmask"; | ||
}, 0); | ||
return false; | ||
return /*false*/; //#2423 | ||
} | ||
@@ -125,2 +125,2 @@ var returnVal = eventHandler.apply(that, arguments); | ||
} | ||
}; | ||
}; |
@@ -197,3 +197,3 @@ /* | ||
parseMinMaxOptions(opts); | ||
if (opts.radixPoint !== "") | ||
if (opts.radixPoint !== "" && opts.substituteRadixPoint) | ||
opts.substitutes[opts.radixPoint == "." ? "," : "."] = opts.radixPoint; | ||
@@ -279,2 +279,3 @@ // console.log(mask); | ||
stripLeadingZeroes: true, | ||
substituteRadixPoint: true, | ||
definitions: { | ||
@@ -548,8 +549,10 @@ "0": { | ||
var $input = $(this), bffr; | ||
var pattern, c = String.fromCharCode(e.keyCode).toLowerCase(); | ||
if ((pattern = (opts.shortcuts && opts.shortcuts[c]))) { | ||
if (pattern.length > 1) { | ||
this.inputmask.__valueSet.call(this, parseFloat(this.inputmask.unmaskedvalue()) * parseInt(pattern)); | ||
$input.trigger("setvalue"); | ||
return false; | ||
if (e.location != 3) { | ||
var pattern, c = String.fromCharCode(e.keyCode).toLowerCase(); | ||
if ((pattern = (opts.shortcuts && opts.shortcuts[c]))) { | ||
if (pattern.length > 1) { | ||
this.inputmask.__valueSet.call(this, parseFloat(this.inputmask.unmaskedvalue()) * parseInt(pattern)); | ||
$input.trigger("setvalue"); | ||
return false; | ||
} | ||
} | ||
@@ -579,5 +582,13 @@ } | ||
if (!opts.digitsOptional) { | ||
if (radixPos !== -1 && (caretPos.begin < radixPos || caretPos.end < radixPos || (e.keyCode === keyCode.DELETE && caretPos.begin === radixPos))) { | ||
if (caretPos.begin === caretPos.end && (e.keyCode === keyCode.BACKSPACE || e.keyCode === keyCode.BACKSPACE_SAFARI)) { //only adjust when not a selection | ||
caretPos.begin++; | ||
if (radixPos !== -1 && (caretPos.begin < radixPos || caretPos.end < radixPos || (e.keyCode === keyCode.DELETE && (caretPos.begin === radixPos || caretPos.begin - 1 === radixPos)))) { | ||
var restoreCaretPos = undefined; | ||
if (caretPos.begin === caretPos.end) { //only adjust when not a selection | ||
if (e.keyCode === keyCode.BACKSPACE || e.keyCode === keyCode.BACKSPACE_SAFARI) | ||
caretPos.begin++; | ||
else if (e.keyCode === keyCode.DELETE && caretPos.begin - 1 === radixPos) { | ||
restoreCaretPos = $.extend({}, caretPos); | ||
caretPos.begin--; | ||
caretPos.end--; | ||
} | ||
} | ||
@@ -588,2 +599,5 @@ bffr = buffer.slice().reverse(); | ||
bffr = alignDigits(bffr, opts.digits, opts).join(""); | ||
if (restoreCaretPos) { | ||
caretPos = restoreCaretPos; | ||
} | ||
$input.trigger("setvalue", [bffr, caretPos.begin >= bffr.length ? radixPos + 1 : caretPos.begin]); | ||
@@ -590,0 +604,0 @@ return false; |
import { | ||
determineTestTemplate, | ||
getMaskTemplate, | ||
getPlaceholder, | ||
getTest, | ||
getTests, | ||
getTestTemplate | ||
determineTestTemplate, | ||
getMaskTemplate, | ||
getPlaceholder, | ||
getTest, | ||
getTests, | ||
getTestTemplate | ||
} from "./validation-tests"; | ||
@@ -12,13 +12,13 @@ import {checkAlternationMatch} from "./validation"; | ||
export { | ||
caret, | ||
determineLastRequiredPosition, | ||
determineNewCaretPosition, | ||
getBuffer, | ||
getBufferTemplate, | ||
getLastValidPosition, | ||
isMask, | ||
resetMaskSet, | ||
seekNext, | ||
seekPrevious, | ||
translatePosition | ||
caret, | ||
determineLastRequiredPosition, | ||
determineNewCaretPosition, | ||
getBuffer, | ||
getBufferTemplate, | ||
getLastValidPosition, | ||
isMask, | ||
resetMaskSet, | ||
seekNext, | ||
seekPrevious, | ||
translatePosition | ||
}; | ||
@@ -28,81 +28,81 @@ | ||
function caret(input, begin, end, notranslate, isDelete) { | ||
const inputmask = this, | ||
opts = this.opts; | ||
const inputmask = this, | ||
opts = this.opts; | ||
var range; | ||
if (begin !== undefined) { | ||
if (Array.isArray(begin)) { | ||
end = inputmask.isRTL ? begin[0] : begin[1]; | ||
begin = inputmask.isRTL ? begin[1] : begin[0]; | ||
} | ||
if (begin.begin !== undefined) { | ||
end = inputmask.isRTL ? begin.begin : begin.end; | ||
begin = inputmask.isRTL ? begin.end : begin.begin; | ||
} | ||
if (typeof begin === "number") { | ||
begin = notranslate ? begin : translatePosition.call(inputmask, begin); | ||
end = notranslate ? end : translatePosition.call(inputmask, end); | ||
end = (typeof end == "number") ? end : begin; | ||
// if (!$(input).is(":visible")) { | ||
// return; | ||
// } | ||
var range; | ||
if (begin !== undefined) { | ||
if (Array.isArray(begin)) { | ||
end = inputmask.isRTL ? begin[0] : begin[1]; | ||
begin = inputmask.isRTL ? begin[1] : begin[0]; | ||
} | ||
if (begin.begin !== undefined) { | ||
end = inputmask.isRTL ? begin.begin : begin.end; | ||
begin = inputmask.isRTL ? begin.end : begin.begin; | ||
} | ||
if (typeof begin === "number") { | ||
begin = notranslate ? begin : translatePosition.call(inputmask, begin); | ||
end = notranslate ? end : translatePosition.call(inputmask, end); | ||
end = (typeof end == "number") ? end : begin; | ||
// if (!$(input).is(":visible")) { | ||
// return; | ||
// } | ||
var scrollCalc = parseInt(((input.ownerDocument.defaultView || window).getComputedStyle ? (input.ownerDocument.defaultView || window).getComputedStyle(input, null) : input.currentStyle).fontSize) * end; | ||
input.scrollLeft = scrollCalc > input.scrollWidth ? scrollCalc : 0; | ||
input.inputmask.caretPos = {begin: begin, end: end}; //track caret internally | ||
if (opts.insertModeVisual && opts.insertMode === false && begin === end) { | ||
if (!isDelete) { | ||
end++; //set visualization for insert/overwrite mode | ||
} | ||
} | ||
if (input === (input.inputmask.shadowRoot || input.ownerDocument).activeElement) { | ||
if ("setSelectionRange" in input) { | ||
input.setSelectionRange(begin, end); | ||
} else if (window.getSelection) { | ||
range = document.createRange(); | ||
if (input.firstChild === undefined || input.firstChild === null) { | ||
var textNode = document.createTextNode(""); | ||
input.appendChild(textNode); | ||
} | ||
range.setStart(input.firstChild, begin < input.inputmask._valueGet().length ? begin : input.inputmask._valueGet().length); | ||
range.setEnd(input.firstChild, end < input.inputmask._valueGet().length ? end : input.inputmask._valueGet().length); | ||
range.collapse(true); | ||
var sel = window.getSelection(); | ||
sel.removeAllRanges(); | ||
sel.addRange(range); | ||
//input.focus(); | ||
} else if (input.createTextRange) { | ||
range = input.createTextRange(); | ||
range.collapse(true); | ||
range.moveEnd("character", end); | ||
range.moveStart("character", begin); | ||
range.select(); | ||
} | ||
} | ||
} | ||
} else { | ||
if ("selectionStart" in input && "selectionEnd" in input) { | ||
begin = input.selectionStart; | ||
end = input.selectionEnd; | ||
} else if (window.getSelection) { | ||
range = window.getSelection().getRangeAt(0); | ||
if (range.commonAncestorContainer.parentNode === input || range.commonAncestorContainer === input) { | ||
begin = range.startOffset; | ||
end = range.endOffset; | ||
} | ||
} else if (document.selection && document.selection.createRange) { | ||
range = document.selection.createRange(); | ||
begin = 0 - range.duplicate().moveStart("character", -input.inputmask._valueGet().length); | ||
end = begin + range.text.length; | ||
} | ||
var scrollCalc = parseInt(((input.ownerDocument.defaultView || window).getComputedStyle ? (input.ownerDocument.defaultView || window).getComputedStyle(input, null) : input.currentStyle).fontSize) * end; | ||
input.scrollLeft = scrollCalc > input.scrollWidth ? scrollCalc : 0; | ||
input.inputmask.caretPos = {begin: begin, end: end}; //track caret internally | ||
if (opts.insertModeVisual && opts.insertMode === false && begin === end) { | ||
if (!isDelete) { | ||
end++; //set visualization for insert/overwrite mode | ||
} | ||
} | ||
if (input === (input.inputmask.shadowRoot || input.ownerDocument).activeElement) { | ||
if ("setSelectionRange" in input) { | ||
input.setSelectionRange(begin, end); | ||
} else if (window.getSelection) { | ||
range = document.createRange(); | ||
if (input.firstChild === undefined || input.firstChild === null) { | ||
var textNode = document.createTextNode(""); | ||
input.appendChild(textNode); | ||
} | ||
range.setStart(input.firstChild, begin < input.inputmask._valueGet().length ? begin : input.inputmask._valueGet().length); | ||
range.setEnd(input.firstChild, end < input.inputmask._valueGet().length ? end : input.inputmask._valueGet().length); | ||
range.collapse(true); | ||
var sel = window.getSelection(); | ||
sel.removeAllRanges(); | ||
sel.addRange(range); | ||
//input.focus(); | ||
} else if (input.createTextRange) { | ||
range = input.createTextRange(); | ||
range.collapse(true); | ||
range.moveEnd("character", end); | ||
range.moveStart("character", begin); | ||
range.select(); | ||
} | ||
} | ||
} | ||
} else { | ||
if ("selectionStart" in input && "selectionEnd" in input) { | ||
begin = input.selectionStart; | ||
end = input.selectionEnd; | ||
} else if (window.getSelection) { | ||
range = window.getSelection().getRangeAt(0); | ||
if (range.commonAncestorContainer.parentNode === input || range.commonAncestorContainer === input) { | ||
begin = range.startOffset; | ||
end = range.endOffset; | ||
} | ||
} else if (document.selection && document.selection.createRange) { | ||
range = document.selection.createRange(); | ||
begin = 0 - range.duplicate().moveStart("character", -input.inputmask._valueGet().length); | ||
end = begin + range.text.length; | ||
} | ||
// if (opts.insertModeVisual && opts.insertMode === false && begin === (end - 1)) end--; //correct caret for insert/overwrite mode | ||
// if (opts.insertModeVisual && opts.insertMode === false && begin === (end - 1)) end--; //correct caret for insert/overwrite mode | ||
/*eslint-disable consistent-return */ | ||
return { | ||
"begin": notranslate ? begin : translatePosition.call(inputmask, begin), | ||
"end": notranslate ? end : translatePosition.call(inputmask, end) | ||
}; | ||
/*eslint-enable consistent-return */ | ||
} | ||
/*eslint-disable consistent-return */ | ||
return { | ||
"begin": notranslate ? begin : translatePosition.call(inputmask, begin), | ||
"end": notranslate ? end : translatePosition.call(inputmask, end) | ||
}; | ||
/*eslint-enable consistent-return */ | ||
} | ||
} | ||
@@ -112,43 +112,43 @@ | ||
function determineLastRequiredPosition(returnDefinition) { | ||
const inputmask = this, | ||
maskset = this.maskset, | ||
$ = this.dependencyLib; | ||
const inputmask = this, | ||
maskset = this.maskset, | ||
$ = this.dependencyLib; | ||
var buffer = getMaskTemplate.call(inputmask, true, getLastValidPosition.call(inputmask), true, true), | ||
bl = buffer.length, | ||
pos, lvp = getLastValidPosition.call(inputmask), | ||
positions = {}, | ||
lvTest = maskset.validPositions[lvp], | ||
ndxIntlzr = lvTest !== undefined ? lvTest.locator.slice() : undefined, | ||
testPos; | ||
for (pos = lvp + 1; pos < buffer.length; pos++) { | ||
testPos = getTestTemplate.call(inputmask, pos, ndxIntlzr, pos - 1); | ||
ndxIntlzr = testPos.locator.slice(); | ||
positions[pos] = $.extend(true, {}, testPos); | ||
} | ||
var buffer = getMaskTemplate.call(inputmask, true, getLastValidPosition.call(inputmask), true, true), | ||
bl = buffer.length, | ||
pos, lvp = getLastValidPosition.call(inputmask), | ||
positions = {}, | ||
lvTest = maskset.validPositions[lvp], | ||
ndxIntlzr = lvTest !== undefined ? lvTest.locator.slice() : undefined, | ||
testPos; | ||
for (pos = lvp + 1; pos < buffer.length; pos++) { | ||
testPos = getTestTemplate.call(inputmask, pos, ndxIntlzr, pos - 1); | ||
ndxIntlzr = testPos.locator.slice(); | ||
positions[pos] = $.extend(true, {}, testPos); | ||
} | ||
var lvTestAlt = lvTest && lvTest.alternation !== undefined ? lvTest.locator[lvTest.alternation] : undefined; | ||
for (pos = bl - 1; pos > lvp; pos--) { | ||
testPos = positions[pos]; | ||
if ((testPos.match.optionality || | ||
(testPos.match.optionalQuantifier && testPos.match.newBlockMarker) || | ||
(lvTestAlt && | ||
( | ||
(lvTestAlt !== positions[pos].locator[lvTest.alternation] && testPos.match.static != true) || | ||
(testPos.match.static === true && | ||
testPos.locator[lvTest.alternation] && | ||
checkAlternationMatch.call(inputmask, testPos.locator[lvTest.alternation].toString().split(","), lvTestAlt.toString().split(",")) && | ||
getTests.call(inputmask, pos)[0].def !== "") | ||
) | ||
)) && | ||
buffer[pos] === getPlaceholder.call(inputmask, pos, testPos.match)) { | ||
bl--; | ||
} else { | ||
break; | ||
} | ||
} | ||
return returnDefinition ? { | ||
"l": bl, | ||
"def": positions[bl] ? positions[bl].match : undefined | ||
} : bl; | ||
var lvTestAlt = lvTest && lvTest.alternation !== undefined ? lvTest.locator[lvTest.alternation] : undefined; | ||
for (pos = bl - 1; pos > lvp; pos--) { | ||
testPos = positions[pos]; | ||
if ((testPos.match.optionality || | ||
(testPos.match.optionalQuantifier && testPos.match.newBlockMarker) || | ||
(lvTestAlt && | ||
( | ||
(lvTestAlt !== positions[pos].locator[lvTest.alternation] && testPos.match.static != true) || | ||
(testPos.match.static === true && | ||
testPos.locator[lvTest.alternation] && | ||
checkAlternationMatch.call(inputmask, testPos.locator[lvTest.alternation].toString().split(","), lvTestAlt.toString().split(",")) && | ||
getTests.call(inputmask, pos)[0].def !== "") | ||
) | ||
)) && | ||
buffer[pos] === getPlaceholder.call(inputmask, pos, testPos.match)) { | ||
bl--; | ||
} else { | ||
break; | ||
} | ||
} | ||
return returnDefinition ? { | ||
"l": bl, | ||
"def": positions[bl] ? positions[bl].match : undefined | ||
} : bl; | ||
} | ||
@@ -158,73 +158,73 @@ | ||
function determineNewCaretPosition(selectedCaret, tabbed, positionCaretOnClick) { | ||
const inputmask = this, | ||
maskset = this.maskset, | ||
opts = this.opts; | ||
const inputmask = this, | ||
maskset = this.maskset, | ||
opts = this.opts; | ||
function doRadixFocus(clickPos) { | ||
if (opts.radixPoint !== "" && opts.digits !== 0) { | ||
var vps = maskset.validPositions; | ||
if (vps[clickPos] === undefined || (vps[clickPos].input === getPlaceholder.call(inputmask, clickPos))) { | ||
if (clickPos < seekNext.call(inputmask, -1)) return true; | ||
var radixPos = getBuffer.call(inputmask).indexOf(opts.radixPoint); | ||
if (radixPos !== -1) { | ||
for (var vp in vps) { | ||
if (vps[vp] && radixPos < vp && vps[vp].input !== getPlaceholder.call(inputmask, vp)) { | ||
return false; | ||
} | ||
} | ||
return true; | ||
} | ||
} | ||
} | ||
return false; | ||
} | ||
function doRadixFocus(clickPos) { | ||
if (opts.radixPoint !== "" && opts.digits !== 0) { | ||
var vps = maskset.validPositions; | ||
if (vps[clickPos] === undefined || (vps[clickPos].input === getPlaceholder.call(inputmask, clickPos))) { | ||
if (clickPos < seekNext.call(inputmask, -1)) return true; | ||
var radixPos = getBuffer.call(inputmask).indexOf(opts.radixPoint); | ||
if (radixPos !== -1) { | ||
for (var vp in vps) { | ||
if (vps[vp] && radixPos < vp && vps[vp].input !== getPlaceholder.call(inputmask, vp)) { | ||
return false; | ||
} | ||
} | ||
return true; | ||
} | ||
} | ||
} | ||
return false; | ||
} | ||
if (tabbed) { | ||
if (inputmask.isRTL) { | ||
selectedCaret.end = selectedCaret.begin; | ||
} else { | ||
selectedCaret.begin = selectedCaret.end; | ||
} | ||
} | ||
if (selectedCaret.begin === selectedCaret.end) { | ||
positionCaretOnClick = positionCaretOnClick || opts.positionCaretOnClick; | ||
switch (positionCaretOnClick) { | ||
case "none": | ||
break; | ||
case "select": | ||
selectedCaret = {begin: 0, end: getBuffer.call(inputmask).length}; | ||
break; | ||
case "ignore": | ||
selectedCaret.end = selectedCaret.begin = seekNext.call(inputmask, getLastValidPosition.call(inputmask)); | ||
break; | ||
case "radixFocus": | ||
if (doRadixFocus(selectedCaret.begin)) { | ||
var radixPos = getBuffer.call(inputmask).join("").indexOf(opts.radixPoint); | ||
selectedCaret.end = selectedCaret.begin = opts.numericInput ? seekNext.call(inputmask, radixPos) : radixPos; | ||
break; | ||
} //fallback to lvp | ||
// eslint-disable-next-line no-fallthrough | ||
default: //lvp: | ||
var clickPosition = selectedCaret.begin, | ||
lvclickPosition = getLastValidPosition.call(inputmask, clickPosition, true), | ||
lastPosition = seekNext.call(inputmask, (lvclickPosition === -1 && !isMask.call(inputmask, 0)) ? -1 : lvclickPosition); | ||
if (tabbed) { | ||
if (inputmask.isRTL) { | ||
selectedCaret.end = selectedCaret.begin; | ||
} else { | ||
selectedCaret.begin = selectedCaret.end; | ||
} | ||
} | ||
if (selectedCaret.begin === selectedCaret.end) { | ||
positionCaretOnClick = positionCaretOnClick || opts.positionCaretOnClick; | ||
switch (positionCaretOnClick) { | ||
case "none": | ||
break; | ||
case "select": | ||
selectedCaret = {begin: 0, end: getBuffer.call(inputmask).length}; | ||
break; | ||
case "ignore": | ||
selectedCaret.end = selectedCaret.begin = seekNext.call(inputmask, getLastValidPosition.call(inputmask)); | ||
break; | ||
case "radixFocus": | ||
if (doRadixFocus(selectedCaret.begin)) { | ||
var radixPos = getBuffer.call(inputmask).join("").indexOf(opts.radixPoint); | ||
selectedCaret.end = selectedCaret.begin = opts.numericInput ? seekNext.call(inputmask, radixPos) : radixPos; | ||
break; | ||
} //fallback to lvp | ||
// eslint-disable-next-line no-fallthrough | ||
default: //lvp: | ||
var clickPosition = selectedCaret.begin, | ||
lvclickPosition = getLastValidPosition.call(inputmask, clickPosition, true), | ||
lastPosition = seekNext.call(inputmask, (lvclickPosition === -1 && !isMask.call(inputmask, 0)) ? -1 : lvclickPosition); | ||
if (clickPosition <= lastPosition) { | ||
selectedCaret.end = selectedCaret.begin = !isMask.call(inputmask, clickPosition, false, true) ? seekNext.call(inputmask, clickPosition) : clickPosition; | ||
} else { | ||
var lvp = maskset.validPositions[lvclickPosition], | ||
tt = getTestTemplate.call(inputmask, lastPosition, lvp ? lvp.match.locator : undefined, lvp), | ||
placeholder = getPlaceholder.call(inputmask, lastPosition, tt.match); | ||
if ((placeholder !== "" && getBuffer.call(inputmask)[lastPosition] !== placeholder && tt.match.optionalQuantifier !== true && tt.match.newBlockMarker !== true) || (!isMask.call(inputmask, lastPosition, opts.keepStatic, true) && tt.match.def === placeholder)) { | ||
var newPos = seekNext.call(inputmask, lastPosition); | ||
if (clickPosition >= newPos || clickPosition === lastPosition) { | ||
lastPosition = newPos; | ||
} | ||
} | ||
selectedCaret.end = selectedCaret.begin = lastPosition; | ||
} | ||
} | ||
if (clickPosition <= lastPosition) { | ||
selectedCaret.end = selectedCaret.begin = !isMask.call(inputmask, clickPosition, false, true) ? seekNext.call(inputmask, clickPosition) : clickPosition; | ||
} else { | ||
var lvp = maskset.validPositions[lvclickPosition], | ||
tt = getTestTemplate.call(inputmask, lastPosition, lvp ? lvp.match.locator : undefined, lvp), | ||
placeholder = getPlaceholder.call(inputmask, lastPosition, tt.match); | ||
if ((placeholder !== "" && getBuffer.call(inputmask)[lastPosition] !== placeholder && tt.match.optionalQuantifier !== true && tt.match.newBlockMarker !== true) || (!isMask.call(inputmask, lastPosition, opts.keepStatic, true) && tt.match.def === placeholder)) { | ||
var newPos = seekNext.call(inputmask, lastPosition); | ||
if (clickPosition >= newPos || clickPosition === lastPosition) { | ||
lastPosition = newPos; | ||
} | ||
} | ||
selectedCaret.end = selectedCaret.begin = lastPosition; | ||
} | ||
} | ||
return selectedCaret; | ||
} | ||
return selectedCaret; | ||
} | ||
} | ||
@@ -235,9 +235,9 @@ | ||
function getBuffer(noCache) { | ||
const inputmask = this, maskset = this.maskset; | ||
const inputmask = this, maskset = this.maskset; | ||
if (maskset.buffer === undefined || noCache === true) { | ||
maskset.buffer = getMaskTemplate.call(inputmask, true, getLastValidPosition.call(inputmask), true); | ||
if (maskset._buffer === undefined) maskset._buffer = maskset.buffer.slice(); | ||
} | ||
return maskset.buffer; | ||
if (maskset.buffer === undefined || noCache === true) { | ||
maskset.buffer = getMaskTemplate.call(inputmask, true, getLastValidPosition.call(inputmask), true); | ||
if (maskset._buffer === undefined) maskset._buffer = maskset.buffer.slice(); | ||
} | ||
return maskset.buffer; | ||
} | ||
@@ -247,10 +247,10 @@ | ||
function getBufferTemplate() { | ||
const inputmask = this, maskset = this.maskset; | ||
const inputmask = this, maskset = this.maskset; | ||
if (maskset._buffer === undefined) { | ||
//generate template | ||
maskset._buffer = getMaskTemplate.call(inputmask, false, 1); | ||
if (maskset.buffer === undefined) maskset.buffer = maskset._buffer.slice(); | ||
} | ||
return maskset._buffer; | ||
if (maskset._buffer === undefined) { | ||
//generate template | ||
maskset._buffer = getMaskTemplate.call(inputmask, false, 1); | ||
if (maskset.buffer === undefined) maskset.buffer = maskset._buffer.slice(); | ||
} | ||
return maskset._buffer; | ||
} | ||
@@ -260,16 +260,16 @@ | ||
function getLastValidPosition(closestTo, strict, validPositions) { | ||
const maskset = this.maskset; | ||
const maskset = this.maskset; | ||
var before = -1, | ||
after = -1, | ||
valids = validPositions || maskset.validPositions; //for use in valhook ~ context switch | ||
if (closestTo === undefined) closestTo = -1; | ||
for (var posNdx in valids) { | ||
var psNdx = parseInt(posNdx); | ||
if (valids[psNdx] && (strict || valids[psNdx].generatedInput !== true)) { | ||
if (psNdx <= closestTo) before = psNdx; | ||
if (psNdx >= closestTo) after = psNdx; | ||
} | ||
} | ||
return (before === -1 || before == closestTo) ? after : after == -1 ? before : (closestTo - before) < (after - closestTo) ? before : after; | ||
var before = -1, | ||
after = -1, | ||
valids = validPositions || maskset.validPositions; //for use in valhook ~ context switch | ||
if (closestTo === undefined) closestTo = -1; | ||
for (var posNdx in valids) { | ||
var psNdx = parseInt(posNdx); | ||
if (valids[psNdx] && (strict || valids[psNdx].generatedInput !== true)) { | ||
if (psNdx <= closestTo) before = psNdx; | ||
if (psNdx >= closestTo) after = psNdx; | ||
} | ||
} | ||
return (before === -1 || before == closestTo) ? after : after == -1 ? before : (closestTo - before) < (after - closestTo) ? before : after; | ||
} | ||
@@ -279,26 +279,26 @@ | ||
function isMask(pos, strict, fuzzy) { | ||
const inputmask = this, maskset = this.maskset; | ||
const inputmask = this, maskset = this.maskset; | ||
var test = getTestTemplate.call(inputmask, pos).match; | ||
if (test.def === "") test = getTest.call(inputmask, pos).match; | ||
var test = getTestTemplate.call(inputmask, pos).match; | ||
if (test.def === "") test = getTest.call(inputmask, pos).match; | ||
if (test.static !== true) { | ||
return test.fn; | ||
} | ||
if (fuzzy === true && (maskset.validPositions[pos] !== undefined && maskset.validPositions[pos].generatedInput !== true)) { | ||
return true; | ||
} | ||
if (test.static !== true) { | ||
return test.fn; | ||
} | ||
if (fuzzy === true && (maskset.validPositions[pos] !== undefined && maskset.validPositions[pos].generatedInput !== true)) { | ||
return true; | ||
} | ||
if (strict !== true && pos > -1) { | ||
if (fuzzy) { //check on the number of tests | ||
var tests = getTests.call(inputmask, pos); | ||
return tests.length > (1 + (tests[tests.length - 1].match.def === "" ? 1 : 0)); | ||
} | ||
//else based on the template | ||
var testTemplate = determineTestTemplate.call(inputmask, pos, getTests.call(inputmask, pos)); | ||
var testPlaceHolder = getPlaceholder.call(inputmask, pos, testTemplate.match); | ||
return testTemplate.match.def !== testPlaceHolder; | ||
if (strict !== true && pos > -1) { | ||
if (fuzzy) { //check on the number of tests | ||
var tests = getTests.call(inputmask, pos); | ||
return tests.length > (1 + (tests[tests.length - 1].match.def === "" ? 1 : 0)); | ||
} | ||
//else based on the template | ||
var testTemplate = determineTestTemplate.call(inputmask, pos, getTests.call(inputmask, pos)); | ||
var testPlaceHolder = getPlaceholder.call(inputmask, pos, testTemplate.match); | ||
return testTemplate.match.def !== testPlaceHolder; | ||
} | ||
return false; | ||
} | ||
return false; | ||
} | ||
@@ -308,9 +308,9 @@ | ||
function resetMaskSet(soft) { | ||
const maskset = this.maskset; | ||
const maskset = this.maskset; | ||
maskset.buffer = undefined; | ||
if (soft !== true) { | ||
maskset.validPositions = {}; | ||
maskset.p = 0; | ||
} | ||
maskset.buffer = undefined; | ||
if (soft !== true) { | ||
maskset.validPositions = {}; | ||
maskset.p = 0; | ||
} | ||
} | ||
@@ -320,12 +320,12 @@ | ||
function seekNext(pos, newBlock, fuzzy) { | ||
const inputmask = this; | ||
const inputmask = this; | ||
if (fuzzy === undefined) fuzzy = true; | ||
var position = pos + 1; | ||
while (getTest.call(inputmask, position).match.def !== "" && | ||
((newBlock === true && (getTest.call(inputmask, position).match.newBlockMarker !== true || !isMask.call(inputmask, position, undefined, true))) || | ||
(newBlock !== true && !isMask.call(inputmask, position, undefined, fuzzy)))) { | ||
position++; | ||
} | ||
return position; | ||
if (fuzzy === undefined) fuzzy = true; | ||
var position = pos + 1; | ||
while (getTest.call(inputmask, position).match.def !== "" && | ||
((newBlock === true && (getTest.call(inputmask, position).match.newBlockMarker !== true || !isMask.call(inputmask, position, undefined, true))) || | ||
(newBlock !== true && !isMask.call(inputmask, position, undefined, fuzzy)))) { | ||
position++; | ||
} | ||
return position; | ||
} | ||
@@ -335,13 +335,13 @@ | ||
function seekPrevious(pos, newBlock) { | ||
const inputmask = this; | ||
const inputmask = this; | ||
var position = pos - 1; | ||
if (pos <= 0) return 0; | ||
var position = pos - 1; | ||
if (pos <= 0) return 0; | ||
while (position > 0 && | ||
((newBlock === true && (getTest.call(inputmask, position).match.newBlockMarker !== true || !isMask.call(inputmask, position, undefined, true))) || | ||
(newBlock !== true && !isMask.call(inputmask, position, undefined, true)))) { | ||
position--; | ||
} | ||
return position; | ||
while (position > 0 && | ||
((newBlock === true && (getTest.call(inputmask, position).match.newBlockMarker !== true || !isMask.call(inputmask, position, undefined, true))) || | ||
(newBlock !== true && !isMask.call(inputmask, position, undefined, true)))) { | ||
position--; | ||
} | ||
return position; | ||
} | ||
@@ -351,10 +351,11 @@ | ||
function translatePosition(pos) { | ||
const inputmask = this, | ||
opts = this.opts, | ||
el = this.el; | ||
const inputmask = this, | ||
opts = this.opts, | ||
el = this.el; | ||
if (inputmask.isRTL && typeof pos === "number" && (!opts.greedy || opts.placeholder !== "") && el) { | ||
pos = Math.abs(inputmask._valueGet().length - pos); | ||
} | ||
return pos; | ||
if (inputmask.isRTL && typeof pos === "number" && (!opts.greedy || opts.placeholder !== "") && el) { | ||
pos = inputmask._valueGet().length - pos; | ||
if (pos < 0) pos = 0; | ||
} | ||
return pos; | ||
} |
@@ -599,3 +599,3 @@ import { | ||
validatedPos = validatedPos !== undefined ? validatedPos : begin; | ||
if (begin !== end || (opts.insertMode && maskset.validPositions[validatedPos] !== undefined && fromIsValid === undefined) || validTest === undefined || validTest.match.optionalQuantifier || validTest.match.optionality) { | ||
if (fromIsValid === undefined && (begin !== end || (opts.insertMode && maskset.validPositions[validatedPos] !== undefined) || validTest === undefined || validTest.match.optionalQuantifier || validTest.match.optionality)) { | ||
//reposition & revalidate others | ||
@@ -602,0 +602,0 @@ var positionsClone = $.extend(true, {}, maskset.validPositions), |
{ | ||
"name": "inputmask", | ||
"version": "5.0.8-beta.1", | ||
"version": "5.0.8-beta.7", | ||
"description": "Inputmask is a javascript library which creates an input mask. Inputmask can run against vanilla javascript, jQuery and jqlite.", | ||
@@ -5,0 +5,0 @@ "main": "dist/inputmask.js", |
Sorry, the diff of this file is too big to display
Sorry, the diff of this file is too big to display
Sorry, the diff of this file is too big to display
Sorry, the diff of this file is too big to display
855927
11235