Skip to content

Commit 3f538ab

Browse files
committed
chore: add polit
1 parent 341a834 commit 3f538ab

1 file changed

Lines changed: 28 additions & 24 deletions

File tree

src/BaseSelect/index.tsx

Lines changed: 28 additions & 24 deletions
Original file line numberDiff line numberDiff line change
@@ -350,11 +350,11 @@ const BaseSelect = React.forwardRef<BaseSelectRef, BaseSelectProps>((props, ref)
350350
const triggerRef = React.useRef<RefTriggerProps>(null);
351351
const selectorRef = React.useRef<RefSelectorProps>(null);
352352
const listRef = React.useRef<RefOptionListProps>(null);
353-
const blurRef = React.useRef<boolean>(false);
353+
// const blurRef = React.useRef<boolean>(false);
354354
const customDomRef = React.useRef<HTMLElement>(null);
355355

356356
/** Used for component focused management */
357-
const [mockFocused, setMockFocused, cancelSetMockFocused] = useDelayReset();
357+
const [focused, setFocused] = React.useState(false);
358358

359359
// =========================== Imperative ===========================
360360
React.useImperativeHandle(ref, () => ({
@@ -502,16 +502,16 @@ const BaseSelect = React.forwardRef<BaseSelectRef, BaseSelectProps>((props, ref)
502502

503503
// ============================ Disabled ============================
504504
// Close dropdown & remove focus state when disabled change
505-
// React.useEffect(() => {
506-
// if (innerOpen && disabled) {
507-
// setInnerOpen(false);
508-
// }
505+
React.useEffect(() => {
506+
// if (mergedOpen && disabled) {
507+
// triggerOpen(false);
508+
// }
509509

510-
// // After onBlur is triggered, the focused does not need to be reset
511-
// if (disabled && !blurRef.current) {
512-
// setMockFocused(false);
513-
// }
514-
// }, [disabled]);
510+
// After onBlur is triggered, the focused does not need to be reset
511+
if (disabled) {
512+
setFocused(false);
513+
}
514+
}, [disabled, mergedOpen]);
515515

516516
// ============================ Keyboard ============================
517517
/**
@@ -615,17 +615,15 @@ const BaseSelect = React.forwardRef<BaseSelectRef, BaseSelectProps>((props, ref)
615615
// const focusRef = React.useRef<boolean>(false);
616616

617617
const onInternalFocus: React.FocusEventHandler<HTMLElement> = (event) => {
618-
// setMockFocused(true);
619-
// if (!disabled) {
620-
// if (onFocus && !focusRef.current) {
621-
// onFocus(...args);
622-
// }
623-
// // `showAction` should handle `focus` if set
624-
// if (showAction.includes('focus')) {
625-
// triggerOpen(true);
626-
// }
627-
// }
628-
// focusRef.current = true;
618+
setFocused(true);
619+
620+
if (!disabled) {
621+
// `showAction` should handle `focus` if set
622+
if (showAction.includes('focus')) {
623+
triggerOpen(true);
624+
}
625+
}
626+
629627
onFocus?.(event);
630628
};
631629

@@ -656,6 +654,8 @@ const BaseSelect = React.forwardRef<BaseSelectRef, BaseSelectProps>((props, ref)
656654
// };
657655

658656
const onInternalBlur: React.FocusEventHandler<HTMLElement> = (event) => {
657+
setFocused(false);
658+
659659
if (mergedSearchValue) {
660660
// `tags` mode should move `searchValue` into values
661661
if (mode === 'tags') {
@@ -668,6 +668,7 @@ const BaseSelect = React.forwardRef<BaseSelectRef, BaseSelectProps>((props, ref)
668668
}
669669
}
670670

671+
triggerOpen(false);
671672
onBlur?.(event);
672673
};
673674

@@ -813,7 +814,7 @@ const BaseSelect = React.forwardRef<BaseSelectRef, BaseSelectProps>((props, ref)
813814

814815
// ============================= Select =============================
815816
const mergedClassName = clsx(prefixCls, className, {
816-
[`${prefixCls}-focused`]: mockFocused,
817+
[`${prefixCls}-focused`]: focused,
817818
[`${prefixCls}-multiple`]: multiple,
818819
[`${prefixCls}-single`]: !multiple,
819820
[`${prefixCls}-allow-clear`]: mergedAllowClear,
@@ -968,7 +969,10 @@ const BaseSelect = React.forwardRef<BaseSelectRef, BaseSelectProps>((props, ref)
968969
);
969970

970971
return (
971-
<BaseSelectContext.Provider value={baseSelectContext}>{renderNode}</BaseSelectContext.Provider>
972+
<BaseSelectContext.Provider value={baseSelectContext}>
973+
<Polite visible={focused && !mergedOpen} values={displayValues} />
974+
{renderNode}
975+
</BaseSelectContext.Provider>
972976
);
973977
});
974978

0 commit comments

Comments
 (0)