Skip to content

Commit

Permalink
fix(keyboard):don't setKeyboardShow on date/time inputs
Browse files Browse the repository at this point in the history
Closes #1638.
  • Loading branch information
tlancina committed Jun 18, 2014
1 parent 9ff1b96 commit ad08b34
Show file tree
Hide file tree
Showing 3 changed files with 38 additions and 1 deletion.
2 changes: 1 addition & 1 deletion js/utils/keyboard.js
Expand Up @@ -104,7 +104,7 @@ function keyboardNativeShow(e) {
}

function keyboardBrowserFocusIn(e) {
if( !e.target || !ionic.tap.isTextInput(e.target) || !keyboardIsWithinScroll(e.target) ) return;
if( !e.target || !ionic.tap.isTextInput(e.target) || ionic.tap.isDateInput(e.target) || !keyboardIsWithinScroll(e.target) ) return;

document.addEventListener('keydown', keyboardOnKeyDown, false);

Expand Down
5 changes: 5 additions & 0 deletions js/utils/tap.js
Expand Up @@ -166,6 +166,11 @@ ionic.tap = {
(ele.tagName == 'INPUT' && !(/^(radio|checkbox|range|file|submit|reset)$/i).test(ele.type)) );
},

isDateInput: function(ele) {
return !!ele &&
(ele.tagName == 'INPUT' && (/^(date|time|datetime-local|month|week)$/i).test(ele.type));
},

isLabelWithTextInput: function(ele) {
var container = tapContainingElement(ele, false);

Expand Down
32 changes: 32 additions & 0 deletions test/unit/utils/tap.unit.js
Expand Up @@ -1162,6 +1162,38 @@ describe('Ionic Tap', function() {
expect( ionic.tap.isTextInput(ele) ).toEqual(false);
});

it('Should isDateInput', function() {
expect( ionic.tap.isDateInput(null) ).toEqual(false);

ele = document.createElement('input');

ele.type = 'date';
expect( ionic.tap.isDateInput(ele) ).toEqual(true);

ele.type = 'datetime-local';
expect( ionic.tap.isDateInput(ele) ).toEqual(true);

ele.type = 'month';
expect( ionic.tap.isDateInput(ele) ).toEqual(true);

ele.type = 'week';
expect( ionic.tap.isDateInput(ele) ).toEqual(true);

ele.type = 'time';
expect( ionic.tap.isDateInput(ele) ).toEqual(true);

ele.type = 'checkbox';
expect( ionic.tap.isDateInput(ele) ).toEqual(false);

ele.type = '';
expect( ionic.tap.isDateInput(ele) ).toEqual(false);

ele.type = 'text';
expect( ionic.tap.isDateInput(ele) ).toEqual(false);


});

it('Should isLabelWithTextInput', function() {
var label = document.createElement('label');
expect( ionic.tap.isLabelWithTextInput(label) ).toEqual(false);
Expand Down

0 comments on commit ad08b34

Please sign in to comment.