| Current Path : /var/www/homesaver/www/bitrix/modules/ui/install/js/ui/date-picker/dist/ |
| Current File : /var/www/homesaver/www/bitrix/modules/ui/install/js/ui/date-picker/dist/date-picker.bundle.js |
/* eslint-disable */
this.BX = this.BX || {};
this.BX.UI = this.BX.UI || {};
(function (exports,main_popup,main_core_events,main_date,main_core_cache,main_core) {
'use strict';
let _ = t => t,
_t,
_t2,
_t3,
_t4;
var _datePicker = /*#__PURE__*/babelHelpers.classPrivateFieldLooseKey("datePicker");
var _refs = /*#__PURE__*/babelHelpers.classPrivateFieldLooseKey("refs");
var _rendered = /*#__PURE__*/babelHelpers.classPrivateFieldLooseKey("rendered");
class BasePicker extends main_core_events.EventEmitter {
constructor(datePicker) {
super();
Object.defineProperty(this, _datePicker, {
writable: true,
value: null
});
Object.defineProperty(this, _refs, {
writable: true,
value: new main_core_cache.MemoryCache()
});
Object.defineProperty(this, _rendered, {
writable: true,
value: false
});
this.setEventNamespace('BX.UI.DatePicker.BasePicker');
babelHelpers.classPrivateFieldLooseBase(this, _datePicker)[_datePicker] = datePicker;
}
getContainer() {
throw new Error('You must implement getContainer method');
}
getHeaderContainer(...children) {
return babelHelpers.classPrivateFieldLooseBase(this, _refs)[_refs].remember('header', () => {
return main_core.Tag.render(_t || (_t = _`<div class="ui-date-picker-header">${0}</div>`), children);
});
}
getContentContainer(...children) {
return babelHelpers.classPrivateFieldLooseBase(this, _refs)[_refs].remember('content', () => {
return main_core.Tag.render(_t2 || (_t2 = _`<div class="ui-date-picker-content">${0}</div>`), children);
});
}
getPrevBtn() {
return babelHelpers.classPrivateFieldLooseBase(this, _refs)[_refs].remember('prev-button', () => {
return main_core.Tag.render(_t3 || (_t3 = _`
<button type="button" class="ui-date-picker-button --left-arrow" onclick="${0}">
<span class="ui-icon-set --chevron-left" style="--ui-icon-set__icon-size: 20px"></span>
</button>
`), this.handlePrevBtnClick.bind(this));
});
}
getNextBtn() {
return babelHelpers.classPrivateFieldLooseBase(this, _refs)[_refs].remember('next-button', () => {
return main_core.Tag.render(_t4 || (_t4 = _`
<button type="button" class="ui-date-picker-button --right-arrow" onclick="${0}">
<span class="ui-icon-set --chevron-right" style="--ui-icon-set__icon-size: 20px"></span>
</button>
`), this.handleNextBtnClick.bind(this));
});
}
handlePrevBtnClick() {
this.emit('onPrevBtnClick');
}
handleNextBtnClick() {
this.emit('onNextBtnClick');
}
render() {
throw new Error('You must implement render method');
}
onShow() {
// you can override this method
}
onHide() {
// you can override this method
}
getDatePicker() {
return babelHelpers.classPrivateFieldLooseBase(this, _datePicker)[_datePicker];
}
isRendered() {
return babelHelpers.classPrivateFieldLooseBase(this, _rendered)[_rendered];
}
renderTo(container) {
main_core.Dom.append(this.getContainer(), container);
babelHelpers.classPrivateFieldLooseBase(this, _rendered)[_rendered] = true;
}
}
function cloneDate(date) {
const newDate = new Date(date.getTime());
if (date.__utc) {
newDate.__utc = true;
}
return newDate;
}
function getDaysInMonth(date) {
const month = date.getUTCMonth();
const year = date.getUTCFullYear();
const daysInMonth = [31, 29, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31];
if (month !== 1 || year % 4 === 0 && year % 100 !== 0 || year % 400 === 0) {
return daysInMonth[month];
}
return 28;
}
function addDate(date, unit, increment) {
let newDate = cloneDate(date);
if (!unit || increment === 0) {
return newDate;
}
switch (unit.toLowerCase()) {
case 'milli':
newDate = new Date(date.getTime() + increment);
break;
case 'second':
newDate = new Date(date.getTime() + increment * 1000);
break;
case 'minute':
newDate = new Date(date.getTime() + increment * 60000);
break;
case 'hour':
newDate = new Date(date.getTime() + increment * 3600000);
break;
case 'day':
newDate.setUTCDate(date.getUTCDate() + increment);
break;
case 'week':
newDate.setUTCDate(date.getUTCDate() + increment * 7);
break;
case 'month':
{
let day = date.getUTCDate();
if (day > 28) {
const firstDayOfMonth = new Date(Date.UTC(date.getUTCFullYear(), date.getUTCMonth(), 1));
day = Math.min(day, getDaysInMonth(addDate(firstDayOfMonth, 'month', increment)));
}
newDate.setUTCDate(day);
newDate.setUTCMonth(newDate.getUTCMonth() + increment);
break;
}
case 'quarter':
newDate = addDate(date, 'month', increment * 3);
break;
case 'year':
newDate.setUTCFullYear(date.getUTCFullYear() + increment);
break;
default:
// nothing
}
if (date.__utc) {
newDate.__utc = true;
}
return newDate;
}
function floorDate(date, unit, firstWeekDay) {
let newDate = cloneDate(date);
switch (unit) {
case 'day':
newDate.setUTCHours(0, 0, 0, 0);
break;
case 'week':
{
const day = newDate.getUTCDay();
newDate.setUTCHours(0, 0, 0, 0);
if (day !== firstWeekDay) {
newDate = addDate(newDate, 'day', -(day > firstWeekDay ? day - firstWeekDay : 7 - day - firstWeekDay));
}
break;
}
case 'month':
newDate.setUTCHours(0, 0, 0, 0);
newDate.setUTCDate(1);
break;
case 'hour':
newDate.setUTCMinutes(0, 0, 0);
break;
case 'minute':
newDate.setUTCSeconds(0);
newDate.setUTCMilliseconds(0);
break;
case 'second':
newDate.setUTCMilliseconds(0);
break;
case 'year':
newDate = new Date(Date.UTC(date.getUTCFullYear(), 0, 1));
break;
case 'quarter':
{
newDate.setUTCHours(0, 0, 0, 0);
newDate.setUTCDate(1);
newDate = addDate(newDate, 'month', -(newDate.getUTCMonth() % 3));
break;
}
default:
// No default
}
if (date.__utc) {
newDate.__utc = true;
}
return newDate;
}
function getNextDate(date, unit, increment = 1, firstWeekDay = 0) {
let newDate = cloneDate(date);
switch (unit) {
case 'day':
newDate.setUTCMinutes(0, 0, 0);
newDate = addDate(newDate, 'day', increment);
break;
case 'week':
{
const dayOfWeek = newDate.getUTCDay();
newDate = addDate(newDate, 'day', 7 * (increment - 1) + (dayOfWeek < firstWeekDay ? firstWeekDay - dayOfWeek : 7 - dayOfWeek + firstWeekDay));
break;
}
case 'month':
newDate = addDate(newDate, 'month', increment);
newDate.setUTCDate(1);
break;
case 'quarter':
newDate = addDate(newDate, 'month', (increment - 1) * 3 + (3 - newDate.getUTCMonth() % 3));
break;
case 'year':
newDate = new Date(Date.UTC(newDate.getUTCFullYear() + increment, 0, 1));
break;
default:
newDate = addDate(date, unit, increment);
}
if (date.__utc) {
newDate.__utc = true;
}
return newDate;
}
function ceilDate(date, unit, increment, firstWeekDay) {
const newDate = cloneDate(date);
if (unit === 'week') {
newDate.setUTCHours(0, 0, 0, 0);
return addDate(floorDate(newDate, unit, firstWeekDay), unit, 1);
}
switch (unit) {
case 'hour':
newDate.setUTCMinutes(0, 0, 0);
break;
case 'minute':
newDate.setUTCSeconds(0, 0);
break;
case 'second':
newDate.setUTCMilliseconds(0);
break;
default:
newDate.setUTCHours(0, 0, 0, 0);
}
return getNextDate(newDate, unit, increment);
}
function createUtcDate(year, monthIndex = 0, day = 1, hours = 0, minutes = 0, seconds = 0, ms = 0) {
const date = new Date(Date.UTC(year, monthIndex, day, hours, minutes, seconds, ms));
// The year from 0 to 99 will be incremented by 1900 automatically.
if (year < 100 && year >= 0) {
date.setUTCFullYear(year);
}
date.__utc = true;
return date;
}
function getDate(date) {
const hours = date.getUTCHours();
const hours12 = hours % 12 === 0 ? 12 : hours % 12;
const dayPeriod = hours > 11 ? 'pm' : 'am';
return {
day: date.getUTCDate(),
// 1-31
month: date.getUTCMonth(),
// 0-11
year: date.getUTCFullYear(),
weekDay: date.getUTCDay(),
// 0-6
hours,
// 0-23
hours12,
// 1-12
minutes: date.getUTCMinutes(),
// 0-59
seconds: date.getUTCSeconds(),
// 0-59
dayPeriod,
fullDay: String(date.getUTCDate()).padStart(2, '0'),
fullHours: String(hours).padStart(2, '0'),
fullHours12: String(hours12).padStart(2, '0'),
fullMinutes: String(date.getUTCMinutes()).padStart(2, '0')
};
}
function isDatesEqual(dateA, dateB, precision = 'day') {
if (!main_core.Type.isDate(dateA) || !main_core.Type.isDate(dateB)) {
return false;
}
const {
day: dayA,
month: monthA,
year: yearA,
hours: hoursA,
minutes: minutesA,
seconds: secondsA
} = getDate(dateA);
const {
day: dayB,
month: monthB,
year: yearB,
hours: hoursB,
minutes: minutesB,
seconds: secondsB
} = getDate(dateB);
if (precision === 'day') {
return dayA === dayB && monthA === monthB && yearA === yearB;
}
if (precision === 'datetime') {
return dayA === dayB && monthA === monthB && yearA === yearB && hoursA === hoursB && minutesA === minutesB && secondsA === secondsB;
}
if (precision === 'month') {
return monthA === monthB && yearA === yearB;
}
if (precision === 'year') {
return yearA === yearB;
}
return false;
}
let _2 = t => t,
_t$1,
_t2$1,
_t3$1,
_t4$1,
_t5,
_t6,
_t7,
_t8,
_t9,
_t10,
_t11,
_t12,
_t13,
_t14,
_t15,
_t16,
_t17,
_t18,
_t19,
_t20,
_t21;
var _refs$1 = /*#__PURE__*/babelHelpers.classPrivateFieldLooseKey("refs");
var _weekdays = /*#__PURE__*/babelHelpers.classPrivateFieldLooseKey("weekdays");
var _mouseOutTimeout = /*#__PURE__*/babelHelpers.classPrivateFieldLooseKey("mouseOutTimeout");
var _renderMonthContainer = /*#__PURE__*/babelHelpers.classPrivateFieldLooseKey("renderMonthContainer");
var _renderMonthHeader = /*#__PURE__*/babelHelpers.classPrivateFieldLooseKey("renderMonthHeader");
var _renderWeekDays = /*#__PURE__*/babelHelpers.classPrivateFieldLooseKey("renderWeekDays");
var _renderWeek = /*#__PURE__*/babelHelpers.classPrivateFieldLooseKey("renderWeek");
var _renderWeekNumber = /*#__PURE__*/babelHelpers.classPrivateFieldLooseKey("renderWeekNumber");
var _renderDay = /*#__PURE__*/babelHelpers.classPrivateFieldLooseKey("renderDay");
var _renderTime = /*#__PURE__*/babelHelpers.classPrivateFieldLooseKey("renderTime");
var _getStartMonthDate = /*#__PURE__*/babelHelpers.classPrivateFieldLooseKey("getStartMonthDate");
var _getRangeDates = /*#__PURE__*/babelHelpers.classPrivateFieldLooseKey("getRangeDates");
var _handleDayClick = /*#__PURE__*/babelHelpers.classPrivateFieldLooseKey("handleDayClick");
var _handleDayMouseOver = /*#__PURE__*/babelHelpers.classPrivateFieldLooseKey("handleDayMouseOver");
var _handleDayMouseOut = /*#__PURE__*/babelHelpers.classPrivateFieldLooseKey("handleDayMouseOut");
var _handleMonthClick = /*#__PURE__*/babelHelpers.classPrivateFieldLooseKey("handleMonthClick");
var _handleYearClick = /*#__PURE__*/babelHelpers.classPrivateFieldLooseKey("handleYearClick");
var _handleTimeClick = /*#__PURE__*/babelHelpers.classPrivateFieldLooseKey("handleTimeClick");
var _handleTimeRangeStartClick = /*#__PURE__*/babelHelpers.classPrivateFieldLooseKey("handleTimeRangeStartClick");
var _handleTimeRangeEndClick = /*#__PURE__*/babelHelpers.classPrivateFieldLooseKey("handleTimeRangeEndClick");
class DayPicker extends BasePicker {
constructor(...args) {
super(...args);
Object.defineProperty(this, _handleTimeRangeEndClick, {
value: _handleTimeRangeEndClick2
});
Object.defineProperty(this, _handleTimeRangeStartClick, {
value: _handleTimeRangeStartClick2
});
Object.defineProperty(this, _handleTimeClick, {
value: _handleTimeClick2
});
Object.defineProperty(this, _handleYearClick, {
value: _handleYearClick2
});
Object.defineProperty(this, _handleMonthClick, {
value: _handleMonthClick2
});
Object.defineProperty(this, _handleDayMouseOut, {
value: _handleDayMouseOut2
});
Object.defineProperty(this, _handleDayMouseOver, {
value: _handleDayMouseOver2
});
Object.defineProperty(this, _handleDayClick, {
value: _handleDayClick2
});
Object.defineProperty(this, _getRangeDates, {
value: _getRangeDates2
});
Object.defineProperty(this, _getStartMonthDate, {
value: _getStartMonthDate2
});
Object.defineProperty(this, _renderTime, {
value: _renderTime2
});
Object.defineProperty(this, _renderDay, {
value: _renderDay2
});
Object.defineProperty(this, _renderWeekNumber, {
value: _renderWeekNumber2
});
Object.defineProperty(this, _renderWeek, {
value: _renderWeek2
});
Object.defineProperty(this, _renderWeekDays, {
value: _renderWeekDays2
});
Object.defineProperty(this, _renderMonthHeader, {
value: _renderMonthHeader2
});
Object.defineProperty(this, _renderMonthContainer, {
value: _renderMonthContainer2
});
Object.defineProperty(this, _refs$1, {
writable: true,
value: new main_core_cache.MemoryCache()
});
Object.defineProperty(this, _weekdays, {
writable: true,
value: null
});
Object.defineProperty(this, _mouseOutTimeout, {
writable: true,
value: null
});
}
getContainer() {
return babelHelpers.classPrivateFieldLooseBase(this, _refs$1)[_refs$1].remember('container', () => {
return main_core.Tag.render(_t$1 || (_t$1 = _2`
<div class="ui-day-picker${0}">
${0}
${0}
${0}
</div>
`), this.getDatePicker().isFullYear() ? ' --full-year' : '', this.getHeader(), this.getContentContainer(this.getMonthContainer()), this.getDatePicker().isTimeEnabled() ? this.getDatePicker().isRangeMode() ? this.getTimeRangeContainer() : this.getTimeContainer() : null);
});
}
getHeader() {
const numberOfMonths = this.getDatePicker().getNumberOfMonths();
if (this.getDatePicker().isFullYear()) {
return this.getHeaderContainer(this.getPrevBtn(), main_core.Tag.render(_t2$1 || (_t2$1 = _2`
<div class="ui-date-picker-header-title">
${0}
</div>
`), this.getFullYearHeader()), this.getNextBtn());
}
return this.getHeaderContainer(this.getPrevBtn(), ...Array.from({
length: numberOfMonths
}).map((_, monthNumber) => {
return main_core.Tag.render(_t3$1 || (_t3$1 = _2`
<div class="ui-date-picker-header-title">
${0}
${0}
</div>
`), this.getHeaderMonth(monthNumber), this.getHeaderYear(monthNumber));
}), this.getNextBtn());
}
getFullYearHeader() {
return babelHelpers.classPrivateFieldLooseBase(this, _refs$1)[_refs$1].remember('header-full-year', () => {
return main_core.Tag.render(_t4$1 || (_t4$1 = _2`
<span class="ui-date-picker-header-full-year"></span>
`));
});
}
getHeaderMonth(monthNumber) {
return babelHelpers.classPrivateFieldLooseBase(this, _refs$1)[_refs$1].remember(`header-month-${monthNumber}`, () => {
return main_core.Tag.render(_t5 || (_t5 = _2`
<button type="button" class="ui-date-picker-header-month" onclick="${0}"></button>
`), babelHelpers.classPrivateFieldLooseBase(this, _handleMonthClick)[_handleMonthClick].bind(this));
});
}
getMonthContainer() {
return babelHelpers.classPrivateFieldLooseBase(this, _refs$1)[_refs$1].remember('month-container', () => {
return main_core.Tag.render(_t6 || (_t6 = _2`
<div class="ui-day-picker-content"
onclick="${0}"
onmouseover="${0}"
onmouseout="${0}"
></div>
`), babelHelpers.classPrivateFieldLooseBase(this, _handleDayClick)[_handleDayClick].bind(this), babelHelpers.classPrivateFieldLooseBase(this, _handleDayMouseOver)[_handleDayMouseOver].bind(this), babelHelpers.classPrivateFieldLooseBase(this, _handleDayMouseOut)[_handleDayMouseOut].bind(this));
});
}
getHeaderYear(monthNumber) {
return babelHelpers.classPrivateFieldLooseBase(this, _refs$1)[_refs$1].remember(`header-year-${monthNumber}`, () => {
return main_core.Tag.render(_t7 || (_t7 = _2`
<button type="button" class="ui-date-picker-header-year" onclick="${0}"></button>
`), babelHelpers.classPrivateFieldLooseBase(this, _handleYearClick)[_handleYearClick].bind(this));
});
}
getTimeContainer() {
return babelHelpers.classPrivateFieldLooseBase(this, _refs$1)[_refs$1].remember('date-time-container', () => {
return main_core.Tag.render(_t8 || (_t8 = _2`
<div class="ui-date-picker-time-container">
<button type="button" class="ui-date-picker-time-box" onclick="${0}">
<span class="ui-date-picker-time-clock"></span>
${0}
</button>
</div>
`), babelHelpers.classPrivateFieldLooseBase(this, _handleTimeClick)[_handleTimeClick].bind(this), this.getTimeValueContainer());
});
}
getTimeRangeContainer() {
return babelHelpers.classPrivateFieldLooseBase(this, _refs$1)[_refs$1].remember('range-time-container', () => {
return main_core.Tag.render(_t9 || (_t9 = _2`
<div class="ui-date-picker-time-container --range">
<div class="ui-date-picker-time-range-slot">
<button
type="button"
class="ui-date-picker-time-box --range-start"
onclick="${0}"
>
<span class="ui-date-picker-time-clock"></span>
${0}
</button>
</div>
<div class="ui-date-picker-time-range-slot">
<button
type="button"
class="ui-date-picker-time-box --range-end"
onclick="${0}"
>
<span class="ui-date-picker-time-clock"></span>
${0}
</button>
</div>
</div>
`), babelHelpers.classPrivateFieldLooseBase(this, _handleTimeRangeStartClick)[_handleTimeRangeStartClick].bind(this), this.getTimeRangeStartContainer(), babelHelpers.classPrivateFieldLooseBase(this, _handleTimeRangeEndClick)[_handleTimeRangeEndClick].bind(this), this.getTimeRangeEndContainer());
});
}
getTimeValueContainer() {
return babelHelpers.classPrivateFieldLooseBase(this, _refs$1)[_refs$1].remember('time-value', () => {
return main_core.Tag.render(_t10 || (_t10 = _2`<div class="ui-date-picker-time-value"></div>`));
});
}
getTimeRangeStartContainer() {
return babelHelpers.classPrivateFieldLooseBase(this, _refs$1)[_refs$1].remember('time-range-start', () => {
return main_core.Tag.render(_t11 || (_t11 = _2`<div class="ui-date-picker-time-value"></div>`));
});
}
getTimeRangeEndContainer() {
return babelHelpers.classPrivateFieldLooseBase(this, _refs$1)[_refs$1].remember('time-range-end', () => {
return main_core.Tag.render(_t12 || (_t12 = _2`<div class="ui-date-picker-time-value"></div>`));
});
}
getWeekDays() {
if (babelHelpers.classPrivateFieldLooseBase(this, _weekdays)[_weekdays] !== null) {
return babelHelpers.classPrivateFieldLooseBase(this, _weekdays)[_weekdays];
}
const firstWeekDay = this.getDatePicker().getFirstWeekDay();
const weekDays = [main_core.Loc.getMessage('DOW_0'), main_core.Loc.getMessage('DOW_1'), main_core.Loc.getMessage('DOW_2'), main_core.Loc.getMessage('DOW_3'), main_core.Loc.getMessage('DOW_4'), main_core.Loc.getMessage('DOW_5'), main_core.Loc.getMessage('DOW_6')];
babelHelpers.classPrivateFieldLooseBase(this, _weekdays)[_weekdays] = [...[...weekDays].slice(firstWeekDay), ...[...weekDays].splice(0, firstWeekDay)];
return babelHelpers.classPrivateFieldLooseBase(this, _weekdays)[_weekdays];
}
render() {
let focusButton = null;
const isFocused = this.getDatePicker().isFocused();
this.getMonths().forEach((month, monthNumber) => {
if (this.getDatePicker().isFullYear()) {
this.getFullYearHeader().textContent = main_date.DateTimeFormat.format('Y', month.date, null, true);
} else {
this.getHeaderMonth(monthNumber).textContent = main_date.DateTimeFormat.format('f', month.date, null, true);
this.getHeaderYear(monthNumber).textContent = main_date.DateTimeFormat.format('Y', month.date, null, true);
}
const monthContainer = babelHelpers.classPrivateFieldLooseBase(this, _renderMonthContainer)[_renderMonthContainer](monthNumber);
if (this.getDatePicker().isFullYear()) {
babelHelpers.classPrivateFieldLooseBase(this, _renderMonthHeader)[_renderMonthHeader](monthNumber, monthContainer);
}
if (this.getDatePicker().shouldShowWeekDays()) {
babelHelpers.classPrivateFieldLooseBase(this, _renderWeekDays)[_renderWeekDays](monthNumber, monthContainer);
}
month.weeks.forEach((week, weekNumber) => {
const weekContainer = babelHelpers.classPrivateFieldLooseBase(this, _renderWeek)[_renderWeek](monthNumber, weekNumber, monthContainer);
if (this.getDatePicker().shouldShowWeekNumbers()) {
babelHelpers.classPrivateFieldLooseBase(this, _renderWeekNumber)[_renderWeekNumber](monthNumber, weekNumber, week, weekContainer);
}
week.forEach((day, dayIndex) => {
const id = `day-${monthNumber}-${weekNumber}-${dayIndex}`;
const button = babelHelpers.classPrivateFieldLooseBase(this, _renderDay)[_renderDay](id, day, weekContainer);
if (day.focused) {
focusButton = button;
}
});
});
});
if (focusButton !== null && isFocused) {
focusButton.focus({
preventScroll: true
});
}
if (this.getDatePicker().isTimeEnabled()) {
babelHelpers.classPrivateFieldLooseBase(this, _renderTime)[_renderTime]();
}
}
getMonths() {
const months = [];
const picker = this.getDatePicker();
let date = picker.getViewDate();
const numberOfMonths = picker.getNumberOfMonths();
const today = picker.getToday();
const focusDate = picker.getFocusDate();
const initialFocusDate = this.getDatePicker().getInitialFocusDate();
const showOutsideDays = picker.shouldShowOutsideDays();
const {
year,
month
} = picker.getViewDateParts();
const firstAvailableDay = createUtcDate(year, month);
const lastAvailableDay = ceilDate(createUtcDate(year, month + numberOfMonths - 1), 'month');
const [from, to] = babelHelpers.classPrivateFieldLooseBase(this, _getRangeDates)[_getRangeDates]();
const rangeSelected = picker.isRangeMode() && picker.getRangeStart() !== null && picker.getRangeEnd() !== null;
for (let index = 0; index < numberOfMonths; index++) {
const weeks = [];
const firstMonthDay = floorDate(date, 'month');
const currentMonthIndex = date.getUTCMonth();
date = babelHelpers.classPrivateFieldLooseBase(this, _getStartMonthDate)[_getStartMonthDate](date);
for (let weekIndex = 0; weekIndex < 6; weekIndex++) {
const week = [];
let prevDay = null;
for (let weekDay = 0; weekDay < 7; weekDay++) {
let available = true;
const outside = date.getUTCMonth() !== currentMonthIndex;
if (outside) {
if (showOutsideDays && numberOfMonths > 1) {
available = date.getTime() < firstAvailableDay || date.getTime() >= lastAvailableDay;
} else if (!showOutsideDays) {
available = false;
}
}
const selected = available && picker.isDateSelected(date, 'day');
const rangeFrom = available && from && to && isDatesEqual(date, from);
const rangeTo = available && from && to && isDatesEqual(date, to);
const rangeIn = available && from && to && (rangeFrom || rangeTo || date.getTime() >= from.getTime() && date.getTime() <= to.getTime());
const rangeInStart = rangeIn && (weekDay === 0 || !prevDay.rangeIn);
const rangeInEnd = rangeIn && weekDay === 6;
if (!rangeIn && prevDay && prevDay.rangeIn) {
prevDay.rangeInEnd = true;
}
const rangeInSelected = selected && rangeIn && !rangeFrom && !rangeTo;
const focused = available && isDatesEqual(date, focusDate, 'day');
const tabIndex = available && (isDatesEqual(date, focusDate, 'day') || isDatesEqual(date, initialFocusDate, 'day')) ? 0 : -1;
const dayColor = this.getDatePicker().getDayColor(date);
const marks = this.getDatePicker().getDayMarks(date).map(dayMark => {
return dayMark.bgColor;
});
const day = {
date: cloneDate(date),
day: date.getUTCDate(),
month: date.getUTCMonth(),
year: date.getUTCFullYear(),
outside,
current: isDatesEqual(date, today, 'day'),
selected,
hidden: outside && !showOutsideDays,
dayOff: picker.isDayOff(date),
rangeSelected: selected && rangeSelected,
focused,
tabIndex,
rangeFrom,
rangeTo,
rangeIn,
rangeInStart,
rangeInEnd,
rangeInSelected,
bgColor: dayColor === null ? null : dayColor.bgColor,
textColor: dayColor === null ? null : dayColor.textColor,
marks
};
week.push(day);
prevDay = day;
date = addDate(date, 'day', 1);
}
weeks.push(week);
}
months.push({
weeks,
date: firstMonthDay
});
}
return months;
}
getFirstDay() {
const viewDate = this.getDatePicker().getViewDate();
const currentMonthIndex = viewDate.getUTCMonth();
const showOutsideDays = this.getDatePicker().shouldShowOutsideDays();
const firstViewDay = babelHelpers.classPrivateFieldLooseBase(this, _getStartMonthDate)[_getStartMonthDate](this.getDatePicker().getViewDate());
const outside = firstViewDay.getUTCMonth() !== currentMonthIndex;
if (outside && !showOutsideDays) {
return floorDate(viewDate, 'month');
}
return firstViewDay;
}
getLastDay() {
const numberOfMonths = this.getDatePicker().getNumberOfMonths();
const showOutsideDays = this.getDatePicker().shouldShowOutsideDays();
const {
year,
month
} = this.getDatePicker().getViewDateParts();
let lastAvailableDay = ceilDate(createUtcDate(year, month + numberOfMonths - 1), 'month');
if (showOutsideDays) {
const firstAvailableDay = createUtcDate(year, month + numberOfMonths - 1);
const firstViewDay = babelHelpers.classPrivateFieldLooseBase(this, _getStartMonthDate)[_getStartMonthDate](firstAvailableDay);
lastAvailableDay = addDate(firstViewDay, 'day', 6 * 7);
}
return lastAvailableDay;
}
}
function _renderMonthContainer2(monthNumber) {
const cacheId = `month-${monthNumber}`;
if (!babelHelpers.classPrivateFieldLooseBase(this, _refs$1)[_refs$1].has(cacheId)) {
const monthContainer = main_core.Tag.render(_t13 || (_t13 = _2`<div class="ui-day-picker-month"></div>`));
babelHelpers.classPrivateFieldLooseBase(this, _refs$1)[_refs$1].set(cacheId, monthContainer);
main_core.Dom.append(monthContainer, this.getMonthContainer());
}
return babelHelpers.classPrivateFieldLooseBase(this, _refs$1)[_refs$1].get(cacheId);
}
function _renderMonthHeader2(monthNumber, monthContainer) {
return babelHelpers.classPrivateFieldLooseBase(this, _refs$1)[_refs$1].remember(`month-header-${monthNumber}`, () => {
const monthName = main_date.DateTimeFormat.format('f', createUtcDate(2000, monthNumber), null, true);
const container = main_core.Tag.render(_t14 || (_t14 = _2`<div class="ui-day-picker-month-header">${0}</div>`), main_core.Text.encode(monthName));
main_core.Dom.append(container, monthContainer);
return container;
});
}
function _renderWeekDays2(monthNumber, monthContainer) {
return babelHelpers.classPrivateFieldLooseBase(this, _refs$1)[_refs$1].remember(`week-day-${monthNumber}`, () => {
const weekDayContainer = main_core.Tag.render(_t15 || (_t15 = _2`<div class="ui-day-picker-week --week-days"></div>`));
main_core.Dom.append(weekDayContainer, monthContainer);
if (this.getDatePicker().shouldShowWeekNumbers()) {
const dayContainer = main_core.Tag.render(_t16 || (_t16 = _2`<div class="ui-day-picker-week-day"></div>`));
main_core.Dom.append(dayContainer, weekDayContainer);
}
this.getWeekDays().forEach(weekDayName => {
const dayContainer = main_core.Tag.render(_t17 || (_t17 = _2`<div class="ui-day-picker-week-day">${0}</div>`), main_core.Text.encode(weekDayName));
main_core.Dom.append(dayContainer, weekDayContainer);
});
return weekDayContainer;
});
}
function _renderWeek2(monthNumber, weekNumber, monthContainer) {
return babelHelpers.classPrivateFieldLooseBase(this, _refs$1)[_refs$1].remember(`week-${monthNumber}-${weekNumber}`, () => {
const weekContainer = main_core.Tag.render(_t18 || (_t18 = _2`<div class="ui-day-picker-week"></div>`));
main_core.Dom.append(weekContainer, monthContainer);
return weekContainer;
});
}
function _renderWeekNumber2(monthNumber, weekNumber, week, weekContainer) {
const container = babelHelpers.classPrivateFieldLooseBase(this, _refs$1)[_refs$1].remember(`week-number-${monthNumber}-${weekNumber}`, () => {
const weekNumberContainer = main_core.Tag.render(_t19 || (_t19 = _2`<div class="ui-day-picker-week-number">${0}</div>`), main_date.DateTimeFormat.format('W', week[0].date, null, true));
main_core.Dom.append(weekNumberContainer, weekContainer);
return weekNumberContainer;
});
container.textContent = main_date.DateTimeFormat.format('W', week[0].date, null, true);
}
function _renderDay2(id, day, weekContainer) {
const button = babelHelpers.classPrivateFieldLooseBase(this, _refs$1)[_refs$1].remember(id, () => {
const dayContainer = main_core.Tag.render(_t20 || (_t20 = _2`
<button
type="button"
class="ui-day-picker-day"
data-day="${0}"
data-month="${0}"
data-year="${0}"
data-tab-priority="true"
role="gridcell"
>
<span class="ui-day-picker-day-inner">${0}</span>
<span class="ui-day-picker-day-marks"></span>
</button>
`), day.day, day.month, day.year, day.day);
main_core.Dom.append(dayContainer, weekContainer);
return dayContainer;
});
const currentDay = Number(button.dataset.day);
const currentMonth = Number(button.dataset.month);
const currentYear = Number(button.dataset.year);
if (currentDay !== day.day || currentMonth !== day.month || currentYear !== day.year) {
button.dataset.day = day.day;
button.dataset.month = day.month;
button.dataset.year = day.year;
button.firstElementChild.textContent = day.day;
}
const statuses = {
'--outside': day.outside,
'--current': !day.outside && day.current,
'--day-off': !day.outside && day.dayOff,
'--selected': day.selected,
'--hidden': day.hidden,
'--range-from': day.rangeFrom,
'--range-to': day.rangeTo,
'--range-in': day.rangeIn,
'--range-in-start': day.rangeInStart,
'--range-in-end': day.rangeInEnd,
'--range-in-selected': day.rangeInSelected,
'--range-selected': day.rangeSelected,
'--focused': day.focused
};
let classNames = 'ui-day-picker-day';
for (const [className, enabled] of Object.entries(statuses)) {
if (enabled) {
classNames = `${classNames} ${className}`;
}
}
if (button.className !== classNames) {
button.className = classNames;
}
// Day Colors
const currentBgColor = button.dataset.bgColor || null;
const currentTextColor = button.dataset.textColor || null;
if (currentBgColor !== day.bgColor) {
main_core.Dom.style(button.firstElementChild, '--ui-day-picker-day-bg-color', day.bgColor);
main_core.Dom.attr(button, 'data-bg-color', day.bgColor);
}
if (currentTextColor !== day.textColor) {
main_core.Dom.style(button.firstElementChild, '--ui-day-picker-day-text-color', day.textColor);
main_core.Dom.attr(button, 'data-text-color', day.textColor);
}
// Day Marks
const currentMarks = button.dataset.marks || '';
if (currentMarks !== day.marks.toString()) {
main_core.Dom.clean(button.lastElementChild);
if (day.marks.length > 0) {
for (const mark of day.marks) {
main_core.Dom.append(main_core.Tag.render(_t21 || (_t21 = _2`
<span class="ui-day-picker-day-mark" style="background-color: ${0}"></span>
`), mark), button.lastElementChild);
}
}
main_core.Dom.attr(button, 'data-marks', day.marks.toString());
}
button.tabIndex = day.tabIndex;
return button;
}
function _renderTime2() {
if (this.getDatePicker().isRangeMode()) {
const rangeStart = this.getDatePicker().getRangeStart();
const startBtn = this.getTimeRangeStartContainer().parentNode;
if (rangeStart === null) {
main_core.Dom.removeClass(this.getTimeRangeContainer(), '--range-start-set');
startBtn.disabled = true;
} else {
main_core.Dom.addClass(this.getTimeRangeContainer(), '--range-start-set');
startBtn.disabled = false;
this.getTimeRangeStartContainer().textContent = this.getDatePicker().formatTime(rangeStart);
}
const rangeEnd = this.getDatePicker().getRangeEnd();
const endBtn = this.getTimeRangeEndContainer().parentNode;
if (rangeEnd === null) {
main_core.Dom.removeClass(this.getTimeRangeContainer(), '--range-end-set');
endBtn.disabled = true;
} else {
main_core.Dom.addClass(this.getTimeRangeContainer(), '--range-end-set');
endBtn.disabled = false;
this.getTimeRangeEndContainer().textContent = this.getDatePicker().formatTime(rangeEnd);
}
} else {
const selectedDate = this.getDatePicker().getSelectedDate();
const button = this.getTimeContainer().firstElementChild;
if (selectedDate === null) {
main_core.Dom.removeClass(this.getTimeContainer(), '--time-set');
button.disabled = true;
} else {
main_core.Dom.addClass(this.getTimeContainer(), '--time-set');
button.disabled = false;
this.getTimeValueContainer().textContent = this.getDatePicker().formatTime(selectedDate);
}
}
}
function _getStartMonthDate2(date) {
const picker = this.getDatePicker();
const firstWeekDay = picker.getFirstWeekDay();
const firstMonthDay = floorDate(date, 'month');
let daysFromPrevMonth = firstMonthDay.getUTCDay() - firstWeekDay;
daysFromPrevMonth = daysFromPrevMonth < 0 ? daysFromPrevMonth + 7 : daysFromPrevMonth;
return addDate(firstMonthDay, 'day', -daysFromPrevMonth);
}
function _getRangeDates2() {
let from = null;
let to = null;
const focusDate = this.getDatePicker().getFocusDate();
if (this.getDatePicker().isRangeMode()) {
const range = this.getDatePicker().getSelectedDates();
from = range[0] || null;
to = range[1] || null;
if (focusDate !== null) {
if (range.length === 1) {
if (focusDate > from.getTime()) {
to = focusDate;
} else {
to = from;
from = focusDate;
}
}
/* else if (range.length === 2)
{
if (focusDate > to.getTime())
{
to = focusDate;
}
else if (focusDate < from.getTime())
{
from = focusDate;
}
} */
}
}
return [from, to];
}
function _handleDayClick2(event) {
const dayElement = event.target.closest('.ui-day-picker-day');
if (dayElement === null) {
return;
}
const dataset = dayElement.dataset;
const year = main_core.Text.toInteger(dataset.year);
const month = main_core.Text.toInteger(dataset.month);
const day = main_core.Text.toInteger(dataset.day);
this.emit('onSelect', {
year,
month,
day
});
}
function _handleDayMouseOver2(event) {
const dayElement = event.target.closest('.ui-day-picker-day');
if (dayElement === null) {
const weekElement = event.target.closest('.ui-day-picker-week');
if (weekElement !== null && babelHelpers.classPrivateFieldLooseBase(this, _mouseOutTimeout)[_mouseOutTimeout] !== null && this.getDatePicker().getSelectedDates().length === 1) {
clearTimeout(babelHelpers.classPrivateFieldLooseBase(this, _mouseOutTimeout)[_mouseOutTimeout]);
}
return;
}
if (babelHelpers.classPrivateFieldLooseBase(this, _mouseOutTimeout)[_mouseOutTimeout] !== null) {
clearTimeout(babelHelpers.classPrivateFieldLooseBase(this, _mouseOutTimeout)[_mouseOutTimeout]);
}
const dataset = dayElement.dataset;
const year = main_core.Text.toInteger(dataset.year);
const month = main_core.Text.toInteger(dataset.month);
const day = main_core.Text.toInteger(dataset.day);
this.emit('onFocus', {
year,
month,
day
});
}
function _handleDayMouseOut2(event) {
if (babelHelpers.classPrivateFieldLooseBase(this, _mouseOutTimeout)[_mouseOutTimeout] !== null) {
clearTimeout(babelHelpers.classPrivateFieldLooseBase(this, _mouseOutTimeout)[_mouseOutTimeout]);
}
babelHelpers.classPrivateFieldLooseBase(this, _mouseOutTimeout)[_mouseOutTimeout] = setTimeout(() => {
this.emit('onBlur');
babelHelpers.classPrivateFieldLooseBase(this, _mouseOutTimeout)[_mouseOutTimeout] = null;
}, 100);
}
function _handleMonthClick2() {
this.emit('onMonthClick');
}
function _handleYearClick2() {
this.emit('onYearClick');
}
function _handleTimeClick2() {
const selectedDate = this.getDatePicker().getSelectedDate();
if (selectedDate !== null) {
this.emit('onTimeClick');
}
}
function _handleTimeRangeStartClick2() {
const rangeStart = this.getDatePicker().getRangeStart();
if (rangeStart !== null) {
this.emit('onRangeStartClick');
}
}
function _handleTimeRangeEndClick2() {
const rangeEnd = this.getDatePicker().getRangeEnd();
if (rangeEnd !== null) {
this.emit('onRangeEndClick');
}
}
const DatePickerEvent = {
SELECT_CHANGE: 'onSelectChange',
BEFORE_SELECT: 'onBeforeSelect',
SELECT: 'onSelect',
BEFORE_DESELECT: 'onBeforeDeselect',
DESELECT: 'onDeselect',
DESTROY: 'onDestroy'
};
function isDateAfter(date, dateToCompare) {
return date.getTime() > dateToCompare.getTime();
}
function isDateBefore(date, dateToCompare) {
return date.getTime() < dateToCompare.getTime();
}
function copyTime(from, to) {
to.setUTCHours(from.getUTCHours());
to.setUTCMinutes(from.getUTCMinutes());
to.setUTCSeconds(from.getUTCSeconds());
}
function addToRange(date, range = []) {
const [from = null, to = null] = main_core.Type.isArray(range) ? range : [];
if (from !== null && to !== null) {
if (isDatesEqual(to, date) && isDatesEqual(from, date)) {
return [];
}
if (isDatesEqual(to, date)) {
return [to];
}
if (isDatesEqual(from, date)) {
// return [from];
return [];
}
if (isDateAfter(from, date)) {
copyTime(from, date);
return [date, to];
}
copyTime(to, date);
return [from, date];
}
if (to !== null) {
if (isDateAfter(date, to)) {
return [to, date];
}
return [date, to];
}
if (from !== null) {
if (isDateBefore(date, from)) {
return [date, from];
}
return [from, date];
}
return [date];
}
const replacements = {
Y: 'YYYY',
// 1999
M: 'MMM',
// Jan - Dec
f: 'MMMM',
// January - December
m: 'MM',
// 01 - 12
d: 'DD',
// 01 - 31
A: 'TT',
// AM - PM
a: 'T',
// am - pm
i: 'MI',
// 00 - 59
s: 'SS',
// 00 - 59
H: 'HH',
// 00 - 24
h: 'H',
// 01 - 12
G: 'GG',
// 0 - 24
g: 'G',
// 1 - 12
j: 'DD',
// 1 to 31
n: 'MM' // 1 to 31
};
function convertToDbFormat(format) {
let result = format;
for (const [from, to] of Object.entries(replacements)) {
result = result.replace(from, to);
}
return result;
}
// const tests = {
// 'Y-m-d H:i': 'YYYY-MM-DD HH:MI:SS',
// 'Y/m/d G:i': 'YYYY/MM/DD HH:MI:SS',
// 'd-m-Y H:i': 'DD/MM/YYYY HH:MI:SS',
// 'd.m.Y H:i': 'DD.MM.YYYY HH:MI:SS',
// 'd/m/Y H:i': 'DD/MM/YYYY HH:MI:SS',
// 'd/m/Y H:i \น\.': 'DD/MM/YYYY HH:MI:SS',
// 'd/m/Y g:i a': 'DD/MM/YYYY H:MI:SS T',
// 'd/m/Y g:i a': 'DD/MM/YYYY HH:MI:SS',
// 'j.m.Y H:i': 'DD.MM.YYYY HH:MI:SS',
// 'j/n/Y G:i': 'DD.MM.YYYY HH:MI:SS',
// 'j/n/Y G:i': 'DD/MM/YYYY HH:MI:SS',
// 'j/n/Y H:i': 'DD/MM/YYYY HH:MI:SS',
// 'j/n/Y g:i a': 'DD/MM/YYYY HH:MI:SS', //
// 'j/n/Y g:i a': 'DD/MM/YYYY H:MI:SS T', // co
// 'n/j/Y g:i a': 'MM/DD/YYYY H:MI:SS T',
// // 'n/j/Y g:i a': 'DD-MM-YYYY H:MI:SS T', // hi
// };
const WORD_REGEX = /[^\p{L}\p{N}\u0600-\u06FF_]/u;
const YEAR_REGEX = /^[1-9]\d{3}$/;
const DAY_REGEX = /^(0?[1-9]|[12]\d|3[01])$/;
const MONTH_REGEX = /^(0?[1-9]|1[0-2])$/;
const HOURS24_REGEX = /^(\d|0\d|1\d|2[0-3])$/;
// const HOURS12_REGEX = /^(1[0-2]|0?[1-9])$/;
const MINUTES_REGEX = /^(\d|[0-5]\d)$/;
const SECONDS_REGEX = /^(\d|[0-5]\d)$/;
function parseDate(dateValue, format) {
const tokens = format.split(WORD_REGEX);
const values = dateValue.split(WORD_REGEX);
const parts = {};
const errors = new Map();
for (const [i, token] of tokens.entries()) {
const valuePart = getDatePart(token, values[i]);
if (valuePart !== null) {
const [part, value, initialValue] = valuePart;
if (value === 'error') {
errors.set(part, initialValue);
continue;
}
parts[part] = value;
}
}
const hasDay = main_core.Type.isNumber(parts.day);
const hasMonth = main_core.Type.isNumber(parts.month);
const hasYear = main_core.Type.isNumber(parts.year);
if (errors.size > 0) {
const hasDate = hasYear && hasMonth && hasDay;
const emptyTime = errors.has('hours') && errors.has('minutes') && main_core.Type.isUndefined(errors.get('hours')) && main_core.Type.isUndefined(errors.get('minutes')) && (errors.has('seconds') && main_core.Type.isUndefined(errors.get('seconds')) || !errors.has('seconds'));
if (!hasDate || !emptyTime) {
return null;
}
}
const today = createDate(new Date());
const {
day: currentDay,
month: currentMonth,
year: currentYear
} = getDate(today);
const defaultYear = currentYear;
const defaultMonth = hasYear ? 0 : currentMonth;
const defaultDay = hasYear || hasMonth ? 1 : currentDay;
const {
meridiem
} = parts;
const is12Hours = tokens.includes('H') || tokens.includes('G');
const isPM = main_core.Type.isStringFilled(meridiem) && meridiem.toLowerCase() === 'pm';
let {
hours
} = parts;
if (is12Hours) {
if (isPM) {
hours += hours === 12 ? 0 : 12;
} else {
hours = hours < 12 ? hours : 0;
}
}
const {
year = defaultYear,
month = defaultMonth,
day = defaultDay,
minutes = 0,
seconds = 0
} = parts;
return createUtcDate(year, month, day, hours, minutes, seconds);
}
function getDatePart(token, value) {
// DD|MI|MMMM|MM|M|YYYY|HH|H|SS|TT|T|GG|G
switch (token) {
case 'YYYY':
{
if (!YEAR_REGEX.test(value)) {
return ['year', 'error', value];
}
const year = main_core.Text.toInteger(value);
return ['year', year, value];
}
case 'MMMM':
case 'MMM':
{
const monthIndex = main_date.DateTimeFormat.getMonthIndex(value);
if (main_core.Type.isNumber(monthIndex)) {
return ['month', monthIndex - 1, value];
}
return ['month', 'error', value];
}
case 'MM':
case 'M':
{
if (!MONTH_REGEX.test(value)) {
return ['month', 'error', value];
}
const monthIndex = main_core.Text.toInteger(value);
return ['month', monthIndex === 0 ? monthIndex : Math.min(Math.max(monthIndex, 1), 12) - 1, value];
}
case 'DD':
case 'D':
{
if (!DAY_REGEX.test(value)) {
return ['day', 'error', value];
}
const day = main_core.Text.toInteger(value);
return ['day', Math.min(Math.max(day, 1), 31), value];
}
case 'HH':
case 'GG':
{
if (!HOURS24_REGEX.test(value)) {
return ['hours', 'error', value];
}
const hours = main_core.Text.toInteger(value);
return ['hours', Math.min(Math.max(hours, 0), 23), value];
}
case 'H':
case 'G':
{
if (!HOURS24_REGEX.test(value)) {
return ['hours', 'error', value];
}
const hours = main_core.Text.toInteger(value);
return ['hours', hours > 12 ? hours - 12 : hours, value];
}
case 'MI':
{
if (!MINUTES_REGEX.test(value)) {
return ['minutes', 'error', value];
}
const minutes = main_core.Text.toInteger(value);
return ['minutes', Math.min(Math.max(minutes, 0), 59), value];
}
case 'SS':
{
if (main_core.Type.isStringFilled(value) && ['am', 'pm'].includes(value.toLowerCase())) {
return ['meridiem', value, value];
}
if (main_core.Type.isStringFilled(value) && !SECONDS_REGEX.test(value)) {
return ['seconds', 'error', value];
}
const seconds = main_core.Text.toInteger(value);
return ['seconds', Math.min(Math.max(seconds, 0), 59), value];
}
case 'T':
case 'TT':
if (main_core.Type.isStringFilled(value)) {
return ['meridiem', value, value];
}
return null;
default:
return null;
}
}
function createDate(value, formatDate = null) {
let date = null;
if (main_core.Type.isStringFilled(value) && main_core.Type.isStringFilled(formatDate)) {
date = parseDate(value, convertToDbFormat(formatDate));
} else if (main_core.Type.isNumber(value)) {
date = new Date(value);
date = createUTC(date);
} else if (main_core.Type.isDate(value)) {
date = value.__utc ? value : createUTC(value);
}
if (date === null) {
console.warn(`DatePicker: invalid date or format (${value}).`);
} else {
date.__utc = true;
}
return date;
}
function createUTC(date) {
return new Date(Date.UTC(date.getFullYear(), date.getMonth(), date.getDate(), date.getHours(), date.getMinutes(), date.getSeconds(), 0));
}
const FOCUSABLE_ELEMENTS_SELECTOR = ['button:not([disabled])', '[tabindex]:not([tabindex="-1"]):not([disabled])'].join(', ');
function isElementFocused(element) {
return element.ownerDocument.activeElement === element;
}
function getFocusableBoundaryElements(element, matcher = null) {
const matcherFn = main_core.Type.isFunction(matcher) ? matcher : () => true;
const elements = [...element.querySelectorAll(FOCUSABLE_ELEMENTS_SELECTOR)].filter(el => {
return el.tabIndex !== -1 && matcherFn(el);
});
if (elements.length === 0) {
return [];
}
if (elements.length === 1) {
return [elements[0], elements[0]];
}
let next = elements.at(0);
let prev = elements.at(-1);
for (const [index, currentElement] of elements.entries()) {
if (isElementFocused(currentElement)) {
prev = index > 0 ? elements[index - 1] : elements.at(-1);
next = main_core.Type.isUndefined(elements[index + 1]) ? elements.at(0) : elements[index + 1];
break;
}
}
return [prev, next];
}
function isDateLike(date) {
return main_core.Type.isStringFilled(date) || main_core.Type.isNumber(date) || main_core.Type.isDate(date);
}
function setTime(date, hours = 0, minutes = 0, seconds = 0) {
const newDate = cloneDate(date);
if (hours !== null) {
newDate.setUTCHours(hours);
}
if (minutes !== null) {
newDate.setUTCMinutes(minutes);
}
if (seconds !== null) {
newDate.setUTCSeconds(seconds);
}
return newDate;
}
function isDateMatch(day, matchers) {
return matchers.some(matcher => {
if (main_core.Type.isFunction(matcher)) {
return matcher(day);
}
if (main_core.Type.isDate(matcher)) {
return isDatesEqual(day, matcher);
}
if (main_core.Type.isArray(matcher)) {
return matcher.some(date => {
return isDatesEqual(day, date);
});
}
if (main_core.Type.isBoolean(matcher)) {
return matcher;
}
return false;
});
}
const keyMap = {
ArrowRight: {
day: 1,
month: 1,
year: 1,
hours: 1,
minutes: 1
},
ArrowLeft: {
day: -1,
month: -1,
year: -1,
hours: -1,
minutes: -1
},
ArrowUp: {
day: -7,
month: -3,
year: -3,
hours: -4,
minutes: -2
},
ArrowDown: {
day: 7,
month: 3,
year: 3,
hours: 4,
minutes: 2
}
};
var _datePicker$1 = /*#__PURE__*/babelHelpers.classPrivateFieldLooseKey("datePicker");
var _lastFocusElement = /*#__PURE__*/babelHelpers.classPrivateFieldLooseKey("lastFocusElement");
var _handleKeyDown = /*#__PURE__*/babelHelpers.classPrivateFieldLooseKey("handleKeyDown");
var _isRootContainerFocused = /*#__PURE__*/babelHelpers.classPrivateFieldLooseKey("isRootContainerFocused");
var _handleFocusChange = /*#__PURE__*/babelHelpers.classPrivateFieldLooseKey("handleFocusChange");
var _adjustLastFocusElement = /*#__PURE__*/babelHelpers.classPrivateFieldLooseKey("adjustLastFocusElement");
var _handleFocusIn = /*#__PURE__*/babelHelpers.classPrivateFieldLooseKey("handleFocusIn");
var _handleFocusOut = /*#__PURE__*/babelHelpers.classPrivateFieldLooseKey("handleFocusOut");
class KeyboardNavigation {
constructor(datePicker) {
Object.defineProperty(this, _handleFocusOut, {
value: _handleFocusOut2
});
Object.defineProperty(this, _handleFocusIn, {
value: _handleFocusIn2
});
Object.defineProperty(this, _adjustLastFocusElement, {
value: _adjustLastFocusElement2
});
Object.defineProperty(this, _handleFocusChange, {
value: _handleFocusChange2
});
Object.defineProperty(this, _isRootContainerFocused, {
value: _isRootContainerFocused2
});
Object.defineProperty(this, _handleKeyDown, {
value: _handleKeyDown2
});
Object.defineProperty(this, _datePicker$1, {
writable: true,
value: null
});
Object.defineProperty(this, _lastFocusElement, {
writable: true,
value: null
});
babelHelpers.classPrivateFieldLooseBase(this, _datePicker$1)[_datePicker$1] = datePicker;
}
init() {
main_core.Event.bind(babelHelpers.classPrivateFieldLooseBase(this, _datePicker$1)[_datePicker$1].getContainer(), 'keydown', babelHelpers.classPrivateFieldLooseBase(this, _handleKeyDown)[_handleKeyDown].bind(this));
main_core.Event.bind(babelHelpers.classPrivateFieldLooseBase(this, _datePicker$1)[_datePicker$1].getContainer(), 'focusin', babelHelpers.classPrivateFieldLooseBase(this, _handleFocusIn)[_handleFocusIn].bind(this));
main_core.Event.bind(babelHelpers.classPrivateFieldLooseBase(this, _datePicker$1)[_datePicker$1].getContainer(), 'focusout', babelHelpers.classPrivateFieldLooseBase(this, _handleFocusOut)[_handleFocusOut].bind(this));
}
setLastFocusElement(element) {
this.resetLastFocusElement();
babelHelpers.classPrivateFieldLooseBase(this, _lastFocusElement)[_lastFocusElement] = element;
main_core.Dom.addClass(babelHelpers.classPrivateFieldLooseBase(this, _lastFocusElement)[_lastFocusElement], '--focus-visible');
}
resetLastFocusElement() {
main_core.Dom.removeClass(babelHelpers.classPrivateFieldLooseBase(this, _lastFocusElement)[_lastFocusElement], '--focus-visible');
babelHelpers.classPrivateFieldLooseBase(this, _lastFocusElement)[_lastFocusElement] = null;
}
}
function _handleKeyDown2(event) {
const picker = babelHelpers.classPrivateFieldLooseBase(this, _datePicker$1)[_datePicker$1];
if (event.key === 'Backspace' && picker.getType() === 'date' && ['year', 'month', 'time'].includes(picker.getCurrentView())) {
event.preventDefault();
this.resetLastFocusElement();
picker.setCurrentView('day');
return;
}
if (event.key === 'Tab' && !picker.isInline()) {
babelHelpers.classPrivateFieldLooseBase(this, _handleFocusChange)[_handleFocusChange](event);
return;
}
const view = picker.getCurrentView();
if (view === 'time' && picker.getTimePickerStyle() === 'wheel') {
return;
}
if (event.key === 'Space' || event.key === 'Enter' || event.key === ' ') {
event.preventDefault();
this.resetLastFocusElement();
event.target.click();
} else if (!main_core.Type.isUndefined(keyMap[event.key])) {
event.preventDefault();
this.resetLastFocusElement();
const initialFocus = picker.getFocusDate() === null && babelHelpers.classPrivateFieldLooseBase(this, _isRootContainerFocused)[_isRootContainerFocused]();
if (view === 'time') {
const timePicker = babelHelpers.classPrivateFieldLooseBase(this, _datePicker$1)[_datePicker$1].getPicker('time');
let currentFocusDate = cloneDate(picker.getInitialFocusDate(timePicker.getMode()));
let {
hours,
minutes
} = getDate(currentFocusDate);
if (initialFocus) {
picker.setFocusDate(currentFocusDate);
babelHelpers.classPrivateFieldLooseBase(this, _adjustLastFocusElement)[_adjustLastFocusElement]();
} else if (timePicker.getFocusColumn() === 'hours') {
const increment = keyMap[event.key].hours;
hours += increment;
if (hours < 0) {
hours += 24;
} else if (hours > 23) {
hours -= 24;
}
currentFocusDate = setTime(currentFocusDate, hours, null, null);
picker.setFocusDate(currentFocusDate);
babelHelpers.classPrivateFieldLooseBase(this, _adjustLastFocusElement)[_adjustLastFocusElement]();
} else if (timePicker.getFocusColumn() === 'minutes') {
const increment = keyMap[event.key].minutes;
minutes += timePicker.getCurrentMinuteStep() * increment;
if (minutes < 0) {
minutes += 60;
} else if (minutes > 59) {
minutes -= 60;
}
currentFocusDate = setTime(currentFocusDate, null, minutes, null);
picker.setFocusDate(currentFocusDate);
timePicker.adjustMinuteFocusPosition();
babelHelpers.classPrivateFieldLooseBase(this, _adjustLastFocusElement)[_adjustLastFocusElement]();
}
} else {
const currentFocusDate = cloneDate(picker.getInitialFocusDate());
if (initialFocus) {
picker.setFocusDate(currentFocusDate);
} else {
const increment = keyMap[event.key][view];
const focusDate = addDate(currentFocusDate, view, increment);
picker.setFocusDate(focusDate);
}
babelHelpers.classPrivateFieldLooseBase(this, _adjustLastFocusElement)[_adjustLastFocusElement]();
}
}
}
function _isRootContainerFocused2() {
const rootContainer = babelHelpers.classPrivateFieldLooseBase(this, _datePicker$1)[_datePicker$1].getContainer();
return rootContainer.ownerDocument.activeElement === rootContainer;
}
function _handleFocusChange2(event) {
let prev = null;
let next = null;
const currentPickerContainer = babelHelpers.classPrivateFieldLooseBase(this, _datePicker$1)[_datePicker$1].getPicker().getContainer();
if (babelHelpers.classPrivateFieldLooseBase(this, _isRootContainerFocused)[_isRootContainerFocused]()) {
[prev = null, next = null] = getFocusableBoundaryElements(currentPickerContainer, element => element.dataset.tabPriority === 'true');
}
if (prev === null && next === null) {
[prev, next] = getFocusableBoundaryElements(currentPickerContainer);
}
if (event.shiftKey) {
var _prev;
(_prev = prev) == null ? void 0 : _prev.focus({
preventScroll: true,
focusVisible: true
});
this.setLastFocusElement(prev);
} else {
var _next;
(_next = next) == null ? void 0 : _next.focus({
preventScroll: true,
focusVisible: true
});
this.setLastFocusElement(next);
}
event.preventDefault();
}
function _adjustLastFocusElement2() {
const rootContainer = babelHelpers.classPrivateFieldLooseBase(this, _datePicker$1)[_datePicker$1].getContainer();
const activeElement = rootContainer.ownerDocument.activeElement;
if (rootContainer.contains(activeElement)) {
this.setLastFocusElement(activeElement);
}
}
function _handleFocusIn2(event) {
this.resetLastFocusElement();
// this.#lastFocusElement = event.target;
}
function _handleFocusOut2(event) {
this.resetLastFocusElement();
// this.#lastFocusElement = event.target;
}
let _$1 = t => t,
_t$2,
_t2$2,
_t3$2,
_t4$2;
var _refs$2 = /*#__PURE__*/babelHelpers.classPrivateFieldLooseKey("refs");
var _renderQuarter = /*#__PURE__*/babelHelpers.classPrivateFieldLooseKey("renderQuarter");
var _renderMonth = /*#__PURE__*/babelHelpers.classPrivateFieldLooseKey("renderMonth");
var _handleMouseEnter = /*#__PURE__*/babelHelpers.classPrivateFieldLooseKey("handleMouseEnter");
var _handleMouseLeave = /*#__PURE__*/babelHelpers.classPrivateFieldLooseKey("handleMouseLeave");
var _handleMonthClick$1 = /*#__PURE__*/babelHelpers.classPrivateFieldLooseKey("handleMonthClick");
var _handleTitleClick = /*#__PURE__*/babelHelpers.classPrivateFieldLooseKey("handleTitleClick");
class MonthPicker extends BasePicker {
constructor(...args) {
super(...args);
Object.defineProperty(this, _handleTitleClick, {
value: _handleTitleClick2
});
Object.defineProperty(this, _handleMonthClick$1, {
value: _handleMonthClick2$1
});
Object.defineProperty(this, _handleMouseLeave, {
value: _handleMouseLeave2
});
Object.defineProperty(this, _handleMouseEnter, {
value: _handleMouseEnter2
});
Object.defineProperty(this, _renderMonth, {
value: _renderMonth2
});
Object.defineProperty(this, _renderQuarter, {
value: _renderQuarter2
});
Object.defineProperty(this, _refs$2, {
writable: true,
value: new main_core_cache.MemoryCache()
});
}
getContainer() {
return babelHelpers.classPrivateFieldLooseBase(this, _refs$2)[_refs$2].remember('container', () => {
return main_core.Tag.render(_t$2 || (_t$2 = _$1`
<div class="ui-month-picker">
${0}
${0}
</div>
`), this.getHeaderContainer(this.getPrevBtn(), this.getHeaderTitle(), this.getNextBtn()), this.getContentContainer());
});
}
getHeaderTitle() {
return babelHelpers.classPrivateFieldLooseBase(this, _refs$2)[_refs$2].remember('header-title', () => {
return main_core.Tag.render(_t2$2 || (_t2$2 = _$1`
<button type="button" class="ui-month-picker-header-title" onclick="${0}"></button>
`), babelHelpers.classPrivateFieldLooseBase(this, _handleTitleClick)[_handleTitleClick].bind(this));
});
}
getMonths() {
const {
year
} = getDate(this.getDatePicker().getViewDate());
const today = this.getDatePicker().getToday();
const focusDate = this.getDatePicker().getFocusDate();
const initialFocusDate = this.getDatePicker().getInitialFocusDate();
// const formatter = new Intl.DateTimeFormat(
// this.getDatePicker().getLocale(),
// { month: 'short', timeZone: 'UTC' },
// );
const months = [];
let currentMonthIndex = 0;
for (let quarterIndex = 0; quarterIndex < 4; quarterIndex++) {
const quarter = [];
for (let monthIndex = 0; monthIndex < 3; monthIndex++) {
const date = createUtcDate(year, currentMonthIndex);
const focused = isDatesEqual(date, focusDate, 'month');
const month = {
name: main_date.DateTimeFormat.format('f', date, null, true),
// name: formatter.format(date),
date,
year,
month: currentMonthIndex,
current: isDatesEqual(date, today, 'month'),
selected: this.getDatePicker().isDateSelected(date, 'month'),
focused,
tabIndex: focused || isDatesEqual(date, initialFocusDate, 'month') ? 0 : -1
};
quarter.push(month);
currentMonthIndex++;
}
months.push(quarter);
}
return months;
}
renderTo(container) {
super.renderTo(container);
main_core.Event.bind(this.getContentContainer(), 'click', babelHelpers.classPrivateFieldLooseBase(this, _handleMonthClick$1)[_handleMonthClick$1].bind(this));
}
render() {
const isFocused = this.getDatePicker().isFocused();
let focusButton = null;
this.getMonths().forEach((quarter, index) => {
const quarterContainer = babelHelpers.classPrivateFieldLooseBase(this, _renderQuarter)[_renderQuarter](index);
quarter.forEach(month => {
const button = babelHelpers.classPrivateFieldLooseBase(this, _renderMonth)[_renderMonth](month, quarterContainer);
if (month.focused) {
focusButton = button;
}
});
});
if (focusButton !== null && isFocused) {
focusButton.focus({
preventScroll: true
});
}
const {
year: currentYear
} = getDate(this.getDatePicker().getViewDate());
this.getHeaderTitle().textContent = currentYear;
}
}
function _renderQuarter2(index) {
return babelHelpers.classPrivateFieldLooseBase(this, _refs$2)[_refs$2].remember(`quarter-${index}`, () => {
const container = main_core.Tag.render(_t3$2 || (_t3$2 = _$1`<div class="ui-month-picker-quarter"></div>`));
main_core.Dom.append(container, this.getContentContainer());
return container;
});
}
function _renderMonth2(month, quarterContainer) {
const button = babelHelpers.classPrivateFieldLooseBase(this, _refs$2)[_refs$2].remember(`month-${month.month}`, () => {
const monthButton = main_core.Tag.render(_t4$2 || (_t4$2 = _$1`
<button
type="button"
class="ui-month-picker-month"
data-year="${0}"
data-month="${0}"
data-tab-priority="true"
onmouseenter="${0}"
onmouseleave="${0}"
>${0}</button>
`), month.year, month.month, babelHelpers.classPrivateFieldLooseBase(this, _handleMouseEnter)[_handleMouseEnter].bind(this), babelHelpers.classPrivateFieldLooseBase(this, _handleMouseLeave)[_handleMouseLeave].bind(this), main_core.Text.encode(month.name));
main_core.Dom.append(monthButton, quarterContainer);
return monthButton;
});
const currentYear = Number(button.dataset.year);
if (currentYear !== month.year) {
button.dataset.year = month.year;
}
if (month.current) {
main_core.Dom.addClass(button, '--current');
} else {
main_core.Dom.removeClass(button, '--current');
}
if (month.selected) {
main_core.Dom.addClass(button, '--selected');
} else {
main_core.Dom.removeClass(button, '--selected');
}
if (month.focused) {
main_core.Dom.addClass(button, '--focused');
} else {
main_core.Dom.removeClass(button, '--focused');
}
button.tabIndex = month.tabIndex;
return button;
}
function _handleMouseEnter2(event) {
const dataset = event.target.dataset;
const year = main_core.Text.toInteger(dataset.year);
const month = main_core.Text.toInteger(dataset.month);
this.emit('onFocus', {
year,
month
});
}
function _handleMouseLeave2(event) {
this.emit('onBlur');
}
function _handleMonthClick2$1(event) {
if (!main_core.Dom.hasClass(event.target, 'ui-month-picker-month')) {
return;
}
const year = main_core.Text.toInteger(event.target.dataset.year);
const month = main_core.Text.toInteger(event.target.dataset.month);
this.emit('onSelect', {
year,
month
});
}
function _handleTitleClick2(event) {
this.emit('onTitleClick');
}
var _mode = /*#__PURE__*/babelHelpers.classPrivateFieldLooseKey("mode");
var _currentMinuteStep = /*#__PURE__*/babelHelpers.classPrivateFieldLooseKey("currentMinuteStep");
var _focusColumn = /*#__PURE__*/babelHelpers.classPrivateFieldLooseKey("focusColumn");
class TimePickerBase extends BasePicker {
constructor(...args) {
super(...args);
Object.defineProperty(this, _mode, {
writable: true,
value: 'datetime'
});
Object.defineProperty(this, _currentMinuteStep, {
writable: true,
value: Infinity
});
Object.defineProperty(this, _focusColumn, {
writable: true,
value: 'hours'
});
}
getTimeDate() {
if (babelHelpers.classPrivateFieldLooseBase(this, _mode)[_mode] === 'range-start') {
return this.getDatePicker().getRangeStart();
}
if (babelHelpers.classPrivateFieldLooseBase(this, _mode)[_mode] === 'range-end') {
return this.getDatePicker().getRangeEnd();
}
return this.getDatePicker().getSelectedDate();
}
setMode(mode) {
babelHelpers.classPrivateFieldLooseBase(this, _mode)[_mode] = mode;
}
getMode() {
return babelHelpers.classPrivateFieldLooseBase(this, _mode)[_mode];
}
getFocusColumn() {
return babelHelpers.classPrivateFieldLooseBase(this, _focusColumn)[_focusColumn];
}
setFocusColumn(column) {
if (main_core.Type.isStringFilled(column) && ['hours', 'minutes'].includes(column)) {
babelHelpers.classPrivateFieldLooseBase(this, _focusColumn)[_focusColumn] = column;
}
}
getHours() {
const selectedDate = this.getTimeDate();
const selectedHour = selectedDate === null ? -1 : selectedDate.getUTCHours();
const isAmPmMode = this.getDatePicker().isAmPmMode();
const focusDate = this.getDatePicker().getFocusDate();
const focusHour = focusDate === null ? selectedHour : focusDate.getUTCHours();
const initialFocusHour = this.getDatePicker().getInitialFocusDate(this.getMode()).getUTCHours();
const hours = [];
for (let hour = 0, index = 0; hour < 24; hour++, index++) {
let hourToDisplay = hour;
if (isAmPmMode) {
hourToDisplay %= 12;
hourToDisplay = hourToDisplay === 0 ? 12 : hourToDisplay;
}
hours.push({
index,
name: isAmPmMode ? hourToDisplay : String(hourToDisplay).padStart(2, '0'),
value: hour,
selected: selectedHour === hour,
focused: focusHour === hour && this.getFocusColumn() === 'hours',
tabIndex: focusHour === hour || initialFocusHour === hour ? 0 : -1
});
}
return hours;
}
getMinutes() {
const selectedDate = this.getTimeDate();
const selectedMinute = selectedDate === null ? -1 : selectedDate.getUTCMinutes();
const step = Math.min(this.getDatePicker().getMinuteStepByDate(selectedDate), babelHelpers.classPrivateFieldLooseBase(this, _currentMinuteStep)[_currentMinuteStep]);
const focusDate = this.getDatePicker().getFocusDate();
const focusMinute = focusDate === null ? selectedMinute : focusDate.getUTCMinutes();
const initialFocusMinute = this.getDatePicker().getInitialFocusDate(this.getMode()).getUTCMinutes();
babelHelpers.classPrivateFieldLooseBase(this, _currentMinuteStep)[_currentMinuteStep] = step;
const minutes = [];
for (let minute = 0, index = 0; minute < 60; minute++) {
const hidden = minute % step !== 0;
minutes.push({
index,
name: String(minute).padStart(2, '0'),
value: minute,
selected: selectedMinute === minute,
hidden,
focused: !hidden && focusMinute === minute && this.getFocusColumn() === 'minutes',
tabIndex: !hidden && (focusMinute === minute || initialFocusMinute === minute) ? 0 : -1
});
if (!hidden) {
index++;
}
}
return minutes;
}
getMeridiems() {
const selectedDate = this.getTimeDate();
const selectedHour = selectedDate === null ? -1 : selectedDate.getUTCHours();
const isPm = selectedHour >= 12;
return [{
index: 0,
name: 'AM',
value: 'am',
selected: !isPm
}, {
index: 1,
name: 'PM',
value: 'pm',
selected: isPm
}];
}
getCurrentMinuteStep() {
return babelHelpers.classPrivateFieldLooseBase(this, _currentMinuteStep)[_currentMinuteStep];
}
onHide() {
this.setFocusColumn('hours');
}
render() {
const picker = this.getDatePicker();
const timeDate = this.getTimeDate();
if (timeDate === null) {
this.getHeaderTitle().textContent = '';
} else {
this.getHeaderTitle().textContent = picker.getType() === 'time' ? picker.formatTime(timeDate) : picker.formatDate(timeDate);
}
}
}
let _$2 = t => t,
_t$3,
_t2$3,
_t3$3,
_t4$3,
_t5$1,
_t6$1,
_t7$1,
_t8$1,
_t9$1,
_t10$1;
var _refs$3 = /*#__PURE__*/babelHelpers.classPrivateFieldLooseKey("refs");
var _focusSelectorId = /*#__PURE__*/babelHelpers.classPrivateFieldLooseKey("focusSelectorId");
var _selectorScrollHandler = /*#__PURE__*/babelHelpers.classPrivateFieldLooseKey("selectorScrollHandler");
var _renderHour = /*#__PURE__*/babelHelpers.classPrivateFieldLooseKey("renderHour");
var _renderMinute = /*#__PURE__*/babelHelpers.classPrivateFieldLooseKey("renderMinute");
var _renderMeridiem = /*#__PURE__*/babelHelpers.classPrivateFieldLooseKey("renderMeridiem");
var _adjustScrollHeight = /*#__PURE__*/babelHelpers.classPrivateFieldLooseKey("adjustScrollHeight");
var _adjustScrollPosition = /*#__PURE__*/babelHelpers.classPrivateFieldLooseKey("adjustScrollPosition");
var _handleItemClick = /*#__PURE__*/babelHelpers.classPrivateFieldLooseKey("handleItemClick");
var _handleTitleClick$1 = /*#__PURE__*/babelHelpers.classPrivateFieldLooseKey("handleTitleClick");
var _handleSelectorMouseEnter = /*#__PURE__*/babelHelpers.classPrivateFieldLooseKey("handleSelectorMouseEnter");
var _handleFocus = /*#__PURE__*/babelHelpers.classPrivateFieldLooseKey("handleFocus");
var _handleSelectorScroll = /*#__PURE__*/babelHelpers.classPrivateFieldLooseKey("handleSelectorScroll");
var _selectTime = /*#__PURE__*/babelHelpers.classPrivateFieldLooseKey("selectTime");
class TimePickerWheel extends TimePickerBase {
constructor(...args) {
super(...args);
Object.defineProperty(this, _selectTime, {
value: _selectTime2
});
Object.defineProperty(this, _handleSelectorScroll, {
value: _handleSelectorScroll2
});
Object.defineProperty(this, _handleFocus, {
value: _handleFocus2
});
Object.defineProperty(this, _handleSelectorMouseEnter, {
value: _handleSelectorMouseEnter2
});
Object.defineProperty(this, _handleTitleClick$1, {
value: _handleTitleClick2$1
});
Object.defineProperty(this, _handleItemClick, {
value: _handleItemClick2
});
Object.defineProperty(this, _adjustScrollPosition, {
value: _adjustScrollPosition2
});
Object.defineProperty(this, _adjustScrollHeight, {
value: _adjustScrollHeight2
});
Object.defineProperty(this, _renderMeridiem, {
value: _renderMeridiem2
});
Object.defineProperty(this, _renderMinute, {
value: _renderMinute2
});
Object.defineProperty(this, _renderHour, {
value: _renderHour2
});
Object.defineProperty(this, _refs$3, {
writable: true,
value: new main_core_cache.MemoryCache()
});
Object.defineProperty(this, _focusSelectorId, {
writable: true,
value: null
});
Object.defineProperty(this, _selectorScrollHandler, {
writable: true,
value: main_core.Runtime.debounce(babelHelpers.classPrivateFieldLooseBase(this, _handleSelectorScroll)[_handleSelectorScroll], 200, this)
});
}
getContainer() {
return babelHelpers.classPrivateFieldLooseBase(this, _refs$3)[_refs$3].remember('container', () => {
return main_core.Tag.render(_t$3 || (_t$3 = _$2`
<div class="ui-time-picker">
${0}
<div class="ui-time-picker-content">
${0}
<div
class="ui-time-picker-selector"
data-selector-id="hour"
onmouseenter="${0}"
>
<div class="ui-time-picker-selector-title">${0}</div>
<div class="ui-time-picker-viewport">
<div class="ui-time-picker-scroll-container"
tabindex="0"
onscroll="${0}"
onfocus="${0}"
>
${0}
</div>
</div>
</div>
<div class="ui-time-picker-time-separator"></div>
<div
class="ui-time-picker-selector"
data-selector-id="minute"
onmouseenter="${0}"
>
<div class="ui-time-picker-selector-title">${0}</div>
<div class="ui-time-picker-viewport">
<div class="ui-time-picker-scroll-container"
tabindex="0"
onscroll="${0}"
onfocus="${0}"
>
${0}
</div>
</div>
</div>
${0}
</div>
</div>
`), this.getDatePicker().getType() === 'time' ? null : this.getHeaderContainer(this.getPrevBtn(), this.getHeaderTitle()), this.getTimeHighlighter(), babelHelpers.classPrivateFieldLooseBase(this, _handleSelectorMouseEnter)[_handleSelectorMouseEnter].bind(this), main_core.Loc.getMessage('UI_DATE_PICKER_HOURS'), babelHelpers.classPrivateFieldLooseBase(this, _selectorScrollHandler)[_selectorScrollHandler], babelHelpers.classPrivateFieldLooseBase(this, _handleFocus)[_handleFocus].bind(this), this.getHoursContainer(), babelHelpers.classPrivateFieldLooseBase(this, _handleSelectorMouseEnter)[_handleSelectorMouseEnter].bind(this), main_core.Loc.getMessage('UI_DATE_PICKER_MINUTES'), babelHelpers.classPrivateFieldLooseBase(this, _selectorScrollHandler)[_selectorScrollHandler], babelHelpers.classPrivateFieldLooseBase(this, _handleFocus)[_handleFocus].bind(this), this.getMinutesContainer(), this.getDatePicker().isAmPmMode() ? main_core.Tag.render(_t2$3 || (_t2$3 = _$2`
<div
class="ui-time-picker-selector"
onmouseenter="${0}"
data-selector-id="meridiem"
>
<div class="ui-time-picker-selector-title">AM/PM</div>
<div class="ui-time-picker-viewport">
<div class="ui-time-picker-scroll-container"
tabindex="0"
onscroll="${0}"
onfocus="${0}"
>
${0}
</div>
</div>
</div>
`), babelHelpers.classPrivateFieldLooseBase(this, _handleSelectorMouseEnter)[_handleSelectorMouseEnter].bind(this), babelHelpers.classPrivateFieldLooseBase(this, _selectorScrollHandler)[_selectorScrollHandler], babelHelpers.classPrivateFieldLooseBase(this, _handleFocus)[_handleFocus].bind(this), this.getMeridiemsContainer()) : null);
});
}
getHeaderTitle() {
return babelHelpers.classPrivateFieldLooseBase(this, _refs$3)[_refs$3].remember('header-title', () => {
return main_core.Tag.render(_t3$3 || (_t3$3 = _$2`
<div class="ui-time-picker-header-title" onclick="${0}"></div>
`), babelHelpers.classPrivateFieldLooseBase(this, _handleTitleClick$1)[_handleTitleClick$1].bind(this));
});
}
getHoursContainer() {
return babelHelpers.classPrivateFieldLooseBase(this, _refs$3)[_refs$3].remember('hours', () => {
return main_core.Tag.render(_t4$3 || (_t4$3 = _$2`
<div
class="ui-time-picker-list-container"
onclick="${0}"
></div>
`), babelHelpers.classPrivateFieldLooseBase(this, _handleItemClick)[_handleItemClick].bind(this));
});
}
getMinutesContainer() {
return babelHelpers.classPrivateFieldLooseBase(this, _refs$3)[_refs$3].remember('minutes', () => {
return main_core.Tag.render(_t5$1 || (_t5$1 = _$2`
<div
class="ui-time-picker-list-container"
onclick="${0}"
></div>
`), babelHelpers.classPrivateFieldLooseBase(this, _handleItemClick)[_handleItemClick].bind(this));
});
}
getMeridiemsContainer() {
return babelHelpers.classPrivateFieldLooseBase(this, _refs$3)[_refs$3].remember('meridiems', () => {
return main_core.Tag.render(_t6$1 || (_t6$1 = _$2`
<div
class="ui-time-picker-list-container"
onclick="${0}"
></div>
`), babelHelpers.classPrivateFieldLooseBase(this, _handleItemClick)[_handleItemClick].bind(this));
});
}
getTimeHighlighter() {
return babelHelpers.classPrivateFieldLooseBase(this, _refs$3)[_refs$3].remember('time-highlighter', () => {
return main_core.Tag.render(_t7$1 || (_t7$1 = _$2`<div class="ui-time-picker-time-highlighter"></div>`));
});
}
onShow() {
super.onShow();
this.focusSelector('hour', !this.getDatePicker().isInline());
}
renderTo(container) {
super.renderTo(container);
babelHelpers.classPrivateFieldLooseBase(this, _adjustScrollHeight)[_adjustScrollHeight](this.getHoursContainer());
babelHelpers.classPrivateFieldLooseBase(this, _adjustScrollHeight)[_adjustScrollHeight](this.getMinutesContainer());
if (this.getDatePicker().isAmPmMode()) {
babelHelpers.classPrivateFieldLooseBase(this, _adjustScrollHeight)[_adjustScrollHeight](this.getMeridiemsContainer());
}
}
render() {
super.render();
let selectedHourIndex = 0;
this.getHours().forEach(hour => {
if (hour.selected) {
selectedHourIndex = hour.index;
}
babelHelpers.classPrivateFieldLooseBase(this, _renderHour)[_renderHour](hour);
});
babelHelpers.classPrivateFieldLooseBase(this, _adjustScrollPosition)[_adjustScrollPosition](this.getHoursContainer(), selectedHourIndex, false);
let selectedMinuteIndex = 0;
this.getMinutes().forEach(minute => {
if (minute.selected) {
selectedMinuteIndex = minute.index;
}
babelHelpers.classPrivateFieldLooseBase(this, _renderMinute)[_renderMinute](minute);
});
babelHelpers.classPrivateFieldLooseBase(this, _adjustScrollPosition)[_adjustScrollPosition](this.getMinutesContainer(), selectedMinuteIndex, false);
const picker = this.getDatePicker();
if (picker.isAmPmMode()) {
let selectedMeridiemIndex = 0;
this.getMeridiems().forEach(meridiem => {
if (meridiem.selected) {
selectedMeridiemIndex = meridiem.index;
}
babelHelpers.classPrivateFieldLooseBase(this, _renderMeridiem)[_renderMeridiem](meridiem);
});
babelHelpers.classPrivateFieldLooseBase(this, _adjustScrollPosition)[_adjustScrollPosition](this.getMeridiemsContainer(), selectedMeridiemIndex, false);
}
}
getItemHeight() {
return 30;
}
focusSelector(id, changePageFocus = true) {
if (babelHelpers.classPrivateFieldLooseBase(this, _focusSelectorId)[_focusSelectorId] === id) {
return;
}
if (babelHelpers.classPrivateFieldLooseBase(this, _focusSelectorId)[_focusSelectorId] !== null) {
const currentSelector = this.getContainer().querySelector(`[data-selector-id="${babelHelpers.classPrivateFieldLooseBase(this, _focusSelectorId)[_focusSelectorId]}"]`);
main_core.Dom.removeClass(currentSelector, '--focused');
}
babelHelpers.classPrivateFieldLooseBase(this, _focusSelectorId)[_focusSelectorId] = id;
const newSelector = this.getContainer().querySelector(`[data-selector-id="${id}"]`);
const scrollContainer = newSelector.querySelector('[tabindex]:not([tabindex="-1"])');
main_core.Dom.addClass(newSelector, '--focused');
if (changePageFocus) {
scrollContainer.focus({
preventScroll: true
});
}
}
}
function _renderHour2(hour) {
const div = babelHelpers.classPrivateFieldLooseBase(this, _refs$3)[_refs$3].remember(`hour-${hour.value}`, () => {
const hourContainer = main_core.Tag.render(_t8$1 || (_t8$1 = _$2`
<div
class="ui-time-picker-list-item"
data-index="${0}"
data-value="${0}"
>${0}</div>
`), hour.index, hour.value, hour.name);
main_core.Dom.append(hourContainer, this.getHoursContainer());
return hourContainer;
});
if (hour.selected) {
main_core.Dom.addClass(div, '--selected');
} else {
main_core.Dom.removeClass(div, '--selected');
}
}
function _renderMinute2(minute) {
const div = babelHelpers.classPrivateFieldLooseBase(this, _refs$3)[_refs$3].remember(`minute-${minute.value}`, () => {
const minuteContainer = main_core.Tag.render(_t9$1 || (_t9$1 = _$2`
<div
class="ui-time-picker-list-item"
data-index="${0}"
data-value="${0}"
>${0}</div>
`), minute.index, minute.value, minute.name);
main_core.Dom.append(minuteContainer, this.getMinutesContainer());
return minuteContainer;
});
if (minute.selected) {
main_core.Dom.addClass(div, '--selected');
} else {
main_core.Dom.removeClass(div, '--selected');
}
if (minute.hidden) {
div.dataset.index = '';
main_core.Dom.addClass(div, '--hidden');
} else {
div.dataset.index = minute.index;
main_core.Dom.removeClass(div, '--hidden');
}
}
function _renderMeridiem2(meridiem) {
const div = babelHelpers.classPrivateFieldLooseBase(this, _refs$3)[_refs$3].remember(`meridiem-${meridiem.value}`, () => {
const meridiemContainer = main_core.Tag.render(_t10$1 || (_t10$1 = _$2`
<div
class="ui-time-picker-list-item"
data-index="${0}"
data-value="${0}"
>${0}</div>
`), meridiem.index, meridiem.value, meridiem.name);
main_core.Dom.append(meridiemContainer, this.getMeridiemsContainer());
return meridiemContainer;
});
if (meridiem.selected) {
main_core.Dom.addClass(div, '--selected');
} else {
main_core.Dom.removeClass(div, '--selected');
}
}
function _adjustScrollHeight2(listContainer) {
const viewport = listContainer.parentNode.parentNode;
const offset = viewport.offsetHeight / 2 - this.getItemHeight() / 2;
main_core.Dom.style(listContainer, {
marginTop: `${offset}px`,
marginBottom: `${offset}px`
});
}
function _adjustScrollPosition2(listContainer, index, smooth = true) {
const scrollContainer = listContainer.parentNode;
const scrollTop = this.getItemHeight() * index;
if (scrollContainer.scrollTop !== scrollTop) {
scrollContainer.scrollTo({
top: scrollTop,
behavior: smooth ? 'smooth' : 'instant'
});
return true;
}
return false;
}
function _handleItemClick2(event) {
const item = event.target;
if (!item.closest('.ui-time-picker-list-item')) {
return;
}
const listContainer = item.parentNode;
const index = Number(item.dataset.index);
const scrollChanged = babelHelpers.classPrivateFieldLooseBase(this, _adjustScrollPosition)[_adjustScrollPosition](listContainer, index);
if (!scrollChanged) {
babelHelpers.classPrivateFieldLooseBase(this, _selectTime)[_selectTime](listContainer.parentNode);
}
}
function _handleTitleClick2$1(event) {
this.emit('onTitleClick');
}
function _handleSelectorMouseEnter2(event) {
this.focusSelector(event.target.dataset.selectorId);
}
function _handleFocus2(event) {
this.focusSelector(event.target.parentNode.parentNode.dataset.selectorId);
}
function _handleSelectorScroll2(event) {
const scrollContainer = event.target;
const scrollTop = scrollContainer.scrollTop;
const atSnappingPoint = scrollTop % this.getItemHeight() === 0;
if (atSnappingPoint) {
babelHelpers.classPrivateFieldLooseBase(this, _selectTime)[_selectTime](scrollContainer);
}
}
function _selectTime2(scrollContainer) {
const scrollTop = scrollContainer.scrollTop;
const index = scrollTop / this.getItemHeight();
const selector = scrollContainer.parentNode.parentNode;
const selectorId = selector.dataset.selectorId;
const item = selector.querySelector(`[data-index="${index}"]`);
const selectedDate = this.getTimeDate();
const currentHour = selectedDate === null ? -1 : selectedDate.getUTCHours();
const currentMinute = selectedDate === null ? -1 : selectedDate.getUTCMinutes();
switch (selectorId) {
case 'hour':
{
const hour = Number(item.dataset.value);
if (currentHour !== hour) {
this.emit('onSelect', {
hour
});
}
break;
}
case 'minute':
{
const minute = Number(item.dataset.value);
if (currentMinute !== minute) {
this.emit('onSelect', {
minute
});
}
break;
}
case 'meridiem':
{
const meridiem = item.dataset.value;
if (meridiem === 'am' && currentHour >= 12) {
const hour = currentHour - 12;
this.emit('onSelect', {
hour
});
} else if (meridiem === 'pm' && currentHour >= 0 && currentHour < 12) {
const hour = currentHour + 12;
this.emit('onSelect', {
hour
});
}
break;
}
default:
break;
}
}
let _$3 = t => t,
_t$4,
_t2$4,
_t3$4,
_t4$4,
_t5$2,
_t6$2;
var _refs$4 = /*#__PURE__*/babelHelpers.classPrivateFieldLooseKey("refs");
var _firstRender = /*#__PURE__*/babelHelpers.classPrivateFieldLooseKey("firstRender");
var _renderHour$1 = /*#__PURE__*/babelHelpers.classPrivateFieldLooseKey("renderHour");
var _renderMinute$1 = /*#__PURE__*/babelHelpers.classPrivateFieldLooseKey("renderMinute");
var _adjustScrollPosition$1 = /*#__PURE__*/babelHelpers.classPrivateFieldLooseKey("adjustScrollPosition");
var _adjustScrollShadows = /*#__PURE__*/babelHelpers.classPrivateFieldLooseKey("adjustScrollShadows");
var _handleItemClick$1 = /*#__PURE__*/babelHelpers.classPrivateFieldLooseKey("handleItemClick");
var _handleMouseEnter$1 = /*#__PURE__*/babelHelpers.classPrivateFieldLooseKey("handleMouseEnter");
var _handleMouseLeave$1 = /*#__PURE__*/babelHelpers.classPrivateFieldLooseKey("handleMouseLeave");
var _handleFocus$1 = /*#__PURE__*/babelHelpers.classPrivateFieldLooseKey("handleFocus");
var _handleTitleClick$2 = /*#__PURE__*/babelHelpers.classPrivateFieldLooseKey("handleTitleClick");
class TimePickerGrid extends TimePickerBase {
constructor(...args) {
super(...args);
Object.defineProperty(this, _handleTitleClick$2, {
value: _handleTitleClick2$2
});
Object.defineProperty(this, _handleFocus$1, {
value: _handleFocus2$1
});
Object.defineProperty(this, _handleMouseLeave$1, {
value: _handleMouseLeave2$1
});
Object.defineProperty(this, _handleMouseEnter$1, {
value: _handleMouseEnter2$1
});
Object.defineProperty(this, _handleItemClick$1, {
value: _handleItemClick2$1
});
Object.defineProperty(this, _adjustScrollShadows, {
value: _adjustScrollShadows2
});
Object.defineProperty(this, _adjustScrollPosition$1, {
value: _adjustScrollPosition2$1
});
Object.defineProperty(this, _renderMinute$1, {
value: _renderMinute2$1
});
Object.defineProperty(this, _renderHour$1, {
value: _renderHour2$1
});
Object.defineProperty(this, _refs$4, {
writable: true,
value: new main_core_cache.MemoryCache()
});
Object.defineProperty(this, _firstRender, {
writable: true,
value: true
});
}
getContainer() {
return babelHelpers.classPrivateFieldLooseBase(this, _refs$4)[_refs$4].remember('container', () => {
return main_core.Tag.render(_t$4 || (_t$4 = _$3`
<div class="ui-time-picker-grid${0}">
${0}
<div class="ui-time-picker-grid-content">
<div class="ui-time-picker-grid-column">
<div class="ui-time-picker-grid-column-title">${0}</div>
<div class="ui-time-picker-grid-column-content">
${0}
</div>
</div>
<div class="ui-time-picker-grid-column-separator"></div>
<div class="ui-time-picker-grid-column">
<div class="ui-time-picker-grid-column-title">${0}</div>
<div class="ui-time-picker-grid-column-content">
${0}
</div>
</div>
</div>
</div>
`), this.getDatePicker().isAmPmMode() ? ' --am-pm' : '', this.getDatePicker().getType() === 'time' ? null : this.getHeaderContainer(this.getPrevBtn(), this.getHeaderTitle()), main_core.Loc.getMessage('UI_DATE_PICKER_HOURS'), this.getHoursContainer(), main_core.Loc.getMessage('UI_DATE_PICKER_MINUTES'), this.getMinutesContainer());
});
}
getHeaderTitle() {
return babelHelpers.classPrivateFieldLooseBase(this, _refs$4)[_refs$4].remember('header-title', () => {
return main_core.Tag.render(_t2$4 || (_t2$4 = _$3`
<div class="ui-time-picker-grid-header-title" onclick="${0}"></div>
`), babelHelpers.classPrivateFieldLooseBase(this, _handleTitleClick$2)[_handleTitleClick$2].bind(this));
});
}
getHoursContainer() {
return babelHelpers.classPrivateFieldLooseBase(this, _refs$4)[_refs$4].remember('hours', () => {
return main_core.Tag.render(_t3$4 || (_t3$4 = _$3`
<div
class="ui-time-picker-grid-column-items --hours"
onclick="${0}"
></div>
`), babelHelpers.classPrivateFieldLooseBase(this, _handleItemClick$1)[_handleItemClick$1].bind(this));
});
}
getMinutesContainer() {
return babelHelpers.classPrivateFieldLooseBase(this, _refs$4)[_refs$4].remember('minutes', () => {
return main_core.Tag.render(_t4$4 || (_t4$4 = _$3`
<div
class="ui-time-picker-grid-column-items --minutes"
onclick="${0}"
onscroll="${0}"
></div>
`), babelHelpers.classPrivateFieldLooseBase(this, _handleItemClick$1)[_handleItemClick$1].bind(this), main_core.Runtime.debounce(babelHelpers.classPrivateFieldLooseBase(this, _adjustScrollShadows)[_adjustScrollShadows], 100, this));
});
}
onHide() {
super.onHide();
babelHelpers.classPrivateFieldLooseBase(this, _firstRender)[_firstRender] = true;
}
render() {
super.render();
let focusedHourBtn = null;
this.getHours().forEach(hour => {
const button = babelHelpers.classPrivateFieldLooseBase(this, _renderHour$1)[_renderHour$1](hour, this.getHoursContainer());
if (hour.focused) {
focusedHourBtn = button;
}
});
let selectedMinute = null;
let focusedMinute = null;
this.getMinutes().forEach(minute => {
const button = babelHelpers.classPrivateFieldLooseBase(this, _renderMinute$1)[_renderMinute$1](minute, this.getMinutesContainer());
if (minute.selected) {
selectedMinute = button;
}
if (minute.focused) {
focusedMinute = button;
}
});
if (babelHelpers.classPrivateFieldLooseBase(this, _firstRender)[_firstRender]) {
main_core.Dom.style(this.getMinutesContainer(), 'height', `${this.getHoursContainer().offsetHeight}px`);
if (selectedMinute !== null) {
babelHelpers.classPrivateFieldLooseBase(this, _adjustScrollPosition$1)[_adjustScrollPosition$1](selectedMinute, false);
}
babelHelpers.classPrivateFieldLooseBase(this, _adjustScrollShadows)[_adjustScrollShadows]();
babelHelpers.classPrivateFieldLooseBase(this, _firstRender)[_firstRender] = false;
}
if (this.getDatePicker().isFocused()) {
if (this.getFocusColumn() === 'hours' && focusedHourBtn !== null) {
focusedHourBtn.focus({
preventScroll: true
});
} else if (this.getFocusColumn() === 'minutes' && focusedMinute !== null) {
focusedMinute.focus({
preventScroll: true
});
}
}
}
adjustMinuteFocusPosition() {
const item = this.getContainer().ownerDocument.activeElement;
if (!item.closest('.ui-time-picker-grid-item')) {
return;
}
babelHelpers.classPrivateFieldLooseBase(this, _adjustScrollPosition$1)[_adjustScrollPosition$1](item);
}
}
function _renderHour2$1(hour, container) {
const button = babelHelpers.classPrivateFieldLooseBase(this, _refs$4)[_refs$4].remember(`hour-${hour.value}`, () => {
const hourContainer = main_core.Tag.render(_t5$2 || (_t5$2 = _$3`
<button
type="button"
class="ui-time-picker-grid-item"
data-index="${0}"
data-hour="${0}"
data-tab-priority="true"
onmouseenter="${0}"
onmouseleave="${0}"
onfocus="${0}"
><span class="ui-time-picker-grid-item-inner">${0}</span></button>
`), hour.index, hour.value, babelHelpers.classPrivateFieldLooseBase(this, _handleMouseEnter$1)[_handleMouseEnter$1].bind(this), babelHelpers.classPrivateFieldLooseBase(this, _handleMouseLeave$1)[_handleMouseLeave$1].bind(this), babelHelpers.classPrivateFieldLooseBase(this, _handleFocus$1)[_handleFocus$1].bind(this), hour.name);
if (this.getDatePicker().isAmPmMode()) {
if (hour.value === 0) {
hourContainer.dataset.meridiem = 'AM';
main_core.Dom.addClass(hourContainer, '--has-meridiem');
} else if (hour.value === 12) {
hourContainer.dataset.meridiem = 'PM';
main_core.Dom.addClass(hourContainer, '--has-meridiem');
}
}
main_core.Dom.append(hourContainer, container);
return hourContainer;
});
if (hour.selected) {
main_core.Dom.addClass(button, '--selected');
} else {
main_core.Dom.removeClass(button, '--selected');
}
if (hour.focused) {
main_core.Dom.addClass(button, '--focused');
} else {
main_core.Dom.removeClass(button, '--focused');
}
button.tabIndex = hour.tabIndex;
return button;
}
function _renderMinute2$1(minute, container) {
const button = babelHelpers.classPrivateFieldLooseBase(this, _refs$4)[_refs$4].remember(`minute-${minute.value}`, () => {
const minuteContainer = main_core.Tag.render(_t6$2 || (_t6$2 = _$3`
<button
type="button"
class="ui-time-picker-grid-item"
data-index="${0}"
data-minute="${0}"
onmouseenter="${0}"
onmouseleave="${0}"
onfocus="${0}"
><span class="ui-time-picker-grid-item-inner">${0}</span></button>
`), minute.index, minute.value, babelHelpers.classPrivateFieldLooseBase(this, _handleMouseEnter$1)[_handleMouseEnter$1].bind(this), babelHelpers.classPrivateFieldLooseBase(this, _handleMouseLeave$1)[_handleMouseLeave$1].bind(this), babelHelpers.classPrivateFieldLooseBase(this, _handleFocus$1)[_handleFocus$1].bind(this), minute.name);
main_core.Dom.append(minuteContainer, container);
return minuteContainer;
});
if (minute.selected) {
main_core.Dom.addClass(button, '--selected');
} else {
main_core.Dom.removeClass(button, '--selected');
}
if (minute.hidden) {
button.dataset.index = '';
main_core.Dom.addClass(button, '--hidden');
} else {
button.dataset.index = minute.index;
main_core.Dom.removeClass(button, '--hidden');
}
if (minute.focused) {
main_core.Dom.addClass(button, '--focused');
} else {
main_core.Dom.removeClass(button, '--focused');
}
button.tabIndex = minute.tabIndex;
return button;
}
function _adjustScrollPosition2$1(selectedMinute, smooth = true) {
const shadowHeight = 20;
const scrollTop = this.getMinutesContainer().scrollTop;
const viewportTop = scrollTop + shadowHeight;
const offsetTop = selectedMinute.offsetTop;
const offsetBottom = offsetTop + selectedMinute.offsetHeight;
const viewportHeight = this.getMinutesContainer().offsetHeight;
const viewportBottom = scrollTop + viewportHeight - shadowHeight;
const isVisible = offsetTop >= viewportTop && offsetTop <= viewportBottom && offsetBottom <= viewportBottom && offsetBottom >= viewportTop;
if (!isVisible) {
this.getMinutesContainer().scrollTo({
top: selectedMinute.offsetTop - viewportHeight / 2,
behavior: smooth ? 'smooth' : 'instant'
});
}
}
function _adjustScrollShadows2() {
const scrollTop = this.getMinutesContainer().scrollTop;
const scrollHeight = this.getMinutesContainer().scrollHeight;
const offsetHeight = this.getMinutesContainer().offsetHeight;
const columnContainer = this.getMinutesContainer().parentNode.parentNode;
if (scrollTop > 0) {
main_core.Dom.addClass(columnContainer, '--top-shadow');
} else {
main_core.Dom.removeClass(columnContainer, '--top-shadow');
}
if (scrollTop === scrollHeight - offsetHeight) {
main_core.Dom.removeClass(columnContainer, '--bottom-shadow');
} else {
main_core.Dom.addClass(columnContainer, '--bottom-shadow');
}
}
function _handleItemClick2$1(event) {
const item = event.target;
if (!item.closest('.ui-time-picker-grid-item')) {
return;
}
if (main_core.Type.isStringFilled(item.dataset.hour)) {
this.setFocusColumn('hours');
const hour = Number(item.dataset.hour);
this.emit('onSelect', {
hour
});
} else if (main_core.Type.isStringFilled(item.dataset.minute)) {
this.setFocusColumn('minutes');
babelHelpers.classPrivateFieldLooseBase(this, _adjustScrollPosition$1)[_adjustScrollPosition$1](item);
const minute = Number(item.dataset.minute);
this.emit('onSelect', {
minute
});
}
}
function _handleMouseEnter2$1(event) {
const {
hour,
minute
} = event.target.dataset;
if (main_core.Type.isStringFilled(hour)) {
this.setFocusColumn('hours');
this.emit('onFocus', {
hour: main_core.Text.toInteger(hour)
});
} else if (main_core.Type.isStringFilled(minute)) {
this.setFocusColumn('minutes');
this.emit('onFocus', {
minute: main_core.Text.toInteger(minute)
});
}
}
function _handleMouseLeave2$1(event) {
this.emit('onBlur');
}
function _handleFocus2$1(event) {
const {
hour,
minute
} = event.target.dataset;
const currentColumn = this.getFocusColumn();
if (main_core.Type.isStringFilled(hour)) {
this.setFocusColumn('hours');
} else if (main_core.Type.isStringFilled(minute)) {
this.setFocusColumn('minutes');
}
if (currentColumn !== this.getFocusColumn()) {
this.render();
}
}
function _handleTitleClick2$2(event) {
this.emit('onTitleClick');
}
let _$4 = t => t,
_t$5,
_t2$5,
_t3$5,
_t4$5;
var _refs$5 = /*#__PURE__*/babelHelpers.classPrivateFieldLooseKey("refs");
var _getStartYear = /*#__PURE__*/babelHelpers.classPrivateFieldLooseKey("getStartYear");
var _renderQuarter$1 = /*#__PURE__*/babelHelpers.classPrivateFieldLooseKey("renderQuarter");
var _renderYear = /*#__PURE__*/babelHelpers.classPrivateFieldLooseKey("renderYear");
var _handleMouseEnter$2 = /*#__PURE__*/babelHelpers.classPrivateFieldLooseKey("handleMouseEnter");
var _handleMouseLeave$2 = /*#__PURE__*/babelHelpers.classPrivateFieldLooseKey("handleMouseLeave");
var _handleYearClick$1 = /*#__PURE__*/babelHelpers.classPrivateFieldLooseKey("handleYearClick");
class YearPicker extends BasePicker {
constructor(...args) {
super(...args);
Object.defineProperty(this, _handleYearClick$1, {
value: _handleYearClick2$1
});
Object.defineProperty(this, _handleMouseLeave$2, {
value: _handleMouseLeave2$2
});
Object.defineProperty(this, _handleMouseEnter$2, {
value: _handleMouseEnter2$2
});
Object.defineProperty(this, _renderYear, {
value: _renderYear2
});
Object.defineProperty(this, _renderQuarter$1, {
value: _renderQuarter2$1
});
Object.defineProperty(this, _getStartYear, {
value: _getStartYear2
});
Object.defineProperty(this, _refs$5, {
writable: true,
value: new main_core_cache.MemoryCache()
});
}
getContainer() {
return babelHelpers.classPrivateFieldLooseBase(this, _refs$5)[_refs$5].remember('container', () => {
return main_core.Tag.render(_t$5 || (_t$5 = _$4`
<div class="ui-year-picker">
${0}
${0}
</div>
`), this.getHeaderContainer(this.getPrevBtn(), this.getHeaderTitle(), this.getNextBtn()), this.getContentContainer());
});
}
getHeaderTitle() {
return babelHelpers.classPrivateFieldLooseBase(this, _refs$5)[_refs$5].remember('header-title', () => {
return main_core.Tag.render(_t2$5 || (_t2$5 = _$4`
<div class="ui-year-picker-header-title"></div>
`));
});
}
getYears() {
const {
year: currentYear
} = getDate(this.getDatePicker().getToday());
const focusDate = this.getDatePicker().getFocusDate();
const initialFocusYear = this.getDatePicker().getInitialFocusDate().getUTCFullYear();
const years = [];
let index = 0;
let year = babelHelpers.classPrivateFieldLooseBase(this, _getStartYear)[_getStartYear]();
for (let i = 0; i < 4; i++) {
const quarter = [];
for (let j = 0; j < 3; j++) {
const focused = focusDate !== null && focusDate.getUTCFullYear() === year;
quarter.push({
index,
year,
name: year,
current: currentYear === year,
selected: this.getDatePicker().isDateSelected(createUtcDate(year), 'year'),
focused,
tabIndex: focused || year === initialFocusYear ? 0 : -1
});
year++;
index++;
}
years.push(quarter);
}
return years;
}
getFirstYear() {
return babelHelpers.classPrivateFieldLooseBase(this, _getStartYear)[_getStartYear]();
}
getLastYear() {
return babelHelpers.classPrivateFieldLooseBase(this, _getStartYear)[_getStartYear]() + 11;
}
renderTo(container) {
super.renderTo(container);
main_core.Event.bind(this.getContentContainer(), 'click', babelHelpers.classPrivateFieldLooseBase(this, _handleYearClick$1)[_handleYearClick$1].bind(this));
}
render() {
let focusButton = null;
const isFocused = this.getDatePicker().isFocused();
const years = this.getYears();
years.forEach((quarter, index) => {
const quarterContainer = babelHelpers.classPrivateFieldLooseBase(this, _renderQuarter$1)[_renderQuarter$1](index);
quarter.forEach(year => {
const button = babelHelpers.classPrivateFieldLooseBase(this, _renderYear)[_renderYear](year, quarterContainer);
if (year.focused) {
focusButton = button;
}
});
});
if (focusButton !== null && isFocused) {
focusButton.focus({
preventScroll: true
});
}
const firstYear = years[0][0].name;
const lastYear = years.at(-1).at(-1).name;
this.getHeaderTitle().textContent = `${firstYear} — ${lastYear}`;
}
}
function _getStartYear2() {
const {
year: viewYear
} = this.getDatePicker().getViewDateParts();
const {
year: currentYear
} = getDate(this.getDatePicker().getToday());
let year = currentYear - 4;
year -= 12 * Math.ceil((year - viewYear) / 12);
return year;
}
function _renderQuarter2$1(index) {
return babelHelpers.classPrivateFieldLooseBase(this, _refs$5)[_refs$5].remember(`quarter-${index}`, () => {
const container = main_core.Tag.render(_t3$5 || (_t3$5 = _$4`<div class="ui-year-picker-trio"></div>`));
main_core.Dom.append(container, this.getContentContainer());
return container;
});
}
function _renderYear2(year, quarterContainer) {
const button = babelHelpers.classPrivateFieldLooseBase(this, _refs$5)[_refs$5].remember(`year-${year.index}`, () => {
const yearButton = main_core.Tag.render(_t4$5 || (_t4$5 = _$4`
<button
type="button"
class="ui-year-picker-year"
data-year="${0}"
data-tab-priority="true"
onmouseenter="${0}"
onmouseleave="${0}"
>${0}</button>
`), year, babelHelpers.classPrivateFieldLooseBase(this, _handleMouseEnter$2)[_handleMouseEnter$2].bind(this), babelHelpers.classPrivateFieldLooseBase(this, _handleMouseLeave$2)[_handleMouseLeave$2].bind(this), main_core.Text.encode(year.name));
main_core.Dom.append(yearButton, quarterContainer);
return yearButton;
});
const currentYear = Number(button.dataset.year);
if (currentYear !== year.year) {
button.dataset.year = year.year;
button.textContent = year.name;
}
if (year.current) {
main_core.Dom.addClass(button, '--current');
} else {
main_core.Dom.removeClass(button, '--current');
}
if (year.selected) {
main_core.Dom.addClass(button, '--selected');
} else {
main_core.Dom.removeClass(button, '--selected');
}
if (year.focused) {
main_core.Dom.addClass(button, '--focused');
} else {
main_core.Dom.removeClass(button, '--focused');
}
button.tabIndex = year.tabIndex;
return button;
}
function _handleMouseEnter2$2(event) {
const dataset = event.target.dataset;
const year = main_core.Text.toInteger(dataset.year);
this.emit('onFocus', {
year
});
}
function _handleMouseLeave2$2(event) {
this.emit('onBlur');
}
function _handleYearClick2$1(event) {
if (!main_core.Dom.hasClass(event.target, 'ui-year-picker-year')) {
return;
}
const year = main_core.Text.toInteger(event.target.dataset.year);
this.emit('onSelect', {
year
});
}
let _$5 = t => t,
_t$6,
_t2$6;
let singleOpenDatePicker = null;
/**
* @namespace BX.UI.DatePicker
*/
var _viewDate = /*#__PURE__*/babelHelpers.classPrivateFieldLooseKey("viewDate");
var _startDate = /*#__PURE__*/babelHelpers.classPrivateFieldLooseKey("startDate");
var _selectedDates = /*#__PURE__*/babelHelpers.classPrivateFieldLooseKey("selectedDates");
var _focusDate = /*#__PURE__*/babelHelpers.classPrivateFieldLooseKey("focusDate");
var _type = /*#__PURE__*/babelHelpers.classPrivateFieldLooseKey("type");
var _currentView = /*#__PURE__*/babelHelpers.classPrivateFieldLooseKey("currentView");
var _selectionMode = /*#__PURE__*/babelHelpers.classPrivateFieldLooseKey("selectionMode");
var _views = /*#__PURE__*/babelHelpers.classPrivateFieldLooseKey("views");
var _firstWeekDay = /*#__PURE__*/babelHelpers.classPrivateFieldLooseKey("firstWeekDay");
var _showWeekDays = /*#__PURE__*/babelHelpers.classPrivateFieldLooseKey("showWeekDays");
var _showWeekNumbers = /*#__PURE__*/babelHelpers.classPrivateFieldLooseKey("showWeekNumbers");
var _showOutsideDays = /*#__PURE__*/babelHelpers.classPrivateFieldLooseKey("showOutsideDays");
var _numberOfMonths = /*#__PURE__*/babelHelpers.classPrivateFieldLooseKey("numberOfMonths");
var _maxDays = /*#__PURE__*/babelHelpers.classPrivateFieldLooseKey("maxDays");
var _minDays = /*#__PURE__*/babelHelpers.classPrivateFieldLooseKey("minDays");
var _fullYear = /*#__PURE__*/babelHelpers.classPrivateFieldLooseKey("fullYear");
var _weekends = /*#__PURE__*/babelHelpers.classPrivateFieldLooseKey("weekends");
var _holidays = /*#__PURE__*/babelHelpers.classPrivateFieldLooseKey("holidays");
var _workdays = /*#__PURE__*/babelHelpers.classPrivateFieldLooseKey("workdays");
var _enableTime = /*#__PURE__*/babelHelpers.classPrivateFieldLooseKey("enableTime");
var _allowSeconds = /*#__PURE__*/babelHelpers.classPrivateFieldLooseKey("allowSeconds");
var _amPmMode = /*#__PURE__*/babelHelpers.classPrivateFieldLooseKey("amPmMode");
var _minuteStep = /*#__PURE__*/babelHelpers.classPrivateFieldLooseKey("minuteStep");
var _defaultTime = /*#__PURE__*/babelHelpers.classPrivateFieldLooseKey("defaultTime");
var _defaultTimeSpan = /*#__PURE__*/babelHelpers.classPrivateFieldLooseKey("defaultTimeSpan");
var _timePickerStyle = /*#__PURE__*/babelHelpers.classPrivateFieldLooseKey("timePickerStyle");
var _cutZeroTime = /*#__PURE__*/babelHelpers.classPrivateFieldLooseKey("cutZeroTime");
var _targetNode = /*#__PURE__*/babelHelpers.classPrivateFieldLooseKey("targetNode");
var _inputField = /*#__PURE__*/babelHelpers.classPrivateFieldLooseKey("inputField");
var _rangeStartInput = /*#__PURE__*/babelHelpers.classPrivateFieldLooseKey("rangeStartInput");
var _rangeEndInput = /*#__PURE__*/babelHelpers.classPrivateFieldLooseKey("rangeEndInput");
var _useInputEvents = /*#__PURE__*/babelHelpers.classPrivateFieldLooseKey("useInputEvents");
var _dateSeparator = /*#__PURE__*/babelHelpers.classPrivateFieldLooseKey("dateSeparator");
var _popup = /*#__PURE__*/babelHelpers.classPrivateFieldLooseKey("popup");
var _popupOptions = /*#__PURE__*/babelHelpers.classPrivateFieldLooseKey("popupOptions");
var _hideByEsc = /*#__PURE__*/babelHelpers.classPrivateFieldLooseKey("hideByEsc");
var _autoHide = /*#__PURE__*/babelHelpers.classPrivateFieldLooseKey("autoHide");
var _cacheable = /*#__PURE__*/babelHelpers.classPrivateFieldLooseKey("cacheable");
var _singleOpening = /*#__PURE__*/babelHelpers.classPrivateFieldLooseKey("singleOpening");
var _refs$6 = /*#__PURE__*/babelHelpers.classPrivateFieldLooseKey("refs");
var _rendered$1 = /*#__PURE__*/babelHelpers.classPrivateFieldLooseKey("rendered");
var _inline = /*#__PURE__*/babelHelpers.classPrivateFieldLooseKey("inline");
var _autoFocus = /*#__PURE__*/babelHelpers.classPrivateFieldLooseKey("autoFocus");
var _dateFormat = /*#__PURE__*/babelHelpers.classPrivateFieldLooseKey("dateFormat");
var _timeFormat = /*#__PURE__*/babelHelpers.classPrivateFieldLooseKey("timeFormat");
var _toggleSelected = /*#__PURE__*/babelHelpers.classPrivateFieldLooseKey("toggleSelected");
var _hideOnSelect = /*#__PURE__*/babelHelpers.classPrivateFieldLooseKey("hideOnSelect");
var _locale = /*#__PURE__*/babelHelpers.classPrivateFieldLooseKey("locale");
var _hideHeader = /*#__PURE__*/babelHelpers.classPrivateFieldLooseKey("hideHeader");
var _dayColors = /*#__PURE__*/babelHelpers.classPrivateFieldLooseKey("dayColors");
var _dayMarks = /*#__PURE__*/babelHelpers.classPrivateFieldLooseKey("dayMarks");
var _keyboardNavigation = /*#__PURE__*/babelHelpers.classPrivateFieldLooseKey("keyboardNavigation");
var _destroying = /*#__PURE__*/babelHelpers.classPrivateFieldLooseKey("destroying");
var _canSelectDate = /*#__PURE__*/babelHelpers.classPrivateFieldLooseKey("canSelectDate");
var _canDeselectDate = /*#__PURE__*/babelHelpers.classPrivateFieldLooseKey("canDeselectDate");
var _setType = /*#__PURE__*/babelHelpers.classPrivateFieldLooseKey("setType");
var _createDateMatchers = /*#__PURE__*/babelHelpers.classPrivateFieldLooseKey("createDateMatchers");
var _setSelectionMode = /*#__PURE__*/babelHelpers.classPrivateFieldLooseKey("setSelectionMode");
var _getInputField = /*#__PURE__*/babelHelpers.classPrivateFieldLooseKey("getInputField");
var _bindInputEvents = /*#__PURE__*/babelHelpers.classPrivateFieldLooseKey("bindInputEvents");
var _unbindInputEvents = /*#__PURE__*/babelHelpers.classPrivateFieldLooseKey("unbindInputEvents");
var _handleInputClick = /*#__PURE__*/babelHelpers.classPrivateFieldLooseKey("handleInputClick");
var _handleInputFocusOut = /*#__PURE__*/babelHelpers.classPrivateFieldLooseKey("handleInputFocusOut");
var _handleInputKeyDown = /*#__PURE__*/babelHelpers.classPrivateFieldLooseKey("handleInputKeyDown");
var _handleInputChange = /*#__PURE__*/babelHelpers.classPrivateFieldLooseKey("handleInputChange");
var _handleAutoHide = /*#__PURE__*/babelHelpers.classPrivateFieldLooseKey("handleAutoHide");
var _focusInputField = /*#__PURE__*/babelHelpers.classPrivateFieldLooseKey("focusInputField");
var _getDateFromInput = /*#__PURE__*/babelHelpers.classPrivateFieldLooseKey("getDateFromInput");
var _setInputDate = /*#__PURE__*/babelHelpers.classPrivateFieldLooseKey("setInputDate");
var _getDefaultDateFormat = /*#__PURE__*/babelHelpers.classPrivateFieldLooseKey("getDefaultDateFormat");
var _render = /*#__PURE__*/babelHelpers.classPrivateFieldLooseKey("render");
var _createPicker = /*#__PURE__*/babelHelpers.classPrivateFieldLooseKey("createPicker");
var _handleContainerKeyUp = /*#__PURE__*/babelHelpers.classPrivateFieldLooseKey("handleContainerKeyUp");
var _handleTimeClick$1 = /*#__PURE__*/babelHelpers.classPrivateFieldLooseKey("handleTimeClick");
var _handleDaySelect = /*#__PURE__*/babelHelpers.classPrivateFieldLooseKey("handleDaySelect");
var _handleDayFocus = /*#__PURE__*/babelHelpers.classPrivateFieldLooseKey("handleDayFocus");
var _handleDayBlur = /*#__PURE__*/babelHelpers.classPrivateFieldLooseKey("handleDayBlur");
var _handleMonthFocus = /*#__PURE__*/babelHelpers.classPrivateFieldLooseKey("handleMonthFocus");
var _handleMonthBlur = /*#__PURE__*/babelHelpers.classPrivateFieldLooseKey("handleMonthBlur");
var _handleYearFocus = /*#__PURE__*/babelHelpers.classPrivateFieldLooseKey("handleYearFocus");
var _handleYearBlur = /*#__PURE__*/babelHelpers.classPrivateFieldLooseKey("handleYearBlur");
var _handleTimeFocus = /*#__PURE__*/babelHelpers.classPrivateFieldLooseKey("handleTimeFocus");
var _handleTimeBlur = /*#__PURE__*/babelHelpers.classPrivateFieldLooseKey("handleTimeBlur");
var _handleMonthSelect = /*#__PURE__*/babelHelpers.classPrivateFieldLooseKey("handleMonthSelect");
var _handleYearSelect = /*#__PURE__*/babelHelpers.classPrivateFieldLooseKey("handleYearSelect");
var _handleTimeSelect = /*#__PURE__*/babelHelpers.classPrivateFieldLooseKey("handleTimeSelect");
var _handleTimeRangeSelect = /*#__PURE__*/babelHelpers.classPrivateFieldLooseKey("handleTimeRangeSelect");
var _handlePopupShow = /*#__PURE__*/babelHelpers.classPrivateFieldLooseKey("handlePopupShow");
var _handlePopupFirstShow = /*#__PURE__*/babelHelpers.classPrivateFieldLooseKey("handlePopupFirstShow");
var _handlePopupClose = /*#__PURE__*/babelHelpers.classPrivateFieldLooseKey("handlePopupClose");
var _handlePopupDestroy = /*#__PURE__*/babelHelpers.classPrivateFieldLooseKey("handlePopupDestroy");
class DatePicker extends main_core_events.EventEmitter {
constructor(pickerOptions) {
super();
Object.defineProperty(this, _handlePopupDestroy, {
value: _handlePopupDestroy2
});
Object.defineProperty(this, _handlePopupClose, {
value: _handlePopupClose2
});
Object.defineProperty(this, _handlePopupFirstShow, {
value: _handlePopupFirstShow2
});
Object.defineProperty(this, _handlePopupShow, {
value: _handlePopupShow2
});
Object.defineProperty(this, _handleTimeRangeSelect, {
value: _handleTimeRangeSelect2
});
Object.defineProperty(this, _handleTimeSelect, {
value: _handleTimeSelect2
});
Object.defineProperty(this, _handleYearSelect, {
value: _handleYearSelect2
});
Object.defineProperty(this, _handleMonthSelect, {
value: _handleMonthSelect2
});
Object.defineProperty(this, _handleTimeBlur, {
value: _handleTimeBlur2
});
Object.defineProperty(this, _handleTimeFocus, {
value: _handleTimeFocus2
});
Object.defineProperty(this, _handleYearBlur, {
value: _handleYearBlur2
});
Object.defineProperty(this, _handleYearFocus, {
value: _handleYearFocus2
});
Object.defineProperty(this, _handleMonthBlur, {
value: _handleMonthBlur2
});
Object.defineProperty(this, _handleMonthFocus, {
value: _handleMonthFocus2
});
Object.defineProperty(this, _handleDayBlur, {
value: _handleDayBlur2
});
Object.defineProperty(this, _handleDayFocus, {
value: _handleDayFocus2
});
Object.defineProperty(this, _handleDaySelect, {
value: _handleDaySelect2
});
Object.defineProperty(this, _handleTimeClick$1, {
value: _handleTimeClick2$1
});
Object.defineProperty(this, _handleContainerKeyUp, {
value: _handleContainerKeyUp2
});
Object.defineProperty(this, _createPicker, {
value: _createPicker2
});
Object.defineProperty(this, _render, {
value: _render2
});
Object.defineProperty(this, _getDefaultDateFormat, {
value: _getDefaultDateFormat2
});
Object.defineProperty(this, _setInputDate, {
value: _setInputDate2
});
Object.defineProperty(this, _getDateFromInput, {
value: _getDateFromInput2
});
Object.defineProperty(this, _focusInputField, {
value: _focusInputField2
});
Object.defineProperty(this, _handleAutoHide, {
value: _handleAutoHide2
});
Object.defineProperty(this, _handleInputChange, {
value: _handleInputChange2
});
Object.defineProperty(this, _handleInputKeyDown, {
value: _handleInputKeyDown2
});
Object.defineProperty(this, _handleInputFocusOut, {
value: _handleInputFocusOut2
});
Object.defineProperty(this, _handleInputClick, {
value: _handleInputClick2
});
Object.defineProperty(this, _unbindInputEvents, {
value: _unbindInputEvents2
});
Object.defineProperty(this, _bindInputEvents, {
value: _bindInputEvents2
});
Object.defineProperty(this, _getInputField, {
value: _getInputField2
});
Object.defineProperty(this, _setSelectionMode, {
value: _setSelectionMode2
});
Object.defineProperty(this, _createDateMatchers, {
value: _createDateMatchers2
});
Object.defineProperty(this, _setType, {
value: _setType2
});
Object.defineProperty(this, _canDeselectDate, {
value: _canDeselectDate2
});
Object.defineProperty(this, _canSelectDate, {
value: _canSelectDate2
});
Object.defineProperty(this, _viewDate, {
writable: true,
value: null
});
Object.defineProperty(this, _startDate, {
writable: true,
value: null
});
Object.defineProperty(this, _selectedDates, {
writable: true,
value: []
});
Object.defineProperty(this, _focusDate, {
writable: true,
value: null
});
Object.defineProperty(this, _type, {
writable: true,
value: 'date'
});
Object.defineProperty(this, _currentView, {
writable: true,
value: null
});
Object.defineProperty(this, _selectionMode, {
writable: true,
value: 'single'
});
Object.defineProperty(this, _views, {
writable: true,
value: new Map()
});
Object.defineProperty(this, _firstWeekDay, {
writable: true,
value: 1
});
Object.defineProperty(this, _showWeekDays, {
writable: true,
value: true
});
Object.defineProperty(this, _showWeekNumbers, {
writable: true,
value: false
});
Object.defineProperty(this, _showOutsideDays, {
writable: true,
value: true
});
Object.defineProperty(this, _numberOfMonths, {
writable: true,
value: 1
});
Object.defineProperty(this, _maxDays, {
writable: true,
value: Infinity
});
Object.defineProperty(this, _minDays, {
writable: true,
value: 0
});
Object.defineProperty(this, _fullYear, {
writable: true,
value: false
});
Object.defineProperty(this, _weekends, {
writable: true,
value: [0, 6]
});
Object.defineProperty(this, _holidays, {
writable: true,
value: []
});
Object.defineProperty(this, _workdays, {
writable: true,
value: []
});
Object.defineProperty(this, _enableTime, {
writable: true,
value: false
});
Object.defineProperty(this, _allowSeconds, {
writable: true,
value: false
});
Object.defineProperty(this, _amPmMode, {
writable: true,
value: false
});
Object.defineProperty(this, _minuteStep, {
writable: true,
value: 5
});
Object.defineProperty(this, _defaultTime, {
writable: true,
value: '00:00:00'
});
Object.defineProperty(this, _defaultTimeSpan, {
writable: true,
value: 60
});
Object.defineProperty(this, _timePickerStyle, {
writable: true,
value: 'grid'
});
Object.defineProperty(this, _cutZeroTime, {
writable: true,
value: true
});
Object.defineProperty(this, _targetNode, {
writable: true,
value: null
});
Object.defineProperty(this, _inputField, {
writable: true,
value: null
});
Object.defineProperty(this, _rangeStartInput, {
writable: true,
value: null
});
Object.defineProperty(this, _rangeEndInput, {
writable: true,
value: null
});
Object.defineProperty(this, _useInputEvents, {
writable: true,
value: true
});
Object.defineProperty(this, _dateSeparator, {
writable: true,
value: ', '
});
Object.defineProperty(this, _popup, {
writable: true,
value: null
});
Object.defineProperty(this, _popupOptions, {
writable: true,
value: {}
});
Object.defineProperty(this, _hideByEsc, {
writable: true,
value: true
});
Object.defineProperty(this, _autoHide, {
writable: true,
value: true
});
Object.defineProperty(this, _cacheable, {
writable: true,
value: true
});
Object.defineProperty(this, _singleOpening, {
writable: true,
value: true
});
Object.defineProperty(this, _refs$6, {
writable: true,
value: new main_core_cache.MemoryCache()
});
Object.defineProperty(this, _rendered$1, {
writable: true,
value: false
});
Object.defineProperty(this, _inline, {
writable: true,
value: false
});
Object.defineProperty(this, _autoFocus, {
writable: true,
value: true
});
Object.defineProperty(this, _dateFormat, {
writable: true,
value: null
});
Object.defineProperty(this, _timeFormat, {
writable: true,
value: null
});
Object.defineProperty(this, _toggleSelected, {
writable: true,
value: null
});
Object.defineProperty(this, _hideOnSelect, {
writable: true,
value: true
});
Object.defineProperty(this, _locale, {
writable: true,
value: null
});
Object.defineProperty(this, _hideHeader, {
writable: true,
value: false
});
Object.defineProperty(this, _dayColors, {
writable: true,
value: []
});
Object.defineProperty(this, _dayMarks, {
writable: true,
value: []
});
Object.defineProperty(this, _keyboardNavigation, {
writable: true,
value: null
});
Object.defineProperty(this, _destroying, {
writable: true,
value: false
});
this.setEventNamespace('BX.UI.DatePicker');
const settings = main_core.Extension.getSettings('ui.date-picker');
const options = main_core.Type.isPlainObject(pickerOptions) ? pickerOptions : {};
babelHelpers.classPrivateFieldLooseBase(this, _setType)[_setType](options.type);
babelHelpers.classPrivateFieldLooseBase(this, _setSelectionMode)[_setSelectionMode](options.selectionMode);
babelHelpers.classPrivateFieldLooseBase(this, _locale)[_locale] = main_core.Type.isStringFilled(options.locale) ? options.locale : settings.get('locale', 'en');
babelHelpers.classPrivateFieldLooseBase(this, _enableTime)[_enableTime] = main_core.Type.isBoolean(options.enableTime) ? options.enableTime : babelHelpers.classPrivateFieldLooseBase(this, _enableTime)[_enableTime];
if (this.isMultipleMode()) {
babelHelpers.classPrivateFieldLooseBase(this, _enableTime)[_enableTime] = false;
}
babelHelpers.classPrivateFieldLooseBase(this, _allowSeconds)[_allowSeconds] = main_core.Type.isBoolean(options.allowSeconds) ? options.allowSeconds : babelHelpers.classPrivateFieldLooseBase(this, _allowSeconds)[_allowSeconds];
babelHelpers.classPrivateFieldLooseBase(this, _amPmMode)[_amPmMode] = main_core.Type.isBoolean(options.amPmMode) ? options.amPmMode : main_date.DateTimeFormat.isAmPmMode();
babelHelpers.classPrivateFieldLooseBase(this, _cutZeroTime)[_cutZeroTime] = main_core.Type.isBoolean(options.cutZeroTime) ? options.cutZeroTime : babelHelpers.classPrivateFieldLooseBase(this, _cutZeroTime)[_cutZeroTime];
babelHelpers.classPrivateFieldLooseBase(this, _dateFormat)[_dateFormat] = main_core.Type.isStringFilled(options.dateFormat) ? options.dateFormat : babelHelpers.classPrivateFieldLooseBase(this, _getDefaultDateFormat)[_getDefaultDateFormat]();
this.setDefaultTime(options.defaultTime);
this.setDefaultTimeSpan(options.defaultTimeSpan);
babelHelpers.classPrivateFieldLooseBase(this, _timeFormat)[_timeFormat] = main_core.Type.isStringFilled(options.timeFormat) ? options.timeFormat : main_date.DateTimeFormat.getFormat(babelHelpers.classPrivateFieldLooseBase(this, _allowSeconds)[_allowSeconds] ? 'LONG_TIME_FORMAT' : 'SHORT_TIME_FORMAT');
babelHelpers.classPrivateFieldLooseBase(this, _minuteStep)[_minuteStep] = main_core.Type.isNumber(options.minuteStep) && [1, 5, 10, 15, 30].includes(options.minuteStep) ? options.minuteStep : babelHelpers.classPrivateFieldLooseBase(this, _minuteStep)[_minuteStep];
babelHelpers.classPrivateFieldLooseBase(this, _timePickerStyle)[_timePickerStyle] = options.timePickerStyle === 'wheel' ? 'wheel' : babelHelpers.classPrivateFieldLooseBase(this, _timePickerStyle)[_timePickerStyle];
babelHelpers.classPrivateFieldLooseBase(this, _viewDate)[_viewDate] = this.getToday();
babelHelpers.classPrivateFieldLooseBase(this, _useInputEvents)[_useInputEvents] = main_core.Type.isBoolean(options.useInputEvents) ? options.useInputEvents : babelHelpers.classPrivateFieldLooseBase(this, _useInputEvents)[_useInputEvents];
this.setAutoFocus(options.autoFocus);
this.setInputField(options.inputField);
this.setRangeStartInput(options.rangeStartInput);
this.setRangeEndInput(options.rangeEndInput);
this.setDateSeparator(options.dateSeparator);
this.selectDates(options.selectedDates, {
emitEvents: false
});
babelHelpers.classPrivateFieldLooseBase(this, _startDate)[_startDate] = isDateLike(options.startDate) ? this.createDate(options.startDate) : null;
const _viewDate2 = this.getDefaultViewDate();
this.setViewDate(_viewDate2);
babelHelpers.classPrivateFieldLooseBase(this, _inline)[_inline] = options.inline === true;
let firstWeekDay = settings.get('firstWeekDay', babelHelpers.classPrivateFieldLooseBase(this, _firstWeekDay)[_firstWeekDay]);
firstWeekDay = main_core.Type.isNumber(options.firstWeekDay) ? options.firstWeekDay : firstWeekDay;
babelHelpers.classPrivateFieldLooseBase(this, _firstWeekDay)[_firstWeekDay] = Math.min(Math.max(0, firstWeekDay), 6);
babelHelpers.classPrivateFieldLooseBase(this, _numberOfMonths)[_numberOfMonths] = main_core.Type.isNumber(options.numberOfMonths) ? options.numberOfMonths : babelHelpers.classPrivateFieldLooseBase(this, _numberOfMonths)[_numberOfMonths];
babelHelpers.classPrivateFieldLooseBase(this, _fullYear)[_fullYear] = options.fullYear === true;
if (babelHelpers.classPrivateFieldLooseBase(this, _fullYear)[_fullYear]) {
babelHelpers.classPrivateFieldLooseBase(this, _enableTime)[_enableTime] = false;
babelHelpers.classPrivateFieldLooseBase(this, _numberOfMonths)[_numberOfMonths] = 12;
this.setViewDate(createUtcDate(_viewDate2.getUTCFullYear(), 0, 1));
}
babelHelpers.classPrivateFieldLooseBase(this, _showWeekDays)[_showWeekDays] = main_core.Type.isBoolean(options.showWeekDays) ? options.showWeekDays : babelHelpers.classPrivateFieldLooseBase(this, _showWeekDays)[_showWeekDays];
babelHelpers.classPrivateFieldLooseBase(this, _showWeekNumbers)[_showWeekNumbers] = main_core.Type.isBoolean(options.showWeekNumbers) ? options.showWeekNumbers : babelHelpers.classPrivateFieldLooseBase(this, _showWeekNumbers)[_showWeekNumbers];
const defaultWeekends = settings.get('weekends', []);
babelHelpers.classPrivateFieldLooseBase(this, _weekends)[_weekends] = main_core.Type.isArray(options.weekends) ? options.weekends : main_core.Type.isArrayFilled(defaultWeekends) ? defaultWeekends : babelHelpers.classPrivateFieldLooseBase(this, _weekends)[_weekends];
const defaultHolidays = settings.get('holidays', []);
babelHelpers.classPrivateFieldLooseBase(this, _holidays)[_holidays] = main_core.Type.isArray(options.holidays) ? options.holidays : defaultHolidays;
const defaultWorkdays = settings.get('workdays', []);
babelHelpers.classPrivateFieldLooseBase(this, _workdays)[_workdays] = main_core.Type.isArray(options.workdays) ? options.workdays : defaultWorkdays;
babelHelpers.classPrivateFieldLooseBase(this, _showOutsideDays)[_showOutsideDays] = babelHelpers.classPrivateFieldLooseBase(this, _numberOfMonths)[_numberOfMonths] > 1 ? false : babelHelpers.classPrivateFieldLooseBase(this, _showOutsideDays)[_showOutsideDays];
babelHelpers.classPrivateFieldLooseBase(this, _showOutsideDays)[_showOutsideDays] = main_core.Type.isBoolean(options.showOutsideDays) ? options.showOutsideDays : babelHelpers.classPrivateFieldLooseBase(this, _showOutsideDays)[_showOutsideDays];
babelHelpers.classPrivateFieldLooseBase(this, _popupOptions)[_popupOptions] = main_core.Type.isPlainObject(options.popupOptions) ? options.popupOptions : babelHelpers.classPrivateFieldLooseBase(this, _popupOptions)[_popupOptions];
this.setMinDays(options.minDays);
this.setMaxDays(options.maxDays);
this.setHideOnSelect(options.hideOnSelect);
this.setTargetNode(options.targetNode);
this.setToggleSelected(options.toggleSelected);
this.setAutoHide(options.autoHide);
this.setHideByEsc(options.hideByEsc);
this.setCacheable(options.cacheable);
this.setSingleOpening(options.singleOpening);
this.setDayColors(options.dayColors);
this.setDayMarks(options.dayMarks);
this.setHideHeader(options.hideHeader);
this.subscribeFromOptions(options.events);
babelHelpers.classPrivateFieldLooseBase(this, _keyboardNavigation)[_keyboardNavigation] = new KeyboardNavigation(this);
}
setViewDate(date) {
let newDate = this.createDate(date);
if (newDate === null) {
return;
}
newDate = setTime(newDate, 0, 0, 0);
babelHelpers.classPrivateFieldLooseBase(this, _viewDate)[_viewDate] = newDate;
if (this.isDateOutOfView(this.getFocusDate())) {
this.setFocusDate(null, {
adjustViewDate: false,
render: false
});
}
if (this.isRendered()) {
this.getPicker().render();
}
}
getViewDate() {
return babelHelpers.classPrivateFieldLooseBase(this, _viewDate)[_viewDate];
}
getDefaultViewDate() {
return this.getSelectedDate() || babelHelpers.classPrivateFieldLooseBase(this, _startDate)[_startDate] || this.getToday();
}
adjustViewDate(date) {
if (this.isSingleMode()) {
if (this.getNumberOfMonths() === 1) {
if (!isDatesEqual(date, this.getViewDate(), 'month')) {
this.setViewDate(createUtcDate(date.getUTCFullYear(), date.getUTCMonth()));
}
} else {
const {
year,
month
} = this.getViewDateParts();
const firstMonth = createUtcDate(year, month);
const lastMonth = ceilDate(createUtcDate(year, month + this.getNumberOfMonths() - 1), 'month');
if (date < firstMonth || date >= lastMonth) {
this.setViewDate(createUtcDate(date.getUTCFullYear(), date.getUTCMonth()));
}
}
} else {
const dayPicker = this.getPicker('day');
const months = dayPicker.getMonths();
const firstDay = months[0].weeks[0][0].date;
const lastDay = months.at(-1).weeks.at(-1).at(-1).date;
if (date < firstDay || date > lastDay) {
this.setViewDate(createUtcDate(date.getUTCFullYear(), date.getUTCMonth()));
}
}
}
getViewDateParts() {
return getDate(babelHelpers.classPrivateFieldLooseBase(this, _viewDate)[_viewDate]);
}
selectDate(date, options = {}) {
if (this.isRangeMode()) {
throw new Error('DatePicker: to select a range use selectRange method.');
}
if (!isDateLike(date)) {
return false;
}
const selectedDate = this.createDate(date);
if (this.isDateSelected(selectedDate, 'datetime')) {
return false;
}
const updateTime = this.isDateSelected(selectedDate, 'day');
if (!updateTime && this.isMultipleMode() && babelHelpers.classPrivateFieldLooseBase(this, _selectedDates)[_selectedDates].length >= this.getMaxDays()) {
return false;
}
const {
emitEvents,
render,
updateInputs
} = {
emitEvents: true,
render: true,
updateInputs: true,
...options
};
if (emitEvents && !babelHelpers.classPrivateFieldLooseBase(this, _canSelectDate)[_canSelectDate](selectedDate)) {
return false;
}
if (this.isMultipleMode()) {
if (updateTime) {
const index = babelHelpers.classPrivateFieldLooseBase(this, _selectedDates)[_selectedDates].findIndex(currentDate => {
return isDatesEqual(currentDate, selectedDate, 'day');
});
// replace existing date
if (index !== -1) {
babelHelpers.classPrivateFieldLooseBase(this, _selectedDates)[_selectedDates].splice(index, 1, selectedDate);
}
} else {
const index = babelHelpers.classPrivateFieldLooseBase(this, _selectedDates)[_selectedDates].findIndex(currentDate => {
return currentDate > selectedDate;
});
if (index === -1) {
babelHelpers.classPrivateFieldLooseBase(this, _selectedDates)[_selectedDates].push(selectedDate);
} else if (index === 0) {
babelHelpers.classPrivateFieldLooseBase(this, _selectedDates)[_selectedDates].unshift(selectedDate);
} else {
babelHelpers.classPrivateFieldLooseBase(this, _selectedDates)[_selectedDates].splice(index, 0, selectedDate);
}
}
} else {
const currentDate = babelHelpers.classPrivateFieldLooseBase(this, _selectedDates)[_selectedDates][0] || null;
if (emitEvents && currentDate !== null) {
if (!babelHelpers.classPrivateFieldLooseBase(this, _canDeselectDate)[_canDeselectDate](currentDate)) {
return false;
}
this.deselectDate(currentDate, {
emitEvents: false,
render: false
});
this.emit(DatePickerEvent.DESELECT, {
date: currentDate
});
}
babelHelpers.classPrivateFieldLooseBase(this, _selectedDates)[_selectedDates] = [selectedDate];
}
this.adjustViewDate(selectedDate);
if (this.isRendered() && render) {
this.getPicker().render();
}
if (updateInputs) {
this.updateInputFields();
}
if (emitEvents) {
this.emit(DatePickerEvent.SELECT, {
date: selectedDate
});
this.emit(DatePickerEvent.SELECT_CHANGE);
}
return true;
}
selectDates(dates, options = {}) {
if (!main_core.Type.isArrayFilled(dates)) {
return;
}
if (this.isRangeMode()) {
const [start, end] = dates;
this.selectRange(start, end, options);
} else {
dates.forEach(date => {
this.selectDate(date, options);
});
}
}
selectRange(start, end = null, options = {}) {
if (!this.isRangeMode()) {
throw new Error('DatePicker: to select a date use selectDate method.');
}
if (!isDateLike(start) || end !== null && !isDateLike(end)) {
return false;
}
let newStart = this.createDate(start);
let newEnd = end === null ? null : this.createDate(end);
if (newStart === null && newEnd === null) {
return false;
}
if (newStart !== null && newEnd !== null && newStart > newEnd) {
[newStart, newEnd] = [newEnd, newStart];
}
const currentStart = babelHelpers.classPrivateFieldLooseBase(this, _selectedDates)[_selectedDates][0] || null;
const currentEnd = babelHelpers.classPrivateFieldLooseBase(this, _selectedDates)[_selectedDates][1] || null;
if (isDatesEqual(newStart, currentStart, 'datetime') && (newEnd === null && currentEnd === null || isDatesEqual(newEnd, currentEnd, 'datetime'))) {
return false;
}
const {
emitEvents,
updateInputs
} = {
emitEvents: true,
updateInputs: true,
...options
};
const deselectStart = currentStart !== null && emitEvents && !isDatesEqual(newStart, currentStart, 'datetime') && !isDatesEqual(newEnd, currentStart, 'datetime');
const deselectEnd = currentEnd !== null && emitEvents && !isDatesEqual(newStart, currentEnd, 'datetime') && !isDatesEqual(newEnd, currentEnd, 'datetime');
const selectStart = !this.isDateSelected(newStart, 'datetime');
const selectEnd = newEnd !== null && (!this.isDateSelected(newEnd, 'datetime') || currentEnd === null && isDatesEqual(newEnd, newStart, 'datetime'));
if (deselectStart && !babelHelpers.classPrivateFieldLooseBase(this, _canDeselectDate)[_canDeselectDate](currentStart)) {
return false;
}
if (deselectEnd && !babelHelpers.classPrivateFieldLooseBase(this, _canDeselectDate)[_canDeselectDate](currentEnd)) {
return false;
}
if (selectStart && !babelHelpers.classPrivateFieldLooseBase(this, _canSelectDate)[_canSelectDate](newStart)) {
return false;
}
if (selectEnd && !babelHelpers.classPrivateFieldLooseBase(this, _canSelectDate)[_canSelectDate](newEnd)) {
return false;
}
if (deselectStart) {
this.deselectDate(currentStart, {
emitEvents: false,
render: false
});
this.emit(DatePickerEvent.DESELECT, {
date: currentStart
});
}
if (deselectEnd) {
this.deselectDate(currentEnd, {
emitEvents: false,
render: false
});
this.emit(DatePickerEvent.DESELECT, {
date: currentEnd
});
}
babelHelpers.classPrivateFieldLooseBase(this, _selectedDates)[_selectedDates] = newEnd === null ? [newStart] : [newStart, newEnd];
this.adjustViewDate(newStart);
if (this.isRendered()) {
this.getPicker().render();
}
if (updateInputs) {
this.updateInputFields();
}
if (emitEvents) {
if (selectStart) {
this.emit(DatePickerEvent.SELECT, {
date: newStart
});
}
if (selectEnd) {
this.emit(DatePickerEvent.SELECT, {
date: newEnd
});
}
this.emit(DatePickerEvent.SELECT_CHANGE);
}
return true;
}
deselectDate(date, options = {}) {
if (!isDateLike(date)) {
return false;
}
const dateToDeselect = this.createDate(date);
const {
emitEvents,
render,
updateInputs
} = {
emitEvents: true,
render: true,
updateInputs: true,
...options
};
if (emitEvents && !babelHelpers.classPrivateFieldLooseBase(this, _canDeselectDate)[_canDeselectDate](dateToDeselect)) {
return false;
}
if (this.isMultipleMode() && babelHelpers.classPrivateFieldLooseBase(this, _selectedDates)[_selectedDates].length <= this.getMinDays()) {
return false;
}
const index = babelHelpers.classPrivateFieldLooseBase(this, _selectedDates)[_selectedDates].findIndex(selectedDate => {
return isDatesEqual(dateToDeselect, selectedDate);
});
if (index === -1) {
return false;
}
babelHelpers.classPrivateFieldLooseBase(this, _selectedDates)[_selectedDates].splice(index, 1);
if (emitEvents) {
this.emit(DatePickerEvent.DESELECT, {
date: dateToDeselect
});
this.emit(DatePickerEvent.SELECT_CHANGE);
}
if (this.isRendered() && render) {
this.getPicker().render();
}
if (updateInputs) {
this.updateInputFields();
}
return true;
}
deselectAll(options = {}) {
const dates = [...babelHelpers.classPrivateFieldLooseBase(this, _selectedDates)[_selectedDates]];
dates.forEach(date => {
this.deselectDate(date, options);
});
return babelHelpers.classPrivateFieldLooseBase(this, _selectedDates)[_selectedDates].length === 0;
}
getSelectedDates() {
return babelHelpers.classPrivateFieldLooseBase(this, _selectedDates)[_selectedDates];
}
getSelectedDate() {
return babelHelpers.classPrivateFieldLooseBase(this, _selectedDates)[_selectedDates][0] || null;
}
getRangeStart() {
return babelHelpers.classPrivateFieldLooseBase(this, _selectedDates)[_selectedDates][0] || null;
}
getRangeEnd() {
return babelHelpers.classPrivateFieldLooseBase(this, _selectedDates)[_selectedDates][1] || null;
}
isDateSelected(date, precision = 'day') {
return babelHelpers.classPrivateFieldLooseBase(this, _selectedDates)[_selectedDates].some(selectedDate => {
return isDatesEqual(date, selectedDate, precision);
});
}
setFocusDate(date, options = {}) {
if (!isDateLike(date) && date !== null) {
return;
}
babelHelpers.classPrivateFieldLooseBase(this, _focusDate)[_focusDate] = date === null ? null : this.createDate(date);
const {
render,
adjustViewDate
} = {
render: true,
adjustViewDate: true,
...options
};
if (adjustViewDate && this.isDateOutOfView(babelHelpers.classPrivateFieldLooseBase(this, _focusDate)[_focusDate])) {
this.setViewDate(createUtcDate(babelHelpers.classPrivateFieldLooseBase(this, _focusDate)[_focusDate].getUTCFullYear(), babelHelpers.classPrivateFieldLooseBase(this, _focusDate)[_focusDate].getUTCMonth()));
}
if (this.isRendered() && render) {
this.getPicker().render();
}
}
getFocusDate() {
return babelHelpers.classPrivateFieldLooseBase(this, _focusDate)[_focusDate];
}
getInitialFocusDate(mode = 'datetime') {
const focusDate = this.getFocusDate();
if (focusDate !== null) {
return focusDate;
}
if (mode === 'range-start') {
const {
year,
month,
day
} = this.getViewDateParts();
return this.getRangeStart() || createUtcDate(year, month, day);
}
if (mode === 'range-end') {
const {
year,
month,
day
} = this.getViewDateParts();
return this.getRangeEnd() || createUtcDate(year, month, day);
}
const selectedDates = this.getSelectedDates();
if (main_core.Type.isArrayFilled(selectedDates)) {
const date = selectedDates.find(selectedDate => {
return !this.isDateOutOfView(selectedDate);
});
if (main_core.Type.isDate(date)) {
return date;
}
}
return this.getViewDate();
}
isDateOutOfView(date) {
if (date === null) {
return false;
}
let isOutOfView = false;
const {
year: currentViewYear
} = this.getViewDateParts();
const {
year: focusYear
} = getDate(date);
if (this.getCurrentView() === 'day') {
const dayPicker = this.getPicker('day');
const firstDay = dayPicker.getFirstDay();
const lastDay = dayPicker.getLastDay();
const focusDate = createUtcDate(date.getUTCFullYear(), date.getUTCMonth(), date.getUTCDate());
isOutOfView = focusDate < firstDay || focusDate >= lastDay;
} else if (this.getCurrentView() === 'month') {
isOutOfView = currentViewYear !== focusYear;
} else if (this.getCurrentView() === 'year') {
const yearPicker = this.getPicker('year');
const firstYear = yearPicker.getFirstYear();
const lastYear = yearPicker.getLastYear();
isOutOfView = focusYear < firstYear || focusYear > lastYear;
}
return isOutOfView;
}
setCurrentView(view) {
var _this$getPicker, _this$getPicker2, _this$getPicker3;
if (babelHelpers.classPrivateFieldLooseBase(this, _currentView)[_currentView] === view) {
return;
}
const picker = this.getPicker(view);
if (picker === null) {
return;
}
main_core.Dom.style((_this$getPicker = this.getPicker()) == null ? void 0 : _this$getPicker.getContainer(), 'display', 'none');
main_core.Dom.attr((_this$getPicker2 = this.getPicker()) == null ? void 0 : _this$getPicker2.getContainer(), 'inert', true);
(_this$getPicker3 = this.getPicker()) == null ? void 0 : _this$getPicker3.onHide();
babelHelpers.classPrivateFieldLooseBase(this, _currentView)[_currentView] = view;
this.setFocusDate(null, {
render: false
});
if (!picker.isRendered()) {
picker.renderTo(this.getViewsContainer());
}
this.focus();
main_core.Dom.style(picker.getContainer(), 'display', null);
main_core.Dom.attr(picker.getContainer(), 'inert', null);
picker.onShow();
picker.render();
}
getCurrentView() {
return babelHelpers.classPrivateFieldLooseBase(this, _currentView)[_currentView];
}
getPicker(pickerId) {
const currentPickerId = main_core.Type.isStringFilled(pickerId) ? pickerId : babelHelpers.classPrivateFieldLooseBase(this, _currentView)[_currentView];
let view = babelHelpers.classPrivateFieldLooseBase(this, _views)[_views].get(currentPickerId) || null;
if (view === null) {
view = babelHelpers.classPrivateFieldLooseBase(this, _createPicker)[_createPicker](currentPickerId);
if (view !== null) {
babelHelpers.classPrivateFieldLooseBase(this, _views)[_views].set(currentPickerId, view);
}
}
return view;
}
getType() {
return babelHelpers.classPrivateFieldLooseBase(this, _type)[_type];
}
getFirstWeekDay() {
return babelHelpers.classPrivateFieldLooseBase(this, _firstWeekDay)[_firstWeekDay];
}
getNumberOfMonths() {
return babelHelpers.classPrivateFieldLooseBase(this, _numberOfMonths)[_numberOfMonths];
}
shouldShowWeekDays() {
return babelHelpers.classPrivateFieldLooseBase(this, _showWeekDays)[_showWeekDays];
}
shouldShowWeekNumbers() {
return babelHelpers.classPrivateFieldLooseBase(this, _showWeekNumbers)[_showWeekNumbers];
}
shouldShowOutsideDays() {
return babelHelpers.classPrivateFieldLooseBase(this, _showOutsideDays)[_showOutsideDays];
}
getWeekends() {
return babelHelpers.classPrivateFieldLooseBase(this, _weekends)[_weekends];
}
isWeekend(date) {
return babelHelpers.classPrivateFieldLooseBase(this, _weekends)[_weekends].includes(date.getUTCDay());
}
isHoliday(date) {
return babelHelpers.classPrivateFieldLooseBase(this, _holidays)[_holidays].some(([day, month]) => {
return date.getUTCDate() === day && date.getUTCMonth() === month;
});
}
isWorkday(date) {
return babelHelpers.classPrivateFieldLooseBase(this, _workdays)[_workdays].some(([day, month]) => {
return date.getUTCDate() === day && date.getUTCMonth() === month;
});
}
isDayOff(date) {
return !this.isWorkday(date) && (this.isWeekend(date) || this.isHoliday(date));
}
isTimeEnabled() {
return babelHelpers.classPrivateFieldLooseBase(this, _enableTime)[_enableTime];
}
setDefaultTime(time) {
if (main_core.Type.isStringFilled(time) && /([01]{1,2}\d|2[0-3]):[0-5]\d(:[0-5]\d)?/.test(time)) {
babelHelpers.classPrivateFieldLooseBase(this, _defaultTime)[_defaultTime] = time;
}
}
getDefaultTime() {
return babelHelpers.classPrivateFieldLooseBase(this, _defaultTime)[_defaultTime];
}
setDefaultTimeSpan(minutes) {
if (main_core.Type.isNumber(minutes) && minutes >= 0) {
babelHelpers.classPrivateFieldLooseBase(this, _defaultTimeSpan)[_defaultTimeSpan] = minutes;
}
}
getDefaultTimeSpan() {
return babelHelpers.classPrivateFieldLooseBase(this, _defaultTimeSpan)[_defaultTimeSpan];
}
getDefaultTimeParts() {
const parts = this.getDefaultTime().split(':');
return {
hours: Number(parts[0] || 0),
minutes: Number(parts[1] || 0),
seconds: Number(parts[2] || 0)
};
}
getTimePickerStyle() {
return babelHelpers.classPrivateFieldLooseBase(this, _timePickerStyle)[_timePickerStyle];
}
shouldCutZeroTime() {
return babelHelpers.classPrivateFieldLooseBase(this, _cutZeroTime)[_cutZeroTime];
}
shouldAllowSeconds() {
return babelHelpers.classPrivateFieldLooseBase(this, _allowSeconds)[_allowSeconds];
}
setToggleSelected(flag) {
if (main_core.Type.isBoolean(flag) || main_core.Type.isNull(flag)) {
babelHelpers.classPrivateFieldLooseBase(this, _toggleSelected)[_toggleSelected] = flag;
}
}
shouldToggleSelected() {
if (babelHelpers.classPrivateFieldLooseBase(this, _toggleSelected)[_toggleSelected] !== null) {
return babelHelpers.classPrivateFieldLooseBase(this, _toggleSelected)[_toggleSelected];
}
return this.isMultipleMode();
}
setMaxDays(days) {
if (main_core.Type.isNumber(days) && days > 0) {
babelHelpers.classPrivateFieldLooseBase(this, _maxDays)[_maxDays] = days;
}
}
getMaxDays() {
return babelHelpers.classPrivateFieldLooseBase(this, _maxDays)[_maxDays];
}
setMinDays(days) {
if (main_core.Type.isNumber(days) && days > 0) {
babelHelpers.classPrivateFieldLooseBase(this, _minDays)[_minDays] = days;
}
}
getMinDays() {
return babelHelpers.classPrivateFieldLooseBase(this, _minDays)[_minDays];
}
isFullYear() {
return babelHelpers.classPrivateFieldLooseBase(this, _fullYear)[_fullYear];
}
isAmPmMode() {
return babelHelpers.classPrivateFieldLooseBase(this, _amPmMode)[_amPmMode];
}
getMinuteStep() {
return babelHelpers.classPrivateFieldLooseBase(this, _minuteStep)[_minuteStep];
}
getMinuteStepByDate(date) {
let step = this.getMinuteStep();
if (!main_core.Type.isDate(date)) {
return step;
}
const selectedMinute = date.getUTCMinutes();
if (selectedMinute > 0 && selectedMinute % step !== 0) {
// Reduce a step to show a selected minute
const availableSteps = [30, 15, 10, 5, 1];
const index = availableSteps.indexOf(selectedMinute);
const steps = index === -1 ? [1] : availableSteps.slice(index);
for (const newStep of steps) {
if (selectedMinute % newStep === 0) {
step = newStep;
break;
}
}
}
return step;
}
getToday() {
return this.createDate(new Date());
}
show() {
this.updateFromInputFields();
if (this.isInline()) {
if (!this.isRendered()) {
babelHelpers.classPrivateFieldLooseBase(this, _render)[_render]();
}
// Dom.removeClass(this.getContainer(), '--hidden');
} else {
this.getPopup().show();
}
}
hide() {
if (!this.isRendered() || this.isInline()) {
return;
}
// if (this.isInline())
// {
// Dom.addClass(this.getContainer(), '--hidden');
// }
this.getPopup().close();
}
isOpen() {
return babelHelpers.classPrivateFieldLooseBase(this, _popup)[_popup] !== null && babelHelpers.classPrivateFieldLooseBase(this, _popup)[_popup].isShown();
}
adjustPosition() {
if (this.isRendered() && this.isOpen()) {
this.getPopup().adjustPosition();
}
}
toggle() {
if (this.isOpen()) {
this.hide();
} else {
this.show();
}
}
focus() {
if (this.isRendered()) {
this.getContainer().tabIndex = 0;
this.getContainer().focus({
preventScroll: true
});
this.getContainer().tabIndex = -1;
}
}
setSingleOpening(flag) {
if (main_core.Type.isBoolean(flag)) {
babelHelpers.classPrivateFieldLooseBase(this, _singleOpening)[_singleOpening] = flag;
}
}
isSingleOpening() {
return babelHelpers.classPrivateFieldLooseBase(this, _singleOpening)[_singleOpening];
}
setDayColors(options) {
if (!main_core.Type.isArray(options)) {
return;
}
const dayColors = [];
for (const option of options) {
if (!main_core.Type.isStringFilled(option.bgColor) && !main_core.Type.isStringFilled(option.textColor)) {
continue;
}
const matchers = babelHelpers.classPrivateFieldLooseBase(this, _createDateMatchers)[_createDateMatchers](option.matcher);
if (main_core.Type.isArrayFilled(matchers)) {
dayColors.push({
bgColor: main_core.Type.isStringFilled(option.bgColor) ? option.bgColor : null,
textColor: main_core.Type.isStringFilled(option.textColor) ? option.textColor : null,
matchers
});
}
}
babelHelpers.classPrivateFieldLooseBase(this, _dayColors)[_dayColors] = dayColors;
if (this.isRendered()) {
this.getPicker().render();
}
}
getDayColor(day) {
return babelHelpers.classPrivateFieldLooseBase(this, _dayColors)[_dayColors].find(dayColor => isDateMatch(day, dayColor.matchers)) || null;
}
setDayMarks(options) {
if (!main_core.Type.isArray(options)) {
return;
}
const dayMarks = [];
for (const option of options) {
if (!main_core.Type.isStringFilled(option.bgColor)) {
continue;
}
const matchers = babelHelpers.classPrivateFieldLooseBase(this, _createDateMatchers)[_createDateMatchers](option.matcher);
if (main_core.Type.isArrayFilled(matchers)) {
dayMarks.push({
bgColor: option.bgColor,
matchers
});
}
}
babelHelpers.classPrivateFieldLooseBase(this, _dayMarks)[_dayMarks] = dayMarks;
if (this.isRendered()) {
this.getPicker().render();
}
}
getDayMarks(day) {
return babelHelpers.classPrivateFieldLooseBase(this, _dayMarks)[_dayMarks].filter(dayMark => isDateMatch(day, dayMark.matchers));
}
getPopup() {
if (babelHelpers.classPrivateFieldLooseBase(this, _popup)[_popup] !== null) {
return babelHelpers.classPrivateFieldLooseBase(this, _popup)[_popup];
}
const popupOptions = {
...babelHelpers.classPrivateFieldLooseBase(this, _popupOptions)[_popupOptions]
};
const userEvents = popupOptions.events;
delete popupOptions.events;
babelHelpers.classPrivateFieldLooseBase(this, _popup)[_popup] = new main_popup.Popup({
contentPadding: 0,
padding: 0,
offsetTop: 5,
bindElement: this.getTargetNode(),
bindOptions: {
forceBindPosition: true
},
autoHide: this.isAutoHide(),
closeByEsc: this.shouldHideByEsc(),
cacheable: this.isCacheable(),
content: this.getContainer(),
autoHideHandler: babelHelpers.classPrivateFieldLooseBase(this, _handleAutoHide)[_handleAutoHide].bind(this),
events: {
onFirstShow: babelHelpers.classPrivateFieldLooseBase(this, _handlePopupFirstShow)[_handlePopupFirstShow].bind(this),
onShow: babelHelpers.classPrivateFieldLooseBase(this, _handlePopupShow)[_handlePopupShow].bind(this),
onClose: babelHelpers.classPrivateFieldLooseBase(this, _handlePopupClose)[_handlePopupClose].bind(this),
onDestroy: babelHelpers.classPrivateFieldLooseBase(this, _handlePopupDestroy)[_handlePopupDestroy].bind(this)
},
...popupOptions
});
babelHelpers.classPrivateFieldLooseBase(this, _popup)[_popup].subscribeFromOptions(userEvents);
return babelHelpers.classPrivateFieldLooseBase(this, _popup)[_popup];
}
setHideOnSelect(flag) {
if (main_core.Type.isBoolean(flag)) {
babelHelpers.classPrivateFieldLooseBase(this, _hideOnSelect)[_hideOnSelect] = flag;
}
}
shouldHideOnSelect() {
if (this.isInline()) {
return false;
}
return babelHelpers.classPrivateFieldLooseBase(this, _hideOnSelect)[_hideOnSelect];
}
setDateSeparator(separator) {
if (main_core.Type.isStringFilled(separator)) {
babelHelpers.classPrivateFieldLooseBase(this, _dateSeparator)[_dateSeparator] = separator;
}
}
getDateSeparator() {
return babelHelpers.classPrivateFieldLooseBase(this, _dateSeparator)[_dateSeparator];
}
setInputField(field) {
const input = babelHelpers.classPrivateFieldLooseBase(this, _getInputField)[_getInputField](field);
if (input !== null) {
babelHelpers.classPrivateFieldLooseBase(this, _inputField)[_inputField] = input;
babelHelpers.classPrivateFieldLooseBase(this, _bindInputEvents)[_bindInputEvents](input);
}
}
setRangeStartInput(field) {
const input = babelHelpers.classPrivateFieldLooseBase(this, _getInputField)[_getInputField](field);
if (input !== null) {
babelHelpers.classPrivateFieldLooseBase(this, _rangeStartInput)[_rangeStartInput] = input;
babelHelpers.classPrivateFieldLooseBase(this, _bindInputEvents)[_bindInputEvents](input);
}
}
setRangeEndInput(field) {
const input = babelHelpers.classPrivateFieldLooseBase(this, _getInputField)[_getInputField](field);
if (input !== null) {
babelHelpers.classPrivateFieldLooseBase(this, _rangeEndInput)[_rangeEndInput] = input;
babelHelpers.classPrivateFieldLooseBase(this, _bindInputEvents)[_bindInputEvents](input);
}
}
shouldUseInputEvents() {
return babelHelpers.classPrivateFieldLooseBase(this, _useInputEvents)[_useInputEvents];
}
getInputField() {
return babelHelpers.classPrivateFieldLooseBase(this, _inputField)[_inputField];
}
getRangeStartInput() {
return babelHelpers.classPrivateFieldLooseBase(this, _rangeStartInput)[_rangeStartInput];
}
getRangeEndInput() {
return babelHelpers.classPrivateFieldLooseBase(this, _rangeEndInput)[_rangeEndInput];
}
updateInputFields() {
if (this.isSingleMode()) {
if (this.getType() === 'time') {
babelHelpers.classPrivateFieldLooseBase(this, _setInputDate)[_setInputDate](this.getInputField(), this.getSelectedDate(), this.getTimeFormat());
} else {
babelHelpers.classPrivateFieldLooseBase(this, _setInputDate)[_setInputDate](this.getInputField(), this.getSelectedDate());
}
} else if (this.isMultipleMode()) {
babelHelpers.classPrivateFieldLooseBase(this, _setInputDate)[_setInputDate](this.getInputField(), this.getSelectedDates().map(date => this.formatDate(date)).join(this.getDateSeparator()));
} else if (this.isRangeMode()) {
babelHelpers.classPrivateFieldLooseBase(this, _setInputDate)[_setInputDate](this.getRangeStartInput(), this.getRangeStart());
babelHelpers.classPrivateFieldLooseBase(this, _setInputDate)[_setInputDate](this.getRangeEndInput(), this.getRangeEnd());
}
}
updateFromInputFields() {
if (this.isSingleMode() && this.getInputField() !== null) {
const inputDate = babelHelpers.classPrivateFieldLooseBase(this, _getDateFromInput)[_getDateFromInput](this.getInputField());
if (inputDate === null) {
this.deselectAll({
updateInputs: false,
emitEvents: false
});
} else {
this.selectDate(inputDate, {
updateInputs: false,
emitEvents: false
});
}
} else if (this.isMultipleMode() && this.getInputField() !== null) {
const value = this.getInputField().value.trim();
const inputDates = value.split(this.getDateSeparator().trim()).map(part => this.createDate(part.trim())).filter(date => date !== null);
this.deselectAll({
updateInputs: false,
emitEvents: false
});
this.selectDates(inputDates, {
updateInputs: false,
emitEvents: false
});
} else if (this.isRangeMode() && this.getRangeStartInput() !== null) {
const rangeStart = babelHelpers.classPrivateFieldLooseBase(this, _getDateFromInput)[_getDateFromInput](this.getRangeStartInput());
const rangeEnd = babelHelpers.classPrivateFieldLooseBase(this, _getDateFromInput)[_getDateFromInput](this.getRangeEndInput());
if (rangeStart === null) {
this.deselectAll({
updateInputs: false,
emitEvents: false
});
} else {
this.selectRange(rangeStart, rangeEnd, {
updateInputs: false,
emitEvents: false
});
}
}
}
getLocale() {
return babelHelpers.classPrivateFieldLooseBase(this, _locale)[_locale];
}
isRendered() {
return babelHelpers.classPrivateFieldLooseBase(this, _rendered$1)[_rendered$1];
}
getContainer() {
return babelHelpers.classPrivateFieldLooseBase(this, _refs$6)[_refs$6].remember('container', () => {
const classes = ['ui-date-picker'];
if (this.isInline()) {
classes.push('--inline');
}
if (this.shouldHideHeader()) {
classes.push('--hide-header');
}
classes.push(`--${this.getType()}-picker`);
return main_core.Tag.render(_t$6 || (_t$6 = _$5`
<div tabindex="-1" onkeyup="${0}" class="${0}">
${0}
</div>
`), babelHelpers.classPrivateFieldLooseBase(this, _handleContainerKeyUp)[_handleContainerKeyUp].bind(this), classes.join(' '), this.getViewsContainer());
});
}
getViewsContainer() {
return babelHelpers.classPrivateFieldLooseBase(this, _refs$6)[_refs$6].remember('views', () => {
return main_core.Tag.render(_t2$6 || (_t2$6 = _$5`<div class="ui-date-picker-views"></div>`));
});
}
isMultipleMode() {
return babelHelpers.classPrivateFieldLooseBase(this, _selectionMode)[_selectionMode] === 'multiple';
}
isSingleMode() {
return babelHelpers.classPrivateFieldLooseBase(this, _selectionMode)[_selectionMode] === 'single';
}
isRangeMode() {
return babelHelpers.classPrivateFieldLooseBase(this, _selectionMode)[_selectionMode] === 'range';
}
isInline() {
return babelHelpers.classPrivateFieldLooseBase(this, _inline)[_inline];
}
isFocused() {
const rootContainer = this.getContainer();
const activeElement = rootContainer.ownerDocument.activeElement;
return rootContainer.contains(activeElement) || rootContainer === activeElement;
}
setAutoFocus(flag) {
if (main_core.Type.isBoolean(flag)) {
babelHelpers.classPrivateFieldLooseBase(this, _autoFocus)[_autoFocus] = flag;
}
}
isAutoFocus() {
return babelHelpers.classPrivateFieldLooseBase(this, _autoFocus)[_autoFocus];
}
setTargetNode(node) {
if (!main_core.Type.isDomNode(node) && !main_core.Type.isNull(node) && !main_core.Type.isObject(node)) {
return;
}
babelHelpers.classPrivateFieldLooseBase(this, _targetNode)[_targetNode] = node;
if (this.isRendered()) {
this.getPopup().setBindElement(babelHelpers.classPrivateFieldLooseBase(this, _targetNode)[_targetNode]);
this.getPopup().adjustPosition();
}
}
getTargetNode() {
return babelHelpers.classPrivateFieldLooseBase(this, _targetNode)[_targetNode];
}
setAutoHide(enable) {
if (main_core.Type.isBoolean(enable)) {
babelHelpers.classPrivateFieldLooseBase(this, _autoHide)[_autoHide] = enable;
if (this.isRendered()) {
this.getPopup().setAutoHide(enable);
}
}
}
isAutoHide() {
return babelHelpers.classPrivateFieldLooseBase(this, _autoHide)[_autoHide];
}
setHideByEsc(enable) {
if (main_core.Type.isBoolean(enable)) {
babelHelpers.classPrivateFieldLooseBase(this, _hideByEsc)[_hideByEsc] = enable;
if (this.isRendered()) {
this.getPopup().setClosingByEsc(enable);
}
}
}
shouldHideByEsc() {
return babelHelpers.classPrivateFieldLooseBase(this, _hideByEsc)[_hideByEsc];
}
isCacheable() {
return babelHelpers.classPrivateFieldLooseBase(this, _cacheable)[_cacheable];
}
setCacheable(cacheable) {
if (main_core.Type.isBoolean(cacheable)) {
babelHelpers.classPrivateFieldLooseBase(this, _cacheable)[_cacheable] = cacheable;
if (this.isRendered()) {
this.getPopup().setCacheable(cacheable);
}
}
}
setHideHeader(enable) {
if (main_core.Type.isBoolean(enable)) {
babelHelpers.classPrivateFieldLooseBase(this, _hideHeader)[_hideHeader] = enable;
if (this.isRendered()) {
if (enable) {
main_core.Dom.addClass(this.getContainer(), '--hide-header');
} else {
main_core.Dom.removeClass(this.getContainer(), '--hide-header');
}
}
}
}
shouldHideHeader() {
return babelHelpers.classPrivateFieldLooseBase(this, _hideHeader)[_hideHeader];
}
createDate(date) {
return createDate(date, this.getDateFormat());
}
formatDate(date, format = null) {
const midnight = date.getUTCHours() === 0 && date.getUTCMinutes() === 0 && date.getUTCSeconds() === 0;
const dateFormat = format === null ? this.getDateFormat() : format;
let result = main_date.DateTimeFormat.format(dateFormat, date, null, true);
if (this.isTimeEnabled() && midnight && this.shouldCutZeroTime()) {
result = result.replaceAll(/\s*12:00:00 am\s*/gi, '').replaceAll(/\s*12:00 am\s*/gi, '').replaceAll(/\s*00:00:00\s*/g, '').replaceAll(/\s*00:00\s*/g, '');
}
return result;
}
formatTime(date, format = null) {
return main_date.DateTimeFormat.format(format === null ? this.getTimeFormat() : format, date, null, true);
}
getDateFormat() {
return babelHelpers.classPrivateFieldLooseBase(this, _dateFormat)[_dateFormat];
}
getTimeFormat() {
return babelHelpers.classPrivateFieldLooseBase(this, _timeFormat)[_timeFormat];
}
destroy() {
if (babelHelpers.classPrivateFieldLooseBase(this, _destroying)[_destroying]) {
return;
}
babelHelpers.classPrivateFieldLooseBase(this, _destroying)[_destroying] = true;
this.emit(DatePickerEvent.DESTROY);
if (this.isRendered()) {
main_core.Dom.remove(this.getContainer());
}
babelHelpers.classPrivateFieldLooseBase(this, _unbindInputEvents)[_unbindInputEvents](this.getInputField());
babelHelpers.classPrivateFieldLooseBase(this, _unbindInputEvents)[_unbindInputEvents](this.getRangeStartInput());
babelHelpers.classPrivateFieldLooseBase(this, _unbindInputEvents)[_unbindInputEvents](this.getRangeEndInput());
if (babelHelpers.classPrivateFieldLooseBase(this, _popup)[_popup] !== null) {
babelHelpers.classPrivateFieldLooseBase(this, _popup)[_popup].destroy();
}
babelHelpers.classPrivateFieldLooseBase(this, _refs$6)[_refs$6] = null;
babelHelpers.classPrivateFieldLooseBase(this, _views)[_views] = null;
babelHelpers.classPrivateFieldLooseBase(this, _selectedDates)[_selectedDates] = null;
Object.setPrototypeOf(this, null);
}
}
function _canSelectDate2(date) {
const event = new main_core_events.BaseEvent({
data: {
date
}
});
this.emit(DatePickerEvent.BEFORE_SELECT, event);
return !event.isDefaultPrevented();
}
function _canDeselectDate2(date) {
const event = new main_core_events.BaseEvent({
data: {
date
}
});
this.emit(DatePickerEvent.BEFORE_DESELECT, event);
return !event.isDefaultPrevented();
}
function _setType2(type) {
if (['date', 'year', 'month', 'time'].includes(type)) {
babelHelpers.classPrivateFieldLooseBase(this, _type)[_type] = type;
}
}
function _createDateMatchers2(matcher) {
if (main_core.Type.isUndefined(matcher)) {
return [];
}
const result = [];
const matchers = main_core.Type.isArray(matcher) ? [...matcher] : [matcher];
matchers.forEach(matcherValue => {
if (main_core.Type.isArray(matcherValue)) {
const dates = [];
matcherValue.forEach(dateLike => {
if (!isDateLike(dateLike)) {
return;
}
const date = this.createDate(matcherValue);
if (date !== null) {
dates.push(date);
}
});
result.push(dates);
} else if (isDateLike(matcherValue)) {
const date = this.createDate(matcherValue);
if (date !== null) {
result.push(date);
}
} else if (main_core.Type.isBoolean(matcherValue) || main_core.Type.isFunction(matcherValue)) {
result.push(matcherValue);
}
});
return result;
}
function _setSelectionMode2(mode) {
if (this.getType() !== 'date') {
babelHelpers.classPrivateFieldLooseBase(this, _selectionMode)[_selectionMode] = 'single';
} else if (['single', 'multiple', 'range', 'none'].includes(mode)) {
babelHelpers.classPrivateFieldLooseBase(this, _selectionMode)[_selectionMode] = mode;
}
}
function _getInputField2(field) {
if (main_core.Type.isStringFilled(field)) {
const element = document.querySelector(field);
if (main_core.Type.isElementNode(element) || element.nodeName === 'INPUT' || element.nodeName === 'TEXTAREA') {
return element;
}
console.error(`Date Picker: a form element was not found (${field}).`);
} else if (main_core.Type.isElementNode(field) && (field.nodeName === 'INPUT' || field.nodeName === 'TEXTAREA')) {
return field;
}
return null;
}
function _bindInputEvents2(input) {
if (!this.shouldUseInputEvents()) {
return;
}
main_core.Event.bind(input, 'click', babelHelpers.classPrivateFieldLooseBase(this, _refs$6)[_refs$6].remember('click-handler', () => {
return babelHelpers.classPrivateFieldLooseBase(this, _handleInputClick)[_handleInputClick].bind(this);
}));
main_core.Event.bind(input, 'focusout', babelHelpers.classPrivateFieldLooseBase(this, _refs$6)[_refs$6].remember('focusout-handler', () => {
return babelHelpers.classPrivateFieldLooseBase(this, _handleInputFocusOut)[_handleInputFocusOut].bind(this);
}));
main_core.Event.bind(input, 'keydown', babelHelpers.classPrivateFieldLooseBase(this, _refs$6)[_refs$6].remember('keydown-handler', () => {
return babelHelpers.classPrivateFieldLooseBase(this, _handleInputKeyDown)[_handleInputKeyDown].bind(this);
}));
main_core.Event.bind(input, 'input', babelHelpers.classPrivateFieldLooseBase(this, _refs$6)[_refs$6].remember('change-handler', () => {
return babelHelpers.classPrivateFieldLooseBase(this, _handleInputChange)[_handleInputChange].bind(this);
}));
}
function _unbindInputEvents2(input) {
main_core.Event.unbind(input, 'click', babelHelpers.classPrivateFieldLooseBase(this, _refs$6)[_refs$6].get('click-handler'));
main_core.Event.unbind(input, 'focusout', babelHelpers.classPrivateFieldLooseBase(this, _refs$6)[_refs$6].get('focusout-handler'));
main_core.Event.unbind(input, 'keydown', babelHelpers.classPrivateFieldLooseBase(this, _refs$6)[_refs$6].get('keydown-handler'));
main_core.Event.unbind(input, 'input', babelHelpers.classPrivateFieldLooseBase(this, _refs$6)[_refs$6].get('change-handler'));
}
function _handleInputClick2(event) {
if (this.isRangeMode()) {
this.setTargetNode(event.target);
if (!this.isOpen()) {
this.show();
}
} else {
this.show();
}
}
function _handleInputFocusOut2(event) {
if (!this.getContainer().contains(event.relatedTarget)) {
this.hide();
}
}
function _handleInputKeyDown2(event) {
if (event.key === 'Tab' && !event.shiftKey && this.isOpen()) {
event.preventDefault();
const currentPickerContainer = this.getPicker().getContainer();
const [, next] = getFocusableBoundaryElements(currentPickerContainer, element => element.dataset.tabPriority === 'true');
if (next === null) {
this.focus();
} else {
next.focus({
preventScroll: true,
focusVisible: true
});
babelHelpers.classPrivateFieldLooseBase(this, _keyboardNavigation)[_keyboardNavigation].setLastFocusElement(next);
}
}
}
function _handleInputChange2(event) {
if (this.isOpen()) {
this.updateFromInputFields();
}
}
function _handleAutoHide2(event) {
const target = event.target;
const el = this.getPopup().getPopupContainer();
if (target === el || el.contains(target)) {
return false;
}
if (this.isRangeMode()) {
const anotherInput = (this.getRangeStartInput() === target || this.getRangeEndInput() === target) && this.getTargetNode() !== target;
return !anotherInput;
}
return true;
}
function _focusInputField2() {
if (this.getInputField() !== null) {
this.getInputField().focus({
preventScroll: true
});
} else if (this.getRangeStartInput() !== null) {
this.getRangeStartInput().focus({
preventScroll: true
});
}
}
function _getDateFromInput2(input) {
if (input === null) {
return null;
}
const value = input.value.trim();
if (!main_core.Type.isStringFilled(value)) {
return null;
}
if (this.getType() === 'time') {
return createDate(value, this.getTimeFormat());
}
return this.createDate(value);
}
function _setInputDate2(input, date, format = null) {
if (input !== null) {
let value = '';
if (date === null) {
value = '';
} else if (main_core.Type.isString(date)) {
value = date;
} else {
value = this.formatDate(date, format);
}
// eslint-disable-next-line no-param-reassign
input.value = value;
}
}
function _getDefaultDateFormat2() {
if (this.getType() === 'year') {
return 'Y';
}
if (this.getType() === 'month') {
return 'f - Y';
}
if (this.isTimeEnabled()) {
if (this.shouldAllowSeconds()) {
return main_date.DateTimeFormat.getFormat('FORMAT_DATETIME');
}
return main_date.DateTimeFormat.getFormat('FORMAT_DATETIME').replace(/:s/i, '');
}
return main_date.DateTimeFormat.getFormat('FORMAT_DATE');
}
function _render2() {
if (this.isRendered()) {
return;
}
if (this.isInline() && this.getTargetNode() !== null) {
main_core.Dom.append(this.getContainer(), this.getTargetNode());
}
const views = ['day', 'month', 'year', 'time'];
const index = views.indexOf(this.getType());
const view = index === -1 ? 'day' : views[index];
this.setCurrentView(view);
babelHelpers.classPrivateFieldLooseBase(this, _rendered$1)[_rendered$1] = true;
if (babelHelpers.classPrivateFieldLooseBase(this, _keyboardNavigation)[_keyboardNavigation] !== null) {
babelHelpers.classPrivateFieldLooseBase(this, _keyboardNavigation)[_keyboardNavigation].init();
}
}
function _createPicker2(pickerId) {
if (pickerId === 'day') {
const dayPicker = new DayPicker(this);
dayPicker.subscribe('onSelect', babelHelpers.classPrivateFieldLooseBase(this, _handleDaySelect)[_handleDaySelect].bind(this));
dayPicker.subscribe('onFocus', babelHelpers.classPrivateFieldLooseBase(this, _handleDayFocus)[_handleDayFocus].bind(this));
dayPicker.subscribe('onBlur', babelHelpers.classPrivateFieldLooseBase(this, _handleDayBlur)[_handleDayBlur].bind(this));
dayPicker.subscribe('onPrevBtnClick', () => {
const unit = this.isFullYear() ? 'year' : 'month';
const viewDate = addDate(floorDate(this.getViewDate(), unit), unit, -1);
this.setViewDate(viewDate);
});
dayPicker.subscribe('onNextBtnClick', () => {
const unit = this.isFullYear() ? 'year' : 'month';
const viewDate = ceilDate(this.getViewDate(), unit);
this.setViewDate(viewDate);
});
dayPicker.subscribe('onMonthClick', () => this.setCurrentView('month'));
dayPicker.subscribe('onYearClick', () => this.setCurrentView('year'));
dayPicker.subscribe('onTimeClick', babelHelpers.classPrivateFieldLooseBase(this, _handleTimeClick$1)[_handleTimeClick$1].bind(this, 'datetime'));
dayPicker.subscribe('onRangeStartClick', babelHelpers.classPrivateFieldLooseBase(this, _handleTimeClick$1)[_handleTimeClick$1].bind(this, 'range-start'));
dayPicker.subscribe('onRangeEndClick', babelHelpers.classPrivateFieldLooseBase(this, _handleTimeClick$1)[_handleTimeClick$1].bind(this, 'range-end'));
return dayPicker;
}
if (pickerId === 'month') {
const monthPicker = new MonthPicker(this);
monthPicker.subscribe('onSelect', babelHelpers.classPrivateFieldLooseBase(this, _handleMonthSelect)[_handleMonthSelect].bind(this));
monthPicker.subscribe('onFocus', babelHelpers.classPrivateFieldLooseBase(this, _handleMonthFocus)[_handleMonthFocus].bind(this));
monthPicker.subscribe('onBlur', babelHelpers.classPrivateFieldLooseBase(this, _handleMonthBlur)[_handleMonthBlur].bind(this));
monthPicker.subscribe('onPrevBtnClick', () => {
const {
year,
month
} = getDate(this.getViewDate());
const viewDate = createUtcDate(year - 1, month, 1);
this.setViewDate(viewDate);
});
monthPicker.subscribe('onNextBtnClick', () => {
const {
year,
month
} = getDate(this.getViewDate());
const viewDate = createUtcDate(year + 1, month, 1);
this.setViewDate(viewDate);
});
monthPicker.subscribe('onTitleClick', () => this.setCurrentView('year'));
return monthPicker;
}
if (pickerId === 'year') {
const yearPicker = new YearPicker(this);
yearPicker.subscribe('onSelect', babelHelpers.classPrivateFieldLooseBase(this, _handleYearSelect)[_handleYearSelect].bind(this));
yearPicker.subscribe('onFocus', babelHelpers.classPrivateFieldLooseBase(this, _handleYearFocus)[_handleYearFocus].bind(this));
yearPicker.subscribe('onBlur', babelHelpers.classPrivateFieldLooseBase(this, _handleYearBlur)[_handleYearBlur].bind(this));
yearPicker.subscribe('onPrevBtnClick', () => {
const {
year
} = getDate(this.getViewDate());
const viewDate = createUtcDate(year - 12, 0, 1);
this.setViewDate(viewDate);
});
yearPicker.subscribe('onNextBtnClick', () => {
const {
year
} = getDate(this.getViewDate());
const viewDate = createUtcDate(year + 12, 0, 1);
this.setViewDate(viewDate);
});
return yearPicker;
}
if (pickerId === 'time') {
const timePicker = this.getTimePickerStyle() === 'wheel' ? new TimePickerWheel(this) : new TimePickerGrid(this);
if (this.isRangeMode()) {
timePicker.subscribe('onSelect', babelHelpers.classPrivateFieldLooseBase(this, _handleTimeRangeSelect)[_handleTimeRangeSelect].bind(this));
} else {
timePicker.subscribe('onSelect', babelHelpers.classPrivateFieldLooseBase(this, _handleTimeSelect)[_handleTimeSelect].bind(this));
}
timePicker.subscribe('onFocus', babelHelpers.classPrivateFieldLooseBase(this, _handleTimeFocus)[_handleTimeFocus].bind(this));
timePicker.subscribe('onBlur', babelHelpers.classPrivateFieldLooseBase(this, _handleTimeBlur)[_handleTimeBlur].bind(this));
timePicker.subscribe('onPrevBtnClick', () => this.setCurrentView('day'));
timePicker.subscribe('onTitleClick', () => this.setCurrentView('day'));
return timePicker;
}
return null;
}
function _handleContainerKeyUp2(event) {
if (this.isInline()) {
return;
}
if (event.key === 'Escape' && this.shouldHideByEsc()) {
this.hide();
}
}
function _handleTimeClick2$1(mode) {
const timePicker = this.getPicker('time');
const selectTime = mode === 'range-start' && this.getRangeStart() !== null || mode === 'range-end' && this.getRangeEnd() !== null || this.getSelectedDate() !== null;
if (selectTime) {
timePicker.setMode(mode);
this.setCurrentView('time');
}
}
function _handleDaySelect2(event) {
const {
year,
month,
day
} = event.getData();
let selectedDate = createUtcDate(year, month, day);
if (this.isRangeMode()) {
const currentRange = babelHelpers.classPrivateFieldLooseBase(this, _selectedDates)[_selectedDates];
if (currentRange.length === 0) {
const {
hours,
minutes,
seconds
} = this.getDefaultTimeParts();
selectedDate = setTime(selectedDate, hours, minutes, seconds);
} else if (currentRange.length === 1) {
let {
hours,
minutes,
seconds
} = this.getDefaultTimeParts();
if (this.isDateSelected(selectedDate, 'day')) {
({
hours,
minutes,
seconds
} = getDate(this.getRangeStart()));
minutes += this.getDefaultTimeSpan();
}
selectedDate = setTime(selectedDate, hours, minutes, seconds);
}
const range = addToRange(selectedDate, currentRange);
const [start, end] = range;
if (range.length === 0) {
this.deselectAll();
} else {
this.selectRange(start, end);
}
} else if (this.isDateSelected(selectedDate)) {
if (this.shouldToggleSelected()) {
this.deselectDate(selectedDate);
} else if (this.shouldHideOnSelect() && this.isSingleMode()) {
this.hide();
}
} else {
let {
hours,
minutes,
seconds
} = this.getDefaultTimeParts();
if (this.isSingleMode() && this.getSelectedDate() !== null) {
// save previous time
({
hours,
minutes,
seconds
} = getDate(this.getSelectedDate()));
}
this.selectDate(createUtcDate(year, month, day, hours, minutes, seconds));
if (this.shouldHideOnSelect() && this.isSingleMode() && !this.isTimeEnabled()) {
this.hide();
}
}
}
function _handleDayFocus2(event) {
const {
year,
month,
day
} = event.getData();
const focusDate = createUtcDate(year, month, day);
if (!isDatesEqual(focusDate, this.getFocusDate())) {
this.setFocusDate(focusDate);
}
}
function _handleDayBlur2(event) {
this.setFocusDate(null);
}
function _handleMonthFocus2(event) {
const {
year,
month
} = event.getData();
const focusDate = createUtcDate(year, month);
if (!isDatesEqual(focusDate, this.getFocusDate(), 'month')) {
this.setFocusDate(focusDate);
}
}
function _handleMonthBlur2(event) {
this.setFocusDate(null);
}
function _handleYearFocus2(event) {
const {
year
} = event.getData();
const focusDate = createUtcDate(year);
if (!isDatesEqual(focusDate, this.getFocusDate(), 'year')) {
this.setFocusDate(focusDate);
}
}
function _handleYearBlur2(event) {
this.setFocusDate(null);
}
function _handleTimeFocus2(event) {
const {
hour,
minute
} = event.getData();
let focusDate = cloneDate(this.getInitialFocusDate());
if (main_core.Type.isNumber(hour)) {
focusDate = setTime(focusDate, hour, null, null);
this.setFocusDate(focusDate);
} else if (main_core.Type.isNumber(minute)) {
focusDate = setTime(focusDate, null, minute, null);
this.setFocusDate(focusDate);
}
}
function _handleTimeBlur2(event) {
this.setFocusDate(null);
}
function _handleMonthSelect2(event) {
const {
year
} = getDate(this.getViewDate());
const month = event.getData().month;
const date = createUtcDate(year, month);
if (this.getType() === 'month') {
this.selectDate(date);
if (this.shouldHideOnSelect()) {
this.hide();
}
} else {
this.setViewDate(date);
this.setCurrentView('day');
}
}
function _handleYearSelect2(event) {
const {
month
} = getDate(this.getViewDate());
const year = event.getData().year;
const date = createUtcDate(year, month);
if (this.getType() === 'year') {
this.selectDate(createUtcDate(year));
if (this.shouldHideOnSelect()) {
this.hide();
}
} else {
this.setViewDate(date);
this.setCurrentView('day');
}
}
function _handleTimeSelect2(event) {
let selectedDate = null;
if (this.getType() === 'time') {
selectedDate = this.getSelectedDate() === null ? ceilDate(this.getToday(), 'day') : cloneDate(this.getSelectedDate());
} else if (this.getSelectedDate() === null) {
return;
} else {
selectedDate = cloneDate(this.getSelectedDate());
}
const hideOrSwitchToDayView = () => {
if (this.shouldHideOnSelect()) {
this.hide();
} else if (this.getType() === 'date') {
this.setCurrentView('day');
}
};
const {
hour,
minute
} = event.getData();
if (main_core.Type.isNumber(hour)) {
const currentHour = this.getSelectedDate() === null ? -1 : selectedDate.getUTCHours();
if (currentHour === hour) {
hideOrSwitchToDayView();
} else {
selectedDate.setUTCHours(hour);
this.selectDate(selectedDate);
}
} else if (main_core.Type.isNumber(minute)) {
const currentMinute = this.getSelectedDate() === null ? -1 : selectedDate.getUTCMinutes();
if (currentMinute !== minute) {
selectedDate.setUTCMinutes(minute);
this.selectDate(selectedDate);
}
if (this.getTimePickerStyle() === 'grid') {
hideOrSwitchToDayView();
}
}
}
function _handleTimeRangeSelect2(event) {
const timePicker = event.getTarget();
const rangeEndChange = timePicker.getMode() === 'range-end';
let rangeStart = this.getRangeStart() === null ? null : cloneDate(this.getRangeStart());
let rangeEnd = this.getRangeEnd() === null ? null : cloneDate(this.getRangeEnd());
if (rangeStart === null || rangeEnd === null && rangeEndChange) {
return;
}
const switchToDayView = () => {
if (this.getType() === 'date' && this.getTimePickerStyle() === 'grid') {
this.setCurrentView('day');
}
};
const {
hour,
minute
} = event.getData();
if (main_core.Type.isNumber(hour)) {
if (rangeEndChange) {
const currentHour = rangeEnd.getUTCHours();
if (currentHour === hour) {
switchToDayView();
return;
}
rangeEnd.setUTCHours(hour);
} else {
const currentHour = rangeStart.getUTCHours();
if (currentHour === hour) {
switchToDayView();
return;
}
rangeStart.setUTCHours(hour);
}
} else if (main_core.Type.isNumber(minute)) {
if (rangeEndChange) {
const currentMinute = rangeEnd.getUTCMinutes();
if (currentMinute === minute) {
switchToDayView();
return;
}
rangeEnd.setUTCMinutes(minute);
} else {
const currentMinute = rangeStart.getUTCMinutes();
if (currentMinute === minute) {
switchToDayView();
return;
}
rangeStart.setUTCMinutes(minute);
}
}
if (rangeEnd !== null && rangeStart > rangeEnd) {
if (rangeEndChange) {
rangeStart = addDate(rangeEnd, 'minute', -this.getDefaultTimeSpan());
} else {
rangeEnd = addDate(rangeStart, 'minute', this.getDefaultTimeSpan());
}
}
this.selectRange(rangeStart, rangeEnd);
if (main_core.Type.isNumber(minute)) {
switchToDayView();
}
}
function _handlePopupShow2() {
if (!this.isFocused() && this.isAutoFocus()) {
this.focus();
}
if (this.isSingleOpening()) {
if (singleOpenDatePicker !== null) {
singleOpenDatePicker.hide();
}
// eslint-disable-next-line unicorn/no-this-assignment
singleOpenDatePicker = this;
}
this.emit('onShow');
}
function _handlePopupFirstShow2() {
babelHelpers.classPrivateFieldLooseBase(this, _render)[_render]();
this.emit('onFirstShow');
}
function _handlePopupClose2() {
if (this.getType() === 'date') {
this.setCurrentView('day');
}
this.setFocusDate(null);
this.setViewDate(this.getDefaultViewDate());
if (this.isSingleOpening()) {
singleOpenDatePicker = null;
}
if (this.isFocused()) {
babelHelpers.classPrivateFieldLooseBase(this, _focusInputField)[_focusInputField]();
}
this.emit('onHide');
}
function _handlePopupDestroy2() {
this.destroy();
}
function isValidDate(date) {
if (!main_core.Type.isDate(date)) {
return false;
}
return !Number.isNaN(date.getTime());
}
exports.DatePicker = DatePicker;
exports.DatePickerEvent = DatePickerEvent;
exports.addDate = addDate;
exports.addToRange = addToRange;
exports.ceilDate = ceilDate;
exports.cloneDate = cloneDate;
exports.convertToDbFormat = convertToDbFormat;
exports.copyTime = copyTime;
exports.createDate = createDate;
exports.createUtcDate = createUtcDate;
exports.floorDate = floorDate;
exports.getDate = getDate;
exports.getDaysInMonth = getDaysInMonth;
exports.getFocusableBoundaryElements = getFocusableBoundaryElements;
exports.getNextDate = getNextDate;
exports.isDateAfter = isDateAfter;
exports.isDateBefore = isDateBefore;
exports.isDateLike = isDateLike;
exports.isDateMatch = isDateMatch;
exports.isDatesEqual = isDatesEqual;
exports.isValidDate = isValidDate;
exports.parseDate = parseDate;
exports.setTime = setTime;
}((this.BX.UI.DatePicker = this.BX.UI.DatePicker || {}),BX.Main,BX.Event,BX.Main,BX.Cache,BX));
//# sourceMappingURL=date-picker.bundle.js.map