diff --git a/.changeset/empty-helper-wrapper-div.md b/.changeset/empty-helper-wrapper-div.md new file mode 100644 index 0000000000..ca62626cd4 --- /dev/null +++ b/.changeset/empty-helper-wrapper-div.md @@ -0,0 +1,6 @@ +--- +"@nextui-org/select": patch +"@nextui-org/input": patch +--- + +- Fixed a UI sliding issue caused by the helper wrapper being rendered when `isInvalid` was false but `errorMessage` was present diff --git a/packages/components/input/src/input.tsx b/packages/components/input/src/input.tsx index 10c5ecf10e..91dadea0e9 100644 --- a/packages/components/input/src/input.tsx +++ b/packages/components/input/src/input.tsx @@ -43,15 +43,18 @@ const Input = forwardRef<"input", InputProps>((props, ref) => { }, [isClearable, getClearButtonProps]); const helperWrapper = useMemo(() => { - if (!hasHelper) return null; + const shouldShowError = isInvalid && errorMessage; + const hasContent = shouldShowError || description; + + if (!hasHelper || !hasContent) return null; return (
- {isInvalid && errorMessage ? ( + {shouldShowError ? (
{errorMessage}
- ) : description ? ( + ) : (
{description}
- ) : null} + )}
); }, [ diff --git a/packages/components/input/src/textarea.tsx b/packages/components/input/src/textarea.tsx index ace8ae4b53..16b22cb5a7 100644 --- a/packages/components/input/src/textarea.tsx +++ b/packages/components/input/src/textarea.tsx @@ -136,6 +136,9 @@ const Textarea = forwardRef<"textarea", TextAreaProps>( return
{content}
; }, [startContent, inputProps, endContent, getInnerWrapperProps]); + const shouldShowError = isInvalid && errorMessage; + const hasHelperContent = shouldShowError || description; + return ( {shouldLabelBeOutside ? labelContent : null} @@ -143,13 +146,13 @@ const Textarea = forwardRef<"textarea", TextAreaProps>( {shouldLabelBeInside ? labelContent : null} {innerWrapper} - {hasHelper ? ( + {hasHelper && hasHelperContent ? (
- {isInvalid && errorMessage ? ( + {shouldShowError ? (
{errorMessage}
- ) : description ? ( + ) : (
{description}
- ) : null} + )}
) : null}
diff --git a/packages/components/select/src/select.tsx b/packages/components/select/src/select.tsx index 87ee33d17a..da29639daf 100644 --- a/packages/components/select/src/select.tsx +++ b/packages/components/select/src/select.tsx @@ -53,15 +53,18 @@ function Select(props: Props, ref: ForwardedRef { - if (!hasHelper) return null; + const shouldShowError = isInvalid && errorMessage; + const hasContent = shouldShowError || description; + + if (!hasHelper || !hasContent) return null; return (
- {isInvalid && errorMessage ? ( + {shouldShowError ? (
{errorMessage}
- ) : description ? ( + ) : (
{description}
- ) : null} + )}
); }, [