Chromium Code Reviews| Index: ui/webui/resources/js/cr/ui/dialogs.js |
| diff --git a/ui/webui/resources/js/cr/ui/dialogs.js b/ui/webui/resources/js/cr/ui/dialogs.js |
| index 5c9cc8c0684267baa2b98906097e4a310a97a69c..eb37f1d7128c68554e2502efaf3885f8b0f431de 100644 |
| --- a/ui/webui/resources/js/cr/ui/dialogs.js |
| +++ b/ui/webui/resources/js/cr/ui/dialogs.js |
| @@ -35,6 +35,7 @@ cr.define('cr.ui.dialogs', function() { |
| */ |
| BaseDialog.ANIMATE_STABLE_DURATION = 500; |
| + /** @private */ |
| BaseDialog.prototype.initDom_ = function() { |
| var doc = this.document_; |
| this.container_ = doc.createElement('div'); |
| @@ -88,9 +89,13 @@ cr.define('cr.ui.dialogs', function() { |
| this.initialFocusElement_ = this.okButton_; |
| }; |
| + /** @private {Function|undefined} */ |
|
Tyler Breisacher (Chromium)
2015/02/20 23:05:22
It's a little messy to allow both null and undefin
Dan Beam
2015/02/20 23:06:21
Acknowledged.
|
| BaseDialog.prototype.onOk_ = null; |
| + |
| + /** @private {Function|undefined} */ |
| BaseDialog.prototype.onCancel_ = null; |
| + /** @private */ |
| BaseDialog.prototype.onContainerKeyDown_ = function(event) { |
| // Handle Escape. |
| if (event.keyCode == 27 && !this.cancelButton_.disabled) { |
| @@ -102,6 +107,7 @@ cr.define('cr.ui.dialogs', function() { |
| } |
| }; |
| + /** @private */ |
| BaseDialog.prototype.onContainerMouseDown_ = function(event) { |
| if (event.target == this.container_) { |
| var classList = this.frame_.classList; |
| @@ -112,22 +118,26 @@ cr.define('cr.ui.dialogs', function() { |
| } |
| }; |
| + /** @private */ |
| BaseDialog.prototype.onOkClick_ = function(event) { |
| this.hide(); |
| if (this.onOk_) |
| this.onOk_(); |
| }; |
| + /** @private */ |
| BaseDialog.prototype.onCancelClick_ = function(event) { |
| this.hide(); |
| if (this.onCancel_) |
| this.onCancel_(); |
| }; |
| + /** @param {string} label */ |
| BaseDialog.prototype.setOkLabel = function(label) { |
| this.okButton_.textContent = label; |
| }; |
| + /** @param {string} label */ |
| BaseDialog.prototype.setCancelLabel = function(label) { |
| this.cancelButton_.textContent = label; |
| }; |
| @@ -136,16 +146,31 @@ cr.define('cr.ui.dialogs', function() { |
| this.initialFocusElement_ = this.cancelButton_; |
| }; |
| - BaseDialog.prototype.show = function(message, onOk, onCancel, onShow) { |
| - this.showWithTitle(null, message, onOk, onCancel, onShow); |
| + /** |
| + * @param {string} message |
| + * @param {Function=} opt_onOk |
| + * @param {Function=} opt_onCancel |
| + * @param {Function=} opt_onShow |
| + */ |
| + BaseDialog.prototype.show = function( |
| + message, opt_onOk, opt_onCancel, opt_onShow) { |
| + this.showWithTitle('', message, opt_onOk, opt_onCancel, opt_onShow); |
| }; |
| + /** |
| + * @param {string} title |
| + * @param {string} message |
| + * @param {Function=} opt_onOk |
| + * @param {Function=} opt_onCancel |
| + * @param {Function=} opt_onShow |
| + */ |
| BaseDialog.prototype.showHtml = function(title, message, |
| - onOk, onCancel, onShow) { |
| + opt_onOk, opt_onCancel, opt_onShow) { |
| this.text_.innerHTML = message; |
| - this.show_(title, onOk, onCancel, onShow); |
| + this.show_(title, opt_onOk, opt_onCancel, opt_onShow); |
| }; |
| + /** @private */ |
| BaseDialog.prototype.findFocusableElements_ = function(doc) { |
| var elements = Array.prototype.filter.call( |
| doc.querySelectorAll('*'), |
| @@ -166,13 +191,28 @@ cr.define('cr.ui.dialogs', function() { |
| return elements; |
| }; |
| + /** |
| + * @param {string} title |
| + * @param {string} message |
| + * @param {Function=} opt_onOk |
| + * @param {Function=} opt_onCancel |
| + * @param {Function=} opt_onShow |
| + */ |
| BaseDialog.prototype.showWithTitle = function(title, message, |
| - onOk, onCancel, onShow) { |
| + opt_onOk, opt_onCancel, opt_onShow) { |
| this.text_.textContent = message; |
| - this.show_(title, onOk, onCancel, onShow); |
| + this.show_(title, opt_onOk, opt_onCancel, opt_onShow); |
| }; |
| - BaseDialog.prototype.show_ = function(title, onOk, onCancel, onShow) { |
| + /** |
| + * @param {string} title |
| + * @param {Function=} opt_onOk |
| + * @param {Function=} opt_onCancel |
| + * @param {Function=} opt_onShow |
| + * @private |
| + */ |
| + BaseDialog.prototype.show_ = function( |
| + title, opt_onOk, opt_onCancel, opt_onShow) { |
| // Make all outside nodes unfocusable while the dialog is active. |
| this.deactivatedNodes_ = this.findFocusableElements_(this.document_); |
| this.tabIndexes_ = this.deactivatedNodes_.map( |
| @@ -183,8 +223,8 @@ cr.define('cr.ui.dialogs', function() { |
| this.previousActiveElement_ = this.document_.activeElement; |
| this.parentNode_.appendChild(this.container_); |
| - this.onOk_ = onOk; |
| - this.onCancel_ = onCancel; |
| + this.onOk_ = opt_onOk; |
| + this.onCancel_ = opt_onCancel; |
| if (title) { |
| this.title_.textContent = title; |
| @@ -201,15 +241,13 @@ cr.define('cr.ui.dialogs', function() { |
| self.container_.classList.add('shown'); |
| self.initialFocusElement_.focus(); |
| setTimeout(function() { |
| - if (onShow) |
| - onShow(); |
| + if (opt_onShow) |
| + opt_onShow(); |
| }, BaseDialog.ANIMATE_STABLE_DURATION); |
| }, 0); |
| }; |
| - /** |
| - * @param {Function=} opt_onHide |
| - */ |
| + /** @param {Function=} opt_onHide */ |
| BaseDialog.prototype.hide = function(opt_onHide) { |
| // Restore focusability. |
| for (var i = 0; i < this.deactivatedNodes_.length; i++) { |
| @@ -248,14 +286,20 @@ cr.define('cr.ui.dialogs', function() { |
| * @extends {cr.ui.dialogs.BaseDialog} |
| */ |
| function AlertDialog(parentNode) { |
| - BaseDialog.apply(this, [parentNode]); |
| + BaseDialog.call(this, parentNode); |
| this.cancelButton_.style.display = 'none'; |
| } |
| AlertDialog.prototype = {__proto__: BaseDialog.prototype}; |
| - AlertDialog.prototype.show = function(message, onOk, onShow) { |
| - return BaseDialog.prototype.show.apply(this, [message, onOk, onOk, onShow]); |
| + /** |
| + * @param {Function=} opt_onOk |
| + * @param {Function=} opt_onShow |
| + * @override |
| + */ |
| + AlertDialog.prototype.show = function(message, opt_onOk, opt_onShow) { |
| + return BaseDialog.prototype.show.call( |
| + this, message, opt_onOk, opt_onOk, opt_onShow); |
| }; |
| /** |
| @@ -264,7 +308,7 @@ cr.define('cr.ui.dialogs', function() { |
| * @extends {cr.ui.dialogs.BaseDialog} |
| */ |
| function ConfirmDialog(parentNode) { |
| - BaseDialog.apply(this, [parentNode]); |
| + BaseDialog.call(this, parentNode); |
| } |
| ConfirmDialog.prototype = {__proto__: BaseDialog.prototype}; |
| @@ -276,7 +320,7 @@ cr.define('cr.ui.dialogs', function() { |
| * @extends {cr.ui.dialogs.BaseDialog} |
| */ |
| function PromptDialog(parentNode) { |
| - BaseDialog.apply(this, [parentNode]); |
| + BaseDialog.call(this, parentNode); |
| this.input_ = this.document_.createElement('input'); |
| this.input_.setAttribute('type', 'text'); |
| this.input_.addEventListener('focus', this.onInputFocus.bind(this)); |
| @@ -291,6 +335,7 @@ cr.define('cr.ui.dialogs', function() { |
| this.input_.select(); |
| }; |
| + /** @private */ |
| PromptDialog.prototype.onKeyDown_ = function(event) { |
| if (event.keyCode == 13) { // Enter |
| this.onOkClick_(event); |
| @@ -299,21 +344,27 @@ cr.define('cr.ui.dialogs', function() { |
| }; |
| /** |
| + * @param {string} message |
| + * @param {?} defaultValue |
| + * @param {Function=} opt_onOk |
| + * @param {Function=} opt_onCancel |
| + * @param {Function=} opt_onShow |
| * @suppress {checkTypes} |
| * TODO(fukino): remove suppression if there is a better way to avoid warning |
| * about overriding method with different signature. |
| */ |
| - PromptDialog.prototype.show = function(message, defaultValue, onOk, onCancel, |
| - onShow) { |
| + PromptDialog.prototype.show = function( |
| + message, defaultValue, opt_onOk, opt_onCancel, opt_onShow) { |
| this.input_.value = defaultValue || ''; |
| - return BaseDialog.prototype.show.apply(this, [message, onOk, onCancel, |
| - onShow]); |
| + return BaseDialog.prototype.show.call( |
| + this, message, opt_onOk, opt_onCancel, opt_onShow); |
| }; |
| PromptDialog.prototype.getValue = function() { |
| return this.input_.value; |
| }; |
| + /** @private */ |
| PromptDialog.prototype.onOkClick_ = function(event) { |
| this.hide(); |
| if (this.onOk_) |