From 26ebf58a094aaf1bddefff2e5ce1b53997f4b7c8 Mon Sep 17 00:00:00 2001 From: Jaayden Halko Date: Tue, 27 May 2025 17:37:23 +0000 Subject: [PATCH] feat: add error form_type --- .../DynamicParameter.stories.tsx | 26 +++++++++ .../DynamicParameter/DynamicParameter.tsx | 56 ++++++++++++++++++- .../CreateWorkspacePageViewExperimental.tsx | 50 +---------------- 3 files changed, 82 insertions(+), 50 deletions(-) diff --git a/site/src/modules/workspaces/DynamicParameter/DynamicParameter.stories.tsx b/site/src/modules/workspaces/DynamicParameter/DynamicParameter.stories.tsx index 03aef9e6363bf..4d1e91d9bf3e3 100644 --- a/site/src/modules/workspaces/DynamicParameter/DynamicParameter.stories.tsx +++ b/site/src/modules/workspaces/DynamicParameter/DynamicParameter.stories.tsx @@ -156,6 +156,32 @@ export const Slider: Story = { }, }; +export const ErrorFormType: Story = { + args: { + parameter: { + ...MockPreviewParameter, + form_type: "error", + type: "string", + diagnostics: [ + { + severity: "error", + summary: "This is an error", + detail: + "This is a longer error message. This is a longer error message. This is a longer error message. This is a longer error message. This is a longer error message. This is a longer error message.", + extra: { code: "" }, + }, + { + severity: "error", + summary: "This is an error", + detail: + "This is a longer error message. This is a longer error message. This is a longer error message. This is a longer error message. This is a longer error message. This is a longer error message.", + extra: { code: "" }, + }, + ], + }, + }, +}; + export const Disabled: Story = { args: { parameter: { diff --git a/site/src/modules/workspaces/DynamicParameter/DynamicParameter.tsx b/site/src/modules/workspaces/DynamicParameter/DynamicParameter.tsx index 78b1a3e90eade..72113ce8f504b 100644 --- a/site/src/modules/workspaces/DynamicParameter/DynamicParameter.tsx +++ b/site/src/modules/workspaces/DynamicParameter/DynamicParameter.tsx @@ -34,7 +34,13 @@ import { } from "components/Tooltip/Tooltip"; import { useDebouncedValue } from "hooks/debounce"; import { useEffectEvent } from "hooks/hookPolyfills"; -import { Info, LinkIcon, Settings, TriangleAlert } from "lucide-react"; +import { + CircleAlert, + Info, + LinkIcon, + Settings, + TriangleAlert, +} from "lucide-react"; import { type FC, useEffect, useId, useRef, useState } from "react"; import type { AutofillBuildParameter } from "utils/richParameters"; import * as Yup from "yup"; @@ -89,7 +95,9 @@ export const DynamicParameter: FC = ({ /> )} - + {parameter.form_type !== "error" && ( + + )} ); }; @@ -508,6 +516,8 @@ const ParameterField: FC = ({ {parameter.value.value} ); + case "error": + return ; } }; @@ -832,3 +842,45 @@ const parameterError = ( (match) => r.get(match) || "", ); }; + +interface DiagnosticsProps { + diagnostics: PreviewParameter["diagnostics"]; +} + +// Displays a diagnostic with a border, icon and background color +export const Diagnostics: FC = ({ diagnostics }) => { + return ( +
+ {diagnostics.map((diagnostic, index) => ( +
+
+ {diagnostic.severity === "error" && ( +
+
+ ))} +
+ ); +}; diff --git a/site/src/pages/CreateWorkspacePage/CreateWorkspacePageViewExperimental.tsx b/site/src/pages/CreateWorkspacePage/CreateWorkspacePageViewExperimental.tsx index 96648eb3857d9..9c310a0a29dfd 100644 --- a/site/src/pages/CreateWorkspacePage/CreateWorkspacePageViewExperimental.tsx +++ b/site/src/pages/CreateWorkspacePage/CreateWorkspacePageViewExperimental.tsx @@ -26,14 +26,9 @@ import { } from "components/Tooltip/Tooltip"; import { UserAutocomplete } from "components/UserAutocomplete/UserAutocomplete"; import { type FormikContextType, useFormik } from "formik"; -import { - ArrowLeft, - CircleAlert, - CircleHelp, - TriangleAlert, - Undo2, -} from "lucide-react"; +import { ArrowLeft, CircleHelp, Undo2 } from "lucide-react"; import { useSyncFormParameters } from "modules/hooks/useSyncFormParameters"; +import { Diagnostics } from "modules/workspaces/DynamicParameter/DynamicParameter"; import { DynamicParameter, getInitialParameterValues, @@ -665,44 +660,3 @@ export const CreateWorkspacePageViewExperimental: FC< ); }; - -interface DiagnosticsProps { - diagnostics: PreviewParameter["diagnostics"]; -} - -const Diagnostics: FC = ({ diagnostics }) => { - return ( -
- {diagnostics.map((diagnostic, index) => ( -
-
- {diagnostic.severity === "error" && ( -
-
- ))} -
- ); -};