UNPKG

office-ui-fabric-react

Version:

Reusable React components for building experiences for Office 365.

117 lines (116 loc) 4.95 kB
/// <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; }