1
0
forked from boos/BoosAPI

fix: wire site-created dialog cancel cleanup (#341)

This commit is contained in:
Cita
2026-03-31 13:47:36 +08:00
committed by GitHub
parent 618ca0b9bf
commit 6e04db61dd
2 changed files with 35 additions and 9 deletions
@@ -0,0 +1,30 @@
import { describe, expect, it, vi } from 'vitest';
import { act, create } from 'react-test-renderer';
import SiteCreatedModal from './SiteCreatedModal.js';
describe('SiteCreatedModal', () => {
it('routes native dialog cancel events through onClose cleanup', async () => {
const onChoice = vi.fn();
const onClose = vi.fn();
const root = create(
<SiteCreatedModal
siteName="Demo Site"
platform="new-api"
onChoice={onChoice}
onClose={onClose}
/>,
);
const dialog = root.root.findByType('dialog');
expect(typeof dialog.props.onCancel).toBe('function');
const preventDefault = vi.fn();
await act(async () => {
dialog.props.onCancel({ preventDefault });
});
expect(preventDefault).toHaveBeenCalledTimes(1);
expect(onClose).toHaveBeenCalledTimes(1);
expect(onChoice).not.toHaveBeenCalled();
});
});
+4 -8
View File
@@ -27,18 +27,14 @@ export default function SiteCreatedModal({ siteName, platform, onChoice, onClose
}; };
}, []); }, []);
const handleKeyDown = (e: React.KeyboardEvent) => {
if (e.key === 'Escape') {
e.preventDefault();
onChoice('later');
}
};
return ( return (
<dialog <dialog
ref={dialogRef} ref={dialogRef}
className="modal" className="modal"
onKeyDown={handleKeyDown} onCancel={(event) => {
event.preventDefault();
onClose();
}}
onClick={(e) => { onClick={(e) => {
if (e.target === dialogRef.current) { if (e.target === dialogRef.current) {
onChoice('later'); onChoice('later');