UNPKG

primevue

Version:

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

1,468 lines (1,466 loc) 144 kB
import { cn } from '@primeuix/utils'; import { setAttribute, getFocusableElements, find, findSingle, getIndex, getAttribute, relativePosition, getOuterWidth, absolutePosition, isTouchDevice, addStyle } from '@primeuix/utils/dom'; import { localeComparator } from '@primeuix/utils/object'; import { ZIndex } from '@primeuix/utils/zindex'; import { ConnectedOverlayScrollHandler } from '@primevue/core/utils'; import CalendarIcon from '@primevue/icons/calendar'; import ChevronDownIcon from '@primevue/icons/chevrondown'; import ChevronLeftIcon from '@primevue/icons/chevronleft'; import ChevronRightIcon from '@primevue/icons/chevronright'; import ChevronUpIcon from '@primevue/icons/chevronup'; 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, createElementBlock, openBlock, mergeProps, createBlock, createCommentVNode, renderSlot, createVNode, normalizeStyle, normalizeClass, 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 }, 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 }, appendTo: { type: [String, Object], "default": 'body' }, readonly: { type: Boolean, "default": false }, placeholder: { type: String, "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 }; } }, timepickerButtonProps: { type: Object, "default": function _default() { return { severity: 'secondary', text: true, rounded: 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 }; }, watch: { modelValue: function modelValue(newValue) { this.updateCurrentMetaData(); if (!this.typeUpdate && !this.inline && this.input) { this.input.value = this.inputFieldValue; } this.typeUpdate = false; }, 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 { this.input.value = this.inputFieldValue; } }, 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: { isComparable: function isComparable() { return this.d_value != null && typeof this.d_value !== 'string'; }, isSelected: function isSelected(dateMeta) { if (!this.isComparable()) { return false; } if (this.d_value) { if (this.isSingleSelection()) { return this.isDateEquals(this.d_value, dateMeta); } else if (this.isMultipleSelection()) { var selected = false; var _iterator = _createForOfIteratorHelper(this.d_value), _step; try { for (_iterator.s(); !(_step = _iterator.n()).done;) { var date = _step.value; selected = this.isDateEquals(date, dateMeta); if (selected) { break; } } } catch (err) { _iterator.e(err); } finally { _iterator.f(); } return selected; } else if (this.isRangeSelection()) { if (this.d_value[1]) return this.isDateEquals(this.d_value[0], dateMeta) || this.isDateEquals(this.d_value[1], dateMeta) || this.isDateBetween(this.d_value[0], this.d_value[1], dateMeta);else { return this.isDateEquals(this.d_value[0], dateMeta); } } } return false; }, isMonthSelected: function isMonthSelected(month) { var _this2 = this; if (!this.isComparable()) return false; if (this.isMultipleSelection()) { return this.d_value.some(function (currentValue) { return currentValue.getMonth() === month && currentValue.getFullYear() === _this2.currentYear; }); } else if (this.isRangeSelection()) { if (!this.d_value[1]) { var _this$d_value$, _this$d_value$2; return ((_this$d_value$ = this.d_value[0]) === null || _this$d_value$ === void 0 ? void 0 : _this$d_value$.getFullYear()) === this.currentYear && ((_this$d_value$2 = this.d_value[0]) === null || _this$d_value$2 === void 0 ? void 0 : _this$d_value$2.getMonth()) === month; } else { var currentDate = new Date(this.currentYear, month, 1); var startDate = new Date(this.d_value[0].getFullYear(), this.d_value[0].getMonth(), 1); var endDate = new Date(this.d_value[1].getFullYear(), this.d_value[1].getMonth(), 1); return currentDate >= startDate && currentDate <= endDate; } } else { return this.d_value.getMonth() === month && this.d_value.getFullYear() === this.currentYear; } }, isYearSelected: function isYearSelected(year) { if (!this.isComparable()) return false; if (this.isMultipleSelection()) { return this.d_value.some(function (currentValue) { return currentValue.getFullYear() === year; }); } else if (this.isRangeSelection()) { var start = this.d_value[0] ? this.d_value[0].getFullYear() : null; var end = this.d_value[1] ? this.d_value[1].getFullYear() : null; return start === year || end === year || start < year && end > year; } else { return this.d_value.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; if (start && end) { var date = new Date(dateMeta.year, dateMeta.month, dateMeta.day); return start.getTime() <= date.getTime() && end.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); } 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 _this3 = this; if (!this.outsideClickListener) { this.outsideClickListener = function (event) { if (_this3.overlayVisible && _this3.isOutsideClicked(event)) { _this3.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 _this4 = this; if (!this.scrollHandler) { this.scrollHandler = new ConnectedOverlayScrollHandler(this.$refs.container, function () { if (_this4.overlayVisible) { _this4.overlayVisible = false; } }); } this.scrollHandler.bindScrollListener(); }, unbindScrollListener: function unbindScrollListener() { if (this.scrollHandler) { this.scrollHandler.unbindScrollListener(); } }, bindResizeListener: function bindResizeListener() { var _this5 = this; if (!this.resizeListener) { this.resizeListener = function () { if (_this5.overlayVisible && !isTouchDevice()) { _this5.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 _this6 = this; if (!this.matchMediaListener) { var query = matchMedia("(max-width: ".concat(this.breakpoint, ")")); this.query = query; this.queryMatches = query.matches; this.matchMediaListener = function () { _this6.queryMatches = query.matches; _this6.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 _this7 = this; if (!this.matchMediaOrientationListener) { var query = matchMedia("(orientation: portrait)"); this.queryOrientation = query; this.matchMediaOrientationListener = function () { _this7.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 + 1, year: this.currentYear }); }, onDateSelect: function onDateSelect(event, dateMeta) { var _this8 = 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.d_value.filter(function (date) { return !_this8.isDateEquals(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 () { _this8.overlayVisible = false; }, 150); } }, selectDate: function selectDate(dateMeta) { var _this9 = 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.currentSecond); } 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.d_value ? [].concat(_toConsumableArray(this.d_value), [date]) : [date]; } else if (this.isRangeSelection()) { if (this.d_value && this.d_value.length) { var startDate = this.d_value[0]; var endDate = this.d_value[1]; if (!endDate && date.getTime() >= startDate.getTime()) { endDate = date; } else { startDate = date; endDate = null; } modelVal = [startDate, endDate]; } else { modelVal = [date, null]; } } if (modelVal !== null) { this.updateModel(modelVal); } if (this.isRangeSelection() && this.hideOnRangeSelection && modelVal[1] !== null) { setTimeout(function () { _this9.overlayVisible = false; }, 150); } this.$emit('date-select', date); }, updateModel: function updateModel(value) { this.writeValue(value); }, shouldSelectDate: function shouldSelectDate() { if (this.isMultipleSelection()) return this.maxDateCount != null ? this.maxDateCount > (this.d_value ? this.d_value.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 = this.formatDateTime(value[i]); formattedValue += dateAsString; if (i !== value.length - 1) { formattedValue += ', '; } } } else if (this.isRangeSelection()) { if (value && value.length) { var startDate = value[0]; var endDate = 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 (date) { if (this.timeOnly) { formattedValue = this.formatTime(date); } else { formattedValue = this.formatDate(date, this.datePattern); if (this.showTime) { formattedValue += ' ' + this.formatTime(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.isComparable() ? this.d_value : this.viewDate; var convertedHour = this.convertTo24Hour(hour, pm); if (this.isRangeSelection()) { value = this.d_value[1] || this.d_value[0]; } if (this.isMultipleSelection()) { value = this.d_value[this.d_value.length - 1]; } 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 value = this.isComparable() ? this.d_value : this.viewDate; if (this.isRangeSelection()) { value = this.d_value[1] || this.d_value[0]; } if (this.isMultipleSelection()) { value = this.d_value[this.d_value.length - 1]; } value = value ? new Date(value.getTime()) : new Date(); if (this.hourFormat == '12') { if (this.currentHour === 12) value.setHours(this.pm ? 12 : 0);else value.setHours(this.pm ? this.currentHour + 12 : this.currentHour); } else { value.setHours(this.currentHour); } value.setMinutes(this.currentMinute); value.setSeconds(this.currentSecond); if (this.isRangeSelection()) { if (this.d_value[1]) value = [this.d_value[0], value];else value = [value, null]; } if (this.isMultipleSelection()) { value = [].concat(_toConsumableArray(this.d_value.slice(0, -1)), [value]); } this.updateModel(value); this.$emit('date-select', value); setTimeout(function () { return _this11.timePickerChange = false; }, 0); }, toggleAMPM: function toggleAMPM(event) { var validHour = this.validateTime(this.currentHour, this.currentMinute, this.currentSecond, !this.pm); if (!validHour && (this.maxDate || this.minDate)) return; this.pm = !this.pm; this.updateModelTime(); event.preventDefault(); }, clearTimePickerTimer: function clearTimePickerTimer() { if (this.timePickerTimer) { clearInterval(this.timePickerTimer); } }, onMonthSelect: function onMonthSelect(event, _ref) { _ref.month; var index = _ref.index; if (this.view === 'month') { this.onDateSelect(event, { year: this.currentYear, month: index, day: 1, selectable: true }); } else { this.currentMonth = index; this.currentView = 'date'; this.$emit('month-change', { month: this.currentMonth + 1, year: this.currentYear }); } setTimeout(this.updateFocus, 0); }, onYearSelect: function onYearSelect(event, year) { if (this.view === 'year') { this.onDateSelect(event, { year: year.value, month: 0, day: 1, selectable: true }); } else { this.currentYear = year.value; this.currentView = 'month'; this.$emit('year-change', { month: this.currentMonth + 1, year: this.currentYear }); } setTimeout(this.updateFocus, 0); }, updateCurrentMetaData: function updateCurrentMetaData() { var viewDate = this.viewDate; this.currentMonth = viewDate.getMonth(); this.currentYear = viewDate.getFullYear(); if (this.showTime || this.timeOnly) { this.updateCurrentTimeMeta(viewDate); } }, isValidSelection: function isValidSelection(value) { var _this12 = this; if (value == null) { return true; } var isValid = true; if (this.isSingleSelection()) { if (!this.isSelectable(value.getDate(), value.getMonth(), value.getFullYear(), false)) { isValid = false; } } else if (value.every(function (v) { return _this12.isSelectable(v.getDate(), v.getMonth(), v.getFullYear(), false); })) { if (this.isRangeSelection()) { isValid = value.length > 1 && value[1] >= value[0]; } } return isValid; }, parseValue: function parseValue(text) { if (!text || text.trim().length === 0) { return null; } var value; if (this.isSingleSelection()) { value = this.parseDateTime(text); } else if (this.isMultipleSelection()) { var tokens = text.split(','); value = []; var _iterator3 = _createForOfIteratorHelper(tokens), _step3; try { for (_iterator3.s(); !(_step3 = _iterator3.n()).done;) { var token = _step3.value; value.push(this.parseDateTime(token.trim())); } } catch (err) { _iterator3.e(err); } finally { _iterator3.f(); } } else if (this.isRangeSelection()) { var _tokens = text.split(' - '); value = []; for (var i = 0; i < _tokens.length; i++) { value[i] = this.parseDateTime(_tokens[i].trim()); } } return value; }, parseDateTime: function parseDateTime(text) { var date; var parts = text.split(' '); if (