From feafb36fccaad73adba5c8869d17c893b48a78d4 Mon Sep 17 00:00:00 2001 From: Junior Garcia Date: Tue, 5 Mar 2024 16:14:19 -0300 Subject: [PATCH] Fix/dropdown disabled state (#2452) * fix(popover): dropdown behavior on disabled state and update popover trigger props * chore(dropdown): add DisabledTrigger story to dropdown.stories.tsx --- .../dropdown/__tests__/dropdown.test.tsx | 30 +++++++++++++++++++ .../dropdown/stories/dropdown.stories.tsx | 9 ++++++ .../popover/src/popover-trigger.tsx | 2 +- 3 files changed, 40 insertions(+), 1 deletion(-) diff --git a/packages/components/dropdown/__tests__/dropdown.test.tsx b/packages/components/dropdown/__tests__/dropdown.test.tsx index bb31564e7..37b0eb82e 100644 --- a/packages/components/dropdown/__tests__/dropdown.test.tsx +++ b/packages/components/dropdown/__tests__/dropdown.test.tsx @@ -353,6 +353,36 @@ describe("Dropdown", () => { expect(menu).toBeFalsy(); }); + it("should not open on disabled dropdown", () => { + const wrapper = render( + + + + + + New file + Copy link + Edit file + + Delete file + + + , + ); + + let triggerButton = wrapper.getByTestId("trigger-test"); + + expect(triggerButton).toBeTruthy(); + + act(() => { + triggerButton.click(); + }); + + let menu = wrapper.queryByRole("menu"); + + expect(menu).toBeFalsy(); + }); + it("should not select on disabled item", () => { const onSelectionChange = jest.fn(); const wrapper = render( diff --git a/packages/components/dropdown/stories/dropdown.stories.tsx b/packages/components/dropdown/stories/dropdown.stories.tsx index 8082f4915..95ab23cc8 100644 --- a/packages/components/dropdown/stories/dropdown.stories.tsx +++ b/packages/components/dropdown/stories/dropdown.stories.tsx @@ -610,6 +610,15 @@ export const DisabledKeys = { }, }; +export const DisabledTrigger = { + render: Template, + + args: { + ...defaultProps, + isDisabled: true, + }, +}; + export const SingleSelection = { render: SingleSelectionTemplate, diff --git a/packages/components/popover/src/popover-trigger.tsx b/packages/components/popover/src/popover-trigger.tsx index 9fbe0e7cd..dded9c1e7 100644 --- a/packages/components/popover/src/popover-trigger.tsx +++ b/packages/components/popover/src/popover-trigger.tsx @@ -30,7 +30,7 @@ const PopoverTrigger = forwardRef<"button", PopoverTriggerProps>((props, _) => { }, [children]); const {onPress, ...rest} = useMemo(() => { - return getTriggerProps(mergeProps(child.props, otherProps), child.ref); + return getTriggerProps(mergeProps(otherProps, child.props), child.ref); }, [getTriggerProps, child.props, otherProps, child.ref]); // validates if contains a NextUI Button as a child