drf-react-by-schema
Version:
Components and Tools for building a React App having Django Rest Framework (DRF) as server
116 lines • 5.07 kB
TypeScript
import React, { ActionDispatch } from 'react';
import { FieldValues, SubmitHandler, UseFormGetValues, UseFormSetValue } from 'react-hook-form';
import { AlertColor, AlertPropsColorOverrides } from '@mui/material/Alert';
import { OverridableStringUnion } from '@mui/types';
import { ObjectSchema } from 'yup';
import { AxiosError } from 'axios';
import { ItemSchemaColumnsType, Id, Item, SchemaType, DataSchemaColumnsType, OnSuccessEvent, OptionsAC, GenericValue, FormFieldLayout, TargetApiParamsLocal, TargetApiPostParamsLocal, GetGenericModelListPropsLocal, GridEnrichedBySchemaColDef, ExtraValidators, GetGenericModelPropsLocal, UpdateDataBySchema, AutocompleteItem } from '../@types';
export interface LoadSinglePageDataProps {
model: string;
objId?: Id;
objTitleField?: string;
optionsACModels?: string[];
defaults?: Item;
basePath?: string;
formPath?: string | null;
extraValidators?: ExtraValidators;
fieldsLayout?: FormFieldLayout[];
}
export interface PageFormType {
id: Id;
model: string | null;
modelVerboseName?: string | null;
modelVerboseNamePlural?: string | null;
schema: SchemaType | null;
columns?: GridEnrichedBySchemaColDef[] | null;
initialValues: Item | null;
validationSchema: ObjectSchema<Item> | null;
forceReload?: boolean;
objTitleField?: string;
}
export interface OnEditModelType {
fieldKey?: string;
index?: number;
model: string;
id: Id;
labelKey: string;
setValue?: UseFormSetValue<FieldValues>;
getValues?: UseFormGetValues<FieldValues>;
fieldsLayout?: FormFieldLayout[];
initialValuesPartial?: Record<string, string>;
}
export interface OnEditRelatedModelType {
model: string;
id: Id;
relatedModel: string;
relatedModelId: Id;
newRow: Item;
schema: SchemaType;
onlyAddExisting: boolean;
}
export interface onEditModelDataGridSaveType {
model: string;
id: Id;
newRow: Item;
schema: SchemaType;
}
export interface OnDeleteRelatedModelType {
model: string;
id: Id;
relatedModel: string;
relatedModelId: Id;
}
export interface SnackBarType {
open?: boolean;
msg?: string;
severity?: OverridableStringUnion<AlertColor, AlertPropsColorOverrides>;
}
export interface DialogType {
open: boolean;
loading?: boolean;
title?: string;
Body?: React.ReactNode;
Actions?: React.ReactNode;
isCancelDisabled?: boolean;
}
export type DRFReactBySchemaSubmitHandler = (...args: [...[model: string, id: Id], ...Parameters<SubmitHandler<FieldValues>>]) => Promise<Id | AxiosError>;
export interface APIWrapperContextType {
usuaria: Item | null;
updateUsuaria: () => void;
onSubmit: DRFReactBySchemaSubmitHandler;
loadSinglePageData: (p: LoadSinglePageDataProps) => Promise<Item | AxiosError>;
handleLoading: (p: boolean) => void;
optionsACState: (OptionsAC | ActionDispatch<[newState: Partial<OptionsAC> | null]> | null)[];
optionsAC: OptionsAC | null;
setOptionsAC: (x: Partial<OptionsAC>) => void;
pageFormState: (PageFormType | ActionDispatch<[newState: Partial<PageFormType> | null]> | null)[];
pageForm: PageFormType | null;
setPageForm: (x: Partial<PageFormType>) => void;
onEditModel: (p: OnEditModelType) => void;
onEditModelDataGridSave: (p: onEditModelDataGridSaveType) => Promise<Item | AxiosError>;
onEditModelSave: (p: Item) => Promise<boolean | AxiosError>;
onDeleteModel: (model: string, id: Id, onSuccess?: OnSuccessEvent) => void;
onEditRelatedModelSave: (p: OnEditRelatedModelType) => Promise<Item | ItemSchemaColumnsType | AxiosError>;
onDeleteRelatedModel: (p: OnDeleteRelatedModelType) => Promise<boolean>;
rawUpdateDataBySchema: (props: UpdateDataBySchema) => Promise<Item | AxiosError>;
rawDeleteData: (model: string, id: Id) => Promise<true | AxiosError>;
onTriggerSnackBar: (p: SnackBarType) => void;
setDialog: React.ActionDispatch<[newState: Partial<DialogType> | null]>;
getRawData: (route: string) => Promise<GenericValue>;
getAutoComplete: (model: string) => Promise<AutocompleteItem[] | AxiosError>;
getGenericModel: (x: GetGenericModelPropsLocal) => Promise<ItemSchemaColumnsType | AxiosError>;
getGenericModelList: (x: GetGenericModelListPropsLocal) => Promise<DataSchemaColumnsType | AxiosError>;
getAllModels: () => Promise<Item[]>;
loginByPayload: (payload: Item) => Promise<boolean | AxiosError>;
getSignUpOptions: () => Promise<SchemaType | AxiosError>;
signUp: (data: Item) => Promise<Item | AxiosError>;
signOut: () => void;
postData: (params: TargetApiPostParamsLocal) => Promise<Item | AxiosError>;
editModel: React.RefObject<Item>;
updateModel: (p: TargetApiParamsLocal) => Promise<Item | AxiosError>;
populateOptionsAC: (optionsACModels: string[]) => void;
isMobile: boolean;
}
export declare const APIWrapperContext: React.Context<APIWrapperContextType>;
export declare const useAPIWrapper: () => APIWrapperContextType;
//# sourceMappingURL=APIWrapperContext.d.ts.map