From b15cdec7011957d2b43d0393c308e4167d5ea161 Mon Sep 17 00:00:00 2001 From: Gregory Schier Date: Thu, 2 Nov 2023 20:38:33 -0700 Subject: [PATCH] Refactor environment edit dialog --- src-web/components/EnvironmentEditDialog.tsx | 116 ++++++++++++------ src-web/components/Overlay.tsx | 4 - .../components/WorkspaceActionsDropdown.tsx | 3 +- src-web/components/core/Button.tsx | 10 +- src-web/components/core/Dropdown.tsx | 1 + src-web/hooks/useCreateEnvironment.ts | 1 - 6 files changed, 88 insertions(+), 47 deletions(-) diff --git a/src-web/components/EnvironmentEditDialog.tsx b/src-web/components/EnvironmentEditDialog.tsx index 54513778..cdadbbc4 100644 --- a/src-web/components/EnvironmentEditDialog.tsx +++ b/src-web/components/EnvironmentEditDialog.tsx @@ -16,7 +16,10 @@ import { Icon } from './core/Icon'; import { usePrompt } from '../hooks/usePrompt'; import { InlineCode } from './core/InlineCode'; import { useWindowSize } from 'react-use'; -import type { GenericCompletionConfig } from './core/Editor/genericCompletion'; +import type { + GenericCompletionConfig, + GenericCompletionOption, +} from './core/Editor/genericCompletion'; import { useActiveWorkspace } from '../hooks/useActiveWorkspace'; import { useUpdateWorkspace } from '../hooks/useUpdateWorkspace'; @@ -25,8 +28,8 @@ interface Props { } export const EnvironmentEditDialog = function ({ initialEnvironment }: Props) { - const [selectedEnvironment, setSelectedEnvironment] = useState( - initialEnvironment, + const [selectedEnvironmentId, setSelectedEnvironmentId] = useState( + initialEnvironment?.id ?? null, ); const environments = useEnvironments(); const createEnvironment = useCreateEnvironment(); @@ -35,6 +38,11 @@ export const EnvironmentEditDialog = function ({ initialEnvironment }: Props) { const windowSize = useWindowSize(); const showSidebar = windowSize.width > 500; + const selectedEnvironment = useMemo( + () => environments.find((e) => e.id === selectedEnvironmentId) ?? null, + [environments, selectedEnvironmentId], + ); + return (
- - {environments.map((e) => ( - - ))} + +
+ {environments.map((e) => ( + setSelectedEnvironmentId(e.id)} + className="pl-2" + > + {e.name} + + ))} +
+ ); +} diff --git a/src-web/components/Overlay.tsx b/src-web/components/Overlay.tsx index f4defd51..b764dbcf 100644 --- a/src-web/components/Overlay.tsx +++ b/src-web/components/Overlay.tsx @@ -46,10 +46,6 @@ export function Overlay({ variant === 'default' && 'bg-gray-600/30 dark:bg-black/30 backdrop-blur-sm', )} /> - {/* Add region to still be able to drag the window */} - {variant !== 'transparent' && ( -
- )}
{children}
diff --git a/src-web/components/WorkspaceActionsDropdown.tsx b/src-web/components/WorkspaceActionsDropdown.tsx index c063f987..359e12d5 100644 --- a/src-web/components/WorkspaceActionsDropdown.tsx +++ b/src-web/components/WorkspaceActionsDropdown.tsx @@ -133,8 +133,7 @@ export const WorkspaceActionsDropdown = memo(function WorkspaceActionsDropdown({ const name = await prompt({ name: 'name', label: 'Name', - defaultValue: '', - description: 'Enter a name for the new workspace', + defaultValue: 'My Workspace', title: 'Create Workspace', }); createWorkspace.mutate({ name }); diff --git a/src-web/components/core/Button.tsx b/src-web/components/core/Button.tsx index 9d64b4b4..6e80c29b 100644 --- a/src-web/components/core/Button.tsx +++ b/src-web/components/core/Button.tsx @@ -72,7 +72,15 @@ const _Button = forwardRef(function Button( ) : leftSlot ? (
{leftSlot}
) : null} -
{children}
+
+ {children} +
{rightSlot &&
{rightSlot}
} {forDropdown && } diff --git a/src-web/components/core/Dropdown.tsx b/src-web/components/core/Dropdown.tsx index 3c4765dd..150505c9 100644 --- a/src-web/components/core/Dropdown.tsx +++ b/src-web/components/core/Dropdown.tsx @@ -366,6 +366,7 @@ function MenuItem({ className, focused, onFocus, item, onSelect, ...props }: Men 'focus:bg-highlight focus:text-gray-900 rounded', item.variant === 'danger' && 'text-red-600', )} + innerClassName="!text-left" {...props} >