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 (
-
{item.categoryList.map((category: ICategoryList) => (
{category.name}
))}
);
}
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,
};