Skip to content

Commit 32b12a4

Browse files
authored
fix: DisabledDate should block today (#73)
* fix disabled today * test case * add aria mark
1 parent 9f99174 commit 32b12a4

File tree

2 files changed

+21
-2
lines changed

2 files changed

+21
-2
lines changed

src/PickerPanel.tsx

Lines changed: 8 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -459,11 +459,17 @@ function PickerPanel<DateType>(props: PickerPanelProps<DateType>) {
459459
let todayNode: React.ReactNode;
460460

461461
if (showToday && mergedMode === 'date' && picker === 'date' && !showTime) {
462+
const now = generateConfig.getNow();
463+
const todayCls = `${prefixCls}-today-btn`;
464+
const disabled = disabledDate && disabledDate(now);
462465
todayNode = (
463466
<a
464-
className={`${prefixCls}-today-btn`}
467+
className={classNames(todayCls, disabled && `${todayCls}-disabled`)}
468+
aria-disabled={disabled}
465469
onClick={() => {
466-
triggerSelect(generateConfig.getNow(), 'mouse', true);
470+
if (!disabled) {
471+
triggerSelect(now, 'mouse', true);
472+
}
467473
}}
468474
>
469475
{locale.today}

tests/picker.spec.tsx

Lines changed: 13 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -467,6 +467,19 @@ describe('Picker.Basic', () => {
467467
expect(isSame(onSelect.mock.calls[0][0], '1990-09-03')).toBeTruthy();
468468
});
469469

470+
it('disabled when in disabledDate', () => {
471+
const onSelect = jest.fn();
472+
const wrapper = mount(
473+
<MomentPicker onSelect={onSelect} disabledDate={() => true} showToday />,
474+
);
475+
wrapper.openPicker();
476+
expect(
477+
wrapper.find('.rc-picker-today-btn').hasClass('rc-picker-today-btn-disabled'),
478+
).toBeTruthy();
479+
wrapper.find('.rc-picker-today-btn').simulate('click');
480+
expect(onSelect).not.toHaveBeenCalled();
481+
});
482+
470483
['decade', 'year', 'quarter', 'month', 'week'].forEach(name => {
471484
it(`not works on ${name}`, () => {
472485
const wrapper = mount(<MomentPicker picker={name as any} showToday />);

0 commit comments

Comments
 (0)