49 lines
1.4 KiB
JavaScript
49 lines
1.4 KiB
JavaScript
import {limitToRange} from '../lib/utils.js';
|
|
import {addMonths, addYears} from '../lib/date.js';
|
|
|
|
export function triggerDatepickerEvent(datepicker, type) {
|
|
const detail = {
|
|
date: datepicker.getDate(),
|
|
viewDate: new Date(datepicker.picker.viewDate),
|
|
viewId: datepicker.picker.currentView.id,
|
|
datepicker,
|
|
};
|
|
datepicker.element.dispatchEvent(new CustomEvent(type, {detail}));
|
|
}
|
|
|
|
// direction: -1 (to previous), 1 (to next)
|
|
export function goToPrevOrNext(datepicker, direction) {
|
|
const {minDate, maxDate} = datepicker.config;
|
|
const {currentView, viewDate} = datepicker.picker;
|
|
let newViewDate;
|
|
switch (currentView.id) {
|
|
case 0:
|
|
newViewDate = addMonths(viewDate, direction);
|
|
break;
|
|
case 1:
|
|
newViewDate = addYears(viewDate, direction);
|
|
break;
|
|
default:
|
|
newViewDate = addYears(viewDate, direction * currentView.navStep);
|
|
}
|
|
newViewDate = limitToRange(newViewDate, minDate, maxDate);
|
|
datepicker.picker.changeFocus(newViewDate).render();
|
|
}
|
|
|
|
export function switchView(datepicker) {
|
|
const viewId = datepicker.picker.currentView.id;
|
|
if (viewId === datepicker.config.maxView) {
|
|
return;
|
|
}
|
|
datepicker.picker.changeView(viewId + 1).render();
|
|
}
|
|
|
|
export function unfocus(datepicker) {
|
|
if (datepicker.config.updateOnBlur) {
|
|
datepicker.update({autohide: true});
|
|
} else {
|
|
datepicker.refresh('input');
|
|
datepicker.hide();
|
|
}
|
|
}
|