From d29696296f0834ec4847c3d3ebe6e1fa7a01d8e2 Mon Sep 17 00:00:00 2001 From: Bruno Quaresma Date: Wed, 30 Aug 2023 18:42:36 -0300 Subject: [PATCH] refactor(site): refactor rich parameter input and form initial data (#9440) --- .../MultiTextField/MultiTextField.tsx | 3 + .../RichParameterInput.stories.tsx | 18 +-- .../RichParameterInput/RichParameterInput.tsx | 58 ++++----- .../TemplateParameters/TemplateParameters.tsx | 2 - .../BuildParametersPopover.tsx | 6 +- .../CreateWorkspacePageView.tsx | 20 +--- .../TemplateEmbedPage/TemplateEmbedPage.tsx | 45 +++---- .../UpdateBuildParametersDialog.tsx | 14 +-- .../WorkspacePage/WorkspaceReadyPage.tsx | 2 +- .../WorkspaceParametersForm.tsx | 75 +++++------- site/src/utils/richParameters.test.ts | 6 +- site/src/utils/richParameters.ts | 113 +++++------------- 12 files changed, 132 insertions(+), 230 deletions(-) diff --git a/site/src/components/MultiTextField/MultiTextField.tsx b/site/src/components/MultiTextField/MultiTextField.tsx index a3244580b6..f5b5712305 100644 --- a/site/src/components/MultiTextField/MultiTextField.tsx +++ b/site/src/components/MultiTextField/MultiTextField.tsx @@ -5,12 +5,14 @@ import { FC } from "react" export type MultiTextFieldProps = { label: string + id?: string values: string[] onChange: (values: string[]) => void } export const MultiTextField: FC = ({ label, + id, values, onChange, }) => { @@ -30,6 +32,7 @@ export const MultiTextField: FC = ({ /> ))} { diff --git a/site/src/components/RichParameterInput/RichParameterInput.stories.tsx b/site/src/components/RichParameterInput/RichParameterInput.stories.tsx index 2048a96f7e..3184d18033 100644 --- a/site/src/components/RichParameterInput/RichParameterInput.stories.tsx +++ b/site/src/components/RichParameterInput/RichParameterInput.stories.tsx @@ -35,7 +35,7 @@ const createTemplateVersionParameter = ( export const Basic: Story = { args: { - initialValue: "initial-value", + value: "initial-value", id: "project_name", parameter: createTemplateVersionParameter({ name: "project_name", @@ -47,7 +47,7 @@ export const Basic: Story = { export const NumberType: Story = { args: { - initialValue: "4", + value: "4", id: "number_parameter", parameter: createTemplateVersionParameter({ name: "number_parameter", @@ -59,7 +59,7 @@ export const NumberType: Story = { export const BooleanType: Story = { args: { - initialValue: "false", + value: "false", id: "bool_parameter", parameter: createTemplateVersionParameter({ name: "bool_parameter", @@ -71,7 +71,7 @@ export const BooleanType: Story = { export const OptionsType: Story = { args: { - initialValue: "first_option", + value: "first_option", id: "options_parameter", parameter: createTemplateVersionParameter({ name: "options_parameter", @@ -103,7 +103,7 @@ export const OptionsType: Story = { export const ListStringType: Story = { args: { - initialValue: JSON.stringify(["first", "second", "third"]), + value: JSON.stringify(["first", "second", "third"]), id: "list_string_parameter", parameter: createTemplateVersionParameter({ name: "list_string_parameter", @@ -115,7 +115,7 @@ export const ListStringType: Story = { export const IconLabel: Story = { args: { - initialValue: "initial-value", + value: "initial-value", id: "project_name", parameter: createTemplateVersionParameter({ name: "project_name", @@ -128,7 +128,7 @@ export const IconLabel: Story = { export const NoDescription: Story = { args: { - initialValue: "", + value: "", id: "region", parameter: createTemplateVersionParameter({ name: "Region", @@ -164,7 +164,7 @@ export const NoDescription: Story = { export const DescriptionWithLinks: Story = { args: { - initialValue: "", + value: "", id: "coder-repository-directory", parameter: createTemplateVersionParameter({ name: "Coder Repository Directory", @@ -183,7 +183,7 @@ export const DescriptionWithLinks: Story = { export const BasicWithDisplayName: Story = { args: { - initialValue: "initial-value", + value: "initial-value", id: "project_name", parameter: createTemplateVersionParameter({ name: "project_name", diff --git a/site/src/components/RichParameterInput/RichParameterInput.tsx b/site/src/components/RichParameterInput/RichParameterInput.tsx index 4e3a671706..6b905fe36e 100644 --- a/site/src/components/RichParameterInput/RichParameterInput.tsx +++ b/site/src/components/RichParameterInput/RichParameterInput.tsx @@ -4,7 +4,7 @@ import RadioGroup from "@mui/material/RadioGroup" import { makeStyles } from "@mui/styles" import TextField, { TextFieldProps } from "@mui/material/TextField" import { Stack } from "components/Stack/Stack" -import { FC, useState } from "react" +import { FC } from "react" import { TemplateVersionParameter } from "../../api/typesGenerated" import { colors } from "theme/colors" import { MemoizedMarkdown } from "components/Markdown/Markdown" @@ -17,11 +17,10 @@ const isBoolean = (parameter: TemplateVersionParameter) => { } export interface ParameterLabelProps { - id: string parameter: TemplateVersionParameter } -const ParameterLabel: FC = ({ id, parameter }) => { +const ParameterLabel: FC = ({ parameter }) => { const styles = useStyles() const hasDescription = parameter.description && parameter.description !== "" const displayName = parameter.display_name @@ -29,7 +28,7 @@ const ParameterLabel: FC = ({ id, parameter }) => { : parameter.name return ( -