import { IconComponent } from '@consta/icons/Icon'; import React from 'react'; import { CollapseIconPropDirection, CollapsePropForm, CollapsePropHorizontalSpace, CollapsePropIconView, CollapsePropSize, CollapsePropView } from '../Collapse'; import { PropsWithHTMLAttributesAndRef } from '../../utils/types/PropsWithHTMLAttributes'; export type DefaultItem = { label: React.ReactNode; content: React.ReactNode; rightSide?: React.ReactNode | React.ReactNode[]; }; export type CollapseGroupPropOnOpen = (value: (IS_ACCORDION extends true ? number : number[]) | null, params: { e: React.MouseEvent; }) => void; export type CollapseGroupPropOpened = (IS_ACCORDION extends true ? number : number[]) | null | undefined; type CollapseGroupPropGetItemLabel = (item: ITEM) => React.ReactNode; type CollapseGroupPropGetItemContent = (item: ITEM) => React.ReactNode; type CollapseGroupPropGetItemRightSide = (item: ITEM) => React.ReactNode | React.ReactNode[] | undefined; export type CollapseGroupProps = PropsWithHTMLAttributesAndRef<{ items: ITEM[]; isAccordion?: IS_ACCORDION; children?: never; icon?: IconComponent; divider?: boolean; size?: CollapsePropSize; form?: CollapsePropForm; view?: CollapsePropView; horizontalSpace?: CollapsePropHorizontalSpace; hoverEffect?: boolean; onOpen?: CollapseGroupPropOnOpen; opened?: CollapseGroupPropOpened; getItemLabel?: CollapseGroupPropGetItemLabel; getItemContent?: CollapseGroupPropGetItemContent; iconView?: CollapsePropIconView; } & ({ closeIcon: IconComponent; directionIcon?: never; closeDirectionIcon?: never; } | { closeIcon?: never; directionIcon?: CollapseIconPropDirection; closeDirectionIcon?: CollapseIconPropDirection; }) & ({ iconPosition?: 'left'; getItemRightSide?: CollapseGroupPropGetItemRightSide; } | { iconPosition?: 'right'; getItemRightSide?: never; }), HTMLDivElement> & (ITEM extends { label: DefaultItem['label']; } ? {} : { getItemLabel: CollapseGroupPropGetItemLabel; }) & (ITEM extends { content: DefaultItem['content']; } ? {} : { getItemContent: CollapseGroupPropGetItemContent; }); export declare const defaultGetItemLabel: CollapseGroupPropGetItemLabel; export declare const defaultGetItemContent: CollapseGroupPropGetItemContent; export declare const defaultGetItemRightSide: CollapseGroupPropGetItemContent; export type CollapseGroupComponent = (props: CollapseGroupProps) => React.ReactNode | null; export type CollapseGroupRenderFunction = (props: CollapseGroupProps, ref: React.Ref) => React.ReactNode | null; export declare function withDefaultGetters(props: CollapseGroupProps): ({ items: ITEM[]; isAccordion?: IS_ACCORDION | undefined; children?: never; icon?: IconComponent; divider?: boolean; size?: CollapsePropSize; form?: CollapsePropForm; view?: CollapsePropView; horizontalSpace?: CollapsePropHorizontalSpace; hoverEffect?: boolean; onOpen?: CollapseGroupPropOnOpen | undefined; opened?: CollapseGroupPropOpened; getItemLabel?: CollapseGroupPropGetItemLabel | undefined; getItemContent?: CollapseGroupPropGetItemContent | undefined; iconView?: CollapsePropIconView; } & { closeIcon: IconComponent; directionIcon?: never; closeDirectionIcon?: never; } & { iconPosition?: "left"; getItemRightSide?: CollapseGroupPropGetItemRightSide | undefined; } & Omit, "css" | "children" | "size" | "view" | "form" | "items" | "getItemLabel" | "icon" | "hoverEffect" | "getItemRightSide" | "horizontalSpace" | "closeIcon" | "divider" | "iconView" | "iconPosition" | "directionIcon" | "closeDirectionIcon" | "isAccordion" | "onOpen" | "opened" | "getItemContent"> & React.RefAttributes & (ITEM extends { label: DefaultItem["label"]; } ? {} : { getItemLabel: CollapseGroupPropGetItemLabel; }) & (ITEM extends { content: DefaultItem["content"]; } ? {} : { getItemContent: CollapseGroupPropGetItemContent; }) & { getItemLabel: CollapseGroupPropGetItemLabel | CollapseGroupPropGetItemLabel; getItemContent: CollapseGroupPropGetItemContent | CollapseGroupPropGetItemContent; getItemRightSide: CollapseGroupPropGetItemContent | CollapseGroupPropGetItemRightSide; }) | ({ items: ITEM[]; isAccordion?: IS_ACCORDION | undefined; children?: never; icon?: IconComponent; divider?: boolean; size?: CollapsePropSize; form?: CollapsePropForm; view?: CollapsePropView; horizontalSpace?: CollapsePropHorizontalSpace; hoverEffect?: boolean; onOpen?: CollapseGroupPropOnOpen | undefined; opened?: CollapseGroupPropOpened; getItemLabel?: CollapseGroupPropGetItemLabel | undefined; getItemContent?: CollapseGroupPropGetItemContent | undefined; iconView?: CollapsePropIconView; } & { closeIcon?: never; directionIcon?: CollapseIconPropDirection; closeDirectionIcon?: CollapseIconPropDirection; } & { iconPosition?: "left"; getItemRightSide?: CollapseGroupPropGetItemRightSide | undefined; } & Omit, "css" | "children" | "size" | "view" | "form" | "items" | "getItemLabel" | "icon" | "hoverEffect" | "getItemRightSide" | "horizontalSpace" | "closeIcon" | "divider" | "iconView" | "iconPosition" | "directionIcon" | "closeDirectionIcon" | "isAccordion" | "onOpen" | "opened" | "getItemContent"> & React.RefAttributes & (ITEM extends { label: DefaultItem["label"]; } ? {} : { getItemLabel: CollapseGroupPropGetItemLabel; }) & (ITEM extends { content: DefaultItem["content"]; } ? {} : { getItemContent: CollapseGroupPropGetItemContent; }) & { getItemLabel: CollapseGroupPropGetItemLabel | CollapseGroupPropGetItemLabel; getItemContent: CollapseGroupPropGetItemContent | CollapseGroupPropGetItemContent; getItemRightSide: CollapseGroupPropGetItemContent | CollapseGroupPropGetItemRightSide; }); export {};