import * as React from 'react'; import { ContextualMenuItemType, DirectionalHint, IContextualMenuProps, IContextualMenuItem, } from 'office-ui-fabric-react/lib/ContextualMenu'; import { DefaultButton, IconButton } from 'office-ui-fabric-react/lib/Button'; import { FocusZoneDirection } from 'office-ui-fabric-react/lib/FocusZone'; import './ContextualMenuExample.scss'; export const ContextualMenuCustomizationExample: React.FunctionComponent = () => { return ; }; function renderCharmMenuItem(item: IContextualMenuItem, dismissMenu: () => void): JSX.Element { return ( ); } function renderCategoriesList(item: IContextualMenuItem): JSX.Element { return ( ); } interface ICategoryList { name: string; color: string; } const menuItems: IContextualMenuItem[] = [ { key: 'newItem', text: 'New', }, { key: 'upload', text: 'Upload', }, { key: 'divider_1', itemType: ContextualMenuItemType.Divider, }, { key: 'charm', text: 'Charm', className: 'Charm-List', ariaLabel: 'Charm. Press enter, space or right arrow keys to open submenu.', subMenuProps: { focusZoneProps: { direction: FocusZoneDirection.bidirectional }, items: [ { key: 'none', text: 'None', }, { key: 'bulb', text: 'Lightbulb', onRender: renderCharmMenuItem, className: 'ms-ContextualMenu-customizationExample-item', }, { key: 'run', text: 'Running', onRender: renderCharmMenuItem, className: 'ms-ContextualMenu-customizationExample-item', }, { key: 'plane', text: 'Airplane', onRender: renderCharmMenuItem, className: 'ms-ContextualMenu-customizationExample-item', }, { key: 'page', text: 'Page', onRender: renderCharmMenuItem, className: 'ms-ContextualMenu-customizationExample-item', }, { key: 'cake', text: 'Cake', onRender: renderCharmMenuItem, className: 'ms-ContextualMenu-customizationExample-item', }, { key: 'soccer', text: 'Soccer', onRender: renderCharmMenuItem, className: 'ms-ContextualMenu-customizationExample-item', }, { key: 'home', text: 'Home', onRender: renderCharmMenuItem, className: 'ms-ContextualMenu-customizationExample-item', }, { key: 'emoji', text: 'Emoji2', onRender: renderCharmMenuItem, className: 'ms-ContextualMenu-customizationExample-item', }, { key: 'work', text: 'Work', onRender: renderCharmMenuItem, className: 'ms-ContextualMenu-customizationExample-item', }, { key: 'coffee', text: 'Coffee', onRender: renderCharmMenuItem, className: 'ms-ContextualMenu-customizationExample-item', }, { key: 'people', text: 'People', onRender: renderCharmMenuItem, className: 'ms-ContextualMenu-customizationExample-item', }, { key: 'stopwatch', text: 'Stopwatch', onRender: renderCharmMenuItem, className: 'ms-ContextualMenu-customizationExample-item', }, { key: 'music', text: 'MusicInCollectionFill', onRender: renderCharmMenuItem, className: 'ms-ContextualMenu-customizationExample-item', }, { key: 'lock', text: 'Lock', onRender: renderCharmMenuItem, className: 'ms-ContextualMenu-customizationExample-item', }, ], }, }, { key: 'categories', text: 'Categorize', ariaLabel: 'Categorize. Press enter, space or right arrow keys to open submenu.', subMenuProps: { items: [ { key: 'categories', text: 'categories', categoryList: [ { name: 'Personal', color: 'yellow', }, { name: 'Work', color: 'green', }, { name: 'Birthday', color: 'blue', }, { name: 'Spam', color: 'grey', }, { name: 'Urgent', color: 'red', }, { name: 'Hobbies', color: 'black', }, ], onRender: renderCategoriesList, }, { key: 'divider_1', itemType: ContextualMenuItemType.Divider, }, { key: 'clear', text: 'Clear categories', }, { key: 'manage', text: 'Manage categories', }, ], }, }, ]; const menuProps: IContextualMenuProps = { shouldFocusOnMount: true, directionalHint: DirectionalHint.bottomLeftEdge, className: 'ms-ContextualMenu-customizationExample', items: menuItems, };