office-ui-fabric-react
Version:
Reusable React components for building experiences for Office 365.
113 lines (112 loc) • 4.44 kB
TypeScript
import * as React from 'react';
import { IFocusZoneProps } from '../../FocusZone';
import { IKeytipProps } from '../../Keytip';
import { IStyle } from '../../Styling';
import { IRefObject, IRenderFunction, IStyleFunctionOrObject } from '../../Utilities';
import { OverflowSetBase } from './OverflowSet.base';
export interface IOverflowSet {
/**
* Sets focus to the first tabbable item in the zone.
* @param {boolean} forceIntoFirstElement If true, focus will be forced into the first element, even if focus is already in the focus zone.
* @returns True if focus could be set to an active element, false if no operation was taken.
*/
focus(forceIntoFirstElement?: boolean): boolean;
/**
* Sets focus to a specific child element within the zone. This can be used in conjunction with
* onBeforeFocus to created delayed focus scenarios (like animate the scroll position to the correct
* location and then focus.)
* @param {HTMLElement} childElement The child element within the zone to focus.
* @returns True if focus could be set to an active element, false if no operation was taken.
*/
focusElement(childElement?: HTMLElement): boolean;
}
export interface IOverflowSetProps extends React.Props<OverflowSetBase> {
/**
* Gets the component ref.
*/
componentRef?: IRefObject<IOverflowSet>;
/**
* Class name
*/
className?: string;
/**
* An array of items to be rendered by your onRenderItem function in the primary content area
*/
items?: IOverflowSetItemProps[];
/**
* Change item layout direction to vertical/stacked.
* @default false
*/
vertical?: boolean;
/**
* An array of items to be passed to overflow contextual menu
*/
overflowItems?: IOverflowSetItemProps[];
/**
* Method to call when trying to render an item.
*/
onRenderItem: (item: IOverflowSetItemProps) => any;
/**
* Rendering method for overflow button and contextual menu. The argument to the function is
* the overflowItems passed in as props to this function.
*/
onRenderOverflowButton: IRenderFunction<any[]>;
/**
* Custom properties for OverflowSet's FocusZone.
* If doNotContainWithinFocusZone is set to true focusZoneProps will be ignored.
* Use one or the other.
*/
focusZoneProps?: IFocusZoneProps;
/**
* If true do not contain the OverflowSet inside of a FocusZone,
* otherwise the OverflowSet will contain a FocusZone.
* If this is set to true focusZoneProps will be ignored.
* Use one or the other.
*/
doNotContainWithinFocusZone?: boolean;
/**
* The role for the OverflowSet.
* @default 'menubar'
*/
role?: string;
/**
* Optional full keytip sequence for the overflow button, if it will have a keytip.
*/
keytipSequences?: string[];
/**
* Function that will take in an IOverflowSetItemProps and return the subMenu for that item.
* If not provided, will use 'item.subMenuProps.items' by default.
* This is only used if your overflow set has keytips.
*/
itemSubMenuProvider?: (item: IOverflowSetItemProps) => any[] | undefined;
/**
* Call to provide customized styling that will layer on top of the variant rules.
*/
styles?: IStyleFunctionOrObject<IOverflowSetProps, IOverflowSetStyles>;
}
export interface IOverflowSetStyles {
/** The style that is layered onto the root element of OverflowSet. */
root?: IStyle;
/** The style that is layered onto each individual item in the overflow set. */
item?: IStyle;
/** The style that is layered onto the overflow button for the overflow set. */
overflowButton?: IStyle;
}
/**
* The props needed to construct styles. This represents the simplified set of immutable things which control the class names.
*/
export declare type IOverflowSetStyleProps = Pick<IOverflowSetProps, 'vertical' | 'className'>;
export interface IOverflowSetItemProps {
/**
* Unique id to identify the item.
*/
key: string;
/**
* Optional keytip for the overflowSetItem.
*/
keytipProps?: IKeytipProps;
/**
* Any additional properties to use when custom rendering menu items.
*/
[propertyName: string]: any;
}