diff --git a/src/frontend/src/components/inputComponent/index.tsx b/src/frontend/src/components/inputComponent/index.tsx index b9ed74dc2..5c0ffe93e 100644 --- a/src/frontend/src/components/inputComponent/index.tsx +++ b/src/frontend/src/components/inputComponent/index.tsx @@ -4,7 +4,7 @@ import { useEffect, useRef, useState } from "react"; import { InputComponentType } from "../../types/components"; import { handleKeyDown } from "../../utils/reactflowUtils"; import { classNames, cn } from "../../utils/utils"; -import IconComponent from "../genericIconComponent"; +import ForwardedIconComponent from "../genericIconComponent"; import { Command, CommandEmpty, @@ -19,7 +19,7 @@ import { Popover, PopoverContentWithoutPortal } from "../ui/popover"; export default function InputComponent({ autoFocus = false, onBlur, - value, + value = "", onChange, disabled, required = false, @@ -42,7 +42,7 @@ export default function InputComponent({ // Clear component state useEffect(() => { - if (disabled && value !== "") { + if (disabled && value && onChange && value !== "") { onChange(""); } }, [disabled]); @@ -75,7 +75,7 @@ export default function InputComponent({ )} placeholder={password && editNode ? "Key" : placeholder} onChange={(e) => { - onChange(e.target.value); + onChange && onChange(e.target.value); }} onCopy={(e) => { e.preventDefault(); @@ -95,25 +95,30 @@ export default function InputComponent({ ref={refInput} type="text" onBlur={onInputLostFocus} - value={value} + value={ + selectedOption !== "" || !onChange ? selectedOption : value + } autoFocus={autoFocus} - disabled={disabled || selectedOption !== ""} + disabled={disabled} onClick={() => { - selectedOption !== "" && setShowOptions(true); + (selectedOption !== "" || !onChange) && setShowOptions(true); }} required={required} className={classNames( - password && !pwdVisible && value !== "" + password && + selectedOption === "" && + !pwdVisible && + value !== "" ? " text-clip password " : "", editNode ? " input-edit-node " : "", - password && editNode ? "pr-8" : "", - password && !editNode ? "pr-10" : "", + password && selectedOption === "" && editNode ? "pr-8" : "", + password && selectedOption === "" && !editNode ? "pr-10" : "", className! )} placeholder={password && editNode ? "Key" : placeholder} onChange={(e) => { - onChange(e.target.value); + onChange && onChange(e.target.value); }} onKeyDown={(e) => { handleKeyDown(e, value, ""); @@ -148,7 +153,7 @@ export default function InputComponent({ setShowOptions(false); }} > -
{ setShowOptions((old) => !old); e.preventDefault(); @@ -187,21 +192,30 @@ export default function InputComponent({ - {password && ( + {password && selectedOption === "" && (