Default What you get out of the box with this component:
Editable example
< Toolbar visible = { true } positionType = { ToolbarPositionType . None } >
< ToolbarButton
tooltip = { { content : "move up" } }
onClick = { ( ) => { } }
icon = { < ArrowUp /> }
/>
< ToolbarButton
tooltip = { { content : "move down" } }
onClick = { ( ) => { } }
icon = { < ArrowDown /> }
/>
< ToolbarButton
tooltip = { { content : "delete" } }
onClick = { ( ) => { } }
icon = { < Delete /> }
isDestructive = { true }
/>
</ Toolbar >
Auto-positioned relative to an element Using the ToolbarPositionType.Element position type, you can set an element for the toolbar to position relative to, and it will automatically update. Pass a DOM node as the element prop for this to work.
Editable example
( ) => {
const ref = React . useRef ( ) ;
const [ showToolbar , setShowToolbar ] = React . useState ( false ) ;
const [ text , setText ] = React . useState ( "Focus inside me to see the toolbar" ) ;
return (
< div >
< Toolbar visible = { showToolbar } positionType = { ToolbarPositionType . Element } element = { ref . current } >
< ToolbarButton
icon = { < ListMarkerDash /> }
tooltip = { { content : "Add dash" } }
onClick = { ( ) => setText ( text + "- " ) }
/>
< ToolbarButton
icon = { < ListMarkerCircle /> }
tooltip = { { content : "Add circle" } }
onClick = { ( ) => setText ( text + "* " ) }
/>
</ Toolbar >
< TextInput
label = " Sample text input "
multiline
value = { text }
onFocus = { ( ) => setShowToolbar ( true ) }
onBlur = { ( ) => setShowToolbar ( false ) }
onChange = { setText }
ref = { ref }
/>
</ div >
)
}
Toolbar children We provide three out-of-the-box toolbar children:
ToolbarButtonToolbarPopoverToolbarSeparatorToolbarButton Toolbar buttons are simple extensions to the IconButton component; they also take an optional selected prop to indicate whether or not the button is active.
Editable example
( ) => {
const [ italicSelected , setItalicSelected ] = React . useState ( false ) ;
return (
< Toolbar visible = { true } positionType = { ToolbarPositionType . None } >
< ToolbarButton
icon = { < Italic /> }
selected = { italicSelected }
aria-label = " Italic "
onClick = { ( ) => setItalicSelected ( ! italicSelected ) }
/>
< ToolbarButton
icon = { < Bold /> }
aria-label = " Bold "
/>
< ToolbarSeparator />
< ToolbarButton
icon = { < Delete /> }
aria-label = " Delete "
isDestructive = { true }
/>
</ Toolbar >
)
}
ToolbarPopover The ToolbarPopover is a regular Popover with better defaults for use within a Toolbar. Refer to the Popover documentation for usage instructions.
Editable example
( ) => {
return (
< Toolbar positionType = { ToolbarPositionType . None } visible >
< ToolbarButton icon = { < ArrowUp /> } disabled />
< ToolbarButton icon = { < ArrowDown /> } disabled />
< ToolbarPopover button = { ( buttonProps ) => < ToolbarButton { ... buttonProps } icon = { < Styles /> } /> } >
You found me!
</ ToolbarPopover >
</ Toolbar >
)
}
ToolbarSeparator A simple way to segment the toolbar is using a separator:
Editable example
< Toolbar visible = { true } positionType = { ToolbarPositionType . None } >
< ToolbarButton
icon = { < Styles /> }
aria-label = " Contextual styles "
/>
< ToolbarSeparator />
< ToolbarButton
icon = { < Delete /> }
aria-label = " Delete "
/>
</ Toolbar >
Best practices Only make use of a Toolbar when you are okay with controls being hidden behind selection or hover. By default, these controls won't have very strong discoverability or ease of access. When using the ToolbarButton component, always provide a label, either through the tooltip prop, or passing an aria-label prop if not Accessibility This component doesn't provide any accessibility provisions for screen readers