Share Gaia assets and adapters, keep private profiles and development documents local, and update both public READMEs.
15 lines
No EOL
13 KiB
JavaScript
15 lines
No EOL
13 KiB
JavaScript
|
|
define('modules/dialog_manager',['require','modules/panel_cache','shared/lazy_loader'],function(require){'use strict';var PanelCache=require('modules/panel_cache');var LazyLoader=require('shared/lazy_loader');var DialogManager=function(){this.OVERLAY_SELECTOR='.settings-dialog-overlay';this._overlayDOM=document.querySelector(this.OVERLAY_SELECTOR);};DialogManager.prototype={_loadPanel:function dm__loadPanel(panelId){var promise=new Promise(function(resolve,reject){var panelElement=document.getElementById(panelId);if(panelElement.dataset.rendered){resolve();return;}
|
|
panelElement.dataset.rendered=true;if(panelElement.dataset.requireSubPanels){var selector='section[id^="'+panelElement.id+'-"]';var subPanels=document.querySelectorAll(selector);for(var i=0,il=subPanels.length;i<il;i++){LazyLoader.load([subPanels[i]]);}
|
|
LazyLoader.load([panelElement],resolve);}else{LazyLoader.load([panelElement],resolve);}});return promise;},_getPanel:function dm__getPanel(panelId){var promise=new Promise(function(resolve){PanelCache.get(panelId,function(panel){resolve(panel);});});return promise;},_showOverlay:function dm__showOverlay(show){this._overlayDOM.hidden=!show;},_transit:function dm__transit(method,dialog,options){var promise=new Promise(function(resolve){var panel=dialog.panel;panel.addEventListener('transitionend',function paintWait(evt){if((method==='close'||method==='open')&&evt.propertyName==='visibility'){if(method==='close'){panel.hidden=true;}
|
|
panel.removeEventListener('transitionend',paintWait);resolve();}});if(method==='open'){panel.hidden=false;}
|
|
setTimeout(function(){if(method==='open'){panel.classList.add('current');}else{panel.classList.remove('current');}},150);});return promise;},_open:function dm__open(dialog,options){var self=this;var foundPanel;return Promise.resolve().then(function(){return self._loadPanel(dialog.panel.id);}).then(function(){return self._getPanel(dialog.panel.id);}).then(function(panel){foundPanel=panel;return foundPanel.beforeShow(dialog.panel,options);}).then(function(){dialog.init();dialog.initUI();dialog.bindEvents();if(dialog.TRANSITION_CLASS==='zoom-in-80'){self._showOverlay(true);}
|
|
return self._transit('open',dialog,options);}).then(function(){return foundPanel.show(dialog.panel,options);});},_close:function dm__close(dialog,options){var self=this;var foundPanel;var cachedResult;return Promise.resolve().then(function(){return self._getPanel(dialog.panel.id);}).then(function(panel){foundPanel=panel;var promise;if(foundPanel.onSubmit&&options._type==='submit'){promise=foundPanel.onSubmit();}else if(foundPanel.onCancel&&options._type==='cancel'){promise=foundPanel.onCancel();}else{promise=Promise.resolve();}
|
|
return promise;}).then(function(result){cachedResult=result;return foundPanel.beforeHide();}).then(function(){return self._transit('close',dialog,options);}).then(function(){return foundPanel.hide();}).then(function(){var result;if(dialog.DIALOG_CLASS==='prompt-dialog'){result=dialog.getResult();}else if(cachedResult){result=cachedResult;}
|
|
dialog.cleanup();if(dialog.TRANSITION_CLASS==='zoom-in-80'){self._showOverlay(false);}
|
|
return result;});},_navigate:function dm__navigate(method,dialog,options){method=(method==='open')?'_open':'_close';return this[method](dialog,options);},open:function dm_open(dialog,options){return this._navigate('open',dialog,options);},close:function dm_close(dialog,type,options){options._type=type;return this._navigate('close',dialog,options);}};var dialogManager=new DialogManager();return dialogManager;});define('modules/dialog/base_dialog',['require'],function(require){'use strict';var BaseDialog=function(panelDOM,options){this.panel=panelDOM;this._options=options||{};};BaseDialog.prototype.DIALOG_CLASS='dialog';BaseDialog.prototype.TRANSITION_CLASS='fade';BaseDialog.prototype.SUBMIT_BUTTON_SELECTOR='[type="submit"]';BaseDialog.prototype.CANCEL_BUTTON_SELECTOR='[type="reset"]';BaseDialog.prototype.MESSAGE_SELECTOR='.settings-dialog-message';BaseDialog.prototype.TITLE_SELECTOR='.settings-dialog-title';BaseDialog.prototype.init=function bd_init(){this.TRANSITION_CLASS=this._options.transition||this.TRANSITION_CLASS;this.panel.classList.add(this.DIALOG_CLASS);this.panel.classList.add(this.TRANSITION_CLASS);};BaseDialog.prototype.initUI=function bd_initUI(){var message=this._options.message;var title=this._options.title;var submitButton=this._options.submitButton;var cancelButton=this._options.cancelButton;this._updateMessage(message);this._updateTitle(title);this._updateSubmitButton(submitButton);this._updateCancelButton(cancelButton);};BaseDialog.prototype.bindEvents=function bd_bindEvent(){var self=this;this.getSubmitButton().onclick=function(){self._options.onWrapSubmit();};this.getCancelButton().onclick=function(){self._options.onWrapCancel();};};BaseDialog.prototype._updateMessage=function bd__updateMessage(message){var messageDOM=this.panel.querySelector(this.MESSAGE_SELECTOR);if(messageDOM&&message){message=this._getWrapL10nObject(message);document.l10n.setAttributes(messageDOM,message.id,message.args);}};BaseDialog.prototype._updateTitle=function bd__updateTitle(title){var titleDOM=this.panel.querySelector(this.TITLE_SELECTOR);if(titleDOM&&title){title=this._getWrapL10nObject(title);document.l10n.setAttributes(titleDOM,title.id,title.args);}};BaseDialog.prototype._updateSubmitButton=function bd__update(options){var buttonDOM=this.getSubmitButton();if(buttonDOM&&options){options=this._getWrapL10nObject(options);document.l10n.setAttributes(buttonDOM,options.id,options.args);buttonDOM.className=options.style||'recommend';}};BaseDialog.prototype._updateCancelButton=function bd__updateText(options){var buttonDOM=this.getCancelButton();if(buttonDOM&&options){options=this._getWrapL10nObject(options);document.l10n.setAttributes(buttonDOM,options.id,options.args);buttonDOM.className=options.style||'';}};BaseDialog.prototype._getWrapL10nObject=function bd__getWrapL10nObject(input){if(typeof input==='string'){return{id:input,args:null};}else if(typeof input==='object'){if(typeof input.id==='undefined'){throw new Error('You forgot to put l10nId - '+
|
|
JSON.stringify(input));}else{return{id:input.id,args:input.args||null,style:input.style};}}else{throw new Error('You are using the wrong L10nObject, '+'please check its format again');}};BaseDialog.prototype.getDOM=function bd_getDOM(){return this.panel;};BaseDialog.prototype.getSubmitButton=function bd_getSubmitButton(){return this.panel.querySelector(this.SUBMIT_BUTTON_SELECTOR);};BaseDialog.prototype.getCancelButton=function bd_getCancelButton(){return this.panel.querySelector(this.CANCEL_BUTTON_SELECTOR);};BaseDialog.prototype.cleanup=function bd_cleanup(){if(this.DIALOG_CLASS!=='panel-dialog'){this._updateTitle('settings-'+this.DIALOG_CLASS+'-header');this._updateSubmitButton('ok');this._updateCancelButton('cancel');}
|
|
this.panel.classList.remove(this.DIALOG_CLASS);this.panel.classList.remove(this.TRANSITION_CLASS);};return BaseDialog;});define('modules/dialog/panel_dialog',['require','modules/dialog/base_dialog'],function(require){'use strict';var BaseDialog=require('modules/dialog/base_dialog');var PanelDialog=function(panelDOM,options){BaseDialog.call(this,panelDOM,options);};PanelDialog.prototype=Object.create(BaseDialog.prototype);PanelDialog.prototype.constructor=PanelDialog;PanelDialog.prototype.DIALOG_CLASS='panel-dialog';PanelDialog.prototype.TRANSITION_CLASS='fade';return function ctor_PanelDialog(panelDOM,options){return new PanelDialog(panelDOM,options);};});define('modules/dialog/alert_dialog',['require','modules/dialog/base_dialog'],function(require){'use strict';var BaseDialog=require('modules/dialog/base_dialog');var AlertDialog=function(panelDOM,options){BaseDialog.call(this,panelDOM,options);};AlertDialog.prototype=Object.create(BaseDialog.prototype);AlertDialog.prototype.constructor=AlertDialog;AlertDialog.prototype.DIALOG_CLASS='alert-dialog';AlertDialog.prototype.TRANSITION_CLASS='fade';AlertDialog.prototype.bindEvents=function(){var self=this;this.getSubmitButton().onclick=function(){self._options.onWrapSubmit();};};return function ctor_alertDialog(panelDOM,options){return new AlertDialog(panelDOM,options);};});define('modules/dialog/confirm_dialog',['require','modules/dialog/base_dialog'],function(require){'use strict';var BaseDialog=require('modules/dialog/base_dialog');var ConfirmDialog=function(panelDOM,options){BaseDialog.call(this,panelDOM,options);};ConfirmDialog.prototype=Object.create(BaseDialog.prototype);ConfirmDialog.prototype.constructor=ConfirmDialog;ConfirmDialog.prototype.DIALOG_CLASS='confirm-dialog';ConfirmDialog.prototype.TRANSITION_CLASS='fade';ConfirmDialog.prototype.bindEvents=function(){var self=this;this.getSubmitButton().onclick=function(){self._options.onWrapSubmit();};this.getCancelButton().onclick=function(){self._options.onWrapCancel();};};return function ctor_confirmDialog(panelDOM,options){return new ConfirmDialog(panelDOM,options);};});define('modules/dialog/prompt_dialog',['require','modules/dialog/base_dialog'],function(require){'use strict';var BaseDialog=require('modules/dialog/base_dialog');var PromptDialog=function(panelDOM,options){BaseDialog.call(this,panelDOM,options);};PromptDialog.prototype=Object.create(BaseDialog.prototype);PromptDialog.prototype.constructor=PromptDialog;PromptDialog.prototype.DIALOG_CLASS='prompt-dialog';PromptDialog.prototype.TRANSITION_CLASS='fade';PromptDialog.prototype.INPUT_SELECTOR='.settings-dialog-input';PromptDialog.prototype.bindEvents=function(){var self=this;this.getSubmitButton().onclick=function(){self._options.onWrapSubmit();};this.getCancelButton().onclick=function(){self._options.onWrapCancel();};};PromptDialog.prototype.initUI=function(){BaseDialog.prototype.initUI.call(this);this.getInput().value=this._options.defaultValue||'';};PromptDialog.prototype.getInput=function(){return this.panel.querySelector(this.INPUT_SELECTOR);};PromptDialog.prototype.getResult=function(){return this.getInput().value;};return function ctor_promptDialog(panelDOM,options){return new PromptDialog(panelDOM,options);};});define('modules/dialog_service',['require','settings','modules/defer','modules/dialog_manager','modules/dialog/panel_dialog','modules/dialog/alert_dialog','modules/dialog/confirm_dialog','modules/dialog/prompt_dialog'],function(require){'use strict';var Settings=require('settings');var Defer=require('modules/defer');var DialogManager=require('modules/dialog_manager');var PanelDialog=require('modules/dialog/panel_dialog');var AlertDialog=require('modules/dialog/alert_dialog');var ConfirmDialog=require('modules/dialog/confirm_dialog');var PromptDialog=require('modules/dialog/prompt_dialog');var DialogService=function(){this._navigating=false;this._pendingRequests=[];this._settingsAlertDialogId='settings-alert-dialog';this._settingsBaseDialogId='settings-base-dialog';this._settingsConfirmDialogId='settings-confirm-dialog';this._settingsPromptDialogId='settings-prompt-dialog';};DialogService.prototype={alert:function(message,userOptions){var options=userOptions||{};return this.show(this._settingsAlertDialogId,{type:'alert',message:message,title:options.title,submitButton:options.submitButton});},confirm:function(message,userOptions){var options=userOptions||{};return this.show(this._settingsConfirmDialogId,{type:'confirm',message:message,title:options.title,submitButton:options.submitButton,cancelButton:options.cancelButton});},prompt:function(message,userOptions){var options=userOptions||{};return this.show(this._settingsPromptDialogId,{type:'prompt',message:message,title:options.title,defaultValue:options.defaultValue,submitButton:options.submitButton,cancelButton:options.cancelButton});},show:function dm_show(panelId,userOptions,_pendingDefer){var self=this;var defer;var dialog;var dialogDOM=document.getElementById(panelId);var currentPanel=Settings.currentPanel;var options=userOptions||{};if(_pendingDefer){defer=_pendingDefer;}else{defer=Defer();}
|
|
if(this._navigating){this._pendingRequests.push({defer:defer,panelId:panelId,userOptions:userOptions});}else{if('#'+panelId===currentPanel){defer.reject('You are showing the same panel #'+panelId);}else{options.onWrapSubmit=function(){DialogManager.close(dialog,'submit',options).then(function(result){defer.resolve({type:'submit',value:result});self._navigating=false;self._execPendingRequest();});};options.onWrapCancel=function(){DialogManager.close(dialog,'cancel',options).then(function(result){defer.resolve({type:'cancel',value:result});self._navigating=false;self._execPendingRequest();});};switch(options.type){case'alert':dialog=AlertDialog(dialogDOM,options);break;case'confirm':dialog=ConfirmDialog(dialogDOM,options);break;case'prompt':dialog=PromptDialog(dialogDOM,options);break;default:dialog=PanelDialog(dialogDOM,options);break;}
|
|
this._navigating=true;DialogManager.open(dialog,options);}}
|
|
return defer.promise;},_execPendingRequest:function(){var request=this._pendingRequests.pop();if(request){this.show(request.panelId,request.userOptions,request.defer);}}};var dialogService=new DialogService();return dialogService;}); |