From 97dd5b361ca45c517508f9e872239caf41eb3683 Mon Sep 17 00:00:00 2001 From: Lucas Oliveira <62335616+lucaseduoli@users.noreply.github.com> Date: Wed, 11 Jun 2025 12:23:16 -0300 Subject: [PATCH] fix: made button disabled state more congruent, made edit flow details submit on enter (#8339) * Changed textarea classes * Changed flowsettingscomponent to use form * changed edit flow settings to use form and to submit on enter * Reset form data on close * Updated disabled state to have lower opacity instead of to have set background * Fixed loading state of button --- .../components/FlowMenu/index.tsx | 5 +- .../core/editFlowSettingsComponent/index.tsx | 121 +++++++++++------- .../core/flowSettingsComponent/index.tsx | 78 ++++++----- src/frontend/src/components/ui/button.tsx | 11 +- .../src/modals/flowSettingsModal/index.tsx | 1 + src/frontend/src/style/applies.css | 2 +- 6 files changed, 135 insertions(+), 83 deletions(-) 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 ( <> - -