UNPKG

@wordpress/components

Version:
155 lines 5.07 kB
/** * Internal dependencies */ import type { FormTokenFieldProps } from '../form-token-field/types'; import type { TreeSelectProps } from '../tree-select/types'; export type Author = { id: number; name: string; }; export type Category = { id: number; name: string; parent: number; }; export type TermWithParentAndChildren = { id: string; name: string; parent: number | null; children: TermWithParentAndChildren[]; }; export type TermsByParent = Record<string, TermWithParentAndChildren[]>; export type CategorySelectProps = Pick<TreeSelectProps, 'label' | 'noOptionLabel'> & { categoriesList: Category[]; onChange: (newCategory: string) => void; selectedCategoryId?: Category['id']; __next40pxDefaultSize: boolean; }; export type AuthorSelectProps = Pick<TreeSelectProps, 'label' | 'noOptionLabel'> & { authorList?: Author[]; onChange: (newAuthor: string) => void; selectedAuthorId?: Author['id']; __next40pxDefaultSize: boolean; }; type Order = 'asc' | 'desc'; type OrderBy = 'date' | 'title' | 'menu_order'; export type OrderByOption = { /** * The label to be shown to the user. */ label: string; /** * Option value passed to `onChange` when the option is selected. */ value: `${OrderBy}/${Order}`; }; type BaseQueryControlsProps = { /** * An array of the authors to select from. */ authorList?: AuthorSelectProps['authorList']; /** * The maximum number of items. * * @default 100 */ maxItems?: number; /** * The minimum number of items. * * @default 1 */ minItems?: number; /** * The selected number of items to retrieve via the query. */ numberOfItems?: number; /** * A function that receives the new author value. * If not specified, the author controls are not rendered. */ onAuthorChange?: AuthorSelectProps['onChange']; /** * A function that receives the new number of items. * If not specified, then the number of items * range control is not rendered. */ onNumberOfItemsChange?: (newNumber?: number) => void; /** * A function that receives the new order value. * If this prop or the `onOrderByChange` prop are not specified, * then the order controls are not rendered. */ onOrderChange?: (newOrder: Order) => void; /** * A function that receives the new orderby value. * If this prop or the `onOrderChange` prop are not specified, * then the order controls are not rendered. */ onOrderByChange?: (newOrderBy: OrderBy) => void; /** * The order in which to retrieve posts. */ order?: Order; /** * The meta key by which to order posts. */ orderBy?: OrderBy; /** * List of available ordering options. */ orderByOptions?: OrderByOption[]; /** * The selected author ID. */ selectedAuthorId?: AuthorSelectProps['selectedAuthorId']; /** * Start opting into the larger default height that will become the * default size in a future version. * * @deprecated Default behavior since WP 6.7. Prop can be safely removed. * @ignore */ __next40pxDefaultSize?: boolean; }; export type QueryControlsWithSingleCategorySelectionProps = BaseQueryControlsProps & { /** * An array of categories. When passed in conjunction with the * `onCategoryChange` prop, it causes the component to render UI that allows * selecting one category at a time. */ categoriesList?: CategorySelectProps['categoriesList']; /** * The selected category for the `categoriesList` prop. */ selectedCategoryId?: CategorySelectProps['selectedCategoryId']; /** * A function that receives the new category value. If not specified, the * category controls are not rendered. * The function's signature changes depending on whether multiple category * selection is enabled or not. */ onCategoryChange?: CategorySelectProps['onChange']; }; export type QueryControlsWithMultipleCategorySelectionProps = BaseQueryControlsProps & { /** * An object of categories with the category name as the key. When passed in * conjunction with the `onCategoryChange` prop, it causes the component to * render UI that enables multiple selection. */ categorySuggestions?: Record<Category['name'], Category>; /** * The selected categories for the `categorySuggestions` prop. */ selectedCategories?: Category[]; /** * A function that receives the new category value. If not specified, the * category controls are not rendered. * The function's signature changes depending on whether multiple category * selection is enabled or not. */ onCategoryChange?: FormTokenFieldProps['onChange']; }; export type QueryControlsProps = QueryControlsWithSingleCategorySelectionProps | QueryControlsWithMultipleCategorySelectionProps; export {}; //# sourceMappingURL=types.d.ts.map