*/
var setUpTrigger = function(modalPromise, triggerElement) {
if (typeof triggerElement != 'undefined') {
+ // The element that actually shows the modal.
+ var actualTriggerElement = null;
if (Array.isArray(triggerElement)) {
var selector = triggerElement[1];
triggerElement = triggerElement[0];
CustomEvents.define(triggerElement, [CustomEvents.events.activate]);
triggerElement.on(CustomEvents.events.activate, selector, function(e, data) {
+ actualTriggerElement = e.currentTarget;
modalPromise.then(function(modal) {
modal.show();
} else {
CustomEvents.define(triggerElement, [CustomEvents.events.activate]);
triggerElement.on(CustomEvents.events.activate, function(e, data) {
+ actualTriggerElement = e.currentTarget;
modalPromise.then(function(modal) {
modal.show();
modalPromise.then(function(modal) {
modal.getRoot().on(ModalEvents.hidden, function() {
- triggerElement.focus();
+ // Focus on the trigger element that actually launched the modal.
+ if (actualTriggerElement !== null) {
+ actualTriggerElement.focus();
+ }
});
return modal;