Skip to content

Commit

Permalink
[ISSUE-397] Add swapHiddenInput option
Browse files Browse the repository at this point in the history
  • Loading branch information
nosir committed Apr 1, 2020
1 parent 3945082 commit c6e850b
Show file tree
Hide file tree
Showing 11 changed files with 82 additions and 9 deletions.
20 changes: 20 additions & 0 deletions dist/cleave-angular.js
Original file line number Diff line number Diff line change
Expand Up @@ -120,6 +120,8 @@ return /******/ (function(modules) { // webpackBootstrap
owner.onCutListener = owner.onCut.bind(owner);
owner.onCopyListener = owner.onCopy.bind(owner);

owner.initSwapHiddenInput();

owner.element.addEventListener('input', owner.onChangeListener);
owner.element.addEventListener('keydown', owner.onKeyDownListener);
owner.element.addEventListener('focus', owner.onFocusListener);
Expand All @@ -139,6 +141,20 @@ return /******/ (function(modules) { // webpackBootstrap
}
},

initSwapHiddenInput: function () {
var owner = this, pps = owner.properties;
if (!pps.swapHiddenInput) return;

var inputFormatter = owner.element.cloneNode(true);
owner.element.parentNode.insertBefore(inputFormatter, owner.element);

owner.elementSwapHidden = owner.element;
owner.elementSwapHidden.type = 'hidden';

owner.element = inputFormatter;
owner.element.id = '';
},

initNumeralFormatter: function () {
var owner = this, pps = owner.properties;

Expand Down Expand Up @@ -430,6 +446,8 @@ return /******/ (function(modules) { // webpackBootstrap
}

owner.element.value = newValue;
if (pps.swapHiddenInput) owner.elementSwapHidden.value = owner.getRawValue();

Util.setSelection(owner.element, endPos, pps.document, false);
owner.callOnValueChanged();
},
Expand Down Expand Up @@ -1649,6 +1667,8 @@ return /******/ (function(modules) { // webpackBootstrap
target.tailPrefix = !!opts.tailPrefix;

// others
target.swapHiddenInput = !!opts.swapHiddenInput;

target.numericOnly = target.creditCard || target.date || !!opts.numericOnly;

target.uppercase = !!opts.uppercase;
Expand Down
4 changes: 2 additions & 2 deletions dist/cleave-angular.min.js

Large diffs are not rendered by default.

20 changes: 20 additions & 0 deletions dist/cleave-esm.js
Original file line number Diff line number Diff line change
Expand Up @@ -1006,6 +1006,8 @@ var DefaultProperties = {
target.tailPrefix = !!opts.tailPrefix;

// others
target.swapHiddenInput = !!opts.swapHiddenInput;

target.numericOnly = target.creditCard || target.date || !!opts.numericOnly;

target.uppercase = !!opts.uppercase;
Expand Down Expand Up @@ -1113,6 +1115,8 @@ Cleave.prototype = {
owner.onCutListener = owner.onCut.bind(owner);
owner.onCopyListener = owner.onCopy.bind(owner);

owner.initSwapHiddenInput();

owner.element.addEventListener('input', owner.onChangeListener);
owner.element.addEventListener('keydown', owner.onKeyDownListener);
owner.element.addEventListener('focus', owner.onFocusListener);
Expand All @@ -1132,6 +1136,20 @@ Cleave.prototype = {
}
},

initSwapHiddenInput: function () {
var owner = this, pps = owner.properties;
if (!pps.swapHiddenInput) return;

var inputFormatter = owner.element.cloneNode(true);
owner.element.parentNode.insertBefore(inputFormatter, owner.element);

owner.elementSwapHidden = owner.element;
owner.elementSwapHidden.type = 'hidden';

owner.element = inputFormatter;
owner.element.id = '';
},

initNumeralFormatter: function () {
var owner = this, pps = owner.properties;

Expand Down Expand Up @@ -1423,6 +1441,8 @@ Cleave.prototype = {
}

owner.element.value = newValue;
if (pps.swapHiddenInput) owner.elementSwapHidden.value = owner.getRawValue();

Util.setSelection(owner.element, endPos, pps.document, false);
owner.callOnValueChanged();
},
Expand Down
2 changes: 1 addition & 1 deletion dist/cleave-esm.min.js

Large diffs are not rendered by default.

2 changes: 2 additions & 0 deletions dist/cleave-react-node.js
Original file line number Diff line number Diff line change
Expand Up @@ -2839,6 +2839,8 @@ return /******/ (function(modules) { // webpackBootstrap
target.tailPrefix = !!opts.tailPrefix;

// others
target.swapHiddenInput = !!opts.swapHiddenInput;

target.numericOnly = target.creditCard || target.date || !!opts.numericOnly;

target.uppercase = !!opts.uppercase;
Expand Down
4 changes: 2 additions & 2 deletions dist/cleave-react-node.min.js

Large diffs are not rendered by default.

2 changes: 2 additions & 0 deletions dist/cleave-react.js
Original file line number Diff line number Diff line change
Expand Up @@ -3033,6 +3033,8 @@ return /******/ (function(modules) { // webpackBootstrap
target.tailPrefix = !!opts.tailPrefix;

// others
target.swapHiddenInput = !!opts.swapHiddenInput;

target.numericOnly = target.creditCard || target.date || !!opts.numericOnly;

target.uppercase = !!opts.uppercase;
Expand Down
4 changes: 2 additions & 2 deletions dist/cleave-react.min.js

Large diffs are not rendered by default.

20 changes: 20 additions & 0 deletions dist/cleave.js
Original file line number Diff line number Diff line change
Expand Up @@ -120,6 +120,8 @@ return /******/ (function(modules) { // webpackBootstrap
owner.onCutListener = owner.onCut.bind(owner);
owner.onCopyListener = owner.onCopy.bind(owner);

owner.initSwapHiddenInput();

owner.element.addEventListener('input', owner.onChangeListener);
owner.element.addEventListener('keydown', owner.onKeyDownListener);
owner.element.addEventListener('focus', owner.onFocusListener);
Expand All @@ -139,6 +141,20 @@ return /******/ (function(modules) { // webpackBootstrap
}
},

initSwapHiddenInput: function () {
var owner = this, pps = owner.properties;
if (!pps.swapHiddenInput) return;

var inputFormatter = owner.element.cloneNode(true);
owner.element.parentNode.insertBefore(inputFormatter, owner.element);

owner.elementSwapHidden = owner.element;
owner.elementSwapHidden.type = 'hidden';

owner.element = inputFormatter;
owner.element.id = '';
},

initNumeralFormatter: function () {
var owner = this, pps = owner.properties;

Expand Down Expand Up @@ -430,6 +446,8 @@ return /******/ (function(modules) { // webpackBootstrap
}

owner.element.value = newValue;
if (pps.swapHiddenInput) owner.elementSwapHidden.value = owner.getRawValue();

Util.setSelection(owner.element, endPos, pps.document, false);
owner.callOnValueChanged();
},
Expand Down Expand Up @@ -1592,6 +1610,8 @@ return /******/ (function(modules) { // webpackBootstrap
target.tailPrefix = !!opts.tailPrefix;

// others
target.swapHiddenInput = !!opts.swapHiddenInput;

target.numericOnly = target.creditCard || target.date || !!opts.numericOnly;

target.uppercase = !!opts.uppercase;
Expand Down
4 changes: 2 additions & 2 deletions dist/cleave.min.js

Large diffs are not rendered by default.

9 changes: 9 additions & 0 deletions doc/options.md
Original file line number Diff line number Diff line change
Expand Up @@ -38,6 +38,7 @@
- [numericOnly](#numericonly)
- [uppercase](#uppercase)
- [lowercase](#lowercase)
- [swapHiddenInput](#swaphiddeninput)
- [onValueChanged](#onvaluechanged)

## Credit card numbers
Expand Down Expand Up @@ -569,6 +570,14 @@ A `Boolean` value indicates if it converts value to lowercase letters.

**Default value**: `false`

### `swaphiddeninput`

A `Boolean` value indicates if it swaps the input field to a hidden field.

This way, formatting only happens on the cloned (visible) UI input, the value of hidden field will be updated as raw value without formatting.

**Default value**: `false`

### `onValueChanged`

A callback `Function`. Triggered after value changes.
Expand Down

0 comments on commit c6e850b

Please sign in to comment.