Skip to content

Commit 9ba45e4

Browse files
authored
fixed datePicker will reopen when click non input area (#269)
1 parent 8d71782 commit 9ba45e4

File tree

1 file changed

+31
-26
lines changed

1 file changed

+31
-26
lines changed

src/RangePicker.tsx

Lines changed: 31 additions & 26 deletions
Original file line numberDiff line numberDiff line change
@@ -137,15 +137,18 @@ type RangeShowTimeObject<DateType> = Omit<SharedTimeProps<DateType>, 'defaultVal
137137
defaultValue?: DateType[];
138138
};
139139

140-
export type RangePickerBaseProps<DateType> = {} & RangePickerSharedProps<DateType> & OmitPickerProps<PickerBaseProps<DateType>>;
140+
export type RangePickerBaseProps<DateType> = {} & RangePickerSharedProps<DateType> &
141+
OmitPickerProps<PickerBaseProps<DateType>>;
141142

142143
export type RangePickerDateProps<DateType> = {
143144
showTime?: boolean | RangeShowTimeObject<DateType>;
144-
} & RangePickerSharedProps<DateType> & OmitPickerProps<PickerDateProps<DateType>>;
145+
} & RangePickerSharedProps<DateType> &
146+
OmitPickerProps<PickerDateProps<DateType>>;
145147

146148
export type RangePickerTimeProps<DateType> = {
147149
order?: boolean;
148-
} & RangePickerSharedProps<DateType> & OmitPickerProps<PickerTimeProps<DateType>>;
150+
} & RangePickerSharedProps<DateType> &
151+
OmitPickerProps<PickerTimeProps<DateType>>;
149152

150153
export type RangePickerProps<DateType> =
151154
| RangePickerBaseProps<DateType>
@@ -239,9 +242,8 @@ function InnerRangePicker<DateType>(props: RangePickerProps<DateType>) {
239242
});
240243

241244
// Operation ref
242-
const operationRef: React.MutableRefObject<ContextOperationRefProps | null> = useRef<
243-
ContextOperationRefProps
244-
>(null);
245+
const operationRef: React.MutableRefObject<ContextOperationRefProps | null> =
246+
useRef<ContextOperationRefProps>(null);
245247

