import Column from 'Components/Table/Column'; import { SortDirection } from 'Helpers/Props/sortDirections'; import { ValidationFailure } from 'typings/pending'; import { FilterBuilderProp, PropertyFilter } from './AppState'; export interface Error { status?: number; responseJSON: | { message: string | undefined; } | ValidationFailure[] | undefined; } export interface AppSectionDeleteState { isDeleting: boolean; deleteError: Error; } export interface AppSectionSaveState { isSaving: boolean; saveError: Error; } export interface PagedAppSectionState { page: number; pageSize: number; totalPages: number; totalRecords?: number; } export interface TableAppSectionState { columns: Column[]; } export interface AppSectionFilterState { selectedFilterKey: string; filters: PropertyFilter[]; filterBuilderProps: FilterBuilderProp[]; } export interface AppSectionSchemaState { isSchemaFetching: boolean; isSchemaPopulated: boolean; schemaError: Error; schema: { items: T[]; }; } export interface AppSectionItemState { isFetching: boolean; isPopulated: boolean; error: Error; pendingChanges: Partial; item: T; } export interface AppSectionProviderState extends AppSectionDeleteState, AppSectionSaveState { isFetching: boolean; isPopulated: boolean; error: Error; items: T[]; pendingChanges: Partial; } interface AppSectionState { isFetching: boolean; isPopulated: boolean; error: Error; items: T[]; sortKey: string; sortDirection: SortDirection; } export default AppSectionState;