office-ui-fabric-react
Version:
Reusable React components for building experiences for Office 365.
117 lines (116 loc) • 4.95 kB
TypeScript
/// <reference types="react" />
import { IContextualMenuProps, IContextualMenuItem } from './ContextualMenu.types';
import { DirectionalHint } from '../../common/DirectionalHint';
import { BaseComponent } from '../../Utilities';
export interface IContextualMenuState {
expandedMenuItemKey?: string;
expandedByMouseClick?: boolean;
dismissedMenuItemKey?: string;
contextualMenuItems?: IContextualMenuItem[];
contextualMenuTarget?: Element;
submenuTarget?: Element;
positions?: any;
slideDirectionalClassName?: string;
subMenuId?: string;
submenuDirection?: DirectionalHint;
}
export declare function getSubmenuItems(item: IContextualMenuItem): any;
/**
* Returns true if a list of menu items can contain a checkbox
*/
export declare function canAnyMenuItemsCheck(items: IContextualMenuItem[]): boolean;
export declare class ContextualMenuBase extends BaseComponent<IContextualMenuProps, IContextualMenuState> {
static defaultProps: IContextualMenuProps;
private _host;
private _previousActiveElement;
private _isFocusingPreviousElement;
private _enterTimerId;
private _targetWindow;
private _target;
private _isScrollIdle;
private _scrollIdleTimeoutId;
private _processingExpandCollapseKeyOnly;
private _shouldUpdateFocusOnMouseEvent;
private _gotMouseMove;
private _mounted;
private _adjustedFocusZoneProps;
private _classNames;
constructor(props: IContextualMenuProps);
dismiss: (ev?: any, dismissAll?: boolean | undefined) => void;
componentWillUpdate(newProps: IContextualMenuProps): void;
componentWillMount(): void;
componentDidMount(): void;
componentWillUnmount(): void;
render(): JSX.Element | null;
private _onMenuOpened();
private _onMenuClosed();
/**
* Gets the focusZoneDirection by using the arrowDirection if specified,
* the direction specificed in the focusZoneProps, or defaults to FocusZoneDirection.vertical
*/
private _getFocusZoneDirection();
private _onRenderSubMenu(subMenuProps);
private _onRenderMenuList;
private _renderMenuItem(item, index, focusableElementIndex, totalItemCount, hasCheckmarks, hasIcons);
private _renderSectionItem(item, menuClassNames, index, hasCheckmarks, hasIcons);
private _renderListItem(content, key, classNames, title?);
private _renderSeparator(index, classNames, top?, fromSection?);
private _renderNormalItem(item, classNames, index, focusableElementIndex, totalItemCount, hasCheckmarks, hasIcons);
private _renderHeaderMenuItem(item, classNames, index, hasCheckmarks, hasIcons);
private _renderAnchorMenuItem(item, classNames, index, focusableElementIndex, totalItemCount, hasCheckmarks, hasIcons);
private _renderButtonItem(item, classNames, index, focusableElementIndex, totalItemCount, hasCheckmarks?, hasIcons?);
private _renderSplitButton(item, classNames, index, focusableElementIndex, totalItemCount, hasCheckmarks?, hasIcons?);
private _onKeyDown;
private _shouldHandleKeyDown;
private _onMenuFocusCapture;
private _onKeyUp;
private _shouldHandleKeyUp;
private _isExpandCollapseKey(ev);
private _keyHandler;
/**
* Checks if the submenu should be closed
*/
private _shouldCloseSubMenu;
private _onMenuKeyDown;
/**
* Scroll handler for the callout to make sure the mouse events
* for updating focus are not interacting during scroll
*/
private _onScroll;
private _onItemMouseEnterBase;
private _onItemMouseMoveBase;
private _shouldIgnoreMouseEvent();
private _onMouseItemLeave;
/**
* Handles updating focus when mouseEnter or mouseMove fire.
* As part of updating focus, This function will also update
* the expand/collapse state accordingly.
*/
private _updateFocusOnMouseEvent(item, ev, target?);
private _onItemMouseDown;
private _onItemClick;
private _onItemClickBase;
private _onAnchorClick;
private _executeItemClick;
private _onItemKeyDown;
private _cancelSubMenuTimer;
private _onItemSubMenuExpand;
private _getSubmenuProps();
private _findItemByKey(key);
/**
* Returns the item that mathes a given key if any.
* @param key The key of the item to match
* @param items The items to look for the key
*/
private _findItemByKeyFromItems(key, items);
/**
* This function is called ASYNCHRONOUSLY, and so there is a chance it is called
* after the component is unmounted. The _mounted property is added to prevent
* from calling setState() after unmount. Do NOT copy this pattern in synchronous
* code.
*/
private _onSubMenuDismiss;
private _setTargetWindowAndElement(target);
private _getSubMenuId;
private _onPointerAndTouchEvent;
}