Browse Source

also reset tests on clearincomplete #2712

Robin Herbots 2 years ago
parent
commit
9d9c7c8f62

+ 1 - 0
Changelog.md

@@ -4,6 +4,7 @@
 
 ### Fixed
 
+- State of alternator not reset with clearIncomplete = true #2712
 - Change Event fired on Blur even if value has not changed #2691
 - fix ssr issues when navigator is not defined #2704
 - type "dead" characters actually set Dead in the textbox #2701

+ 1 - 1
bower.json

@@ -1,6 +1,6 @@
 {
   "name": "inputmask",
-  "version": "5.0.9-beta.7",
+  "version": "5.0.9-beta.8",
   "main": [
 	  "./index.js",
     "./css/inputmask.css"

+ 1 - 1
composer.json

@@ -1,7 +1,7 @@
 {
   "name": "robinherbots/inputmask",
   "description": "Inputmask is a javascript library which creates an input mask.  Inputmask can run against vanilla javascript, jQuery and jqlite.",
-  "version": "5.0.9-beta.7",
+  "version": "5.0.9-beta.8",
   "type": "library",
   "keywords": ["jquery", "plugins", "input", "form", "inputmask", "mask"],
   "homepage": "http://robinherbots.github.io/Inputmask",

+ 8 - 6
dist/inputmask.js

@@ -3,7 +3,7 @@
  * https://github.com/RobinHerbots/Inputmask
  * Copyright (c) 2010 - 2023 Robin Herbots
  * Licensed under the MIT license
- * Version: 5.0.9-beta.7
+ * Version: 5.0.9-beta.8
  */
 !function(e, t) {
     if ("object" == typeof exports && "object" == typeof module) module.exports = t(); else if ("function" == typeof define && define.amd) define([], t); else {
@@ -557,7 +557,7 @@
                             "" !== c && (i.clearMaskOnLostFocus && (-1 === n.getLastValidPosition.call(t) && c === n.getBufferTemplate.call(t).join("") ? u = [] : l.clearOptionalTail.call(t, u)), 
                             !1 === s.isComplete.call(t, u) && (setTimeout((function() {
                                 r.trigger("incomplete");
-                            }), 0), i.clearIncomplete && (n.resetMaskSet.call(t), u = i.clearMaskOnLostFocus ? [] : n.getBufferTemplate.call(t).slice())), 
+                            }), 0), i.clearIncomplete && (n.resetMaskSet.call(t, !1), u = i.clearMaskOnLostFocus ? [] : n.getBufferTemplate.call(t).slice())), 
                             (0, l.writeBuffer)(o, u, void 0, e)), c = t._valueGet(!0), t.undoValue !== c && ("" != c || t.undoValue != n.getBufferTemplate.call(t).join("") || t.undoValue == n.getBufferTemplate.call(t).join("") && t.maskset.validPositions.length > 0) && (t.undoValue = c, 
                             r.trigger("change"));
                         }
