Skip to content

Commit

Permalink
[ISSUE-281] Fix prefix focus cursor issue (#308)
Browse files Browse the repository at this point in the history
  • Loading branch information
nosir authored Mar 14, 2018
1 parent 3c30c0f commit 59f125d
Show file tree
Hide file tree
Showing 13 changed files with 136 additions and 10 deletions.
2 changes: 1 addition & 1 deletion bower.json
Original file line number Diff line number Diff line change
Expand Up @@ -8,7 +8,7 @@
"form",
"input"
],
"version": "1.1.3",
"version": "1.1.4",
"author": {
"name": "Max Huang",
"email": "[email protected]",
Expand Down
28 changes: 28 additions & 0 deletions dist/cleave-angular.js
Original file line number Diff line number Diff line change
Expand Up @@ -100,11 +100,13 @@ return /******/ (function(modules) { // webpackBootstrap

owner.onChangeListener = owner.onChange.bind(owner);
owner.onKeyDownListener = owner.onKeyDown.bind(owner);
owner.onFocusListener = owner.onFocus.bind(owner);
owner.onCutListener = owner.onCut.bind(owner);
owner.onCopyListener = owner.onCopy.bind(owner);

owner.element.addEventListener('input', owner.onChangeListener);
owner.element.addEventListener('keydown', owner.onKeyDownListener);
owner.element.addEventListener('focus', owner.onFocusListener);
owner.element.addEventListener('cut', owner.onCutListener);
owner.element.addEventListener('copy', owner.onCopyListener);

Expand Down Expand Up @@ -196,6 +198,13 @@ return /******/ (function(modules) { // webpackBootstrap
this.onInput(this.element.value);
},

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

Cleave.Util.fixPrefixCursor(owner.element, pps.prefix, pps.delimiter, pps.delimiters);
},

onCut: function (e) {
this.copyClipboardData(e);
this.onInput('');
Expand Down Expand Up @@ -441,6 +450,7 @@ return /******/ (function(modules) { // webpackBootstrap

owner.element.removeEventListener('input', owner.onChangeListener);
owner.element.removeEventListener('keydown', owner.onKeyDownListener);
owner.element.removeEventListener('focus', owner.onFocusListener);
owner.element.removeEventListener('cut', owner.onCutListener);
owner.element.removeEventListener('copy', owner.onCopyListener);
},
Expand Down Expand Up @@ -1031,6 +1041,24 @@ return /******/ (function(modules) { // webpackBootstrap
return result;
},

// move cursor to the end
// the first time user focuses on an input with prefix
fixPrefixCursor: function (el, prefix, delimiter, delimiters) {
var val = el.value,
appendix = delimiter || (delimiters[0] || ' ');

if (!el.setSelectionRange || !prefix || (prefix.length + appendix.length) < val.length) {
return;
}

var len = val.length * 2;

// set timeout to avoid blink
setTimeout(function () {
el.setSelectionRange(len, len);
}, 1);
},

isAndroid: function () {
return navigator && /android/i.test(navigator.userAgent);
},
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-react-node.js
Original file line number Diff line number Diff line change
Expand Up @@ -286,6 +286,8 @@ return /******/ (function(modules) { // webpackBootstrap
event.target.value = pps.result;

owner.registeredEvents.onFocus(event);

Util.fixPrefixCursor(owner.element, pps.prefix, pps.delimiter, pps.delimiters);
},

onBlur: function onBlur(event) {
Expand Down Expand Up @@ -2284,6 +2286,24 @@ return /******/ (function(modules) { // webpackBootstrap
return result;
},

// move cursor to the end
// the first time user focuses on an input with prefix
fixPrefixCursor: function fixPrefixCursor(el, prefix, delimiter, delimiters) {
var val = el.value,
appendix = delimiter || delimiters[0] || ' ';

if (!el.setSelectionRange || !prefix || prefix.length + appendix.length < val.length) {
return;
}

var len = val.length * 2;

// set timeout to avoid blink
setTimeout(function () {
el.setSelectionRange(len, len);
}, 1);
},

isAndroid: function isAndroid() {
return navigator && /android/i.test(navigator.userAgent);
},
Expand Down
4 changes: 2 additions & 2 deletions dist/cleave-react-node.min.js

Large diffs are not rendered by default.

20 changes: 20 additions & 0 deletions dist/cleave-react.js
Original file line number Diff line number Diff line change
Expand Up @@ -286,6 +286,8 @@ return /******/ (function(modules) { // webpackBootstrap
event.target.value = pps.result;

owner.registeredEvents.onFocus(event);

Util.fixPrefixCursor(owner.element, pps.prefix, pps.delimiter, pps.delimiters);
},

onBlur: function onBlur(event) {
Expand Down Expand Up @@ -2478,6 +2480,24 @@ return /******/ (function(modules) { // webpackBootstrap
return result;
},

// move cursor to the end
// the first time user focuses on an input with prefix
fixPrefixCursor: function fixPrefixCursor(el, prefix, delimiter, delimiters) {
var val = el.value,
appendix = delimiter || delimiters[0] || ' ';

if (!el.setSelectionRange || !prefix || prefix.length + appendix.length < val.length) {
return;
}

var len = val.length * 2;

// set timeout to avoid blink
setTimeout(function () {
el.setSelectionRange(len, len);
}, 1);
},

isAndroid: function isAndroid() {
return navigator && /android/i.test(navigator.userAgent);
},
Expand Down
4 changes: 2 additions & 2 deletions dist/cleave-react.min.js

Large diffs are not rendered by default.

28 changes: 28 additions & 0 deletions dist/cleave.js
Original file line number Diff line number Diff line change
Expand Up @@ -100,11 +100,13 @@ return /******/ (function(modules) { // webpackBootstrap

owner.onChangeListener = owner.onChange.bind(owner);
owner.onKeyDownListener = owner.onKeyDown.bind(owner);
owner.onFocusListener = owner.onFocus.bind(owner);
owner.onCutListener = owner.onCut.bind(owner);
owner.onCopyListener = owner.onCopy.bind(owner);

owner.element.addEventListener('input', owner.onChangeListener);
owner.element.addEventListener('keydown', owner.onKeyDownListener);
owner.element.addEventListener('focus', owner.onFocusListener);
owner.element.addEventListener('cut', owner.onCutListener);
owner.element.addEventListener('copy', owner.onCopyListener);

Expand Down Expand Up @@ -196,6 +198,13 @@ return /******/ (function(modules) { // webpackBootstrap
this.onInput(this.element.value);
},

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

Cleave.Util.fixPrefixCursor(owner.element, pps.prefix, pps.delimiter, pps.delimiters);
},

onCut: function (e) {
this.copyClipboardData(e);
this.onInput('');
Expand Down Expand Up @@ -441,6 +450,7 @@ return /******/ (function(modules) { // webpackBootstrap

owner.element.removeEventListener('input', owner.onChangeListener);
owner.element.removeEventListener('keydown', owner.onKeyDownListener);
owner.element.removeEventListener('focus', owner.onFocusListener);
owner.element.removeEventListener('cut', owner.onCutListener);
owner.element.removeEventListener('copy', owner.onCopyListener);
},
Expand Down Expand Up @@ -1031,6 +1041,24 @@ return /******/ (function(modules) { // webpackBootstrap
return result;
},

// move cursor to the end
// the first time user focuses on an input with prefix
fixPrefixCursor: function (el, prefix, delimiter, delimiters) {
var val = el.value,
appendix = delimiter || (delimiters[0] || ' ');

if (!el.setSelectionRange || !prefix || (prefix.length + appendix.length) < val.length) {
return;
}

var len = val.length * 2;

// set timeout to avoid blink
setTimeout(function () {
el.setSelectionRange(len, len);
}, 1);
},

isAndroid: function () {
return navigator && /android/i.test(navigator.userAgent);
},
Expand Down
Loading

0 comments on commit 59f125d

Please sign in to comment.