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
This commit is contained in:
Junior Garcia 2024-03-05 16:14:19 -03:00 committed by GitHub
parent 65f48135d6
commit feafb36fcc
No known key found for this signature in database
GPG Key ID: B5690EEEBB952194
3 changed files with 40 additions and 1 deletions

View File

@ -353,6 +353,36 @@ describe("Dropdown", () => {
expect(menu).toBeFalsy();
});
it("should not open on disabled dropdown", () => {
const wrapper = render(
<Dropdown isDisabled>
<DropdownTrigger>
<Button data-testid="trigger-test">Trigger</Button>
</DropdownTrigger>
<DropdownMenu aria-label="Actions">
<DropdownItem key="new">New file</DropdownItem>
<DropdownItem key="copy">Copy link</DropdownItem>
<DropdownItem key="edit">Edit file</DropdownItem>
<DropdownItem key="delete" color="danger">
Delete file
</DropdownItem>
</DropdownMenu>
</Dropdown>,
);
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(

View File

@ -610,6 +610,15 @@ export const DisabledKeys = {
},
};
export const DisabledTrigger = {
render: Template,
args: {
...defaultProps,
isDisabled: true,
},
};
export const SingleSelection = {
render: SingleSelectionTemplate,

View File

@ -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