Files
planet/frontend/public/earth/js/layer-button-state.js
linkong 5bdb55f3f1
Some checks failed
ci / backend (push) Has been cancelled
ci / frontend (push) Has been cancelled
ci / delivery (push) Has been cancelled
release / images (push) Has been cancelled
release: bump version to 0.74.0
2026-06-30 13:52:52 +08:00

52 lines
1.5 KiB
JavaScript

import { translateText } from "./i18n.js";
export function setButtonTooltip(button, text) {
const translatedText = translateText(text);
if (button instanceof HTMLElement) {
button.title = translatedText;
}
const tooltip = button?.querySelector(".earth-toolbar-tooltip");
if (tooltip) {
tooltip.textContent = translatedText;
}
}
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,
disabled = null,
tooltip = null,
statusText = null,
} = options;
button.classList.toggle("is-loading", loading);
button.toggleAttribute("aria-busy", loading);
button.disabled = loading || (disabled === true);
button.classList.toggle("is-disabled", disabled === true);
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;
}
}
}