From 94d7d6b6b2ff7dcbe670aed819e7e54c6a8067d0 Mon Sep 17 00:00:00 2001 From: kaiweike Date: Tue, 30 Jul 2024 14:42:05 +0800 Subject: [PATCH] fix(Select): Add support for required attribute --- src/components/Select/Select.stories.tsx | 46 ++++++++++++++++++++++++ src/components/Select/Select.test.tsx | 37 +++++++++++++++++-- src/components/Select/Select.tsx | 1 + 3 files changed, 82 insertions(+), 2 deletions(-) diff --git a/src/components/Select/Select.stories.tsx b/src/components/Select/Select.stories.tsx index 69842093e..0db08311b 100644 --- a/src/components/Select/Select.stories.tsx +++ b/src/components/Select/Select.stories.tsx @@ -49,6 +49,12 @@ const meta: Meta = { disable: true, }, }, + + required: { + control: { + type: "boolean", + }, + }, }, }; @@ -119,3 +125,43 @@ export const SelectMultiple: Story = { name: "Select multiple", }; + +export const RequiredSelect: Story = { + args: { + required: true, + }, + + render: (args) => ( +
+ ); fireEvent.change(screen.getByRole("combobox"), event); expect(onChangeMock.mock.calls[0][0].target).toBe( - screen.getByRole("combobox") + screen.getByRole("combobox"), ); }); @@ -63,4 +63,37 @@ describe("Select", () => { render(, + ); + const select = screen.getByRole("combobox"); + expect(select).toBeRequired(); + }); + + it("renders without required attribute when not set", () => { + render( +