Server IP : 80.87.202.40 / Your IP : 216.73.216.169 Web Server : Apache System : Linux rospirotorg.ru 5.14.0-539.el9.x86_64 #1 SMP PREEMPT_DYNAMIC Thu Dec 5 22:26:13 UTC 2024 x86_64 User : bitrix ( 600) PHP Version : 8.2.27 Disable Function : NONE MySQL : OFF | cURL : ON | WGET : ON | Perl : ON | Python : OFF | Sudo : ON | Pkexec : ON Directory : /home/bitrix/ext_www/cvetdv.ru/bitrix/js/ui/date-picker/dist/ |
Upload File : |
/* 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