Skip to content

Commit 4d39a72

Browse files
authored
feat: DropdownWrapper prop to prevent closing on click
* feat: DropdownWrapper can ignore clicks inside the dropdown. Implemented a new argument to prevent DropdownWrapper from closing on click inside the dropdown, allowing for more complex scenarios. This should support scenarios like multi-select dropdowns and DateRangeInput. This change does introduce a non-breaking public API change. * Renamed ignoreClickInside in DropdownWrapper to closeAfterClick and inverted logic - true is now the default case that matches existing behaviour.
1 parent d8239e3 commit 4d39a72

File tree

1 file changed

+7
-1
lines changed

1 file changed

+7
-1
lines changed

src/once-ui/components/DropdownWrapper.tsx

Lines changed: 7 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -32,6 +32,7 @@ export interface DropdownWrapperProps {
3232
style?: React.CSSProperties;
3333
className?: string;
3434
onSelect?: (value: string) => void;
35+
closeAfterClick?: boolean;
3536
isOpen?: boolean;
3637
onOpenChange?: (isOpen: boolean) => void;
3738
}
@@ -44,6 +45,7 @@ const DropdownWrapper = forwardRef<HTMLDivElement, DropdownWrapperProps>(
4445
selectedOption,
4546
minHeight,
4647
onSelect,
48+
closeAfterClick = true,
4749
isOpen: controlledIsOpen,
4850
onOpenChange,
4951
minWidth,
@@ -154,7 +156,11 @@ const DropdownWrapper = forwardRef<HTMLDivElement, DropdownWrapperProps>(
154156
className={className}
155157
position="relative"
156158
ref={wrapperRef}
157-
onClick={() => handleOpenChange(!isOpen)}
159+
onClick={() => {
160+
if (closeAfterClick) {
161+
handleOpenChange(!isOpen);
162+
}
163+
}}
158164
onKeyDown={(e) => {
159165
if (e.key === "Enter" || e.key === " ") {
160166
e.preventDefault();

0 commit comments

Comments
 (0)