fix focus on alerts, prompts, and confirms. call back from alerts

pull/1/head
ansuz 7 years ago
parent a74915ab58
commit a0b3201df3

@ -36,8 +36,9 @@ define([
return $('button.ok').last(); return $('button.ok').last();
}; };
var listenForKeys = UI.listenForKeys = function (yes, no) { var listenForKeys = UI.listenForKeys = function (yes, no, el) {
var handler = function (e) { var handler = function (e) {
e.stopPropagation();
switch (e.which) { switch (e.which) {
case 27: // cancel case 27: // cancel
if (typeof(no) === 'function') { no(e); } if (typeof(no) === 'function') { no(e); }
@ -48,7 +49,7 @@ define([
} }
}; };
$(window).keyup(handler); $(el || window).keydown(handler);
return handler; return handler;
}; };
@ -114,7 +115,9 @@ define([
}; };
dialog.frame = function (content) { dialog.frame = function (content) {
return h('div.alertify', [ return h('div.alertify', {
tabindex: 1,
}, [
h('div.dialog', [ h('div.dialog', [
h('div', content), h('div', content),
]) ])
@ -229,6 +232,7 @@ define([
var close = Util.once(function () { var close = Util.once(function () {
$(frame).fadeOut(150, function () { $(this).remove(); }); $(frame).fadeOut(150, function () { $(this).remove(); });
stopListening(listener); stopListening(listener);
cb();
}); });
listener = listenForKeys(close, close); listener = listenForKeys(close, close);
var $ok = $(ok).click(close); var $ok = $(ok).click(close);
@ -237,7 +241,6 @@ define([
setTimeout(function () { setTimeout(function () {
$ok.focus(); $ok.focus();
UI.notify(); UI.notify();
if (!document.hasFocus()) { window.focus(); }
}); });
}; };
@ -283,7 +286,6 @@ define([
setTimeout(function () { setTimeout(function () {
input.select().focus(); input.select().focus();
UI.notify(); UI.notify();
if (!document.hasFocus()) { window.focus(); }
}); });
}; };
@ -330,10 +332,10 @@ define([
document.body.appendChild(frame); document.body.appendChild(frame);
setTimeout(function () { setTimeout(function () {
UI.notify(); UI.notify();
$(frame).find('.ok').focus();
if (typeof(opt.done) === 'function') { if (typeof(opt.done) === 'function') {
opt.done($ok.closest('.dialog')); opt.done($ok.closest('.dialog'));
} }
if (!document.hasFocus()) { window.focus(); }
}); });
}; };

Loading…
Cancel
Save