///
import { IButtonProps } from '../../Button';
import { ContentSize } from '../../Callout';
import { TitleSize } from '../../Header';
import { IIconProps } from '../../Icon';
export interface IPanel {
animateOut(): Promise;
}
export declare const enum PanelCloseButtonSize {
small = 0,
large = 1
}
export interface IPanelProps extends ICustomPanelProps {
/**
* If these props are provided, the panel's header will draw a back button before the panel
* header's title. By default this will use a subtle button with the "Back" icon,
* but these props can override those choices.
*/
backButtonProps?: IButtonProps;
/**
* Optional, description of panel.
*/
description?: string;
/**
* An optional list of props to render as Buttons in the footer.
*/
footerButtonProps?: IButtonProps[];
/**
* Content to render while the panel is in a loading / working state.
* Should typically be called with a :
* overlayContent={}
*
* When this prop is defined, lightDismiss will be forced to false.
*/
overlayContent?: React.ReactNode;
/**
* If the panel should show a separator between the header and the content
* @default false
*/
showSeparator?: boolean;
/**
* The panel title you want to display.
*/
titleProps?: IPanelTitleProps;
}
export interface ICustomPanelProps {
/**
* Label used to describe the contents of the panel for aria enabled devices.
*/
ariaLabel?: string;
/**
* Id of the element used to describe the contents of the panel for aria enabled devices.
*/
ariaLabelledBy?: string;
/**
* This will dismiss the panel once it gets and then loses focus. Panels should
* dismiss when they lose focus unless they are intended to be modeless UI.
*
* @default false
*/
blurDismiss?: boolean;
/**
* css classname that shold be applied to the callout's root element.
*/
calloutClassName?: string;
/**
* An optional className to pass to the root Panel element
*/
className?: string;
/**
* CSS className that should be applied to the callout's content element.
*/
contentClassName?: string;
/**
* Element selector of the first focusable element. If no selector is supplied a hidden
* element will be created and focus given to the CommandBarFlyout through this element.
*/
defaultActiveElement?: string | (() => string);
/**
* The panel will handle keyboard events and when the escape key is pressed the
* panel will close if the the event hasnt had the defaultPrevented.
*
* @default true
*/
escDismiss?: boolean;
/**
* DOM element id.
*/
id?: string;
/**
* The panel element will trap mouse events and dismiss the panel when a click
* occurs. This will prevent the events from being handled by the underlying
* elements outside the panel's contents.
*
* @default true
*/
lightDismiss?: boolean;
/**
* The panel element will be given a class that is a semi-transparency that helps
* the user understand the user should focus on the panel and dismiss it before
* interacting with the underlying document.
*
* @default true
*/
modal?: boolean;
/**
* The delegate to handle dismissing the panel. This will be called when the user clicks the close button on the panel.
*/
onDismiss: () => void;
/**
* Size of the panel.
* @default ContentSize.Medium
*/
size?: ContentSize;
}
export interface IPanelHeaderProps {
/**
* If these props are provided, the panel's header will draw a back button before the panel
* header's title. By default this will use a subtle button with the "Back" icon,
* but these props can override those choices.
*/
backButtonProps?: IButtonProps;
/**
* An optional className to pass to the Panel Header element
*/
className?: string;
/**
* Size of the 'X' close button.
* @default PanelCloseButtonSize.large
*/
closeButtonSize?: PanelCloseButtonSize;
/**
* Optional, description of panel.
*/
description?: React.ReactNode;
/**
* The delegate to handle dismissing the panel. This will be called when the user clicks the close button on the panel.
*/
onDismiss: () => void;
/**
* If the header should show a close button.
* @default: true
*/
showCloseButton?: boolean;
/**
* If the panel should show a separator between the header and the content
* @default false
*/
showSeparator?: boolean;
/**
* The panel title you want to display.
*/
titleProps?: IPanelTitleProps;
}
export interface IPanelOverlayProps {
/**
* Content to render while the panel is in a loading / working state.
* Should typically be called with a :
* overlayContent={}
*/
overlayContent?: React.ReactNode;
}
export interface IPanelTitleProps {
/**
* An optional className to pass to the title
*/
className?: string;
/**
* Optional icon props to pass to the title
*/
iconProps?: IIconProps;
/**
* An optional id used for the title's text. Should only be used if there is a custom element
* to use as the label for the panel.
*/
id?: string;
/**
* Optional size to render the panel's title
*/
size?: TitleSize;
/**
* Optional title to display for the panel
*/
text?: string;
}
export interface IPanelCloseButtonProps {
/**
* An optional className to pass to the Panel's close button element
*/
className?: string;
/**
* The delegate to handle dismissing the panel. This will be called when the user clicks the close button on the panel.
*/
onDismiss: () => void;
/**
* Optional size to render the panel close button.
* @default PanelCloseButtonSize.large
*/
size?: PanelCloseButtonSize;
}
export interface IPanelContentProps {
/**
* An optional className to pass to the Panel's content element
*/
className?: string;
}
export interface IPanelFooterProps {
/**
* An optional className to pass to the Panel's footer element
*/
className?: string;
/**
* If the panel should show a separator between the content and the footer
* @default false
*/
showSeparator?: boolean;
/**
* An optional list of props to render as Buttons in the footer.
*/
buttonProps?: IButtonProps[];
}