UNPKG

ngx-bootstrap

Version:
61 lines 2.72 kB
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