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
TypeScript
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