feat(ext/popup): login gen-btn opens generator popover; teardown closes it

This commit is contained in:
adlee-was-taken
2026-04-24 19:25:52 -04:00
parent 8a16482b9c
commit 531af03ff1

View File

@@ -14,6 +14,7 @@ import {
renderSectionsEditor, renderSectionsEditor,
wireSectionsEditor, wireSectionsEditor,
} from '../fields'; } from '../fields';
import { openGeneratorPopover, closeGeneratorPopover } from '../generator-popover';
/// Called by the dispatcher before each render. Stops any in-flight /// Called by the dispatcher before each render. Stops any in-flight
/// tickers / intervals / listeners the previous view may have attached. /// tickers / intervals / listeners the previous view may have attached.
@@ -28,6 +29,7 @@ export function teardown(): void {
activeFormEscHandler = null; activeFormEscHandler = null;
} }
sectionsExpanded = false; sectionsExpanded = false;
closeGeneratorPopover();
} }
// ---------------------------------------------------------------------- // ----------------------------------------------------------------------
@@ -263,14 +265,17 @@ export function renderForm(app: HTMLElement, mode: 'add' | 'edit', existing: Ite
}; };
wireSectionsEditor(app, sectionsDraft, rerender); wireSectionsEditor(app, sectionsDraft, rerender);
document.getElementById('gen-btn')?.addEventListener('click', async () => { document.getElementById('gen-btn')?.addEventListener('click', (e) => {
const resp = await sendMessage({ type: 'generate_password', request: DEFAULT_PASSWORD_REQUEST }); const anchor = e.currentTarget as HTMLElement;
if (resp.ok) { const initial = getState().generatorDefaults ?? DEFAULT_PASSWORD_REQUEST;
const data = resp.data as { password: string }; openGeneratorPopover({
const pw = document.getElementById('f-password') as HTMLInputElement; anchor,
pw.value = data.password; initial,
pw.type = 'text'; onPicked: (value) => {
} else setState({ error: resp.error }); const pw = document.getElementById('f-password') as HTMLInputElement | null;
if (pw) { pw.value = value; pw.type = 'text'; }
},
});
}); });
document.getElementById('cancel-btn')?.addEventListener('click', () => { document.getElementById('cancel-btn')?.addEventListener('click', () => {