Browse Source

Modal: Adds attach events method and focus/blur on field on show/hide, fixes #124

Former-commit-id: ce500ea957
Former-commit-id: d80529016f
pull/258/head
jlukic 11 years ago
parent
commit
23d57314b4
1 changed files with 45 additions and 2 deletions
  1. 47
      src/modules/modal.js

47
src/modules/modal.js

@ -48,6 +48,8 @@ $.fn.modal = function(parameters) {
$context = $(settings.context), $context = $(settings.context),
$otherModals = $allModules.not($module), $otherModals = $allModules.not($module),
$close = $module.find(selector.close), $close = $module.find(selector.close),
$focusedElement,
$dimmer, $dimmer,
element = this, element = this,
@ -99,6 +101,26 @@ $.fn.modal = function(parameters) {
module.set.position(); module.set.position();
}, },
attachEvents: function(selector, event) {
var
$toggle = $(selector)
;
event = $.isFunction(module[event])
? module[event]
: module.toggle
;
if($toggle.size() > 0) {
module.debug('Attaching modal events to element', selector, event);
$toggle
.off(eventNamespace)
.on('click' + eventNamespace, event)
;
}
else {
module.error(error.notFound);
}
},
event: { event: {
close: function() { close: function() {
module.verbose('Close button pressed'); module.verbose('Close button pressed');
@ -144,13 +166,18 @@ $.fn.modal = function(parameters) {
$module $module
.transition(settings.transition + ' in', settings.duration, function() { .transition(settings.transition + ' in', settings.duration, function() {
module.set.active(); module.set.active();
module.save.focus();
module.set.type(); module.set.type();
}) })
; ;
} }
else { else {
$module $module
.fadeIn(settings.duration, settings.easing, module.set.active)
.fadeIn(settings.duration, settings.easing, function() {
module.set.active();
module.save.focus();
module.set.type();
})
; ;
} }
module.debug('Triggering dimmer'); module.debug('Triggering dimmer');
@ -176,12 +203,16 @@ $.fn.modal = function(parameters) {
$module $module
.transition(settings.transition + ' out', settings.duration, function() { .transition(settings.transition + ' out', settings.duration, function() {
module.remove.active(); module.remove.active();
module.restore.focus();
}) })
; ;
} }
else { else {
$module $module
.fadeOut(settings.duration, settings.easing, module.remove.active)
.fadeOut(settings.duration, settings.easing, function() {
module.remove.active();
module.restore.focus();
})
; ;
} }
$.proxy(settings.onHide, element)(); $.proxy(settings.onHide, element)();
@ -203,6 +234,18 @@ $.fn.modal = function(parameters) {
} }
}, },
save: {
focus: function() {
$focusedElement = $(document.activeElement).blur();
}
},
restore: {
focus: function() {
$focusedElement.focus();
}
},
remove: { remove: {
active: function() { active: function() {
$module.removeClass(className.active); $module.removeClass(className.active);

Loading…
Cancel
Save