mirror of
https://github.com/GoogleChrome/chrome-extensions-samples.git
synced 2026-03-27 13:29:34 +07:00
* Ignores archived samples * Uses eslint/recommended rules * Runs prettier and eslint (including --fix) pre-commit via husky * Adds new npm scripts: 'lint', 'lint:fix' and 'prettier' * Does not lint inline js code * Fix all prettier and eslint errors * Add custom prettier rules * Apply custom prettier rules * Update readme to explain how to setup the repo * addressed comments
48 lines
1.5 KiB
JavaScript
48 lines
1.5 KiB
JavaScript
const page = document.getElementById('buttonDiv');
|
|
const selectedClassName = 'current';
|
|
const presetButtonColors = ['#3aa757', '#e8453c', '#f9bb2d', '#4688f1'];
|
|
|
|
// Reacts to a button click by marking the selected button and saving
|
|
// the selection
|
|
function handleButtonClick(event) {
|
|
// Remove styling from the previously selected color
|
|
const current = event.target.parentElement.querySelector(
|
|
`.${selectedClassName}`
|
|
);
|
|
if (current && current !== event.target) {
|
|
current.classList.remove(selectedClassName);
|
|
}
|
|
|
|
// Mark the button as selected
|
|
const color = event.target.dataset.color;
|
|
event.target.classList.add(selectedClassName);
|
|
chrome.storage.sync.set({ color });
|
|
}
|
|
|
|
// Add a button to the page for each supplied color
|
|
function constructOptions(buttonColors) {
|
|
chrome.storage.sync.get('color', (data) => {
|
|
const currentColor = data.color;
|
|
|
|
// For each color we were provided…
|
|
for (const buttonColor of buttonColors) {
|
|
// …create a button with that color…
|
|
const button = document.createElement('button');
|
|
button.dataset.color = buttonColor;
|
|
button.style.backgroundColor = buttonColor;
|
|
|
|
// …mark the currently selected color…
|
|
if (buttonColor === currentColor) {
|
|
button.classList.add(selectedClassName);
|
|
}
|
|
|
|
// …and register a listener for when that button is clicked
|
|
button.addEventListener('click', handleButtonClick);
|
|
page.appendChild(button);
|
|
}
|
|
});
|
|
}
|
|
|
|
// Initialize the page by constructing the color options
|
|
constructOptions(presetButtonColors);
|