fix(datepicker): focus on selected date on opening

This commit is contained in:
qa46hx 2020-01-06 15:44:40 +01:00
parent d66a90566c
commit d29d9db754
3 changed files with 18 additions and 5 deletions

View file

@ -287,7 +287,11 @@ export class LionInputDatepicker extends OverlayMixin(LionInputDate) {
*/
_onCalendarOverlayOpened() {
if (this._focusCentralDateOnCalendarOpen) {
this._calendarElement.focusCentralDate();
if (this._calendarElement.selectedDate) {
this._calendarElement.focusSelectedDate();
} else {
this._calendarElement.focusCentralDate();
}
}
}

View file

@ -7,8 +7,7 @@ storiesOf('Forms|Input Datepicker', module)
.add(
'Default',
() => html`
<lion-input-datepicker label="Date" .modelValue=${new Date('2017/06/15')}>
</lion-input-datepicker>
<lion-input-datepicker label="Date"> </lion-input-datepicker>
`,
)
.add(

View file

@ -188,13 +188,23 @@ describe('<lion-input-datepicker>', () => {
expect(elObj.overlayController.isShown).to.equal(false);
});
it('focuses interactable date on opening of calendar', async () => {
it('focuses selected date on opening of calendar', async () => {
const el = await fixture(html`
<lion-input-datepicker .modelValue="${new Date()}"></lion-input-datepicker>
`);
const elObj = new DatepickerInputObject(el);
await elObj.openCalendar();
await aTimeout();
expect(isSameDate(elObj.calendarEl.focusedDate, elObj.calendarEl.selectedDate)).to.be.true;
});
it('focuses central date on opening of calendar if no date selected', async () => {
const el = await fixture(html`
<lion-input-datepicker></lion-input-datepicker>
`);
const elObj = new DatepickerInputObject(el);
await elObj.openCalendar();
expect(elObj.calendarObj.focusedDayObj.el).not.to.equal(null);
expect(isSameDate(elObj.calendarEl.focusedDate, elObj.calendarEl.centralDate)).to.be.true;
});
describe('Validators', () => {