mirror of
https://github.com/hexastack/hexabot
synced 2025-03-10 14:25:42 +00:00
fix: enhance typing
This commit is contained in:
parent
db8d41166b
commit
84b766d7c0
@ -16,25 +16,25 @@ type TCloseDialog = <E extends React.MouseEvent | Event | Object>(
|
|||||||
) => void;
|
) => void;
|
||||||
type TFnVoid<T> = (data?: T) => void;
|
type TFnVoid<T> = (data?: T) => void;
|
||||||
type TStatesMode = "datumOrData" | "datumAndData";
|
type TStatesMode = "datumOrData" | "datumAndData";
|
||||||
export type DialogControl<T = never> = Omit<DialogProps, "onError"> & {
|
export type DialogControl<T = never, S = T> = Omit<DialogProps, "onError"> & {
|
||||||
data?: T[];
|
data?: S[];
|
||||||
datum?: T;
|
datum?: T;
|
||||||
reset?: () => void;
|
reset?: () => void;
|
||||||
setData?: TFnVoid<T[]>;
|
setData?: TFnVoid<S[]>;
|
||||||
setDatum?: TFnVoid<T>;
|
setDatum?: TFnVoid<T>;
|
||||||
callback?: (data?: T | T[]) => Promise<void>;
|
callback?: (data?: T | S[]) => Promise<void>;
|
||||||
openDialog: TFnVoid<T | T[]>;
|
openDialog: TFnVoid<T | S[]>;
|
||||||
closeDialog: TCloseDialog;
|
closeDialog: TCloseDialog;
|
||||||
};
|
};
|
||||||
|
|
||||||
export const useDialog = <T,>(
|
export const useDialog = <T, S = T>(
|
||||||
initialState: boolean,
|
initialState: boolean,
|
||||||
statesMode: TStatesMode = "datumOrData",
|
statesMode: TStatesMode = "datumOrData",
|
||||||
): DialogControl<T> => {
|
): DialogControl<T, S> => {
|
||||||
const [open, setOpen] = useState(initialState);
|
const [open, setOpen] = useState(initialState);
|
||||||
const [data, setData] = useState<T[] | undefined>();
|
const [data, setData] = useState<S[] | undefined>();
|
||||||
const [datum, setDatum] = useState<T | undefined>();
|
const [datum, setDatum] = useState<T | undefined>();
|
||||||
const openDialog: TFnVoid<T | T[]> = (value) => {
|
const openDialog: TFnVoid<T | S[]> = (value) => {
|
||||||
if (statesMode === "datumOrData") {
|
if (statesMode === "datumOrData") {
|
||||||
if (value) {
|
if (value) {
|
||||||
setData(Array.isArray(value) ? value : undefined);
|
setData(Array.isArray(value) ? value : undefined);
|
||||||
|
Loading…
Reference in New Issue
Block a user