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