/** @jsx jsx */ /** @jsxFrag React.Fragment */ import { type Spec } from 'immutability-helper'; import React from 'react'; interface ItemListProps { items: Readonly; /** Singular item label, lowercase. */ itemLabel: string; /** Plural item label, lowercase. */ itemLabelPlural?: string; /** Same as for BP’s FormGroup. */ helperText?: React.ReactNode; /** Same as for BP’s FormGroup. */ subLabel?: React.ReactNode; /** When items are simple, ideally one property. */ simpleItems?: boolean; maxItems?: number; minItems?: number; /** The list is still ordered, but numbers won’t be shown. */ hideOrdinals?: boolean; /** Renders any given item. */ itemRenderer: ( /** Item data. */ item: T, /** Item index in the list. */ idx: number, handleChange: ((spec: Spec) => void) | undefined, deleteButton: JSX.Element | undefined) => JSX.Element; /** Required for being able to either remove, edit or create new items. */ onChangeItems?: (spec: Spec>) => void; /** Required for being able to create new items. */ placeholderItem?: T | (() => T) | (() => Promise); } /** * A wrapper for handling an ordered, optionally editable, list of items. * Not suitable for large or unbounded lists (it’s not windowed). */ export declare function ItemList({ items, itemLabel, itemLabelPlural, helperText, subLabel, itemRenderer, onChangeItems, simpleItems, maxItems, minItems, placeholderItem, hideOrdinals, }: ItemListProps): JSX.Element; export default ItemList;