feat(confirm): add ConfirmService and ConfirmDialog with deferred-Promise pattern
- confirm.svelte.ts: context-based async service returning Promise<boolean> - ConfirmDialog.svelte: native <dialog> element, reads service from context - Concurrent calls return false immediately (guard at top of confirm()) - SSR-safe: confirm() returns Promise.resolve(false) on server - getConfirmService() throws descriptive error outside provider tree - 5 Vitest tests: confirm/cancel/Escape/concurrent/outside-provider all green Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
This commit is contained in:
11
frontend/src/lib/services/confirm.test-host.svelte
Normal file
11
frontend/src/lib/services/confirm.test-host.svelte
Normal file
@@ -0,0 +1,11 @@
|
||||
<script lang="ts">
|
||||
import { provideConfirmService, type ConfirmService } from './confirm.svelte.js';
|
||||
import ConfirmDialog from '$lib/components/ConfirmDialog.svelte';
|
||||
|
||||
let { onReady }: { onReady: (service: ConfirmService) => void } = $props();
|
||||
|
||||
const service = provideConfirmService();
|
||||
onReady(service);
|
||||
</script>
|
||||
|
||||
<ConfirmDialog />
|
||||
Reference in New Issue
Block a user