47 lines
1.3 KiB
JavaScript
47 lines
1.3 KiB
JavaScript
export function setButtonTooltip(button, text) {
|
|
if (button instanceof HTMLElement) {
|
|
button.title = text;
|
|
}
|
|
const tooltip = button?.querySelector(".earth-toolbar-tooltip");
|
|
if (tooltip) {
|
|
tooltip.textContent = text;
|
|
}
|
|
}
|
|
|
|
export function updateLayerButtonState(button, isActive) {
|
|
if (!button) return;
|
|
button.classList.toggle("active", isActive);
|
|
button.setAttribute("aria-checked", isActive ? "true" : "false");
|
|
const state = button.querySelector(".earth-layer-btn__state");
|
|
if (state) {
|
|
state.textContent = isActive ? "ON" : "OFF";
|
|
}
|
|
}
|
|
|
|
export function setLayerButtonState(button, options = {}) {
|
|
if (!(button instanceof HTMLButtonElement)) return;
|
|
const {
|
|
active = null,
|
|
loading = false,
|
|
tooltip = null,
|
|
statusText = null,
|
|
} = options;
|
|
button.classList.toggle("is-loading", loading);
|
|
button.toggleAttribute("aria-busy", loading);
|
|
button.disabled = loading;
|
|
if (typeof active === "boolean") {
|
|
updateLayerButtonState(button, active);
|
|
}
|
|
if (tooltip) {
|
|
setButtonTooltip(button, tooltip);
|
|
}
|
|
if (statusText) {
|
|
const statusTarget = button.dataset.statusTarget
|
|
? document.getElementById(button.dataset.statusTarget)
|
|
: null;
|
|
if (statusTarget) {
|
|
statusTarget.textContent = statusText;
|
|
}
|
|
}
|
|
}
|