office-ui-fabric-react
Version:
Reusable React components for building experiences for Office 365.
208 lines (174 loc) • 5.59 kB
text/typescript
import * as React from 'react';
import { IModalProps } from '../../Modal';
import { DialogBase } from './Dialog.base';
import { DialogType, IDialogContentProps } from './DialogContent.types';
import { IButtonProps } from '../Button/Button.types';
import { IWithResponsiveModeState } from '../../utilities/decorators/withResponsiveMode';
import { IAccessiblePopupProps } from '../../common/IAccessiblePopupProps';
import { IStyle, ITheme } from '../../Styling';
import { IRefObject, IStyleFunctionOrObject } from '../../Utilities';
import { ICSSRule, ICSSPixelUnitRule } from '@uifabric/merge-styles/lib/IRawStyleBase';
export interface IDialog {}
export interface IDialogProps extends React.Props<DialogBase>, IWithResponsiveModeState, IAccessiblePopupProps {
/**
* Optional callback to access the IDialog interface. Use this instead of ref for accessing
* the public methods and properties of the component.
*/
componentRef?: IRefObject<IDialog>;
/**
* Call to provide customized styling that will layer on top of the variant rules
*/
styles?: IStyleFunctionOrObject<IDialogStyleProps, IDialogStyles>;
/**
* Theme provided by HOC.
*/
theme?: ITheme;
/**
* Props to be passed through to Dialog Content
*/
dialogContentProps?: IDialogContentProps;
/**
* A callback function for when the Dialog is dismissed from the close button or light dismiss. Can also be specified separately in content and modal.
*/
onDismiss?: (ev?: React.MouseEvent<HTMLButtonElement>) => any;
/**
* Whether the dialog is hidden.
* @default true
*/
hidden?: boolean;
/**
* Props to be passed through to Modal
*/
modalProps?: IModalProps;
/**
* Whether the dialog is displayed.
* @default false
* @deprecated Use hidden instead
*/
isOpen?: boolean;
/**
* Whether the overlay is dark themed.
* @default true
* @deprecated Pass through via modalProps instead
*/
isDarkOverlay?: boolean;
/**
* A callback function which is called after the Dialog is dismissed and the animation is complete.
* @deprecated Pass through via modalProps instead
*/
onDismissed?: () => any;
/**
* Whether the dialog can be light dismissed by clicking outside the dialog (on the overlay).
* @default false
* @deprecated Pass through via modalProps instead
*/
isBlocking?: boolean;
/**
* Optional class name to be added to the root class
* @deprecated Pass through via modalProps.className instead
*/
className?: string;
/**
* Optional override for container class
* @deprecated Pass through via modalProps.className instead
*/
containerClassName?: string;
/**
* A callback function for when the Dialog content is mounted on the overlay layer
* @deprecated Pass through via modalProps instead
*/
onLayerDidMount?: () => void;
/**
* Deprecated at 0.81.2, use 'onLayerDidMount' instead.
* @deprecated
*/
onLayerMounted?: () => void;
/**
* The type of Dialog to display.
* @default DialogType.normal
* @deprecated Pass through via dialogContentProps instead
*/
type?: DialogType;
/**
* The title text to display at the top of the dialog.
* @deprecated Pass through via dialogContentProps instead
*/
title?: string;
/**
* The subtext to display in the dialog.
* @deprecated Pass through via dialogContentProps instead
*/
subText?: string;
/**
* Optional override content class
* @deprecated Pass through via dialogContentProps instead as className
*/
contentClassName?: string;
/**
* Other top buttons that will show up next to the close button
* @deprecated Pass through via dialogContentProps instead
*/
topButtonsProps?: IButtonProps[];
/**
* Optional id for aria-LabelledBy
* @deprecated Pass through via modalProps.titleAriaId instead
*/
ariaLabelledById?: string;
/**
* Optional id for aria-DescribedBy
* @deprecated Pass through via modalProps.subtitleAriaId instead
*/
ariaDescribedById?: string;
/**
* Sets the minimum width of the dialog. It limits the width property to be not
* smaller than the value specified in min-width.
*/
minWidth?: ICSSRule | ICSSPixelUnitRule;
/**
* Sets the maximum width for the dialog. It limits the width property to be larger
* than the value specified in max-width.
*/
maxWidth?: ICSSRule | ICSSPixelUnitRule;
}
export interface IDialogStyleProps {
/**
* Accept theme prop.
*/
theme: ITheme;
/**
* Accept custom classNames
*/
className?: string;
/**
* Optional override for container class
* @deprecated Pass through via modalProps.className instead
*/
containerClassName?: string;
/**
* Optional override content class
* @deprecated Pass through via dialogContentProps instead as className
*/
contentClassName?: string;
/**
* Whether the dialog is hidden.
* @default false
*/
hidden?: boolean;
/**
* Default min-width for the dialog box.
* @defaultvalue '288px'
*/
dialogDefaultMinWidth?: string | ICSSRule | ICSSPixelUnitRule;
/**
* Default max-width for the dialog box.
* @defaultvalue '340px'
*/
dialogDefaultMaxWidth?: string | ICSSRule | ICSSPixelUnitRule;
}
export interface IDialogStyles {
/**
* Style for the root element.
*/
root: IStyle;
main: IStyle;
}