import * as React from 'react';
import {
Toolbar,
Tooltip,
ToolbarItemShorthandKinds,
tooltipAsLabelBehavior,
ToolbarItemProps,
ToolbarDividerProps,
ToolbarMenuItemProps,
} from '@fluentui/react-northstar';
import { useBooleanKnob } from '@fluentui/docs-components';
import { BoldIcon, CodeSnippetIcon, ItalicIcon, MoreIcon, QuoteIcon } from '@fluentui/react-icons-northstar';
type IntermediateToolbarItem = (ToolbarItemProps | ToolbarMenuItemProps | ToolbarDividerProps) & {
key: string;
kind?: keyof ToolbarItemShorthandKinds;
tooltip?: string;
};
const ToolbarExampleShorthand = () => {
const [isBold, setBold] = useBooleanKnob({ name: 'bold', initialValue: true });
const [isItalic, setItalic] = useBooleanKnob({ name: 'isItalic', initialValue: false });
const [moreMenuOpen, setMoreMenuOpen] = useBooleanKnob({
name: 'moreMenuOpen',
initialValue: false,
});
const intermediateItems: IntermediateToolbarItem[] = [
{
key: 'bold',
kind: 'toggle' as const,
active: isBold,
tooltip: 'Bold',
icon: ,
onClick: () => setBold(!isBold),
},
{
key: 'italic',
kind: 'toggle' as const,
active: isItalic,
tooltip: 'Italic',
icon: ,
onClick: () => setItalic(!isItalic),
},
{ key: 'divider1', kind: 'divider' as const },
{
key: 'more',
icon: ,
active: moreMenuOpen,
tooltip: 'More options',
menu: [
{
key: 'quote',
content: 'Quote',
icon: ,
},
{
key: 'code-snippet',
content: 'Code snippet',
icon: ,
},
],
menuOpen: moreMenuOpen,
onMenuOpenChange: (e, { menuOpen }) => setMoreMenuOpen(menuOpen),
},
];
return (
({
...item,
// rendering Tooltip for the Toolbar Item
children: item.tooltip
? (ToolbarItem, props) => {
const { tooltip, key, ...rest } = props;
// Adding tooltipAsLabelBehavior as the ToolbarItems contains only icon
return (
}
accessibility={tooltipAsLabelBehavior}
content={tooltip}
/>
);
}
: undefined,
}),
)}
/>
);
};
export default ToolbarExampleShorthand;