implement alertify without alertify

pull/1/head
ansuz 8 years ago
parent a302ee5d25
commit 32e8c8ef4b

@ -86,12 +86,12 @@ define([
return input; return input;
}; };
dialog.okButton = function () { dialog.okButton = function (content) {
return h('button.ok', { tabindex: '2', }, Messages.okButton); return h('button.ok', { tabindex: '2', }, content || Messages.okButton);
}; };
dialog.cancelButton = function () { dialog.cancelButton = function (content) {
return h('button.cancel', { tabindex: '1'}, Messages.cancelButton); return h('button.cancel', { tabindex: '1'}, content || Messages.cancelButton);
}; };
dialog.message = function (text) { dialog.message = function (text) {
@ -99,11 +99,11 @@ define([
}; };
dialog.textInput = function (opt) { dialog.textInput = function (opt) {
return h('input', opt || { var attrs = merge({
placeholder: '',
type: 'text', type: 'text',
'class': 'cp-text-input', 'class': 'cp-text-input',
}); }, opt);
return h('input', attrs);
}; };
dialog.nav = function (content) { dialog.nav = function (content) {
@ -236,92 +236,102 @@ define([
document.body.appendChild(frame); document.body.appendChild(frame);
setTimeout(function () { setTimeout(function () {
$ok.focus(); $ok.focus();
if (typeof(UI.notify) === 'function') { UI.notify();
UI.notify();
}
}); });
}; };
UI.prompt = function (msg, def, cb, opt, force) { UI.prompt = function (msg, def, cb, opt, force) {
opt = opt || {};
cb = cb || function () {}; cb = cb || function () {};
if (force !== true) { msg = Util.fixHTML(msg); } opt = opt || {};
var input = dialog.textInput();
input.value = typeof(def) === 'string'? def: '';
var message;
if (typeof(msg) === 'string') {
if (!force) { msg = Util.fixHTML(msg); }
message = dialog.message();
message.innerHTML = msg;
} else {
message = dialog.message(msg);
}
var keyHandler = listenForKeys(function () { // yes var ok = dialog.okButton(opt.ok);
findOKButton().click(); var cancel = dialog.cancelButton(opt.cancel);
var frame = dialog.frame([
message,
input,
dialog.nav([ cancel, ok, ]),
]);
var listener;
var close = Util.once(function () {
$(frame).fadeOut(150, function () { $(this).remove(); });
stopListening(listener);
});
var $ok = $(ok).click(function (ev) { cb(input.value, ev); });
var $cancel = $(cancel).click(function (ev) { cb(null, ev); });
listener = listenForKeys(function () { // yes
close(); $ok.click();
}, function () { // no }, function () { // no
findCancelButton().click(); close(); $cancel.click();
}); });
// Make sure we don't call both the "yes" and "no" handlers if we use "findOKButton().click()" document.body.appendChild(frame);
// in the callback setTimeout(function () {
var isClicked = false; input.select().focus();
Alertify
.defaultValue(def || '')
.okBtn(opt.ok || Messages.okButton || 'OK')
.cancelBtn(opt.cancel || Messages.cancelButton || 'Cancel')
.prompt(msg, function (val, ev) {
if (isClicked) { return; }
isClicked = true;
cb(val, ev);
stopListening(keyHandler);
}, function (ev) {
if (isClicked) { return; }
isClicked = true;
cb(null, ev);
stopListening(keyHandler);
});
if (typeof(UI.notify) === 'function') {
UI.notify(); UI.notify();
} });
}; };
UI.confirm = function (msg, cb, opt, force, styleCB) { UI.confirm = function (msg, cb, opt, force, styleCB) {
opt = opt || {};
cb = cb || function () {}; cb = cb || function () {};
if (force !== true) { msg = Util.fixHTML(msg); } opt = opt || {};
var keyHandler = listenForKeys(function () { var message;
findOKButton().click(); if (typeof(msg) === 'string') {
}, function () { if (!force) { msg = Util.fixHTML(msg); }
findCancelButton().click(); message = dialog.message();
message.innerHTML = msg;
} else {
message = dialog.message(msg);
}
var ok = dialog.okButton(opt.ok);
var cancel = dialog.cancelButton(opt.cancel);
var frame = dialog.frame([
message,
dialog.nav(opt.reverseOrder?
[ok, cancel]: [cancel, ok]),
]);
var listener;
var close = Util.once(function () {
$(frame).fadeOut(150, function () { $(this).remove(); });
stopListening(listener);
}); });
// Make sure we don't call both the "yes" and "no" handlers if we use "findOKButton().click()" var $ok = $(ok).click(function (ev) { close(); cb(true, ev); });
// in the callback var $cancel = $(cancel).click(function (ev) { close(); cb(false, ev); });
var isClicked = false;
Alertify
.okBtn(opt.ok || Messages.okButton || 'OK')
.cancelBtn(opt.cancel || Messages.cancelButton || 'Cancel')
.confirm(msg, function () {
if (isClicked) { return; }
isClicked = true;
cb(true);
stopListening(keyHandler);
}, function () {
if (isClicked) { return; }
isClicked = true;
cb(false);
stopListening(keyHandler);
});
window.setTimeout(function () { if (opt.cancelClass) { $cancel.addClass(opt.cancelClass); }
var $ok = findOKButton(); if (opt.okClass) { $ok.addClass(opt.okClass); }
var $cancel = findCancelButton();
if (opt.okClass) { $ok.addClass(opt.okClass); } listener = listenForKeys(function () {
if (opt.cancelClass) { $cancel.addClass(opt.cancelClass); } $ok.click();
if (opt.reverseOrder) { }, function () {
$ok.insertBefore($ok.prev()); $cancel.click();
} });
document.body.appendChild(frame);
setTimeout(function () {
UI.notify();
if (typeof(styleCB) === 'function') { if (typeof(styleCB) === 'function') {
styleCB($ok.closest('.dialog')); styleCB($ok.closest('.dialog'));
} }
}, 0); });
if (typeof(UI.notify) === 'function') {
UI.notify();
}
}; };
UI.log = function (msg) { UI.log = function (msg) {

Loading…
Cancel
Save