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);
|
return ((parameters) ? Object.assign(option, parameters) : option);
|
||||||
}
|
}
|
||||||
|
|
||||||
(options.Icon) ? chrome.browserAction.setIcon(format({"path": path}, parameters)) : null;
|
(options.Icon) ? chrome.action.setIcon(format({"path": path}, parameters)) : null;
|
||||||
(options.BadgeText) ? chrome.browserAction.setBadgeText(format({"text": String(options.text)}, parameters)) : null;
|
(options.BadgeText) ? chrome.action.setBadgeText(format({"text": String(options.text).trim()}, parameters)) : null;
|
||||||
(options.BadgeBackgroundColor) ? chrome.browserAction.setBadgeBackgroundColor(format({"color": color}, parameters)) : null;
|
(options.BadgeBackgroundColor) ? chrome.action.setBadgeBackgroundColor(format({"color": color}, parameters)) : null;
|
||||||
(options.Popup) ? chrome.browserAction.setPopup(format({"popup": popup}, 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