mirror of
https://github.com/ionic-team/ionic-framework.git
synced 2026-03-13 10:22:08 +08:00
Better focus delay for modals
This commit is contained in:
1
dist/css/ionic.css
vendored
1
dist/css/ionic.css
vendored
@@ -1,3 +1,4 @@
|
||||
@charset "UTF-8";
|
||||
/*!
|
||||
* Copyright 2014 Drifty Co.
|
||||
* http://drifty.com/
|
||||
|
||||
2
dist/css/ionic.min.css
vendored
2
dist/css/ionic.min.css
vendored
@@ -1,4 +1,4 @@
|
||||
/*!
|
||||
@charset "UTF-8";/*!
|
||||
* Copyright 2014 Drifty Co.
|
||||
* http://drifty.com/
|
||||
*
|
||||
|
||||
2
dist/js/ionic-angular.min.js
vendored
2
dist/js/ionic-angular.min.js
vendored
File diff suppressed because one or more lines are too long
21
dist/js/ionic.js
vendored
21
dist/js/ionic.js
vendored
@@ -4951,7 +4951,8 @@ ionic.views.Scroll = ionic.views.View.inherit({
|
||||
initialize: function(opts) {
|
||||
opts = ionic.extend({
|
||||
focusFirstInput: false,
|
||||
unfocusOnHide: true
|
||||
unfocusOnHide: true,
|
||||
focusFirstDelay: 600
|
||||
}, opts);
|
||||
|
||||
ionic.extend(this, opts);
|
||||
@@ -4959,11 +4960,16 @@ ionic.views.Scroll = ionic.views.View.inherit({
|
||||
this.el = opts.el;
|
||||
},
|
||||
show: function() {
|
||||
var self = this;
|
||||
|
||||
this.el.classList.add('active');
|
||||
|
||||
if(this.focusFirstInput) {
|
||||
var input = this.el.querySelector('input, textarea');
|
||||
input && input.focus && input.focus();
|
||||
// Let any animations run first
|
||||
window.setTimeout(function() {
|
||||
var input = self.el.querySelector('input, textarea');
|
||||
input && input.focus && input.focus();
|
||||
}, this.focusFirstDelay);
|
||||
}
|
||||
},
|
||||
hide: function() {
|
||||
@@ -4972,9 +4978,12 @@ ionic.views.Scroll = ionic.views.View.inherit({
|
||||
// Unfocus all elements
|
||||
if(this.unfocusOnHide) {
|
||||
var inputs = this.el.querySelectorAll('input, textarea');
|
||||
for(var i = 0; i < inputs.length; i++) {
|
||||
inputs[i].blur && inputs[i].blur();
|
||||
}
|
||||
// Let any animations run first
|
||||
window.setTimeout(function() {
|
||||
for(var i = 0; i < inputs.length; i++) {
|
||||
inputs[i].blur && inputs[i].blur();
|
||||
}
|
||||
});
|
||||
}
|
||||
}
|
||||
});
|
||||
|
||||
6
dist/js/ionic.min.js
vendored
6
dist/js/ionic.min.js
vendored
File diff suppressed because one or more lines are too long
@@ -81,7 +81,8 @@
|
||||
$ionicModal.fromTemplateUrl('modal.html', function(modal) {
|
||||
$scope.modal = modal;
|
||||
}, {
|
||||
animation: 'slide-in-up'
|
||||
animation: 'slide-in-up',
|
||||
focusFirstInput: true
|
||||
});
|
||||
|
||||
})
|
||||
|
||||
@@ -5,7 +5,8 @@
|
||||
initialize: function(opts) {
|
||||
opts = ionic.extend({
|
||||
focusFirstInput: false,
|
||||
unfocusOnHide: true
|
||||
unfocusOnHide: true,
|
||||
focusFirstDelay: 600
|
||||
}, opts);
|
||||
|
||||
ionic.extend(this, opts);
|
||||
@@ -13,11 +14,16 @@
|
||||
this.el = opts.el;
|
||||
},
|
||||
show: function() {
|
||||
var self = this;
|
||||
|
||||
this.el.classList.add('active');
|
||||
|
||||
if(this.focusFirstInput) {
|
||||
var input = this.el.querySelector('input, textarea');
|
||||
input && input.focus && input.focus();
|
||||
// Let any animations run first
|
||||
window.setTimeout(function() {
|
||||
var input = self.el.querySelector('input, textarea');
|
||||
input && input.focus && input.focus();
|
||||
}, this.focusFirstDelay);
|
||||
}
|
||||
},
|
||||
hide: function() {
|
||||
@@ -26,9 +32,12 @@
|
||||
// Unfocus all elements
|
||||
if(this.unfocusOnHide) {
|
||||
var inputs = this.el.querySelectorAll('input, textarea');
|
||||
for(var i = 0; i < inputs.length; i++) {
|
||||
inputs[i].blur && inputs[i].blur();
|
||||
}
|
||||
// Let any animations run first
|
||||
window.setTimeout(function() {
|
||||
for(var i = 0; i < inputs.length; i++) {
|
||||
inputs[i].blur && inputs[i].blur();
|
||||
}
|
||||
});
|
||||
}
|
||||
}
|
||||
});
|
||||
|
||||
Reference in New Issue
Block a user