47 lines
1.1 KiB
TypeScript
47 lines
1.1 KiB
TypeScript
'use client';
|
|
|
|
import {
|
|
createContext,
|
|
type Dispatch,
|
|
type PropsWithChildren,
|
|
type SetStateAction,
|
|
useMemo,
|
|
useState,
|
|
} from 'react';
|
|
|
|
export type ContextType = {
|
|
editMode: boolean;
|
|
endTime: string;
|
|
resetTime: () => void;
|
|
setEditMode: Dispatch<SetStateAction<boolean>>;
|
|
setEndTime: Dispatch<SetStateAction<string>>;
|
|
setStartTime: Dispatch<SetStateAction<string>>;
|
|
startTime: string;
|
|
};
|
|
export const ScheduleTimeContext = createContext<ContextType>({} as ContextType);
|
|
|
|
export function ScheduleTimeContextProvider({ children }: Readonly<PropsWithChildren>) {
|
|
const [editMode, setEditMode] = useState(false);
|
|
const [startTime, setStartTime] = useState('');
|
|
const [endTime, setEndTime] = useState('');
|
|
|
|
function resetTime() {
|
|
setStartTime('');
|
|
setEndTime('');
|
|
}
|
|
|
|
const value = useMemo(() => {
|
|
return {
|
|
editMode,
|
|
endTime,
|
|
resetTime,
|
|
setEditMode,
|
|
setEndTime,
|
|
setStartTime,
|
|
startTime,
|
|
};
|
|
}, [editMode, endTime, setEditMode, startTime]);
|
|
|
|
return <ScheduleTimeContext value={value}>{children}</ScheduleTimeContext>;
|
|
}
|