make some overall QoL improvements

This commit is contained in:
Frederik Spirgi
2026-09-30 11:05:13 +02:00
parent d15f7867d5
commit c69070a6e6
18 changed files with 256 additions and 78 deletions
+14 -5
View File
@@ -9,6 +9,7 @@ import {
} from "./themeController.js?v=20260909-account-controls";
import { clearStatus, setStatus } from "./statusNotice.js?v=20260909-account-controls";
import { populatePersonaForm, readPersonaForm } from "./personaForm.js?v=20260909-account-controls";
import { openModal, closeModal, topModal } from "./modalFocus.js";
const $ = (id) => document.getElementById(id);
const settingsNotice = $("settingsNotice");
@@ -96,7 +97,7 @@ function setPersonaNotice(message = "", state = "") {
}
function closeSettingsPopup(value = null) {
settingsPopupModal.classList.add("hidden");
closeModal(settingsPopupModal);
if (settingsPopupResolver) {
const resolve = settingsPopupResolver;
settingsPopupResolver = null;
@@ -120,7 +121,7 @@ function promptSettingsPopup({
settingsPopupInput.value = value;
settingsPopupInput.placeholder = placeholder;
settingsPopupConfirm.textContent = confirmLabel;
settingsPopupModal.classList.remove("hidden");
openModal(settingsPopupModal, settingsPopupInput);
settingsPopupInput.focus();
settingsPopupInput.select();
return new Promise((resolve) => {
@@ -232,12 +233,11 @@ function openPersonaModal(persona = null, personaType = "assistant") {
populatePersonaForm(settingsPersonaFields, persona || {});
syncPersonaExamplesField();
setPersonaNotice("");
settingsPersonaModal.classList.remove("hidden");
settingsPersonaName.focus();
openModal(settingsPersonaModal, settingsPersonaName);
}
function closePersonaModal() {
settingsPersonaModal.classList.add("hidden");
closeModal(settingsPersonaModal);
editingPersonaId = null;
setPersonaNotice("");
}
@@ -571,9 +571,18 @@ settingsPopupInput.addEventListener("keydown", (event) => {
}
if (event.key === "Escape") {
event.preventDefault();
event.stopPropagation();
closeSettingsPopup(null);
}
});
document.addEventListener("keydown", event => {
if (event.key !== "Escape") return;
const modal = topModal();
if (!modal) return;
event.preventDefault();
if (modal === settingsPopupModal) closeSettingsPopup(null);
else if (modal === settingsPersonaModal) closePersonaModal();
});
window.addEventListener("load", async () => {
initializeAppearance({ title: "Elsewhere Settings", themeSelect: settingsThemeSelect, modeSelect: themeModeSelect });