summaryrefslogtreecommitdiffstats
path: root/dev-docs/docs/@excalidraw/excalidraw/api/children-components/live-collaboration-trigger.mdx
diff options
context:
space:
mode:
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.mdx62
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>
+ );
+}
+```