Version: 4.xx.xx
Interface References
CrudFilters
type CrudFilters = CrudFilter[];
CrudFilter
type CrudFilter = LogicalFilter | ConditionalFilter;
LogicalFilter
type LogicalFilter = {
field: string;
operator: Exclude<CrudOperators, "or" | "and">;
value: any;
};
ConditionalFilter
type ConditionalFilter = {
key?: string;
operator: Extract<CrudOperators, "or" | "and">;
value: (LogicalFilter | ConditionalFilter)[];
};
CrudOperators
type CrudOperators =
| "eq" // Equal
| "ne" // Not equal
| "lt" // Less than
| "gt" // Greater than
| "lte" // Less than or equal to
| "gte" // Greater than or equal to
| "in" // Included in an array
| "nin" // Not included in an array
| "contains" // Contains
| "ncontains" // Doesn't contain
| "containss" // Contains, case sensitive
| "ncontainss" // Doesn't contain, case sensitive
| "between" // Between
| "nbetween" // Not between
| "null" // Is null
| "nnull" // Is not null
| "startswith" // Starts with
| "nstartswith" // Doesn't start with
| "startswiths" // Starts with, case sensitive
| "nstartswiths" // Doesn't start with, case sensitive
| "endswith" // Ends with
| "nendswith" // Doesn't end with
| "endswiths" // Ends with, case sensitive
| "nendswiths" // Doesn't end with, case sensitive
| "or" // Logical OR
| "and"; // Logical AND
CrudSorting
type CrudSorting = CrudSort[];
CrudSort
type CrudSort = {
field: string;
order:
| "asc" // Ascending order
| "desc"; // Descending order
};
Pagination
type Pagination = {
current?: number; // Initial page index
pageSize?: number; // Initial number of items per page
mode?: "client" | "server" | "off"; // Whether to use server side pagination or not.
};
BaseKey
type BaseKey = string | number;
BaseRecord
type BaseRecord = {
id?: BaseKey;
[key: string]: any;
};
HttpError
type HttpError = {
message: string;
statusCode: number;
errors?: ValidationErrors;
[key: string]: any;
};
ValidationErrors
type ValidationErrors = {
[field: string]:
| string // Single error message
| string[] // Multiple error messages
| boolean // `true` if there is an error
| { key: string; message: string }; // Error message with a translation key and a default message
};
MutationMode
type MutationMode = "pessimistic" | "optimistic" | "undoable";
UseImportInputPropsType
type UseImportInputPropsType = {
type: "file";
accept: string; // ".cvs"
onChange: (event: React.ChangeEvent<HTMLInputElement>) => void;
};
SuccessErrorNotification
type SuccessErrorNotification<
TData = unknown,
TError = unknown,
TVariables = unknown,
> = {
successNotification?:
| OpenNotificationParams
| false
| ((
data?: TData,
values?: TVariables,
resource?: string,
) => OpenNotificationParams | false);
errorNotification?:
| OpenNotificationParams
| false
| ((
error?: TError,
values?: TVariables,
resource?: string,
) => OpenNotificationParams | false);
};
OpenNotificationParams
type OpenNotificationParams = {
key?: string; // The key of the notification, used to manage the notification state.
message: string; // The title of the notification.
type: "success" | "error" | "progress"; // The type of the notification.
description?: string; // The description of the notification.
cancelMutation?: () => void; // If the notification is undoable, the function to call when the user clicks on the undo button.
undoableTimeout?: number; // If the notification is undoable, the timeout in milliseconds after which the notification will be automatically closed.
};
MetaQuery
type MetaQuery = {
queryContext?: Omit<QueryFunctionContext, "meta">;
[key: string]: any;
} & QueryBuilderOptions &
GraphQLQueryOptions;
GraphQLQueryOptions
import type { DocumentNode } from "graphql";
type GraphQLQueryOptions = {
gqlQuery?: DocumentNode;
gqlMutation?: DocumentNode;
};
QueryFunctionContext
Context to be passed to the query function. Refer to Query Function Context for more information.
QueryBuilderOptions
type QueryBuilderOptions = {
operation?: string;
fields?: Array<string | object | NestedField>;
variables?: VariableOptions;
};
NestedField
type NestedField = {
operation: string;
variables: QueryBuilderOptions[];
fields: Array<string | object | NestedField>;
};
VariableOptions
type VariableOptions = {
type?: string;
name?: string;
value: any;
list?: boolean;
required?: boolean;
[key: string]: any;
};
CanParams
type CanParams = {
resource: string; // Resource name
action: string; // Intended action name
params?: {
resource?: IResourceItem; // Resource item if can be determined
id?: BaseKey; // Id of the record if the check is for a specific record
[key: string]: unknown;
};
};
CanResponse
type CanResponse = {
can: boolean;
reason?: string;
[key: string]: unknown;
};
DataProvider
type DataProvider {
getList: <TData extends BaseRecord = BaseRecord>(
params: GetListParams,
) => Promise<GetListResponse<TData>>;
getMany?: <TData extends BaseRecord = BaseRecord>(
params: GetManyParams,
) => Promise<GetManyResponse<TData>>;
getOne: <TData extends BaseRecord = BaseRecord>(
params: GetOneParams,
) => Promise<GetOneResponse<TData>>;
create: <TData extends BaseRecord = BaseRecord, TVariables = {}>(
params: CreateParams<TVariables>,
) => Promise<CreateResponse<TData>>;
createMany?: <TData extends BaseRecord = BaseRecord, TVariables = {}>(
params: CreateManyParams<TVariables>,
) => Promise<CreateManyResponse<TData>>;
update: <TData extends BaseRecord = BaseRecord, TVariables = {}>(
params: UpdateParams<TVariables>,
) => Promise<UpdateResponse<TData>>;
updateMany?: <TData extends BaseRecord = BaseRecord, TVariables = {}>(
params: UpdateManyParams<TVariables>,
) => Promise<UpdateManyResponse<TData>>;
deleteOne: <TData extends BaseRecord = BaseRecord, TVariables = {}>(
params: DeleteOneParams<TVariables>,
) => Promise<DeleteOneResponse<TData>>;
deleteMany?: <TData extends BaseRecord = BaseRecord, TVariables = {}>(
params: DeleteManyParams<TVariables>,
) => Promise<DeleteManyResponse<TData>>;
getApiUrl: () => string;
custom?: <
TData extends BaseRecord = BaseRecord,
TQuery = unknown,
TPayload = unknown,
>(
params: CustomParams<TQuery, TPayload>,
) => Promise<CustomResponse<TData>>;
};
LiveEvent
type LiveEvent = {
channel: string;
type: "deleted" | "updated" | "created" | "*" | string;
payload: {
ids?: BaseKey[];
[x: string]: any;
};
date: Date;
meta?: MetaQuery & {
dataProviderName?: string;
};
};
LiveModeProps
type LiveModeProps = {
liveMode?: "auto" | "manual" | "off";
onLiveEvent?: (event: LiveEvent) => void;
liveParams?: {
ids?: BaseKey[];
[key: string]: any;
};
};
ResourceProps
type ResourceProps = {
name: string;
identifier?: string;
meta?: ResourceMeta;
};
ResourceMeta
type ResourceMeta = {
label?: string; // Label of the resource, can be used to pretty print the resource name.
hide?: boolean; // Whether to hide the resource from the menus or not. Used by the <Sider /> components.
dataProviderName?: string; // Dedicated data provider name for the resource.
parent?: string; // To nest a resource under another resource.
canDelete?: boolean; // To determine if the resource has ability to delete or not.
audit?: ResourceAuditLogPermissions[]; // To permit the audit log for actions on the resource.
icon?: ReactNode; // Icon of the resource, used in the menus and breadcrumbs
[key: string]: any;
};
ResourceAuditLogPermissions
type ResourceAuditLogPermissions = "create" | "update" | "delete" | string;
SyncWithLocationParams
type SyncWithLocationParams = {
pagination: { current?: number; pageSize?: number };
sorters: CrudSorting;
filters: CrudFilters;
};
Was this helpful?
- CrudFilters
- CrudFilter
- LogicalFilter
- ConditionalFilter
- CrudOperators
- CrudSorting
- CrudSort
- Pagination
- BaseKey
- BaseRecord
- HttpError
- ValidationErrors
- MutationMode
- UseImportInputPropsType
- SuccessErrorNotification
- OpenNotificationParams
- MetaQuery
- GraphQLQueryOptions
- QueryFunctionContext
- QueryBuilderOptions
- NestedField
- VariableOptions
- CanParams
- CanResponse
- DataProvider
- LiveEvent
- LiveModeProps
- ResourceProps
- ResourceMeta
- ResourceAuditLogPermissions
- SyncWithLocationParams