ngx-bootstrap
Version:
Native Angular Bootstrap Components
61 lines • 2.72 kB
JavaScript
import { isSameMonth } from '../../bs-moment/utils/date-getters';
export function flagMonthView(formattedMonth, options) {
formattedMonth.weeks
.forEach(function (week, weekIndex) {
week.days.forEach(function (day, dayIndex) {
// datepicker
var isOtherMonth = !isSameMonth(day.date, formattedMonth.month);
var isHovered = !isOtherMonth && isSameDate(day.date, options.hoveredDate);
// date range picker
var isSelectionStart = !isOtherMonth && isSameDate(day.date, options.selectedRange[0]);
var isSelectionEnd = !isOtherMonth && isSameDate(day.date, options.selectedRange[1]);
var isSelected = !isOtherMonth && isSameDate(day.date, options.selectedDate) ||
isSelectionStart || isSelectionEnd;
var isInRange = !isOtherMonth && isDateInRange(day.date, options.selectedRange, options.hoveredDate);
// decide update or not
var newDay = Object.assign(/*{},*/ day, {
isOtherMonth: isOtherMonth,
isHovered: isHovered,
isSelected: isSelected,
isSelectionStart: isSelectionStart,
isSelectionEnd: isSelectionEnd,
isInRange: isInRange
});
if (day.isOtherMonth !== newDay.isOtherMonth ||
day.isHovered !== newDay.isHovered ||
day.isSelected !== newDay.isSelected ||
day.isSelectionStart !== newDay.isSelectionStart ||
day.isSelectionEnd !== newDay.isSelectionEnd ||
day.isInRange !== newDay.isInRange) {
week.days[dayIndex] = newDay;
}
});
});
// todo: add check for linked calendars
formattedMonth.hideLeftArrow = options.monthIndex > 0
&& options.monthIndex !== options.displayMonths;
formattedMonth.hideRightArrow = options.monthIndex < options.displayMonths
&& (options.monthIndex + 1) !== options.displayMonths;
return formattedMonth;
}
function isSameDate(date, selectedDate) {
if (!date || !selectedDate) {
return false;
}
return date.getFullYear() === selectedDate.getFullYear()
&& date.getMonth() === selectedDate.getMonth()
&& date.getDate() === selectedDate.getDate();
}
function isDateInRange(date, selectedRange, hoveredDate) {
if (!date || !selectedRange[0]) {
return false;
}
if (selectedRange[1]) {
return date > selectedRange[0] && date <= selectedRange[1];
}
if (hoveredDate) {
return date > selectedRange[0] && date <= hoveredDate;
}
return false;
}
//# sourceMappingURL=flag-month-view.js.map