@@ -1590,7 +1590,7 @@
                 }
                 function f(e, t, i, a, s) {
                     var c = e ? e.inputmask : this, u = c.maskset, f = c.opts, p = c.dependencyLib, h = a.slice(), v = "", m = -1, g = void 0, y = f.skipOptionalPartCharacter;
-                    f.skipOptionalPartCharacter = "", r.resetMaskSet.call(c), u.tests = {}, m = f.radixPoint ? r.determineNewCaretPosition.call(c, {
+                    f.skipOptionalPartCharacter = "", r.resetMaskSet.call(c, !1), m = f.radixPoint ? r.determineNewCaretPosition.call(c, {
                         begin: 0,
                         end: 0
                     }, !1, !1 === f.__financeInput ? "radixFocus" : void 0).begin : 0, u.p = m, c.caretPos = {
@@ -2454,7 +2454,8 @@
                         if ("" !== i.inputmask._valueGet(!0) || !1 === t.clearMaskOnLostFocus || d === i) {
                             (0, r.applyInputValue)(i, i.inputmask._valueGet(!0), t);
                             var p = n.getBuffer.call(e).slice();
-                            !1 === l.isComplete.call(e, p) && t.clearIncomplete && n.resetMaskSet.call(e), t.clearMaskOnLostFocus && d !== i && (-1 === n.getLastValidPosition.call(e) ? p = [] : r.clearOptionalTail.call(e, p)), 
+                            !1 === l.isComplete.call(e, p) && t.clearIncomplete && n.resetMaskSet.call(e, !1), 
+                            t.clearMaskOnLostFocus && d !== i && (-1 === n.getLastValidPosition.call(e) ? p = [] : r.clearOptionalTail.call(e, p)), 
                             (!1 === t.clearMaskOnLostFocus || t.showMaskOnFocus && d === i || "" !== i.inputmask._valueGet(!0)) && (0, 
                             r.writeBuffer)(i, p), d === i && n.caret.call(e, i, n.seekNext.call(e, n.getLastValidPosition.call(e)));
                         }
@@ -2619,6 +2620,7 @@
                 }, t.getLastValidPosition = l, t.isMask = c, t.resetMaskSet = function(e) {
                     var t = this.maskset;
                     t.buffer = void 0, !0 !== e && (t.validPositions = [], t.p = 0);
+                    !1 === e && (t.tests = {});
                 }, t.seekNext = u, t.seekPrevious = function(e, t) {
                     var i = this, a = e - 1;
                     if (e <= 0) return 0;
@@ -3144,8 +3146,8 @@
                 }
                 function p(e, t, i) {
                     var a, n, s = this, l = this.maskset, c = this.opts, u = this.dependencyLib, f = c.skipOptionalPartCharacter, d = s.isRTL ? i.slice().reverse() : i;
-                    if (c.skipOptionalPartCharacter = "", !0 === e) r.resetMaskSet.call(s), l.tests = {}, 
-                    e = 0, t = i.length, n = r.determineNewCaretPosition.call(s, {
+                    if (c.skipOptionalPartCharacter = "", !0 === e) r.resetMaskSet.call(s, !1), e = 0, 
+                    t = i.length, n = r.determineNewCaretPosition.call(s, {
                         begin: 0,
                         end: 0
                     }, !1).begin; else {

File diff suppressed because it is too large
+ 2 - 2
dist/inputmask.min.js


+ 8 - 6
dist/jquery.inputmask.js

@@ -3,7 +3,7 @@
  * https://github.com/RobinHerbots/Inputmask
  * Copyright (c) 2010 - 2023 Robin Herbots
  * Licensed under the MIT license
- * Version: 5.0.9-beta.7
+ * Version: 5.0.9-beta.8
  */
 !function(e, t) {
     if ("object" == typeof exports && "object" == typeof module) module.exports = t(require("jquery")); else if ("function" == typeof define && define.amd) define([ "jquery" ], t); else {
@@ -387,7 +387,7 @@
                             "" !== c && (i.clearMaskOnLostFocus && (-1 === n.getLastValidPosition.call(t) && c === n.getBufferTemplate.call(t).join("") ? u = [] : l.clearOptionalTail.call(t, u)), 
                             !1 === s.isComplete.call(t, u) && (setTimeout((function() {
                                 r.trigger("incomplete");
-                            }), 0), i.clearIncomplete && (n.resetMaskSet.call(t), u = i.clearMaskOnLostFocus ? [] : n.getBufferTemplate.call(t).slice())), 
+                            }), 0), i.clearIncomplete && (n.resetMaskSet.call(t, !1), u = i.clearMaskOnLostFocus ? [] : n.getBufferTemplate.call(t).slice())), 
                             (0, l.writeBuffer)(o, u, void 0, e)), c = t._valueGet(!0), t.undoValue !== c && ("" != c || t.undoValue != n.getBufferTemplate.call(t).join("") || t.undoValue == n.getBufferTemplate.call(t).join("") && t.maskset.validPositions.length > 0) && (t.undoValue = c, 
                             r.trigger("change"));
                         }
@@ -1420,7 +1420,7 @@
                 }
                 function f(e, t, i, a, s) {
                     var c = e ? e.inputmask : this, u = c.maskset, f = c.opts, d = c.dependencyLib, h = a.slice(), m = "", v = -1, g = void 0, k = f.skipOptionalPartCharacter;
-                    f.skipOptionalPartCharacter = "", r.resetMaskSet.call(c), u.tests = {}, v = f.radixPoint ? r.determineNewCaretPosition.call(c, {
+                    f.skipOptionalPartCharacter = "", r.resetMaskSet.call(c, !1), v = f.radixPoint ? r.determineNewCaretPosition.call(c, {
                         begin: 0,
                         end: 0
                     }, !1, !1 === f.__financeInput ? "radixFocus" : void 0).begin : 0, u.p = v, c.caretPos = {
@@ -2352,7 +2352,8 @@
                         if ("" !== i.inputmask._valueGet(!0) || !1 === t.clearMaskOnLostFocus || p === i) {
                             (0, r.applyInputValue)(i, i.inputmask._valueGet(!0), t);
                             var d = n.getBuffer.call(e).slice();
-                            !1 === l.isComplete.call(e, d) && t.clearIncomplete && n.resetMaskSet.call(e), t.clearMaskOnLostFocus && p !== i && (-1 === n.getLastValidPosition.call(e) ? d = [] : r.clearOptionalTail.call(e, d)), 
+                            !1 === l.isComplete.call(e, d) && t.clearIncomplete && n.resetMaskSet.call(e, !1), 
+                            t.clearMaskOnLostFocus && p !== i && (-1 === n.getLastValidPosition.call(e) ? d = [] : r.clearOptionalTail.call(e, d)), 
                             (!1 === t.clearMaskOnLostFocus || t.showMaskOnFocus && p === i || "" !== i.inputmask._valueGet(!0)) && (0, 
                             r.writeBuffer)(i, d), p === i && n.caret.call(e, i, n.seekNext.call(e, n.getLastValidPosition.call(e)));
                         }
@@ -2517,6 +2518,7 @@
                 }, t.getLastValidPosition = l, t.isMask = c, t.resetMaskSet = function(e) {
                     var t = this.maskset;
                     t.buffer = void 0, !0 !== e && (t.validPositions = [], t.p = 0);
+                    !1 === e && (t.tests = {});
                 }, t.seekNext = u, t.seekPrevious = function(e, t) {
                     var i = this, a = e - 1;
                     if (e <= 0) return 0;
@@ -3042,8 +3044,8 @@
                 }
                 function d(e, t, i) {
                     var a, n, s = this, l = this.maskset, c = this.opts, u = this.dependencyLib, f = c.skipOptionalPartCharacter, p = s.isRTL ? i.slice().reverse() : i;
-                    if (c.skipOptionalPartCharacter = "", !0 === e) r.resetMaskSet.call(s), l.tests = {}, 
-                    e = 0, t = i.length, n = r.determineNewCaretPosition.call(s, {
+                    if (c.skipOptionalPartCharacter = "", !0 === e) r.resetMaskSet.call(s, !1), e = 0, 
+                    t = i.length, n = r.determineNewCaretPosition.call(s, {
                         begin: 0,
                         end: 0
                     }, !1).begin; else {

File diff suppressed because it is too large
+ 2 - 2
dist/jquery.inputmask.min.js


+ 1 - 0
inputmask-pages/src/assets/Changelog.md

@@ -4,6 +4,7 @@
 
 ### Fixed
 
+- State of alternator not reset with clearIncomplete = true #2712
 - Change Event fired on Blur even if value has not changed #2691
 - fix ssr issues when navigator is not defined #2704
 - type "dead" characters actually set Dead in the textbox #2701

+ 1 - 1
lib/eventhandlers.js

@@ -440,7 +440,7 @@ var EventHandlers = {
                         $input.trigger("incomplete");
                     }, 0);
                     if (opts.clearIncomplete) {
-                        resetMaskSet.call(inputmask);
+                        resetMaskSet.call(inputmask, false);
                         if (opts.clearMaskOnLostFocus) {
                             buffer = [];
                         } else {

+ 1 - 2
lib/inputHandling.js

@@ -71,8 +71,7 @@ function checkVal(input, writeOut, strict, nptvl, initiatingEvent) {
         return match;
     }
 
-    resetMaskSet.call(inputmask);
-    maskset.tests = {}; //reset tests ~ possible after alternating
+    resetMaskSet.call(inputmask, false);
     initialNdx = opts.radixPoint ? determineNewCaretPosition.call(inputmask, {
         begin: 0,
         end: 0

+ 1 - 1
lib/mask.js

@@ -224,7 +224,7 @@ function mask() {
             var buffer = getBuffer.call(inputmask).slice();
             if (isComplete.call(inputmask, buffer) === false) {
                 if (opts.clearIncomplete) {
-                    resetMaskSet.call(inputmask);
+                    resetMaskSet.call(inputmask, false);
                 }
             }
             if (opts.clearMaskOnLostFocus && activeElement !== el) {

+ 4 - 0
lib/positioning.js

@@ -294,6 +294,7 @@ function isMask(pos, strict, fuzzy) {
 }
 
 //tobe put on prototype?
+//soft ~ undefined reset validpositions; soft = false also reset tests; soft = true only reset the maskset
 function resetMaskSet(soft) {
     const maskset = this.maskset;
 
@@ -302,6 +303,9 @@ function resetMaskSet(soft) {
         maskset.validPositions = [];
         maskset.p = 0;
     }
+    if(soft === false) {
+       maskset.tests = {};
+    }
 }
 
 //tobe put on prototype?

+ 1 - 2
lib/validation.js

@@ -522,8 +522,7 @@ function refreshFromBuffer(start, end, buffer) {
         bffr = inputmask.isRTL ? buffer.slice().reverse() : buffer;
     opts.skipOptionalPartCharacter = "";
     if (start === true) {
-        resetMaskSet.call(inputmask);
-        maskset.tests = {}; //refresh tests after possible alternating
+        resetMaskSet.call(inputmask, false);
         start = 0;
         end = buffer.length;
         p = determineNewCaretPosition.call(inputmask, {begin: 0, end: 0}, false).begin;

+ 1 - 1
package.json

@@ -1,6 +1,6 @@
 {
   "name": "inputmask",
-  "version": "5.0.9-beta.7",
+  "version": "5.0.9-beta.8",
   "description": "Inputmask is a javascript library which creates an input mask.  Inputmask can run against vanilla javascript, jQuery and jqlite.",
   "main": "dist/inputmask.js",
   "files": [