split the popup generation from the extension icon
This commit is contained in:
		
							parent
							
								
									6644a4d267
								
							
						
					
					
						commit
						24ea042d32
					
				
					 2 changed files with 82 additions and 4 deletions
				
			
		|  | @ -14,10 +14,9 @@ class BrowserIcon { | |||
| 			return ((parameters) ? Object.assign(option, parameters) : option); | ||||
| 		} | ||||
| 
 | ||||
| 		(options.Icon) ? chrome.browserAction.setIcon(format({"path": path}, parameters)) : null; | ||||
| 		(options.BadgeText) ? chrome.browserAction.setBadgeText(format({"text": String(options.text)}, parameters)) : null; | ||||
| 		(options.BadgeBackgroundColor) ? chrome.browserAction.setBadgeBackgroundColor(format({"color": color}, parameters)) : null;  | ||||
| 		(options.Popup) ? chrome.browserAction.setPopup(format({"popup": popup}, parameters)) : null; | ||||
| 		(options.Icon) ? chrome.action.setIcon(format({"path": path}, parameters)) : null; | ||||
| 		(options.BadgeText) ? chrome.action.setBadgeText(format({"text": String(options.text).trim()}, parameters)) : null; | ||||
| 		(options.BadgeBackgroundColor) ? chrome.action.setBadgeBackgroundColor(format({"color": color}, parameters)) : null;  | ||||
| 	}; | ||||
| 
 | ||||
| 	/*  | ||||
|  |  | |||
							
								
								
									
										79
									
								
								scripts/GUI/popup.js
									
										
									
									
									
										Normal file
									
								
							
							
						
						
									
										79
									
								
								scripts/GUI/popup.js
									
										
									
									
									
										Normal file
									
								
							|  | @ -0,0 +1,79 @@ | |||
| /*  | ||||
| popup.js | ||||
| Manage extension popups.  | ||||
| */ | ||||
| 
 | ||||
| class Popup { | ||||
| 	options; // The options for the popup
 | ||||
| 	path; // The URL of the popup
 | ||||
| 	enabled = true; // The popup's enabled state
 | ||||
| 
 | ||||
| 	/* Create a new pop-up configuration.  | ||||
| 	 | ||||
| 	@param {Object} options The options for the popup. If string, this is set to the URL; otherwise, this is passed directly as the options.  | ||||
| 	*/ | ||||
| 	constructor (options) { | ||||
| 		// Set the side panel options. 
 | ||||
| 		this.options = ((typeof options).includes(`str`)) ? { "popup": options } : options; | ||||
| 	 | ||||
| 		// Set the other options not to be directly passed to the Chrome API. 
 | ||||
| 		[`hidden`, `enabled`].forEach((key) => { | ||||
| 			this[key] = (Object.keys(this.options).length > 0 ? (this.options[key] != null) : false) ? this.options[key] : true; | ||||
| 			delete this.options[key]; | ||||
| 		}) | ||||
| 
 | ||||
| 		// Set the popup path.
 | ||||
| 		chrome.browserAction.setPopup(this.options); | ||||
| 
 | ||||
| 		// Set the popup state.
 | ||||
| 		this[(this.enabled) ? `enable` : `disable`](); | ||||
| 		(!this.hidden && this.hidden != null) ? this.show() : false; | ||||
| 
 | ||||
| 		// Remove untrackable variables. 
 | ||||
| 		delete this.hidden; | ||||
| 	} | ||||
| 
 | ||||
| 	/*  | ||||
| 	Open the side panel.  | ||||
| 	*/ | ||||
| 	show () { | ||||
| 		if (this.enabled) { | ||||
| 			// Set the options if in case it was previously overwritten.  
 | ||||
| 			chrome.browserAction.setPopup(this.options); | ||||
| 	 | ||||
| 			// Open the pop-up. 
 | ||||
| 			chrome.action.openPopup(); | ||||
| 		}; | ||||
| 	}; | ||||
| 
 | ||||
| 	/* | ||||
| 	Disable the popup.  | ||||
| 	*/ | ||||
| 	disable () { | ||||
| 		chrome.action.disable(); | ||||
| 		this.enabled = false; | ||||
| 	} | ||||
| 
 | ||||
| 	/* | ||||
| 	Enable the popup.  | ||||
| 	*/ | ||||
| 	enable () { | ||||
| 		chrome.action.enable(); | ||||
| 		this.enabled = true; | ||||
| 	} | ||||
| 
 | ||||
| 	/* | ||||
| 	Set the options.  | ||||
| 	 | ||||
| 	@param {object} options the options | ||||
| 	*/ | ||||
| 	setOptions(options) { | ||||
| 		// Merge the options. 
 | ||||
| 		options = Object.assign(this.options, options); | ||||
| 
 | ||||
| 		// Set the options. 
 | ||||
| 		chrome.browserAction.setPopup(options); | ||||
| 	} | ||||
| } | ||||
| 
 | ||||
| export {Popup as default} | ||||
		Loading…
	
	Add table
		Add a link
		
	
		Reference in a new issue