M0-M11 狩夜人笔记初始实现:11里程碑+86测试
This commit is contained in:
@@ -0,0 +1,22 @@
|
||||
import { create } from 'zustand';
|
||||
|
||||
type Mode = 'input' | 'confirm';
|
||||
|
||||
interface DialogState {
|
||||
open: boolean;
|
||||
mode: Mode;
|
||||
title: string;
|
||||
message: string;
|
||||
placeholder: string;
|
||||
resolve: ((value: string | null) => void) | null;
|
||||
showInput: (title: string, placeholder?: string) => Promise<string | null>;
|
||||
showConfirm: (title: string, message: string) => Promise<boolean>;
|
||||
close: (value: string | null) => void;
|
||||
}
|
||||
|
||||
export const useDialog = create<DialogState>((set, get) => ({
|
||||
open: false, mode: 'input', title: '', message: '', placeholder: '', resolve: null,
|
||||
showInput: (title, placeholder = '') => new Promise<string | null>((resolve) => { set({ open: true, mode: 'input', title, placeholder, resolve }); }),
|
||||
showConfirm: (title, message) => new Promise<string | null>((resolve) => { set({ open: true, mode: 'confirm', title, message, resolve }); }),
|
||||
close: (value) => { const r = get().resolve; set({ open: false, resolve: null }); r?.(value); },
|
||||
}));
|
||||
Reference in New Issue
Block a user