Skip to content

Commit 4f9ebff

Browse files
committed
fix: Not block disabledDate when not in same picker mode
1 parent cf9b2e3 commit 4f9ebff

File tree

2 files changed

+38
-13
lines changed

2 files changed

+38
-13
lines changed

src/PickerPanel.tsx

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -129,6 +129,7 @@ function PickerPanel<DateType>(props: PickerPanelProps<DateType>) {
129129
defaultValue,
130130
pickerValue,
131131
defaultPickerValue,
132+
disabledDate,
132133
mode,
133134
picker = 'date',
134135
tabIndex = 0,
@@ -325,6 +326,7 @@ function PickerPanel<DateType>(props: PickerPanelProps<DateType>) {
325326
value: mergedValue,
326327
onViewDateChange: setViewDate,
327328
onPanelChange: onInternalPanelChange,
329+
disabledDate: picker === mergedMode ? disabledDate : undefined,
328330
};
329331
delete pickerProps.onChange;
330332
delete pickerProps.onSelect;

tests/panel.spec.tsx

Lines changed: 36 additions & 13 deletions
Original file line numberDiff line numberDiff line change
@@ -324,21 +324,44 @@ describe('Picker.Panel', () => {
324324
expect(onSelect).toHaveBeenCalled();
325325
});
326326

327-
it('decade', () => {
328-
const onPanelChange = jest.fn();
329-
const wrapper = mount(
330-
<MomentPickerPanel
331-
mode="decade"
332-
onPanelChange={onPanelChange}
333-
disabledDate={date => date.year() === 1900}
334-
/>,
335-
);
327+
describe('decade', () => {
328+
it('mode', () => {
329+
const onPanelChange = jest.fn();
330+
const wrapper = mount(
331+
<MomentPickerPanel
332+
mode="decade"
333+
onPanelChange={onPanelChange}
334+
disabledDate={date => date.year() === 1900}
335+
/>,
336+
);
336337

337-
wrapper.selectCell('1900-1909');
338-
expect(onPanelChange).not.toHaveBeenCalled();
338+
// no picker is decade, it means alway can click
339+
wrapper.selectCell('1900-1909');
340+
expect(onPanelChange).toHaveBeenCalled();
339341

340-
wrapper.selectCell('1910-1919');
341-
expect(onPanelChange).toHaveBeenCalled();
342+
onPanelChange.mockReset();
343+
wrapper.selectCell('1910-1919');
344+
expect(onPanelChange).toHaveBeenCalled();
345+
});
346+
347+
// decade is not a picker, but we still test here in case will support
348+
it('picker', () => {
349+
const onPanelChange = jest.fn();
350+
const wrapper = mount(
351+
<MomentPickerPanel
352+
picker={'decade' as any}
353+
mode="decade"
354+
onPanelChange={onPanelChange}
355+
disabledDate={date => date.year() === 1900}
356+
/>,
357+
);
358+
359+
wrapper.selectCell('1900-1909');
360+
expect(onPanelChange).not.toHaveBeenCalled();
361+
362+
wrapper.selectCell('1910-1919');
363+
expect(onPanelChange).toHaveBeenCalled();
364+
});
342365
});
343366
});
344367

0 commit comments

Comments
 (0)