246248
const mergedDisabled = React.useMemo<[boolean, boolean]>(() => {
247249
if (Array.isArray(disabled)) {
@@ -255,7 +257,7 @@ function InnerRangePicker<DateType>(props: RangePickerProps<DateType>) {
255257
const [mergedValue, setInnerValue] = useMergedState<RangeValue<DateType>>(null, {
256258
value,
257259
defaultValue,
258-
postState: values =>
260+
postState: (values) =>
259261
picker === 'time' && !order ? values : reorderValues(values, generateConfig),
260262
});
261263

@@ -270,7 +272,7 @@ function InnerRangePicker<DateType>(props: RangePickerProps<DateType>) {
270272

271273
// ========================= Select Values =========================
272274
const [selectedValue, setSelectedValue] = useMergedState(mergedValue, {
273-
postState: values => {
275+
postState: (values) => {
274276
let postValues = values;
275277

276278
if (mergedDisabled[0] && mergedDisabled[1]) {
@@ -322,8 +324,8 @@ function InnerRangePicker<DateType>(props: RangePickerProps<DateType>) {
322324
const [mergedOpen, triggerInnerOpen] = useMergedState(false, {
323325
value: open,
324326
defaultValue: defaultOpen,
325-
postState: postOpen => (mergedDisabled[mergedActivePickerIndex] ? false : postOpen),
326-
onChange: newOpen => {
327+
postState: (postOpen) => (mergedDisabled[mergedActivePickerIndex] ? false : postOpen),
328+
onChange: (newOpen) => {
327329
if (onOpenChange) {
328330
onOpenChange(newOpen);
329331
}
@@ -533,12 +535,12 @@ function InnerRangePicker<DateType>(props: RangePickerProps<DateType>) {
533535

534536
const [startText, triggerStartTextChange, resetStartText] = useTextValueMapping({
535537
valueTexts: startValueTexts,
536-
onTextChange: newText => onTextChange(newText, 0),
538+
onTextChange: (newText) => onTextChange(newText, 0),
537539
});
538540

539541
const [endText, triggerEndTextChange, resetEndText] = useTextValueMapping({
540542
valueTexts: endValueTexts,
541-
onTextChange: newText => onTextChange(newText, 1),
543+
onTextChange: (newText) => onTextChange(newText, 1),
542544
});
543545

544546
const [rangeHoverValue, setRangeHoverValue] = useState<RangeValue<DateType>>(null);
@@ -583,7 +585,12 @@ function InnerRangePicker<DateType>(props: RangePickerProps<DateType>) {
583585
onBlur,
584586
isClickOutside: (target: EventTarget | null) =>
585587
!elementsContains(
586-
[panelDivRef.current, startInputDivRef.current, endInputDivRef.current],
588+
[
589+
panelDivRef.current,
590+
startInputDivRef.current,
591+
endInputDivRef.current,
592+
containerRef.current,
593+
],
587594
target as HTMLElement,
588595
),
589596
onFocus: (e: React.FocusEvent<HTMLInputElement>) => {
@@ -731,7 +738,7 @@ function InnerRangePicker<DateType>(props: RangePickerProps<DateType>) {
731738
// ============================ Ranges =============================
732739
const rangeLabels = Object.keys(ranges || {});
733740

734-
const rangeList = rangeLabels.map(label => {
741+
const rangeList = rangeLabels.map((label) => {
735742
const range = ranges![label];
736743
const newValues = typeof range === 'function' ? range() : range;
737744

@@ -766,10 +773,8 @@ function InnerRangePicker<DateType>(props: RangePickerProps<DateType>) {
766773
panelHoverRangedValue = hoverRangedValue;
767774
}
768775

769-
let panelShowTime:
770-
| boolean
771-
| SharedTimeProps<DateType>
772-
| undefined = showTime as SharedTimeProps<DateType>;
776+
let panelShowTime: boolean | SharedTimeProps<DateType> | undefined =
777+
showTime as SharedTimeProps<DateType>;
773778
if (showTime && typeof showTime === 'object' && showTime.defaultValue) {
774779
const timeDefaultValues: DateType[] = showTime.defaultValue!;
775780
panelShowTime = {
@@ -805,7 +810,7 @@ function InnerRangePicker<DateType>(props: RangePickerProps<DateType>) {
805810
style={undefined}
806811
direction={direction}
807812
disabledDate={mergedActivePickerIndex === 0 ? disabledStartDate : disabledEndDate}
808-
disabledTime={date => {
813+
disabledTime={(date) => {
809814
if (disabledTime) {
810815
return disabledTime(date, mergedActivePickerIndex === 0 ? 'start' : 'end');
811816
}
@@ -903,13 +908,13 @@ function InnerRangePicker<DateType>(props: RangePickerProps<DateType>) {
903908
const showDoublePanel = currentMode === picker;
904909
const leftPanel = renderPanel(showDoublePanel ? 'left' : false, {
905910
pickerValue: viewDate,
906-
onPickerValueChange: newViewDate => {
911+
onPickerValueChange: (newViewDate) => {
907912
setViewDate(newViewDate, mergedActivePickerIndex);
908913
},
909914
});
910915
const rightPanel = renderPanel('right', {
911916
pickerValue: nextViewDate,
912-
onPickerValueChange: newViewDate => {
917+
onPickerValueChange: (newViewDate) => {
913918
setViewDate(
914919
getClosingViewDate(newViewDate, picker, generateConfig, -1),
915920
mergedActivePickerIndex,
@@ -957,7 +962,7 @@ function InnerRangePicker<DateType>(props: RangePickerProps<DateType>) {
957962
className={`${prefixCls}-panel-container`}
958963
style={{ marginLeft: panelLeft }}
959964
ref={panelDivRef}
960-
onMouseDown={e => {
965+
onMouseDown={(e) => {
961966
e.preventDefault();
962967
}}
963968
>
@@ -991,11 +996,11 @@ function InnerRangePicker<DateType>(props: RangePickerProps<DateType>) {
991996
) {
992997
clearNode = (
993998
<span
994-
onMouseDown={e => {
999+
onMouseDown={(e) => {
9951000
e.preventDefault();
9961001
e.stopPropagation();
9971002
}}
998-
onMouseUp={e => {
1003+
onMouseUp={(e) => {
9991004
e.preventDefault();
10001005
e.stopPropagation();
10011006
let values = mergedValue;
@@ -1101,7 +1106,7 @@ function InnerRangePicker<DateType>(props: RangePickerProps<DateType>) {
11011106
disabled={mergedDisabled[0]}
11021107
readOnly={inputReadOnly || typeof formatList[0] === 'function' || !startTyping}
11031108
value={startHoverValue || startText}
1104-
onChange={e => {
1109+
onChange={(e) => {
11051110
triggerStartTextChange(e.target.value);
11061111
}}
11071112
autoFocus={autoFocus}
@@ -1126,7 +1131,7 @@ function InnerRangePicker<DateType>(props: RangePickerProps<DateType>) {
11261131
disabled={mergedDisabled[1]}
11271132
readOnly={inputReadOnly || typeof formatList[0] === 'function' || !endTyping}
11281133
value={endHoverValue || endText}
1129-
onChange={e => {
1134+
onChange={(e) => {
11301135
triggerEndTextChange(e.target.value);
11311136
}}
11321137
placeholder={getValue(placeholder, 1) || ''}

0 commit comments

Comments
 (0)