diff --git a/src/frontend/src/components/core/appHeaderComponent/components/FlowMenu/index.tsx b/src/frontend/src/components/core/appHeaderComponent/components/FlowMenu/index.tsx index 7aad08241..c65cbe1aa 100644 --- a/src/frontend/src/components/core/appHeaderComponent/components/FlowMenu/index.tsx +++ b/src/frontend/src/components/core/appHeaderComponent/components/FlowMenu/index.tsx @@ -197,7 +197,10 @@ export const MenuBar = memo((): JSX.Element => { sideOffset={15} > Flow Details - setOpenSettings(false)} /> + setOpenSettings(false)} + open={openSettings} + /> ) : ( diff --git a/src/frontend/src/components/core/editFlowSettingsComponent/index.tsx b/src/frontend/src/components/core/editFlowSettingsComponent/index.tsx index a67a85898..130674d7a 100644 --- a/src/frontend/src/components/core/editFlowSettingsComponent/index.tsx +++ b/src/frontend/src/components/core/editFlowSettingsComponent/index.tsx @@ -1,11 +1,13 @@ -import React, { ChangeEvent, useState } from "react"; +import * as Form from "@radix-ui/react-form"; +import React, { useState } from "react"; import { InputProps } from "../../../types/components"; import { cn } from "../../../utils/utils"; import { Input } from "../../ui/input"; -import { Label } from "../../ui/label"; import { Textarea } from "../../ui/textarea"; -export const EditFlowSettings: React.FC = ({ +export const EditFlowSettings: React.FC< + InputProps & { submitForm?: () => void } +> = ({ name, invalidNameList = [], description, @@ -14,13 +16,14 @@ export const EditFlowSettings: React.FC = ({ minLength = 1, setName, setDescription, -}: InputProps): JSX.Element => { + submitForm, +}: InputProps & { submitForm?: () => void }): JSX.Element => { const [isMaxLength, setIsMaxLength] = useState(false); const [isMaxDescriptionLength, setIsMaxDescriptionLength] = useState(false); const [isMinLength, setIsMinLength] = useState(false); const [isInvalidName, setIsInvalidName] = useState(false); - const handleNameChange = (event: ChangeEvent) => { + const handleNameChange = (event: React.ChangeEvent) => { const { value } = event.target; if (value.length >= maxLength) { setIsMaxLength(true); @@ -41,16 +44,15 @@ export const EditFlowSettings: React.FC = ({ invalid = false; } setIsInvalidName(invalid); - setName!(value); - if (value.length === 0) { - // For empty string, update state but keep isMinLength true setIsMinLength(true); } }; - const handleDescriptionChange = (event: ChangeEvent) => { + const handleDescriptionChange = ( + event: React.ChangeEvent, + ) => { const { value } = event.target; if (value.length >= descriptionMaxLength) { setIsMaxDescriptionLength(true); @@ -60,14 +62,25 @@ export const EditFlowSettings: React.FC = ({ setDescription!(value); }; - //this function is necessary to select the text when double clicking, this was not working with the onFocus event + const handleDescriptionKeyDown = ( + event: React.KeyboardEvent, + ) => { + if (event.key === "Enter" && !event.shiftKey) { + event.preventDefault(); + if (submitForm) submitForm(); + } + // else allow default (newline) + }; + const handleFocus = (event) => event.target.select(); return ( <> - -