Skip to content

Commit 6d8831c

Browse files
committed
fix: prevent mousedown on clear button of opened date-picker
1 parent 1fd33c9 commit 6d8831c

File tree

2 files changed

+42
-0
lines changed

2 files changed

+42
-0
lines changed

packages/date-picker/src/vaadin-date-picker-mixin.js

Lines changed: 18 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -616,6 +616,24 @@ export const DatePickerMixin = (subclass) =>
616616
return !this._shouldKeepFocusRing;
617617
}
618618

619+
/**
620+
* Override method inherited from `ClearButtonMixin`
621+
* to not blur on clear button mousedown when opened
622+
* so that focus remains in the input field.
623+
*
624+
* @param {Event} event
625+
* @return {boolean}
626+
* @protected
627+
* @override
628+
*/
629+
_shouldKeepFocusOnClearMousedown(event) {
630+
if (this.opened) {
631+
return true;
632+
}
633+
634+
return super._shouldKeepFocusOnClearMousedown(event);
635+
}
636+
619637
/**
620638
* Override method inherited from `FocusMixin`
621639
* to prevent removing the `focused` attribute:

packages/date-picker/test/basic.test.js

Lines changed: 24 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -362,6 +362,30 @@ describe('clear button', () => {
362362
click(clearButton);
363363
expect(datePicker.opened).to.be.not.ok;
364364
});
365+
366+
it('should not prevent default on clear button mousedown if input is not focused', () => {
367+
datePicker.value = '2001-01-01';
368+
const event = new CustomEvent('mousedown', { cancelable: true });
369+
clearButton.dispatchEvent(event);
370+
expect(event.defaultPrevented).to.be.false;
371+
});
372+
373+
it('should prevent default on clear button mousedown if input is focused', () => {
374+
datePicker.value = '2001-01-01';
375+
datePicker.inputElement.focus();
376+
const event = new CustomEvent('mousedown', { cancelable: true });
377+
clearButton.dispatchEvent(event);
378+
expect(event.defaultPrevented).to.be.true;
379+
});
380+
381+
it('should prevent default on clear button mousedown when opened', async () => {
382+
datePicker.value = '2001-01-01';
383+
await open(datePicker);
384+
datePicker.inputElement.blur();
385+
const event = new CustomEvent('mousedown', { cancelable: true });
386+
clearButton.dispatchEvent(event);
387+
expect(event.defaultPrevented).to.be.true;
388+
});
365389
});
366390

367391
describe('initial value attribute', () => {

0 commit comments

Comments
 (0)