diff options
Diffstat (limited to 'dev-docs/docs/@excalidraw/excalidraw/api/children-components/live-collaboration-trigger.mdx')
| -rw-r--r-- | dev-docs/docs/@excalidraw/excalidraw/api/children-components/live-collaboration-trigger.mdx | 62 |
1 files changed, 62 insertions, 0 deletions
diff --git a/dev-docs/docs/@excalidraw/excalidraw/api/children-components/live-collaboration-trigger.mdx b/dev-docs/docs/@excalidraw/excalidraw/api/children-components/live-collaboration-trigger.mdx new file mode 100644 index 0000000..ef74d0e --- /dev/null +++ b/dev-docs/docs/@excalidraw/excalidraw/api/children-components/live-collaboration-trigger.mdx @@ -0,0 +1,62 @@ +# LiveCollaborationTrigger + +If you implement live collaboration support and want to expose the same UI button as on [excalidraw.com](https://excalidraw.com), you can render the `<LiveCollaborationTrigger/>` component using the [renderTopRightUI](/docs/@excalidraw/excalidraw/api/props#rendertoprightui) prop. + +You'll need to supply `onSelect()` to handle opening of your collaboration dialog, but the button will display `appState.collaborators` count provided you have supplied it. + +| Prop | Type | Required | Default | Description | +| --- | --- | --- | --- | --- | +| `onSelect` | `function` | Yes | | Handler called when the user clicks on the button | +| `isCollaborating` | `boolean` | Yes | false | Whether live collaboration session is in effect. Modifies button style. | + +```tsx live +function App() { + const [excalidrawAPI, setExcalidrawAPI] = useState(null); + const [isCollaborating, setIsCollaborating] = useState(false); + return ( + <div style={{ height: "500px" }}> + <p style={{ fontSize: "16px" }}> + Selecting the checkbox to see the collaborator count + </p> + <label style={{ fontSize: "16px", fontWeight: "bold" }}> + <input + type="checkbox" + checked={isCollaborating} + onChange={() => { + if (!isCollaborating) { + const collaborators = new Map(); + collaborators.set("id1", { + username: "Doremon", + avatarUrl: "../../../../img/doremon.png", + }); + collaborators.set("id3", { + username: "Pika", + avatarUrl: "../../../../img/pika.jpeg", + }); + excalidrawAPI.updateScene({ collaborators }); + } else { + excalidrawAPI.updateScene({ + collaborators: new Map(), + }); + } + setIsCollaborating(!isCollaborating); + }} + /> + Show Collaborators + </label> + <Excalidraw + ref={(api) => setExcalidrawAPI(api)} + renderTopRightUI={() => ( + <LiveCollaborationTrigger + isCollaborating={isCollaborating} + onSelect={() => { + window.alert("You clicked on collab button"); + setIsCollaborating(true); + }} + /> + )} + ></Excalidraw> + </div> + ); +} +``` |
