Skip to content

Commit d5fbafe

Browse files
authored
fix: unexpected trigger clear (#711)
1 parent 09b3ab1 commit d5fbafe

File tree

2 files changed

+23
-4
lines changed

2 files changed

+23
-4
lines changed

src/Picker.tsx

Lines changed: 10 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -200,6 +200,8 @@ function InnerPicker<DateType>(props: PickerProps<DateType>) {
200200

201201
const inputRef = React.useRef<HTMLInputElement>(null);
202202

203+
const isMouseDownRef = React.useRef(false);
204+
203205
const needConfirmButton: boolean = (picker === 'date' && !!showTime) || picker === 'time';
204206

205207
const presetList = usePresets(presets);
@@ -499,14 +501,18 @@ function InnerPicker<DateType>(props: PickerProps<DateType>) {
499501
const clearNode: React.ReactNode = (
500502
<span
501503
onMouseDown={(e) => {
504+
isMouseDownRef.current = true;
502505
e.preventDefault();
503506
e.stopPropagation();
504507
}}
505508
onMouseUp={(e) => {
506-
e.preventDefault();
507-
e.stopPropagation();
508-
triggerChange(null);
509-
triggerOpen(false);
509+
if (isMouseDownRef.current) {
510+
isMouseDownRef.current = false;
511+
e.preventDefault();
512+
e.stopPropagation();
513+
triggerChange(null);
514+
triggerOpen(false);
515+
}
510516
}}
511517
className={`${prefixCls}-clear`}
512518
role="button"

tests/picker.spec.tsx

Lines changed: 13 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -885,6 +885,19 @@ describe('Picker.Basic', () => {
885885
expect(document.querySelector('input').value).toEqual('');
886886
});
887887

888+
it('trigger clear', () => {
889+
render(
890+
<MomentPicker
891+
allowClear
892+
defaultValue={getMoment('2023-12-28')}
893+
/>,
894+
);
895+
896+
expect(document.querySelector('input').value).toBe('2023-12-28');
897+
clearValue();
898+
expect(document.querySelector('input').value).toEqual('');
899+
});
900+
888901
it('custom clear icon', () => {
889902
render(
890903
<MomentPicker

0 commit comments

Comments
 (0)