From 36527910f31b94c80e39b3521538ae7e46a8079e Mon Sep 17 00:00:00 2001 From: mathuo <6710312+mathuo@users.noreply.github.com> Date: Thu, 25 Apr 2024 22:14:39 +0100 Subject: [PATCH] chore: docs --- .../react/dockview/demo-dockview/src/app.tsx | 24 ++- .../demo-dockview/src/defaultLayout.ts | 4 +- .../demo-dockview/src/gridActions.tsx | 11 +- .../demo-dockview/src/groupActions.tsx | 199 +++++++++++------- .../demo-dockview/src/panelActions.tsx | 125 +++++------ 5 files changed, 214 insertions(+), 149 deletions(-) diff --git a/packages/docs/sandboxes/react/dockview/demo-dockview/src/app.tsx b/packages/docs/sandboxes/react/dockview/demo-dockview/src/app.tsx index 4db4c8aeb..c657af112 100644 --- a/packages/docs/sandboxes/react/dockview/demo-dockview/src/app.tsx +++ b/packages/docs/sandboxes/react/dockview/demo-dockview/src/app.tsx @@ -188,16 +188,20 @@ const DockviewDemo = (props: { theme?: string }) => { >
- - + {api && ( + + )} + {api && ( + + )}
{ let counter = 0; - return () => { - counter++; - }; + return () => counter++; })(); export function defaultConfig(api: DockviewApi) { diff --git a/packages/docs/sandboxes/react/dockview/demo-dockview/src/gridActions.tsx b/packages/docs/sandboxes/react/dockview/demo-dockview/src/gridActions.tsx index 667e789ee..11466bc12 100644 --- a/packages/docs/sandboxes/react/dockview/demo-dockview/src/gridActions.tsx +++ b/packages/docs/sandboxes/react/dockview/demo-dockview/src/gridActions.tsx @@ -34,11 +34,12 @@ export const GridActions = (props: { api?: DockviewApi }) => { } }; - const onAddPanel = () => { + const onAddPanel = (options?: { inactive: boolean }) => { props.api?.addPanel({ id: `id_${Date.now().toString()}`, component: 'default', title: `Tab ${nextId()}`, + inactive: options?.inactive, }); }; @@ -48,9 +49,15 @@ export const GridActions = (props: { api?: DockviewApi }) => { return (
- + diff --git a/packages/docs/sandboxes/react/dockview/demo-dockview/src/groupActions.tsx b/packages/docs/sandboxes/react/dockview/demo-dockview/src/groupActions.tsx index ded3f3637..2741a8e11 100644 --- a/packages/docs/sandboxes/react/dockview/demo-dockview/src/groupActions.tsx +++ b/packages/docs/sandboxes/react/dockview/demo-dockview/src/groupActions.tsx @@ -1,85 +1,136 @@ -import { DockviewApi } from 'dockview'; +import { DockviewApi, DockviewGroupLocation } from 'dockview'; +import * as React from 'react'; + +const GroupAction = (props: { + groupId: string; + groups: string[]; + api: DockviewApi; + activeGroup?: string; +}) => { + const onClick = () => { + props.api?.getGroup(props.groupId)?.focus(); + }; + + const isActive = props.activeGroup === props.groupId; + const group = React.useMemo( + () => props.api.getGroup(props.groupId), + [props.api, props.groupId] + ); + + const [location, setLocation] = + React.useState(null); + const [isMaximized, setIsMaximized] = React.useState(false); + + React.useEffect(() => { + if (!group) { + setLocation(null); + return; + } + + const disposable = group.api.onDidLocationChange((event) => { + setLocation(event.location); + }); + + const disposable2 = props.api.onDidMaximizedGroupChange(() => { + setIsMaximized(group.api.isMaximized()); + }); + + setLocation(group.api.location); + setIsMaximized(group.api.isMaximized()); + + return () => { + disposable.dispose(); + disposable2.dispose(); + }; + }, [group]); + + return ( +
+
+ +
+
+ + + + +
+
+ ); +}; export const GroupActions = (props: { groups: string[]; - api?: DockviewApi; + api: DockviewApi; activeGroup?: string; }) => { return (
- {props.groups.map((x) => { - const onClick = () => { - props.api?.getGroup(x)?.focus(); - }; + {props.groups.map((groupId) => { return ( -
-
- -
-
- - - - -
-
+ ); })}
diff --git a/packages/docs/sandboxes/react/dockview/demo-dockview/src/panelActions.tsx b/packages/docs/sandboxes/react/dockview/demo-dockview/src/panelActions.tsx index 5c378b637..d48bbadde 100644 --- a/packages/docs/sandboxes/react/dockview/demo-dockview/src/panelActions.tsx +++ b/packages/docs/sandboxes/react/dockview/demo-dockview/src/panelActions.tsx @@ -1,71 +1,76 @@ import { DockviewApi } from 'dockview'; +const PanelAction = (props: { + panels: string[]; + api: DockviewApi; + activePanel?: string; + panelId: string; +}) => { + const onClick = () => { + props.api?.getPanel(props.panelId)?.focus(); + }; + return ( +
+
+ +
+
+ + + +
+
+ ); +}; + export const PanelActions = (props: { panels: string[]; - api?: DockviewApi; + api: DockviewApi; activePanel?: string; }) => { return (
- {props.panels.map((x) => { - const onClick = () => { - props.api?.getPanel(x)?.focus(); - }; - return ( -
-
- -
-
- - - -
-
- ); + {props.panels.map((id) => { + return ; })}
);