fix(number-input): include labelPlacement in dependency array (#5866)

* fix(number-input): include labelPlacement in dependency array for useNumberInput

* test(number-input): add tests for labelPlacement with HeroUIProvider context

* test(number-input): ensure labelPlacement prop takes precedence over HeroUIProvider context

* docs(number-input): add changeset

* chore(changeset): add issue number

---------

Co-authored-by: WK <wingkwong.code@gmail.com>
This commit is contained in:
KumJungMin 2025-11-02 21:51:42 +09:00 committed by GitHub
parent 27fec2db3c
commit bdd37b4b08
No known key found for this signature in database
GPG Key ID: B5690EEEBB952194
3 changed files with 43 additions and 1 deletions

View File

@ -0,0 +1,5 @@
---
"@heroui/number-input": patch
---
allow inheriting labelPlacement from HeroUIProvider (#5845)

View File

@ -5,6 +5,7 @@ import {render, fireEvent, act} from "@testing-library/react";
import userEvent from "@testing-library/user-event";
import {useForm} from "react-hook-form";
import {Form} from "@heroui/form";
import {HeroUIProvider} from "@heroui/system";
import {NumberInput} from "../src";
@ -680,4 +681,32 @@ describe("NumberInput with React Hook Form", () => {
});
});
});
describe("NumberInput with HeroUIProvider context", () => {
it("should inherit labelPlacement from HeroUIProvider", () => {
const {container} = render(
<HeroUIProvider labelPlacement="outside">
<NumberInput label="Test number input" />
</HeroUIProvider>,
);
const label = container.querySelector("label");
expect(label).toBeTruthy();
expect(label?.className).toMatch(/translate-y.*100%/);
});
it("should prioritize labelPlacement prop over HeroUIProvider context", () => {
const {container} = render(
<HeroUIProvider labelPlacement="outside">
<NumberInput label="Test number input" labelPlacement="inside" />
</HeroUIProvider>,
);
const label = container.querySelector("label");
expect(label).toBeTruthy();
expect(label?.className).not.toMatch(/translate-y.*100%/);
});
});
});

View File

@ -234,10 +234,18 @@ export function useNumberInput(originalProps: UseNumberInputProps) {
numberInput({
...variantProps,
isInvalid,
labelPlacement,
isClearable,
disableAnimation,
}),
[objectToDeps(variantProps), isInvalid, isClearable, hasStartContent, disableAnimation],
[
objectToDeps(variantProps),
isInvalid,
labelPlacement,
isClearable,
hasStartContent,
disableAnimation,
],
);
const handleKeyDown = useCallback(