input-format
Version:
Formatting user's text input on-the-fly
1 lines • 13.8 kB
Source Map (JSON)
{"version":3,"file":"inputControl.test.js","names":["onChange","onCut","onPaste","onKeyDown","Keys","templateParser","templateFormatter","parseDigit","TEMPLATE","parse","format","describe","it","input","value","selectionStart","selectionEnd","setSelectionRange","position","hasAttribute","attribute","on_change","_","expect","to","equal","done","setTimeout","be","undefined","event","keyCode","Delete","preventDefault","Backspace"],"sources":["../source/inputControl.test.js"],"sourcesContent":["import\r\n{\r\n\tonChange,\r\n\tonCut,\r\n\tonPaste,\r\n\tonKeyDown\r\n}\r\nfrom './inputControl.js'\r\n\r\nimport { Keys } from './dom.js'\r\n\r\nimport templateParser from './templateParser.js'\r\nimport templateFormatter from './templateFormatter.js'\r\nimport parseDigit from './parseDigit.js'\r\n\r\n// US phone number template\r\nconst TEMPLATE = '(xxx) xxx-xxxx'\r\nconst parse = templateParser(TEMPLATE, parseDigit)\r\nconst format = templateFormatter(TEMPLATE)\r\n\r\ndescribe('inputControl', function()\r\n{\r\n\tit('should handle onChange', function()\r\n\t{\r\n\t\tconst input =\r\n\t\t{\r\n\t\t\tvalue: '1234567-',\r\n\t\t\tselectionStart: 5,\r\n\t\t\tselectionEnd: 6,\r\n\t\t\tsetSelectionRange(position) {\r\n\t\t\t\tthis.selectionStart = position\r\n\t\t\t},\r\n\t\t\thasAttribute(attribute) {\r\n\t\t\t\treturn false\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\tlet value\r\n\t\tconst on_change = _ => value = _\r\n\r\n\t\tonChange({}, input, parse, format, on_change)\r\n\r\n\t\texpect(input.value).to.equal('(123) 456-7')\r\n\t\texpect(input.selectionStart).to.equal(8)\r\n\t\texpect(value).to.equal('1234567')\r\n\t})\r\n\r\n\tit('should handle onCut', function(done)\r\n\t{\r\n\t\tconst input =\r\n\t\t{\r\n\t\t\tvalue: '1234567-',\r\n\t\t\tselectionStart: 5,\r\n\t\t\tselectionEnd: 6,\r\n\t\t\tsetSelectionRange(position) {\r\n\t\t\t\tthis.selectionStart = position\r\n\t\t\t},\r\n\t\t\thasAttribute(attribute) {\r\n\t\t\t\treturn false\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\tlet value\r\n\t\tconst on_change = _ => value = _\r\n\r\n\t\tonCut({}, input, parse, format, on_change)\r\n\r\n\t\tsetTimeout(() =>\r\n\t\t{\r\n\t\t\texpect(input.value).to.equal('(123) 456-7')\r\n\t\t\texpect(input.selectionStart).to.equal(8)\r\n\t\t\texpect(value).to.equal('1234567')\r\n\t\t\tdone()\r\n\t\t},\r\n\t\t0)\r\n\t})\r\n\r\n\tit('should handle onPaste', function()\r\n\t{\r\n\t\tconst input =\r\n\t\t{\r\n\t\t\tvalue: '1234567-',\r\n\t\t\tselectionStart: 5,\r\n\t\t\tselectionEnd: 5,\r\n\t\t\tsetSelectionRange(position) {\r\n\t\t\t\tthis.selectionStart = position\r\n\t\t\t},\r\n\t\t\thasAttribute(attribute) {\r\n\t\t\t\treturn false\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\tlet value\r\n\t\tconst on_change = _ => value = _\r\n\r\n\t\tonPaste({}, input, parse, format, on_change)\r\n\r\n\t\texpect(input.value).to.equal('(123) 456-7')\r\n\t\texpect(input.selectionStart).to.equal(8)\r\n\t\texpect(value).to.equal('1234567')\r\n\t})\r\n\r\n\tit('should handle onPaste (with selection)', function()\r\n\t{\r\n\t\tconst input =\r\n\t\t{\r\n\t\t\tvalue: '1234567-',\r\n\t\t\tselectionStart: 5,\r\n\t\t\tselectionEnd: 6,\r\n\t\t\tsetSelectionRange(position) {\r\n\t\t\t\tthis.selectionStart = position\r\n\t\t\t},\r\n\t\t\thasAttribute(attribute) {\r\n\t\t\t\treturn false\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\tlet value\r\n\t\tconst on_change = _ => value = _\r\n\r\n\t\tonPaste({}, input, parse, format, on_change)\r\n\r\n\t\texpect(input.value).to.equal('(123) 457')\r\n\t\texpect(input.selectionStart).to.equal(8)\r\n\t\texpect(value).to.equal('123457')\r\n\t})\r\n\r\n\tit('should not handle onKeyDown', function()\r\n\t{\r\n\t\tconst input =\r\n\t\t{\r\n\t\t\tvalue: '1234567-',\r\n\t\t\tselectionStart: 5,\r\n\t\t\tselectionEnd: 6,\r\n\t\t\tsetSelectionRange(position) {\r\n\t\t\t\tthis.selectionStart = position\r\n\t\t\t},\r\n\t\t\thasAttribute(attribute) {\r\n\t\t\t\treturn false\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\tlet value\r\n\t\tconst on_change = _ => value = _\r\n\r\n\t\tonKeyDown({}, input, parse, format, on_change)\r\n\r\n\t\texpect(input.value).to.equal('1234567-')\r\n\t\texpect(input.selectionStart).to.equal(5)\r\n\t\texpect(value).to.be.undefined\r\n\t})\r\n\r\n\tit('should handle onKeyDown (Delete)', function()\r\n\t{\r\n\t\tconst input =\r\n\t\t{\r\n\t\t\tvalue: '1234567-',\r\n\t\t\tselectionStart: 5,\r\n\t\t\tselectionEnd: 5,\r\n\t\t\tsetSelectionRange(position) {\r\n\t\t\t\tthis.selectionStart = position\r\n\t\t\t},\r\n\t\t\thasAttribute(attribute) {\r\n\t\t\t\treturn false\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\tconst event =\r\n\t\t{\r\n\t\t\tkeyCode: Keys.Delete,\r\n\t\t\tpreventDefault() {}\r\n\t\t}\r\n\r\n\t\tlet value\r\n\t\tconst on_change = _ => value = _\r\n\r\n\t\tonKeyDown(event, input, parse, format, on_change)\r\n\r\n\t\texpect(input.value).to.equal('(123) 457')\r\n\t\texpect(input.selectionStart).to.equal(8)\r\n\t\texpect(value).to.equal('123457')\r\n\t})\r\n\r\n\tit('should handle onKeyDown (Backspace)', function()\r\n\t{\r\n\t\tconst input =\r\n\t\t{\r\n\t\t\tvalue: '1234567-',\r\n\t\t\tselectionStart: 5,\r\n\t\t\tselectionEnd: 5,\r\n\t\t\tsetSelectionRange(position) {\r\n\t\t\t\tthis.selectionStart = position\r\n\t\t\t},\r\n\t\t\thasAttribute(attribute) {\r\n\t\t\t\treturn false\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\tconst event =\r\n\t\t{\r\n\t\t\tkeyCode: Keys.Backspace,\r\n\t\t\tpreventDefault() {}\r\n\t\t}\r\n\r\n\t\tlet value\r\n\t\tconst on_change = _ => value = _\r\n\r\n\t\tonKeyDown(event, input, parse, format, on_change)\r\n\r\n\t\texpect(input.value).to.equal('(123) 467')\r\n\t\texpect(input.selectionStart).to.equal(7)\r\n\t\texpect(value).to.equal('123467')\r\n\t})\r\n\r\n\tit('should handle onKeyDown (Backspace with selection)', function()\r\n\t{\r\n\t\tconst input =\r\n\t\t{\r\n\t\t\tvalue: '1234567-',\r\n\t\t\tselectionStart: 4,\r\n\t\t\tselectionEnd: 6,\r\n\t\t\tsetSelectionRange(position) {\r\n\t\t\t\tthis.selectionStart = position\r\n\t\t\t},\r\n\t\t\thasAttribute(attribute) {\r\n\t\t\t\treturn false\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\tconst event =\r\n\t\t{\r\n\t\t\tkeyCode: Keys.Backspace,\r\n\t\t\tpreventDefault() {}\r\n\t\t}\r\n\r\n\t\tlet value\r\n\t\tconst on_change = _ => value = _\r\n\r\n\t\tonKeyDown(event, input, parse, format, on_change)\r\n\r\n\t\texpect(input.value).to.equal('(123) 47')\r\n\t\texpect(input.selectionStart).to.equal(7)\r\n\t\texpect(value).to.equal('12347')\r\n\t})\r\n\r\n\tit('should handle onKeyDown (Delete with selection)', function()\r\n\t{\r\n\t\tconst input =\r\n\t\t{\r\n\t\t\tvalue: '1234567-',\r\n\t\t\tselectionStart: 4,\r\n\t\t\tselectionEnd: 6,\r\n\t\t\tsetSelectionRange(position) {\r\n\t\t\t\tthis.selectionStart = position\r\n\t\t\t},\r\n\t\t\thasAttribute(attribute) {\r\n\t\t\t\treturn false\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\tconst event =\r\n\t\t{\r\n\t\t\tkeyCode: Keys.Delete,\r\n\t\t\tpreventDefault() {}\r\n\t\t}\r\n\r\n\t\tlet value\r\n\t\tconst on_change = _ => value = _\r\n\r\n\t\tonKeyDown(event, input, parse, format, on_change)\r\n\r\n\t\texpect(input.value).to.equal('(123) 47')\r\n\t\texpect(input.selectionStart).to.equal(7)\r\n\t\texpect(value).to.equal('12347')\r\n\t})\r\n})"],"mappings":"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"}