UNPKG

primevue

Version:

PrimeVue is a premium UI library for Vue featuring a rich set of 90+ components, a theme designer, various theme alternatives such as Material, Bootstrap, Tailwind, premium templates and professional support. In addition, it integrates with PrimeBlock, wh

1,414 lines (1,411 loc) 154 kB
import Calendar from '@primeicons/vue/calendar'; import ChevronDown from '@primeicons/vue/chevron-down'; import ChevronLeft from '@primeicons/vue/chevron-left'; import ChevronRight from '@primeicons/vue/chevron-right'; import ChevronUp from '@primeicons/vue/chevron-up'; import Times from '@primeicons/vue/times'; import { cn } from '@primeuix/utils'; import { setAttribute, getFocusableElements, find, findSingle, getIndex, getAttribute, relativePosition, getOuterWidth, absolutePosition, isTouchDevice, addStyle } from '@primeuix/utils/dom'; import { localeComparator, isEmpty, isDate, isNotEmpty } from '@primeuix/utils/object'; import { ZIndex } from '@primeuix/utils/zindex'; import { ConnectedOverlayScrollHandler } from '@primevue/core/utils'; import Button from 'primevue/button'; import InputText from 'primevue/inputtext'; import OverlayEventBus from 'primevue/overlayeventbus'; import Portal from 'primevue/portal'; import Ripple from 'primevue/ripple'; import BaseInput from '@primevue/core/baseinput'; import DatePickerStyle from 'primevue/datepicker/style'; import { resolveComponent, resolveDirective, openBlock, createElementBlock, mergeProps, createBlock, normalizeStyle, normalizeClass, createCommentVNode, renderSlot, createVNode, createElementVNode, resolveDynamicComponent, Fragment, withCtx, Transition, renderList, withDirectives, vShow, toDisplayString, createTextVNode, withKeys } from 'vue'; var script$1 = { name: 'BaseDatePicker', "extends": BaseInput, props: { selectionMode: { type: String, "default": 'single' }, dateFormat: { type: String, "default": null }, updateModelType: { type: String, "default": 'date' }, inline: { type: Boolean, "default": false }, showOtherMonths: { type: Boolean, "default": true }, selectOtherMonths: { type: Boolean, "default": false }, showIcon: { type: Boolean, "default": false }, iconDisplay: { type: String, "default": 'button' }, icon: { type: String, "default": undefined }, prevIcon: { type: String, "default": undefined }, nextIcon: { type: String, "default": undefined }, incrementIcon: { type: String, "default": undefined }, decrementIcon: { type: String, "default": undefined }, numberOfMonths: { type: Number, "default": 1 }, responsiveOptions: Array, breakpoint: { type: String, "default": '769px' }, view: { type: String, "default": 'date' }, minDate: { type: Date, value: null }, maxDate: { type: Date, value: null }, disabledDates: { type: Array, value: null }, disabledDays: { type: Array, value: null }, maxDateCount: { type: Number, value: null }, showOnFocus: { type: Boolean, "default": true }, autoZIndex: { type: Boolean, "default": true }, baseZIndex: { type: Number, "default": 0 }, showButtonBar: { type: Boolean, "default": false }, shortYearCutoff: { type: String, "default": '+10' }, showTime: { type: Boolean, "default": false }, timeOnly: { type: Boolean, "default": false }, hourFormat: { type: String, "default": '24' }, stepHour: { type: Number, "default": 1 }, stepMinute: { type: Number, "default": 1 }, stepSecond: { type: Number, "default": 1 }, showSeconds: { type: Boolean, "default": false }, hideOnDateTimeSelect: { type: Boolean, "default": false }, hideOnRangeSelection: { type: Boolean, "default": false }, timeSeparator: { type: String, "default": ':' }, showWeek: { type: Boolean, "default": false }, manualInput: { type: Boolean, "default": true }, showClear: { type: Boolean, "default": false }, appendTo: { type: [String, Object], "default": 'body' }, readonly: { type: Boolean, "default": false }, placeholder: { type: String, "default": null }, required: { type: Boolean, "default": null }, inputId: { type: String, "default": null }, inputClass: { type: [String, Object], "default": null }, inputStyle: { type: Object, "default": null }, panelClass: { type: [String, Object], "default": null }, panelStyle: { type: Object, "default": null }, todayButtonProps: { type: Object, "default": function _default() { return { severity: 'secondary', text: true, size: 'small' }; } }, clearButtonProps: { type: Object, "default": function _default() { return { severity: 'secondary', text: true, size: 'small' }; } }, navigatorButtonProps: { type: Object, "default": function _default() { return { severity: 'secondary', text: true, rounded: true, iconOnly: true }; } }, timepickerButtonProps: { type: Object, "default": function _default() { return { severity: 'secondary', text: true, rounded: true, iconOnly: true }; } }, ariaLabelledby: { type: String, "default": null }, ariaLabel: { type: String, "default": null } }, style: DatePickerStyle, provide: function provide() { return { $pcDatePicker: this, $parentInstance: this }; } }; function _defineProperty(e, r, t) { return (r = _toPropertyKey(r)) in e ? Object.defineProperty(e, r, { value: t, enumerable: true, configurable: true, writable: true }) : e[r] = t, e; } function _toPropertyKey(t) { var i = _toPrimitive(t, "string"); return "symbol" == _typeof(i) ? i : i + ""; } function _toPrimitive(t, r) { if ("object" != _typeof(t) || !t) return t; var e = t[Symbol.toPrimitive]; if (void 0 !== e) { var i = e.call(t, r); if ("object" != _typeof(i)) return i; throw new TypeError("@@toPrimitive must return a primitive value."); } return ("string" === r ? String : Number)(t); } function _typeof(o) { "@babel/helpers - typeof"; return _typeof = "function" == typeof Symbol && "symbol" == typeof Symbol.iterator ? function (o) { return typeof o; } : function (o) { return o && "function" == typeof Symbol && o.constructor === Symbol && o !== Symbol.prototype ? "symbol" : typeof o; }, _typeof(o); } function _toConsumableArray(r) { return _arrayWithoutHoles(r) || _iterableToArray(r) || _unsupportedIterableToArray(r) || _nonIterableSpread(); } function _nonIterableSpread() { throw new TypeError("Invalid attempt to spread non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method."); } function _iterableToArray(r) { if ("undefined" != typeof Symbol && null != r[Symbol.iterator] || null != r["@@iterator"]) return Array.from(r); } function _arrayWithoutHoles(r) { if (Array.isArray(r)) return _arrayLikeToArray(r); } function _createForOfIteratorHelper(r, e) { var t = "undefined" != typeof Symbol && r[Symbol.iterator] || r["@@iterator"]; if (!t) { if (Array.isArray(r) || (t = _unsupportedIterableToArray(r)) || e) { t && (r = t); var _n = 0, F = function F() {}; return { s: F, n: function n() { return _n >= r.length ? { done: true } : { done: false, value: r[_n++] }; }, e: function e(r) { throw r; }, f: F }; } throw new TypeError("Invalid attempt to iterate non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method."); } var o, a = true, u = false; return { s: function s() { t = t.call(r); }, n: function n() { var r = t.next(); return a = r.done, r; }, e: function e(r) { u = true, o = r; }, f: function f() { try { a || null == t["return"] || t["return"](); } finally { if (u) throw o; } } }; } function _unsupportedIterableToArray(r, a) { if (r) { if ("string" == typeof r) return _arrayLikeToArray(r, a); var t = {}.toString.call(r).slice(8, -1); return "Object" === t && r.constructor && (t = r.constructor.name), "Map" === t || "Set" === t ? Array.from(r) : "Arguments" === t || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(t) ? _arrayLikeToArray(r, a) : void 0; } } function _arrayLikeToArray(r, a) { (null == a || a > r.length) && (a = r.length); for (var e = 0, n = Array(a); e < a; e++) n[e] = r[e]; return n; } var script = { name: 'DatePicker', "extends": script$1, inheritAttrs: false, emits: ['show', 'hide', 'input', 'month-change', 'year-change', 'date-select', 'today-click', 'clear-click', 'focus', 'blur', 'keydown'], inject: { $pcFluid: { "default": null } }, navigationState: null, timePickerChange: false, scrollHandler: null, outsideClickListener: null, resizeListener: null, matchMediaListener: null, matchMediaOrientationListener: null, overlay: null, input: null, previousButton: null, nextButton: null, timePickerTimer: null, preventFocus: false, typeUpdate: false, data: function data() { return { currentMonth: null, currentYear: null, currentHour: null, currentMinute: null, currentSecond: null, pm: null, focused: false, overlayVisible: false, currentView: this.view, query: null, queryMatches: false, queryOrientation: null, focusedDateIndex: 0, rawValue: null }; }, watch: { d_value: { immediate: true, handler: function handler(newValue) { var _this$$refs$clearIcon; this.rawValue = typeof newValue === 'string' ? this.safeParse(newValue) : newValue; this.updateCurrentMetaData(); if (!this.typeUpdate && !this.inline && this.input) { this.input.value = this.formatValue(this.rawValue); } this.typeUpdate = false; if ((_this$$refs$clearIcon = this.$refs.clearIcon) !== null && _this$$refs$clearIcon !== void 0 && (_this$$refs$clearIcon = _this$$refs$clearIcon.$el) !== null && _this$$refs$clearIcon !== void 0 && _this$$refs$clearIcon.style) { this.$refs.clearIcon.$el.style.display = isEmpty(newValue) ? 'none' : 'block'; } } }, showTime: function showTime() { this.updateCurrentMetaData(); }, minDate: function minDate() { this.updateCurrentMetaData(); }, maxDate: function maxDate() { this.updateCurrentMetaData(); }, months: function months() { if (this.overlay) { if (!this.focused) { if (this.inline) { this.preventFocus = true; } setTimeout(this.updateFocus, 0); } } }, numberOfMonths: function numberOfMonths() { this.destroyResponsiveStyleElement(); this.createResponsiveStyle(); }, responsiveOptions: function responsiveOptions() { this.destroyResponsiveStyleElement(); this.createResponsiveStyle(); }, currentView: function currentView() { var _this = this; Promise.resolve(null).then(function () { return _this.alignOverlay(); }); }, view: function view(newValue) { this.currentView = newValue; } }, created: function created() { this.updateCurrentMetaData(); }, mounted: function mounted() { this.createResponsiveStyle(); this.bindMatchMediaListener(); this.bindMatchMediaOrientationListener(); if (this.inline) { if (!this.disabled) { this.preventFocus = true; this.initFocusableCell(); } } else { var _this$$refs$clearIcon2; this.input.value = this.inputFieldValue; if ((_this$$refs$clearIcon2 = this.$refs.clearIcon) !== null && _this$$refs$clearIcon2 !== void 0 && (_this$$refs$clearIcon2 = _this$$refs$clearIcon2.$el) !== null && _this$$refs$clearIcon2 !== void 0 && _this$$refs$clearIcon2.style) { this.$refs.clearIcon.$el.style.display = !this.$filled ? 'none' : 'block'; } } }, updated: function updated() { if (this.overlay) { this.preventFocus = true; setTimeout(this.updateFocus, 0); } if (this.input && this.selectionStart != null && this.selectionEnd != null) { this.input.selectionStart = this.selectionStart; this.input.selectionEnd = this.selectionEnd; this.selectionStart = null; this.selectionEnd = null; } }, beforeUnmount: function beforeUnmount() { if (this.timePickerTimer) { clearTimeout(this.timePickerTimer); } this.destroyResponsiveStyleElement(); this.unbindOutsideClickListener(); this.unbindResizeListener(); this.unbindMatchMediaListener(); this.unbindMatchMediaOrientationListener(); if (this.scrollHandler) { this.scrollHandler.destroy(); this.scrollHandler = null; } if (this.overlay && this.autoZIndex) { ZIndex.clear(this.overlay); } this.overlay = null; }, methods: { isSelected: function isSelected(dateMeta) { if (this.rawValue) { if (this.isSingleSelection()) { return this.isDateEquals(this.parseValueForComparison(this.rawValue), dateMeta); } else if (this.isMultipleSelection()) { var selected = false; var _iterator = _createForOfIteratorHelper(this.rawValue), _step; try { for (_iterator.s(); !(_step = _iterator.n()).done;) { var date = _step.value; selected = this.isDateEquals(this.parseValueForComparison(date), dateMeta); if (selected) { break; } } } catch (err) { _iterator.e(err); } finally { _iterator.f(); } return selected; } else if (this.isRangeSelection()) { var start = this.parseValueForComparison(this.rawValue[0]); if (this.rawValue[1]) { var end = this.parseValueForComparison(this.rawValue[1]); return this.isDateEquals(start, dateMeta) || this.isDateEquals(end, dateMeta) || this.isDateBetween(start, end, dateMeta); } else { return this.isDateEquals(start, dateMeta); } } } return false; }, isMonthSelected: function isMonthSelected(month) { var _this2 = this; if (this.isMultipleSelection()) { var _this$rawValue; return (_this$rawValue = this.rawValue) === null || _this$rawValue === void 0 ? void 0 : _this$rawValue.some(function (currentValue) { var parsedDate = _this2.parseValueForComparison(currentValue); return parsedDate.getMonth() === month && parsedDate.getFullYear() === _this2.currentYear; }); } else if (this.isRangeSelection()) { var _this$rawValue2, _this$rawValue3; var parsedStart = (_this$rawValue2 = this.rawValue) !== null && _this$rawValue2 !== void 0 && _this$rawValue2[0] ? this.parseValueForComparison(this.rawValue[0]) : null; var parsedEnd = (_this$rawValue3 = this.rawValue) !== null && _this$rawValue3 !== void 0 && _this$rawValue3[1] ? this.parseValueForComparison(this.rawValue[1]) : null; if (!parsedEnd) { return (parsedStart === null || parsedStart === void 0 ? void 0 : parsedStart.getFullYear()) === this.currentYear && (parsedStart === null || parsedStart === void 0 ? void 0 : parsedStart.getMonth()) === month; } else { var currentDate = new Date(this.currentYear, month, 1); var startDate = new Date(parsedStart.getFullYear(), parsedStart.getMonth(), 1); var endDate = new Date(parsedEnd.getFullYear(), parsedEnd.getMonth(), 1); return currentDate >= startDate && currentDate <= endDate; } } else { var _this$rawValue4, _this$rawValue5; return ((_this$rawValue4 = this.rawValue) === null || _this$rawValue4 === void 0 ? void 0 : _this$rawValue4.getMonth()) === month && ((_this$rawValue5 = this.rawValue) === null || _this$rawValue5 === void 0 ? void 0 : _this$rawValue5.getFullYear()) === this.currentYear; } }, isYearSelected: function isYearSelected(year) { var _this3 = this; if (this.isMultipleSelection()) { var _this$rawValue6; return (_this$rawValue6 = this.rawValue) === null || _this$rawValue6 === void 0 ? void 0 : _this$rawValue6.some(function (currentValue) { var parsedDate = _this3.parseValueForComparison(currentValue); return parsedDate.getFullYear() === year; }); } else if (this.isRangeSelection()) { var _this$rawValue7, _this$rawValue8; var parsedStart = (_this$rawValue7 = this.rawValue) !== null && _this$rawValue7 !== void 0 && _this$rawValue7[0] ? this.parseValueForComparison(this.rawValue[0]) : null; var parsedEnd = (_this$rawValue8 = this.rawValue) !== null && _this$rawValue8 !== void 0 && _this$rawValue8[1] ? this.parseValueForComparison(this.rawValue[1]) : null; var start = parsedStart ? parsedStart.getFullYear() : null; var end = parsedEnd ? parsedEnd.getFullYear() : null; return start === year || end === year || start < year && end > year; } else { var _this$rawValue9; return ((_this$rawValue9 = this.rawValue) === null || _this$rawValue9 === void 0 ? void 0 : _this$rawValue9.getFullYear()) === year; } }, isDateEquals: function isDateEquals(value, dateMeta) { if (value) return value.getDate() === dateMeta.day && value.getMonth() === dateMeta.month && value.getFullYear() === dateMeta.year;else return false; }, isDateBetween: function isDateBetween(start, end, dateMeta) { var between = false; var parsedStart = this.parseValueForComparison(start); var parsedEnd = this.parseValueForComparison(end); if (parsedStart && parsedEnd) { var date = new Date(dateMeta.year, dateMeta.month, dateMeta.day); return parsedStart.getTime() <= date.getTime() && parsedEnd.getTime() >= date.getTime(); } return between; }, getFirstDayOfMonthIndex: function getFirstDayOfMonthIndex(month, year) { var day = new Date(); day.setDate(1); day.setMonth(month); day.setFullYear(year); var dayIndex = day.getDay() + this.sundayIndex; return dayIndex >= 7 ? dayIndex - 7 : dayIndex; }, getDaysCountInMonth: function getDaysCountInMonth(month, year) { return 32 - this.daylightSavingAdjust(new Date(year, month, 32)).getDate(); }, getDaysCountInPrevMonth: function getDaysCountInPrevMonth(month, year) { var prev = this.getPreviousMonthAndYear(month, year); return this.getDaysCountInMonth(prev.month, prev.year); }, getPreviousMonthAndYear: function getPreviousMonthAndYear(month, year) { var m, y; if (month === 0) { m = 11; y = year - 1; } else { m = month - 1; y = year; } return { month: m, year: y }; }, getNextMonthAndYear: function getNextMonthAndYear(month, year) { var m, y; if (month === 11) { m = 0; y = year + 1; } else { m = month + 1; y = year; } return { month: m, year: y }; }, daylightSavingAdjust: function daylightSavingAdjust(date) { if (!date) { return null; } date.setHours(date.getHours() > 12 ? date.getHours() + 2 : 0); return date; }, isToday: function isToday(today, day, month, year) { return today.getDate() === day && today.getMonth() === month && today.getFullYear() === year; }, isSelectable: function isSelectable(day, month, year, otherMonth) { var validMin = true; var validMax = true; var validDate = true; var validDay = true; if (otherMonth && !this.selectOtherMonths) { return false; } if (this.minDate) { if (this.minDate.getFullYear() > year) { validMin = false; } else if (this.minDate.getFullYear() === year) { if (this.minDate.getMonth() > month) { validMin = false; } else if (this.minDate.getMonth() === month) { if (this.minDate.getDate() > day) { validMin = false; } } } } if (this.maxDate) { if (this.maxDate.getFullYear() < year) { validMax = false; } else if (this.maxDate.getFullYear() === year) { if (this.maxDate.getMonth() < month) { validMax = false; } else if (this.maxDate.getMonth() === month) { if (this.maxDate.getDate() < day) { validMax = false; } } } } if (this.disabledDates) { validDate = !this.isDateDisabled(day, month, year); } if (this.disabledDays) { validDay = !this.isDayDisabled(day, month, year); } return validMin && validMax && validDate && validDay; }, onOverlayEnter: function onOverlayEnter(el) { var styles = !this.inline ? { position: 'absolute', top: '0' } : undefined; addStyle(el, styles); if (this.autoZIndex) { ZIndex.set('overlay', el, this.baseZIndex || this.$primevue.config.zIndex.overlay); } // Issue: #7508 this.$attrSelector && el.setAttribute(this.$attrSelector, ''); this.alignOverlay(); this.$emit('show'); }, onOverlayEnterComplete: function onOverlayEnterComplete() { this.bindOutsideClickListener(); this.bindScrollListener(); this.bindResizeListener(); }, onOverlayAfterLeave: function onOverlayAfterLeave(el) { if (this.autoZIndex) { ZIndex.clear(el); } }, onOverlayLeave: function onOverlayLeave() { this.currentView = this.view; this.unbindOutsideClickListener(); this.unbindScrollListener(); this.unbindResizeListener(); this.$emit('hide'); this.overlay = null; }, onPrevButtonClick: function onPrevButtonClick(event) { this.navigationState = { backward: true, button: true }; this.navBackward(event); }, onNextButtonClick: function onNextButtonClick(event) { this.navigationState = { backward: false, button: true }; this.navForward(event); }, navBackward: function navBackward(event) { event.preventDefault(); if (!this.isEnabled()) { return; } if (this.currentView === 'month') { this.decrementYear(); this.$emit('year-change', { month: this.currentMonth, year: this.currentYear }); } else if (this.currentView === 'year') { this.decrementDecade(); } else { if (event.shiftKey) { this.decrementYear(); } else { if (this.currentMonth === 0) { this.currentMonth = 11; this.decrementYear(); } else { this.currentMonth--; } this.$emit('month-change', { month: this.currentMonth + 1, year: this.currentYear }); } } }, navForward: function navForward(event) { event.preventDefault(); if (!this.isEnabled()) { return; } if (this.currentView === 'month') { this.incrementYear(); this.$emit('year-change', { month: this.currentMonth, year: this.currentYear }); } else if (this.currentView === 'year') { this.incrementDecade(); } else { if (event.shiftKey) { this.incrementYear(); } else { if (this.currentMonth === 11) { this.currentMonth = 0; this.incrementYear(); } else { this.currentMonth++; } this.$emit('month-change', { month: this.currentMonth + 1, year: this.currentYear }); } } }, decrementYear: function decrementYear() { this.currentYear--; }, decrementDecade: function decrementDecade() { this.currentYear = this.currentYear - 10; }, incrementYear: function incrementYear() { this.currentYear++; }, incrementDecade: function incrementDecade() { this.currentYear = this.currentYear + 10; }, switchToMonthView: function switchToMonthView(event) { this.currentView = 'month'; setTimeout(this.updateFocus, 0); event.preventDefault(); }, switchToYearView: function switchToYearView(event) { this.currentView = 'year'; setTimeout(this.updateFocus, 0); event.preventDefault(); }, isEnabled: function isEnabled() { return !this.disabled && !this.readonly; }, updateCurrentTimeMeta: function updateCurrentTimeMeta(date) { var currentHour = date.getHours(); if (this.hourFormat === '12') { this.pm = currentHour > 11; if (currentHour >= 12) currentHour = currentHour == 12 ? 12 : currentHour - 12; } this.currentHour = Math.floor(currentHour / this.stepHour) * this.stepHour; this.currentMinute = Math.floor(date.getMinutes() / this.stepMinute) * this.stepMinute; this.currentSecond = Math.floor(date.getSeconds() / this.stepSecond) * this.stepSecond; }, bindOutsideClickListener: function bindOutsideClickListener() { var _this4 = this; if (!this.outsideClickListener) { this.outsideClickListener = function (event) { if (_this4.overlayVisible && _this4.isOutsideClicked(event)) { _this4.overlayVisible = false; } }; document.addEventListener('mousedown', this.outsideClickListener); } }, unbindOutsideClickListener: function unbindOutsideClickListener() { if (this.outsideClickListener) { document.removeEventListener('mousedown', this.outsideClickListener); this.outsideClickListener = null; } }, bindScrollListener: function bindScrollListener() { var _this5 = this; if (!this.scrollHandler) { this.scrollHandler = new ConnectedOverlayScrollHandler(this.$refs.container, function () { if (_this5.overlayVisible) { _this5.overlayVisible = false; } }); } this.scrollHandler.bindScrollListener(); }, unbindScrollListener: function unbindScrollListener() { if (this.scrollHandler) { this.scrollHandler.unbindScrollListener(); } }, bindResizeListener: function bindResizeListener() { var _this6 = this; if (!this.resizeListener) { this.resizeListener = function () { if (_this6.overlayVisible && !isTouchDevice()) { _this6.overlayVisible = false; } }; window.addEventListener('resize', this.resizeListener); } }, unbindResizeListener: function unbindResizeListener() { if (this.resizeListener) { window.removeEventListener('resize', this.resizeListener); this.resizeListener = null; } }, bindMatchMediaListener: function bindMatchMediaListener() { var _this7 = this; if (!this.matchMediaListener) { var query = matchMedia("(max-width: ".concat(this.breakpoint, ")")); this.query = query; this.queryMatches = query.matches; this.matchMediaListener = function () { _this7.queryMatches = query.matches; _this7.mobileActive = false; }; this.query.addEventListener('change', this.matchMediaListener); } }, unbindMatchMediaListener: function unbindMatchMediaListener() { if (this.matchMediaListener) { this.query.removeEventListener('change', this.matchMediaListener); this.matchMediaListener = null; } }, bindMatchMediaOrientationListener: function bindMatchMediaOrientationListener() { var _this8 = this; if (!this.matchMediaOrientationListener) { var query = matchMedia("(orientation: portrait)"); this.queryOrientation = query; this.matchMediaOrientationListener = function () { _this8.alignOverlay(); }; this.queryOrientation.addEventListener('change', this.matchMediaOrientationListener); } }, unbindMatchMediaOrientationListener: function unbindMatchMediaOrientationListener() { if (this.matchMediaOrientationListener) { this.queryOrientation.removeEventListener('change', this.matchMediaOrientationListener); this.queryOrientation = null; this.matchMediaOrientationListener = null; } }, isOutsideClicked: function isOutsideClicked(event) { var composedPath = event.composedPath(); return !(this.$el.isSameNode(event.target) || this.isNavIconClicked(event) || composedPath.includes(this.$el) || composedPath.includes(this.overlay)); }, isNavIconClicked: function isNavIconClicked(event) { return this.previousButton && (this.previousButton.isSameNode(event.target) || this.previousButton.contains(event.target)) || this.nextButton && (this.nextButton.isSameNode(event.target) || this.nextButton.contains(event.target)); }, alignOverlay: function alignOverlay() { if (this.overlay) { if (this.appendTo === 'self' || this.inline) { relativePosition(this.overlay, this.$el); } else { if (this.view === 'date') { this.overlay.style.width = getOuterWidth(this.overlay) + 'px'; this.overlay.style.minWidth = getOuterWidth(this.$el) + 'px'; } else { this.overlay.style.width = getOuterWidth(this.$el) + 'px'; } absolutePosition(this.overlay, this.$el); } } }, onButtonClick: function onButtonClick() { if (this.isEnabled()) { if (!this.overlayVisible) { this.input.focus(); this.overlayVisible = true; } else { this.overlayVisible = false; } } }, isDateDisabled: function isDateDisabled(day, month, year) { if (this.disabledDates) { var _iterator2 = _createForOfIteratorHelper(this.disabledDates), _step2; try { for (_iterator2.s(); !(_step2 = _iterator2.n()).done;) { var disabledDate = _step2.value; if (disabledDate.getFullYear() === year && disabledDate.getMonth() === month && disabledDate.getDate() === day) { return true; } } } catch (err) { _iterator2.e(err); } finally { _iterator2.f(); } } return false; }, isDayDisabled: function isDayDisabled(day, month, year) { if (this.disabledDays) { var weekday = new Date(year, month, day); var weekdayNumber = weekday.getDay(); return this.disabledDays.indexOf(weekdayNumber) !== -1; } return false; }, onMonthDropdownChange: function onMonthDropdownChange(value) { this.currentMonth = parseInt(value); this.$emit('month-change', { month: this.currentMonth + 1, year: this.currentYear }); }, onYearDropdownChange: function onYearDropdownChange(value) { this.currentYear = parseInt(value); this.$emit('year-change', { month: this.currentMonth, year: this.currentYear }); }, onDateSelect: function onDateSelect(event, dateMeta) { var _this9 = this; if (this.disabled || !dateMeta.selectable) { return; } find(this.overlay, 'table td span:not([data-p-disabled="true"])').forEach(function (cell) { return cell.tabIndex = -1; }); if (event) { event.currentTarget.focus(); } if (this.isMultipleSelection() && this.isSelected(dateMeta)) { var newValue = this.rawValue.filter(function (date) { return !_this9.isDateEquals(_this9.parseValueForComparison(date), dateMeta); }); this.updateModel(newValue); } else { if (this.shouldSelectDate(dateMeta)) { if (dateMeta.otherMonth) { this.currentMonth = dateMeta.month; this.currentYear = dateMeta.year; this.selectDate(dateMeta); } else { this.selectDate(dateMeta); } } } if (this.isSingleSelection() && (!this.showTime || this.hideOnDateTimeSelect)) { if (this.input) { this.input.focus(); } setTimeout(function () { _this9.overlayVisible = false; }, 150); } }, selectDate: function selectDate(dateMeta) { var _this0 = this; var date = new Date(dateMeta.year, dateMeta.month, dateMeta.day); if (this.showTime) { this.hourFormat === '12' && this.currentHour !== 12 && this.pm ? date.setHours(this.currentHour + 12) : date.setHours(this.currentHour); date.setMinutes(this.currentMinute); date.setSeconds(this.showSeconds ? this.currentSecond : 0); } if (this.minDate && this.minDate > date) { date = this.minDate; this.currentHour = date.getHours(); this.currentMinute = date.getMinutes(); this.currentSecond = date.getSeconds(); } if (this.maxDate && this.maxDate < date) { date = this.maxDate; this.currentHour = date.getHours(); this.currentMinute = date.getMinutes(); this.currentSecond = date.getSeconds(); } var modelVal = null; if (this.isSingleSelection()) { modelVal = date; } else if (this.isMultipleSelection()) { modelVal = this.rawValue ? [].concat(_toConsumableArray(this.rawValue), [date]) : [date]; } else if (this.isRangeSelection()) { if (this.rawValue && this.rawValue.length) { var startDate = this.parseValueForComparison(this.rawValue[0]); var endDate = this.rawValue[1]; if (!endDate && date.getTime() >= startDate.getTime()) { endDate = date; this.focusedDateIndex = 1; } else { startDate = date; endDate = null; this.focusedDateIndex = 0; } modelVal = [startDate, endDate]; } else { modelVal = [date, null]; this.focusedDateIndex = 0; } } if (modelVal !== null) { this.updateModel(modelVal); } if (this.isRangeSelection() && this.hideOnRangeSelection && modelVal[1] !== null) { setTimeout(function () { _this0.overlayVisible = false; }, 150); } this.$emit('date-select', date); }, updateModel: function updateModel(value) { var _this1 = this; this.rawValue = value; if (this.updateModelType === 'date') { if (this.isSingleSelection()) { this.writeValue(value); } else { var stringArrValue = null; if (Array.isArray(value)) { stringArrValue = value.map(function (date) { return _this1.parseValueForComparison(date); }); } this.writeValue(stringArrValue); } } else if (this.updateModelType == 'string') { if (this.isSingleSelection()) { this.writeValue(this.formatDateTime(value)); } else if (this.isMultipleSelection()) { var _stringArrValue = null; if (Array.isArray(value)) { _stringArrValue = value.map(function (date) { return _this1.formatDateTime(date); }); } this.writeValue(_stringArrValue); } else if (this.isRangeSelection()) { var _stringArrValue2 = null; if (Array.isArray(value)) { _stringArrValue2 = value.map(function (date) { if (date === null || date === undefined) { return null; } return typeof date === 'string' ? date : _this1.formatDateTime(date); }); } this.writeValue(_stringArrValue2); } } }, shouldSelectDate: function shouldSelectDate() { if (this.isMultipleSelection()) return this.maxDateCount != null ? this.maxDateCount > (this.rawValue ? this.rawValue.length : 0) : true;else return true; }, isSingleSelection: function isSingleSelection() { return this.selectionMode === 'single'; }, isRangeSelection: function isRangeSelection() { return this.selectionMode === 'range'; }, isMultipleSelection: function isMultipleSelection() { return this.selectionMode === 'multiple'; }, formatValue: function formatValue(value) { if (typeof value === 'string') { return this.dateFormat ? isNaN(new Date(value)) ? value : this.formatDate(new Date(value), this.dateFormat) : value; } var formattedValue = ''; if (value) { try { if (this.isSingleSelection()) { formattedValue = this.formatDateTime(value); } else if (this.isMultipleSelection()) { for (var i = 0; i < value.length; i++) { var dateAsString = typeof value[i] === 'string' ? this.formatDateTime(this.parseValueForComparison(value[i])) : this.formatDateTime(value[i]); formattedValue += dateAsString; if (i !== value.length - 1) { formattedValue += ', '; } } } else if (this.isRangeSelection()) { if (value && value.length) { var startDate = this.parseValueForComparison(value[0]); var endDate = this.parseValueForComparison(value[1]); formattedValue = this.formatDateTime(startDate); if (endDate) { formattedValue += ' - ' + this.formatDateTime(endDate); } } } } catch (err) { formattedValue = value; } } return formattedValue; }, formatDateTime: function formatDateTime(date) { var formattedValue = null; if (isDate(date) && isNotEmpty(date)) { if (this.timeOnly) { formattedValue = this.formatTime(date); } else { formattedValue = this.formatDate(date, this.datePattern); if (this.showTime) { formattedValue += ' ' + this.formatTime(date); } } } else if (this.updateModelType === 'string') { formattedValue = date; } return formattedValue; }, formatDate: function formatDate(date, format) { if (!date) { return ''; } var iFormat; var lookAhead = function lookAhead(match) { var matches = iFormat + 1 < format.length && format.charAt(iFormat + 1) === match; if (matches) { iFormat++; } return matches; }, formatNumber = function formatNumber(match, value, len) { var num = '' + value; if (lookAhead(match)) { while (num.length < len) { num = '0' + num; } } return num; }, formatName = function formatName(match, value, shortNames, longNames) { return lookAhead(match) ? longNames[value] : shortNames[value]; }; var output = ''; var literal = false; if (date) { for (iFormat = 0; iFormat < format.length; iFormat++) { if (literal) { if (format.charAt(iFormat) === "'" && !lookAhead("'")) { literal = false; } else { output += format.charAt(iFormat); } } else { switch (format.charAt(iFormat)) { case 'd': output += formatNumber('d', date.getDate(), 2); break; case 'D': output += formatName('D', date.getDay(), this.$primevue.config.locale.dayNamesShort, this.$primevue.config.locale.dayNames); break; case 'o': output += formatNumber('o', Math.round((new Date(date.getFullYear(), date.getMonth(), date.getDate()).getTime() - new Date(date.getFullYear(), 0, 0).getTime()) / 86400000), 3); break; case 'm': output += formatNumber('m', date.getMonth() + 1, 2); break; case 'M': output += formatName('M', date.getMonth(), this.$primevue.config.locale.monthNamesShort, this.$primevue.config.locale.monthNames); break; case 'y': output += lookAhead('y') ? date.getFullYear() : (date.getFullYear() % 100 < 10 ? '0' : '') + date.getFullYear() % 100; break; case '@': output += date.getTime(); break; case '!': output += date.getTime() * 10000 + this.ticksTo1970; break; case "'": if (lookAhead("'")) { output += "'"; } else { literal = true; } break; default: output += format.charAt(iFormat); } } } } return output; }, formatTime: function formatTime(date) { if (!date) { return ''; } var output = ''; var hours = date.getHours(); var minutes = date.getMinutes(); var seconds = date.getSeconds(); if (this.hourFormat === '12' && hours > 11 && hours !== 12) { hours -= 12; } if (this.hourFormat === '12') { output += hours === 0 ? 12 : hours < 10 ? '0' + hours : hours; } else { output += hours < 10 ? '0' + hours : hours; } output += ':'; output += minutes < 10 ? '0' + minutes : minutes; if (this.showSeconds) { output += ':'; output += seconds < 10 ? '0' + seconds : seconds; } if (this.hourFormat === '12') { output += date.getHours() > 11 ? " ".concat(this.$primevue.config.locale.pm) : " ".concat(this.$primevue.config.locale.am); } return output; }, onTodayButtonClick: function onTodayButtonClick(event) { var date = new Date(); var dateMeta = { day: date.getDate(), month: date.getMonth(), year: date.getFullYear(), otherMonth: date.getMonth() !== this.currentMonth || date.getFullYear() !== this.currentYear, today: true, selectable: true }; this.onDateSelect(null, dateMeta); this.$emit('today-click', date); event.preventDefault(); }, onClearButtonClick: function onClearButtonClick(event) { this.updateModel(null); this.overlayVisible = false; this.$emit('clear-click', event); event.preventDefault(); }, onTimePickerElementMouseDown: function onTimePickerElementMouseDown(event, type, direction) { if (this.isEnabled()) { this.repeat(event, null, type, direction); event.preventDefault(); } }, onTimePickerElementMouseUp: function onTimePickerElementMouseUp(event) { if (this.isEnabled()) { this.clearTimePickerTimer(); this.updateModelTime(); event.preventDefault(); } }, onTimePickerElementMouseLeave: function onTimePickerElementMouseLeave() { this.clearTimePickerTimer(); }, onTimePickerElementKeyDown: function onTimePickerElementKeyDown(event, type, direction) { switch (event.code) { case 'Enter': case 'NumpadEnter': case 'Space': if (this.isEnabled()) { this.repeat(event, null, type, direction); event.preventDefault(); } break; } }, onTimePickerElementKeyUp: function onTimePickerElementKeyUp(event) { switch (event.code) { case 'Enter': case 'NumpadEnter': case 'Space': if (this.isEnabled()) { this.clearTimePickerTimer(); this.updateModelTime(); event.preventDefault(); } break; } }, repeat: function repeat(event, interval, type, direction) { var _this10 = this; var i = interval || 500; this.clearTimePickerTimer(); this.timePickerTimer = setTimeout(function () { _this10.repeat(event, 100, type, direction); }, i); switch (type) { case 0: if (direction === 1) this.incrementHour(event);else this.decrementHour(event); break; case 1: if (direction === 1) this.incrementMinute(event);else this.decrementMinute(event); break; case 2: if (direction === 1) this.incrementSecond(event);else this.decrementSecond(event); break; } }, convertTo24Hour: function convertTo24Hour(hours, pm) { if (this.hourFormat == '12') { if (hours === 12) { return pm ? 12 : 0; } else { return pm ? hours + 12 : hours; } } return hours; }, validateTime: function validateTime(hour, minute, second, pm) { var value = this.viewDate; var convertedHour = this.convertTo24Hour(hour, pm); if (this.isRangeSelection()) { value = this.rawValue ? this.rawValue[1] || this.rawValue[0] : value; } if (this.isMultipleSelection()) { value = this.rawValue ? this.rawValue[this.rawValue.length - 1] : value; } var valueDateString = value ? value.toDateString() : null; if (this.minDate && valueDateString && this.minDate.toDateString() === valueDateString) { if (this.minDate.getHours() > convertedHour) { return false; } if (this.minDate.getHours() === convertedHour) { if (this.minDate.getMinutes() > minute) { return false; } if (this.minDate.getMinutes() === minute) { if (this.minDate.getSeconds() > second) { return false; } } } } if (this.maxDate && valueDateString && this.maxDate.toDateString() === valueDateString) { if (this.maxDate.getHours() < convertedHour) { return false; } if (this.maxDate.getHours() === convertedHour) { if (this.maxDate.getMinutes() < minute) { return false; } if (this.maxDate.getMinutes() === minute) { if (this.maxDate.getSeconds() < second) { return false; } } } } return true; }, incrementHour: function incrementHour(event) { var prevHour = this.currentHour; var newHour = this.currentHour + Number(this.stepHour); var newPM = this.pm; if (this.hourFormat == '24') newHour = newHour >= 24 ? newHour - 24 : newHour;else if (this.hourFormat == '12') { // Before the AM/PM break, now after if (prevHour < 12 && newHour > 11) { newPM = !this.pm; } newHour = newHour >= 13 ? newHour - 12 : newHour; } if (this.validateTime(newHour, this.currentMinute, this.currentSecond, newPM)) { this.currentHour = newHour; this.pm = newPM; } event.preventDefault(); }, decrementHour: function decrementHour(event) { var newHour = this.currentHour - this.stepHour; var newPM = this.pm; if (this.hourFormat == '24') newHour = newHour < 0 ? 24 + newHour : newHour;else if (this.hourFormat == '12') { // If we were at noon/midnight, then switch if (this.currentHour === 12) { newPM = !this.pm; } newHour = newHour <= 0 ? 12 + newHour : newHour; } if (this.validateTime(newHour, this.currentMinute, this.currentSecond, newPM)) { this.currentHour = newHour; this.pm = newPM; } event.preventDefault(); }, incrementMinute: function incrementMinute(event) { var newMinute = this.currentMinute + Number(this.stepMinute); if (this.validateTime(this.currentHour, newMinute, this.currentSecond, this.pm)) { this.currentMinute = newMinute > 59 ? newMinute - 60 : newMinute; } event.preventDefault(); }, decrementMinute: function decrementMinute(event) { var newMinute = this.currentMinute - this.stepMinute; newMinute = newMinute < 0 ? 60 + newMinute : newMinute; if (this.validateTime(this.currentHour, newMinute, this.currentSecond, this.pm)) { this.currentMinute = newMinute; } event.preventDefault(); }, incrementSecond: function incrementSecond(event) { var newSecond = this.currentSecond + Number(this.stepSecond); if (this.validateTime(this.currentHour, this.currentMinute, newSecond, this.pm)) { this.currentSecond = newSecond > 59 ? newSecond - 60 : newSecond; } event.preventDefault(); }, decrementSecond: function decrementSecond(event) { var newSecond = this.currentSecond - this.stepSecond; newSecond = newSecond < 0 ? 60 + newSecond : newSecond; if (this.validateTime(this.currentHour, this.currentMinute, newSecond, this.pm)) { this.currentSecond = newSecond; } event.preventDefault(); }, updateModelTime: function updateModelTime() { var _this11 = this; this.timePickerChange = true; var