Skip to content

Commit bf0fa88

Browse files
committed
chore: move more
1 parent c40f8b5 commit bf0fa88

File tree

2 files changed

+34
-17
lines changed

2 files changed

+34
-17
lines changed

src/NewPicker/PickerInput/RangePicker.tsx

Lines changed: 3 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -129,7 +129,7 @@ function RangePicker<DateType extends object = any>(
129129
ref: React.Ref<PickerRef>,
130130
) {
131131
// ========================= Prop =========================
132-
const filledProps = useFilledProps(props, () => {
132+
const [filledProps, internalPicker, complexPicker] = useFilledProps(props, () => {
133133
const { disabled, allowEmpty } = props;
134134

135135
const mergedDisabled = separateConfig(disabled, false);
@@ -227,14 +227,6 @@ function RangePicker<DateType extends object = any>(
227227
}
228228
};
229229

230-
// ======================== Picker ========================
231-
/** Almost same as `picker`, but add `datetime` for `date` with `showTime` */
232-
const internalPicker: InternalMode = picker === 'date' && showTime ? 'datetime' : picker;
233-
234-
/** The picker is `datetime` or `time` */
235-
const complexPicker = internalPicker === 'time' || internalPicker === 'datetime';
236-
const mergedNeedConfirm = needConfirm ?? complexPicker;
237-
238230
// ======================== Format ========================
239231
const [formatList, maskFormat] = useFieldFormat(internalPicker, locale, format);
240232

@@ -601,7 +593,7 @@ function RangePicker<DateType extends object = any>(
601593
hoverValue={hoverValues}
602594
onHover={onPanelHover}
603595
// Submit
604-
needConfirm={mergedNeedConfirm}
596+
needConfirm={needConfirm}
605597
onSubmit={triggerPartConfirm}
606598
// Preset
607599
presets={presetList}
@@ -685,7 +677,7 @@ function RangePicker<DateType extends object = any>(
685677
}
686678

687679
// Submit with complex picker
688-
if (!mergedOpen && complexPicker && !mergedNeedConfirm && lastOp === 'panel') {
680+
if (!mergedOpen && complexPicker && !needConfirm && lastOp === 'panel') {
689681
triggerOpen(true);
690682
triggerPartConfirm();
691683
}

src/NewPicker/PickerInput/hooks/useFilledProps.ts

Lines changed: 31 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,7 @@
11
import * as React from 'react';
22
import { fillLocale } from '../../hooks/useLocale';
33
import { getTimeConfig } from '../../hooks/useTimeConfig';
4+
import type { InternalMode } from '../../interface';
45
import type { RangePickerProps } from '../RangePicker';
56
import { fillClearIcon } from '../Selector/hooks/useClearIcon';
67

@@ -15,16 +16,17 @@ type PickedProps<DateType extends object = any> = Pick<
1516
| 'components'
1617
| 'clearIcon'
1718
| 'allowClear'
19+
| 'needConfirm'
1820
> & {
1921
// RangePicker showTime definition is different with Picker
2022
showTime?: any;
2123
};
2224

2325
type ExcludeBooleanType<T> = T extends boolean ? never : T;
2426

25-
/** Align the outer props with unique typed and fill undefined props */
2627
/**
2728
* Align the outer props with unique typed and fill undefined props.
29+
* This is shared with both RangePicker and Picker.
2830
* This will auto handle the legacy props fill like `clearIcon` + `allowClear` = `clearIcon`
2931
*/
3032
export default function useFilledProps<
@@ -34,10 +36,14 @@ export default function useFilledProps<
3436
>(
3537
props: InProps,
3638
updater?: () => UpdaterProps,
37-
): Omit<InProps, keyof UpdaterProps | 'showTime'> &
38-
UpdaterProps & {
39-
showTime?: ExcludeBooleanType<InProps['showTime']>;
40-
} {
39+
): [
40+
filledProps: Omit<InProps, keyof UpdaterProps | 'showTime'> &
41+
UpdaterProps & {
42+
showTime?: ExcludeBooleanType<InProps['showTime']>;
43+
},
44+
internalPicker: InternalMode,
45+
complexPicker: boolean,
46+
] {
4147
const {
4248
locale,
4349
picker = 'date',
@@ -48,6 +54,7 @@ export default function useFilledProps<
4854
components = {},
4955
allowClear,
5056
clearIcon,
57+
needConfirm,
5158
} = props;
5259

5360
const filledProps = React.useMemo(
@@ -67,5 +74,23 @@ export default function useFilledProps<
6774
[props],
6875
);
6976

70-
return filledProps;
77+
// ======================== Picker ========================
78+
/** Almost same as `picker`, but add `datetime` for `date` with `showTime` */
79+
const internalPicker: InternalMode =
80+
picker === 'date' && filledProps.showTime ? 'datetime' : picker;
81+
82+
/** The picker is `datetime` or `time` */
83+
const complexPicker = internalPicker === 'time' || internalPicker === 'datetime';
84+
const mergedNeedConfirm = needConfirm ?? complexPicker;
85+
86+
// ======================== Merged ========================
87+
const mergedProps = React.useMemo(
88+
() => ({
89+
...filledProps,
90+
needConfirm: mergedNeedConfirm,
91+
}),
92+
[filledProps, mergedNeedConfirm],
93+
);
94+
95+
return [mergedProps, internalPicker, complexPicker];
7196
}

0 commit comments

Comments
 (0)