/** * External dependencies */ import type { ReactNode } from 'react'; declare type ResetAllFilter = () => void; declare type ResetAll = (filters?: ResetAllFilter[]) => void; export declare type ToolsPanelProps = { /** * The child elements. */ children: ReactNode; /** * Flags that the items in this ToolsPanel will be contained within an inner * wrapper element allowing the panel to lay them out accordingly. */ hasInnerWrapper: boolean; /** * Text to be displayed within the panel's header and as the `aria-label` * for the panel's dropdown menu. */ label: string; /** * If a `panelId` is set, it is passed through the `ToolsPanelContext` and * used to restrict panel items. Only items with a matching `panelId` will * be able to register themselves with this panel. */ panelId: string; /** * A function to call when the `Reset all` menu option is selected. This is * passed through to the panel's header component. */ resetAll: ResetAll; /** * Advises the `ToolsPanel` that its child `ToolsPanelItem`s should render * placeholder content instead of null when they are toggled off and hidden. */ shouldRenderPlaceholderItems: boolean; }; export declare type ToolsPanelHeaderProps = { /** * Text to be displayed within the panel header. It is also passed along as * the `label` for the panel header's `DropdownMenu`. */ label: string; /** * The `resetAll` prop provides the callback to execute when the "Reset all" * menu item is selected. Its purpose is to facilitate resetting any control * values for items contained within this header's panel. */ resetAll: ResetAll; /** * This is executed when an individual control's menu item is toggled. It * will update the panel's menu item state and call the panel item's * `onSelect` or `onDeselect` callbacks as appropriate. */ toggleItem: (label: string) => void; }; export declare type ToolsPanelItem = { /** * This is called when building the `ToolsPanel` menu to determine the * item's initial checked state. */ hasValue: () => boolean; /** * This prop identifies the current item as being displayed by default. This * means it will show regardless of whether it has a value set or is toggled * on in the panel's menu. */ isShownByDefault: boolean; /** * The supplied label is dual purpose. It is used as: * 1. the human-readable label for the panel's dropdown menu * 2. a key to locate the corresponding item in the panel's menu context to * determine if the panel item should be displayed. * A panel item's `label` should be unique among all items within a single * panel. */ label: string; /** * Panel items will ensure they are only registering with their intended * panel by comparing the `panelId` props set on both the item and the panel * itself. This allows items to be injected from a shared source. */ panelId: string; /** * A `ToolsPanel` will collect each item's `resetAllFilter` and pass an * array of these functions through to the panel's `resetAll` callback. They * can then be iterated over to perform additional tasks. */ resetAllFilter: ResetAllFilter; }; export declare type ToolsPanelItemProps = ToolsPanelItem & { /** * The child elements. */ children?: ReactNode; /** * Called when this item is deselected in the `ToolsPanel` menu. This is * normally used to reset the panel item control's value. */ onDeselect?: () => void; /** * A callback to take action when this item is selected in the `ToolsPanel` * menu. */ onSelect?: () => void; }; export declare type ToolsPanelMenuItemKey = 'default' | 'optional'; export declare type ToolsPanelMenuItems = { [menuItemKey in ToolsPanelMenuItemKey]: { [key: string]: boolean; }; }; export declare type ToolsPanelContext = { panelId?: string; menuItems: ToolsPanelMenuItems; hasMenuItems: boolean; registerPanelItem: (item: ToolsPanelItem) => void; deregisterPanelItem: (label: string) => void; flagItemCustomization: (label: string, group?: ToolsPanelMenuItemKey) => void; isResetting: boolean; shouldRenderPlaceholderItems: boolean; areAllOptionalControlsHidden: boolean; }; export declare type ToolsPanelControlsGroupProps = { items: [string, boolean][]; onClose: () => void; toggleItem: (label: string) => void; }; export declare type ToolsPanelMenuItemsConfig = { panelItems: ToolsPanelItem[]; shouldReset: boolean; currentMenuItems?: ToolsPanelMenuItems; }; export {}; //# sourceMappingURL=types.d.ts.map