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
JavaScript
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 (