Skip to content

Commit 47b6aba

Browse files
committed
fix: RangePanel focused style
1 parent a5cc7f1 commit 47b6aba

File tree

1 file changed

+32
-29
lines changed

1 file changed

+32
-29
lines changed

src/RangePicker.tsx

Lines changed: 32 additions & 29 deletions
Original file line numberDiff line numberDiff line change
@@ -561,7 +561,6 @@ function InnerRangePicker<DateType>(props: RangePickerProps<DateType>) {
561561
triggerOpen: (newOpen: boolean) => triggerOpen(newOpen, index),
562562
onSubmit: () => {
563563
triggerChange(selectedValue);
564-
triggerOpen(false, index, true);
565564
resetText();
566565
},
567566
onCancel: () => {
@@ -589,6 +588,23 @@ function InnerRangePicker<DateType>(props: RangePickerProps<DateType>) {
589588

590589
// ============================= Sync ==============================
591590
// Close should sync back with text value
591+
const startStr =
592+
mergedValue && mergedValue[0]
593+
? generateConfig.locale.format(
594+
locale.locale,
595+
mergedValue[0],
596+
'YYYYMMDDHHmmss',
597+
)
598+
: '';
599+
const endStr =
600+
mergedValue && mergedValue[1]
601+
? generateConfig.locale.format(
602+
locale.locale,
603+
mergedValue[1],
604+
'YYYYMMDDHHmmss',
605+
)
606+
: '';
607+
592608
React.useEffect(() => {
593609
if (!mergedOpen) {
594610
setSelectedValue(mergedValue);
@@ -597,24 +613,8 @@ function InnerRangePicker<DateType>(props: RangePickerProps<DateType>) {
597613

598614
// Sync innerValue with control mode
599615
React.useEffect(() => {
600-
if (
601-
isEqual(
602-
generateConfig,
603-
getValue(mergedValue, 0),
604-
getValue(selectedValue, 0),
605-
) &&
606-
isEqual(
607-
generateConfig,
608-
getValue(mergedValue, 1),
609-
getValue(selectedValue, 1),
610-
)
611-
) {
612-
return;
613-
}
614-
615-
// Sync select value
616616
setSelectedValue(mergedValue);
617-
}, [mergedValue]);
617+
}, [startStr, endStr]);
618618

619619
// ============================ Warning ============================
620620
if (process.env.NODE_ENV !== 'production') {
@@ -679,23 +679,25 @@ function InnerRangePicker<DateType>(props: RangePickerProps<DateType>) {
679679
};
680680
}
681681

682+
const onContextSelect = (date: DateType, type: 'key' | 'mouse') => {
683+
const values = updateValues(selectedValue, date, activePickerIndex);
684+
685+
if (type === 'key' || (picker === 'date' && showTime)) {
686+
setSelectedValue(values);
687+
} else {
688+
// triggerChange will also update selected values
689+
triggerChange(values);
690+
}
691+
};
692+
682693
return (
683694
<RangeContext.Provider
684695
value={{
685696
inRange: true,
686697
panelPosition,
687698
rangedValue: selectedValue,
688699
hoverRangedValue: panelHoverRangedValue,
689-
onSelect: date => {
690-
const values = updateValues(selectedValue, date, activePickerIndex);
691-
692-
if (picker === 'date' && showTime) {
693-
setSelectedValue(values);
694-
} else {
695-
// triggerChange will also update selected values
696-
triggerChange(values);
697-
}
698-
},
700+
onSelect: onContextSelect,
699701
}}
700702
>
701703
<PickerPanel<DateType>
@@ -718,7 +720,8 @@ function InnerRangePicker<DateType>(props: RangePickerProps<DateType>) {
718720
return false;
719721
}}
720722
className={classNames({
721-
[`${prefixCls}-panel-focused`]: !startTyping && !endTyping,
723+
[`${prefixCls}-panel-focused`]:
724+
activePickerIndex === 0 ? !startTyping : !endTyping,
722725
})}
723726
value={getValue(selectedValue, activePickerIndex)}
724727
locale={locale}

0 commit comments

Comments
 (0)