Skip to content

Commit 27b1955

Browse files
zombieJclaude
andcommitted
fix: add rawOpen to useOpen hook return value
Return both ssrSafeOpen and mergedOpen to prevent incorrect clearing of search text when mergedOpen differs from rawOpen. Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
1 parent 3631086 commit 27b1955

File tree

2 files changed

+5
-5
lines changed

2 files changed

+5
-5
lines changed

src/BaseSelect/index.tsx

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -362,7 +362,7 @@ const BaseSelect = React.forwardRef<BaseSelectRef, BaseSelectProps>((props, ref)
362362
// Not trigger `open` when `notFoundContent` is empty
363363
const emptyListContent = !notFoundContent && emptyOptions;
364364

365-
const [mergedOpen, triggerOpen, lockOptions] = useOpen(
365+
const [rawOpen, mergedOpen, triggerOpen, lockOptions] = useOpen(
366366
defaultOpen || false,
367367
open,
368368
onPopupVisibleChange,
@@ -432,10 +432,10 @@ const BaseSelect = React.forwardRef<BaseSelectRef, BaseSelectProps>((props, ref)
432432

433433
// Close will clean up single mode search text
434434
React.useEffect(() => {
435-
if (!mergedOpen && !multiple && mode !== 'combobox') {
435+
if (!rawOpen && !multiple && mode !== 'combobox') {
436436
onInternalSearch('', false, false);
437437
}
438-
}, [mergedOpen]);
438+
}, [rawOpen]);
439439

440440
// ============================ Disabled ============================
441441
// Close dropdown & remove focus state when disabled change

src/hooks/useOpen.ts

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -43,7 +43,7 @@ export default function useOpen(
4343
propOpen: boolean,
4444
onOpen: (nextOpen: boolean) => void,
4545
postOpen: (nextOpen: boolean) => boolean,
46-
): [open: boolean, toggleOpen: TriggerOpenType, lockOptions: boolean] {
46+
): [rawOpen: boolean, open: boolean, toggleOpen: TriggerOpenType, lockOptions: boolean] {
4747
// SSR not support Portal which means we need delay `open` for the first time render
4848
const [rendered, setRendered] = useState(false);
4949

@@ -101,5 +101,5 @@ export default function useOpen(
101101
}
102102
});
103103

104-
return [mergedOpen, toggleOpen, lock];
104+
return [ssrSafeOpen, mergedOpen, toggleOpen, lock];
105105
}

0 commit comments

Comments
 (0)