diff --git a/.changeset/eleven-buses-bet.md b/.changeset/eleven-buses-bet.md new file mode 100644 index 0000000000..25f733ad7a --- /dev/null +++ b/.changeset/eleven-buses-bet.md @@ -0,0 +1,5 @@ +--- +"@cloudoperators/juno-ui-components": patch +--- + +Fix NaN input in Pagination diff --git a/packages/ui-components/src/components/Pagination/Pagination.component.tsx b/packages/ui-components/src/components/Pagination/Pagination.component.tsx index 3cc280ea39..afb0c8ace8 100644 --- a/packages/ui-components/src/components/Pagination/Pagination.component.tsx +++ b/packages/ui-components/src/components/Pagination/Pagination.component.tsx @@ -184,7 +184,7 @@ export const Pagination = ({ // Enforce minimum and maximum limits if (inputValue < 1) { inputValue = 1 - } else if (controlTotalPage !== undefined && inputValue > controlTotalPage) { + } else if (isNaN(inputValue) || (controlTotalPage !== undefined && inputValue > controlTotalPage)) { inputValue = controlTotalPage } } diff --git a/packages/ui-components/src/components/Pagination/Pagination.test.tsx b/packages/ui-components/src/components/Pagination/Pagination.test.tsx index 6f0bf23e8a..120a9216bb 100644 --- a/packages/ui-components/src/components/Pagination/Pagination.test.tsx +++ b/packages/ui-components/src/components/Pagination/Pagination.test.tsx @@ -486,4 +486,15 @@ describe("Pagination", () => { expect(screen.getByTestId("my-pagination")).toBeInTheDocument() expect(screen.getByTestId("my-pagination")).toHaveAttribute("data-lolol", "123-456") }) + + test("defaults to last page on non-numeric input", () => { + const onInputChangeMock = vi.fn() + render() + + const textInput = screen.getByRole("textbox") + fireEvent.change(textInput, { target: { value: "$" } }) + + expect(textInput).toHaveValue("5") + expect(onInputChangeMock).toHaveBeenCalledWith(5) + }) })