Skip to content

Commit 3d443db

Browse files
committed
Fix calendar opening when clicking inside the wrapper
1 parent 5de4660 commit 3d443db

File tree

2 files changed

+40
-2
lines changed

2 files changed

+40
-2
lines changed

src/DateInput.jsx

Lines changed: 6 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -347,9 +347,13 @@ export default class DateInput extends PureComponent {
347347
}
348348

349349
onClick = (event) => {
350-
if (event.target === event.currentTarget) {
350+
if (
351+
event.target !== this.dayInput.current &&
352+
event.target !== this.monthInput.current &&
353+
event.target !== this.yearInput.current
354+
) {
351355
// Wrapper was directly clicked
352-
const firstInput = event.target.children[1];
356+
const firstInput = event.currentTarget.querySelector('input[data-input]');
353357
focus(firstInput);
354358
}
355359
};

src/DatePicker.spec.jsx

Lines changed: 34 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -499,4 +499,38 @@ describe('DatePicker', () => {
499499

500500
expect(onChange).toHaveBeenCalledWith(null);
501501
});
502+
503+
it('focuses on first custom input when clicking on divider', () => {
504+
const date = new Date(2017, 8, 30);
505+
let customInput;
506+
let divider;
507+
508+
const { container, rerender } = render(<DatePicker />);
509+
510+
customInput = container.querySelector('input[data-input]');
511+
divider = container.querySelector('.react-date-picker__inputGroup__divider');
512+
513+
fireEvent.click(divider);
514+
expect(customInput).toHaveFocus();
515+
516+
rerender(<DatePicker value={date} />);
517+
518+
customInput = container.querySelector('input[data-input]');
519+
divider = container.querySelector('.react-date-picker__inputGroup__divider');
520+
521+
fireEvent.click(divider);
522+
expect(customInput).toHaveFocus();
523+
});
524+
525+
it('focuses on first custom input when clicking on leading zero', () => {
526+
const date = new Date(2017, 8, 30);
527+
528+
const { container } = render(<DatePicker showLeadingZeros value={date} />);
529+
530+
const customInput = container.querySelector('input[data-input]');
531+
const leadingZero = container.querySelector('.react-date-picker__inputGroup__leadingZero');
532+
533+
fireEvent.click(leadingZero);
534+
expect(customInput).toHaveFocus();
535+
});
502536
});

0 commit comments

Comments
 (0)