Tooltip
Contextual UI to edit elements next to the selection in Workspace
Tooltip, a UI component similar to the Toolbar, is designed to change elements on the canvas, reorder and align them. It is rendered next to a selected element — a behavior you can modify.

How to customize Tooltip?
Similar to the Toolbar, Tooltip supports a special components property to add/change/remove most of its UI parts.
Pass a component using the name format TypeName, where Type refers to the element type. For example: TextFill. You can use built-in element types like Text, Image, svg. You can also use the Many prefix when several elements are selected. Additionally, you can define your own components for any element type, e.g. ImageAlertButton.
import { observer } from 'mobx-react-lite';
import { Workspace } from 'polotno/canvas/workspace';
import { Tooltip } from 'polotno/canvas/tooltip';
const MyColorPicker = observer(({ store, element, elements }) => {
// store - main polotno store object
// elements - array of selected elements. Same as store.selectedElements
// element - first selected element. Same as store.selectedElements[0]
return (
<div>
<input
type="color"
value={element.fill}
onChange={(e) => {
element.set({
fill: e.target.value,
});
}}
/>
</div>
);
});
const App = ({ store }) => {
return (
<div
style={{
display: 'flex',
height: '100%',
margin: 'auto',
flex: 1,
flexDirection: 'column',
position: 'relative',
}}
>
<Workspace
store={store}
components={{
Tooltip,
TextFill: MyColorPicker,
}}
/>
</div>
);
};Tip for images: prefix the component name with Image, for example ImageActionButton: MyComponent.
How to disable Tooltip?
Pass a Tooltip component that renders null.
import { Toolbar } from 'polotno/toolbar/toolbar';
import { Workspace } from 'polotno/canvas/workspace';
const Tooltip = () => null;
const App = ({ store }) => {
return (
<div
style={{
display: 'flex',
height: '100%',
margin: 'auto',
flex: 1,
flexDirection: 'column',
position: 'relative',
}}
>
<Toolbar store={store} />
<Workspace store={store} components={{ Tooltip }} />
</div>
);
};