UNPKG

ra-core

Version:

Core components of react-admin, a frontend Framework for building admin applications on top of REST services, using ES6, React

79 lines 2.96 kB
import * as React from 'react'; import { InputProps } from '../../form/useInput'; import { type UseReferenceArrayInputParams } from './useReferenceArrayInputController'; import { RaRecord } from '../../types'; import { ChoicesContextValue } from '../../form'; /** * An Input component for fields containing a list of references to another resource. * Useful for 'hasMany' relationship. * * @example * The post object has many tags, so the post resource looks like: * { * id: 1234, * tag_ids: [ "1", "23", "4" ] * } * * ReferenceArrayInputBase component fetches the current resources (using * `dataProvider.getMany()`) as well as possible resources (using * `dataProvider.getList()`) in the reference endpoint. It then * delegates rendering to its child component, to which it makes the possible * choices available through the ChoicesContext. * * Use it with a selector component as child, like `<SelectArrayInput>` * or <CheckboxGroupInput>. * * @example * export const PostEdit = () => ( * <Edit> * <SimpleForm> * <ReferenceArrayInputBase source="tag_ids" reference="tags"> * <SelectArrayInput optionText="name" /> * </ReferenceArrayInputBase> * </SimpleForm> * </Edit> * ); * * By default, restricts the possible values to 25. You can extend this limit * by setting the `perPage` prop. * * @example * <ReferenceArrayInputBase * source="tag_ids" * reference="tags" * perPage={100}> * <SelectArrayInput optionText="name" /> * </ReferenceArrayInputBase> * * By default, orders the possible values by id desc. You can change this order * by setting the `sort` prop (an object with `field` and `order` properties). * * @example * <ReferenceArrayInputBase * source="tag_ids" * reference="tags" * sort={{ field: 'name', order: 'ASC' }}> * <SelectArrayInput optionText="name" /> * </ReferenceArrayInputBase> * * Also, you can filter the query used to populate the possible values. Use the * `filter` prop for that. * * @example * <ReferenceArrayInputBase * source="tag_ids" * reference="tags" * filter={{ is_public: true }}> * <SelectArrayInput optionText="name" /> * </ReferenceArrayInputBase> * * The enclosed component may filter results. ReferenceArrayInputBase create a ChoicesContext which provides * a `setFilters` function. You can call this function to filter the results. */ export declare const ReferenceArrayInputBase: <RecordType extends RaRecord = any>(props: ReferenceArrayInputBaseProps<RecordType>) => React.JSX.Element; export interface ReferenceArrayInputBaseProps<RecordType extends RaRecord = any> extends InputProps, UseReferenceArrayInputParams<RecordType> { children?: React.ReactNode; render?: (context: ChoicesContextValue<RecordType>) => React.ReactNode; offline?: React.ReactNode; } //# sourceMappingURL=ReferenceArrayInputBase.d.ts.map