lms/resources/js/components/section-editor/context.tsx
2025-12-15 12:26:23 +01:00

53 lines
1.4 KiB
TypeScript

import React, { createContext, ReactNode, useContext, useState } from 'react';
interface SectionEditorContextType {
section: PageSection;
// Dialog state
open: boolean;
setOpen: (value: boolean) => void;
// Form submission state
isSubmit: boolean;
setIsSubmit: (value: boolean) => void;
}
const SectionEditorContext = createContext<SectionEditorContextType | undefined>(undefined);
interface SectionEditorProviderProps {
children: ReactNode;
section: PageSection;
onSuccess?: () => void;
onError?: (errors: any) => void;
}
export const SectionEditorProvider: React.FC<SectionEditorProviderProps> = ({ children, section, onSuccess, onError }) => {
// Dialog state
const [open, setOpen] = useState(false);
// Form submission state
const [isSubmit, setIsSubmit] = useState(false);
const contextValue: SectionEditorContextType = {
section,
// Dialog state
open,
setOpen,
// Form submission state
isSubmit,
setIsSubmit,
};
return <SectionEditorContext.Provider value={contextValue}>{children}</SectionEditorContext.Provider>;
};
// Custom hook to use the context
export const useSectionEditor = () => {
const context = useContext(SectionEditorContext);
if (context === undefined) {
throw new Error('useSectionEditor must be used within a SectionEditorProvider');
}
return context;
};