UNPKG

@vertisanpro/flowbite-react

Version:

Non-Official React components built for Flowbite and Tailwind CSS

117 lines (116 loc) 4.62 kB
export var Views; (function (Views) { Views[Views["Days"] = 0] = "Days"; Views[Views["Months"] = 1] = "Months"; Views[Views["Years"] = 2] = "Years"; Views[Views["Decades"] = 3] = "Decades"; })(Views || (Views = {})); export var WeekStart; (function (WeekStart) { WeekStart[WeekStart["Sunday"] = 0] = "Sunday"; WeekStart[WeekStart["Monday"] = 1] = "Monday"; WeekStart[WeekStart["Tuesday"] = 2] = "Tuesday"; WeekStart[WeekStart["Wednesday"] = 3] = "Wednesday"; WeekStart[WeekStart["Thursday"] = 4] = "Thursday"; WeekStart[WeekStart["Friday"] = 5] = "Friday"; WeekStart[WeekStart["Saturday"] = 6] = "Saturday"; })(WeekStart || (WeekStart = {})); export const isDateInRange = (date, minDate, maxDate) => { const dateTime = new Date(date.getFullYear(), date.getMonth(), date.getDate()).getTime(); if (minDate && maxDate) { const minDateTime = new Date(minDate.getFullYear(), minDate.getMonth(), minDate.getDate()).getTime(); const maxDateTime = new Date(maxDate.getFullYear(), maxDate.getMonth(), maxDate.getDate()).getTime(); return dateTime >= minDateTime && dateTime <= maxDateTime; } if (minDate) { const minDateTime = new Date(minDate.getFullYear(), minDate.getMonth(), minDate.getDate()).getTime(); return dateTime >= minDateTime; } if (maxDate) { const maxDateTime = new Date(maxDate.getFullYear(), maxDate.getMonth(), maxDate.getDate()).getTime(); return dateTime <= maxDateTime; } return true; }; export const isDateEqual = (date, selectedDate) => { date = new Date(date.getFullYear(), date.getMonth(), date.getDate()); selectedDate = new Date(selectedDate.getFullYear(), selectedDate.getMonth(), selectedDate.getDate()); return date.getTime() === selectedDate.getTime(); }; export const getFirstDateInRange = (date, minDate, maxDate) => { if (!isDateInRange(date, minDate, maxDate)) { if (minDate && date < minDate) { date = minDate; } else if (maxDate && date > maxDate) { date = maxDate; } } return date; }; export const getFirstDayOfTheMonth = (date, weekStart) => { const firstDayOfMonth = new Date(date.getFullYear(), date.getMonth(), 1); const dayOfWeek = firstDayOfMonth.getDay(); let diff = dayOfWeek - weekStart; if (diff < 0) { diff += 7; } return addDays(firstDayOfMonth, -diff); }; export const getWeekDays = (lang, weekStart) => { const weekdays = []; const date = new Date(0); date.setDate(date.getDate() - date.getDay() + weekStart); const formatter = new Intl.DateTimeFormat(lang, { weekday: 'short' }); for (let i = 0; i < 7; i++) { weekdays.push(formatter.format(addDays(date, i))); } return weekdays; }; export const addDays = (date, amount) => { const newDate = new Date(date); newDate.setDate(newDate.getDate() + amount); return newDate; }; export const addMonths = (date, amount) => { const newDate = new Date(date); newDate.setMonth(newDate.getMonth() + amount); return newDate; }; export const addYears = (date, amount) => { const newDate = new Date(date); newDate.setFullYear(newDate.getFullYear() + amount); return newDate; }; export const getFormattedDate = (language, date, options) => { let defaultOptions = { day: 'numeric', month: 'long', year: 'numeric', }; if (options) { defaultOptions = options; } return new Intl.DateTimeFormat(language, defaultOptions).format(date); }; export const startOfYearPeriod = (date, years) => { const year = date.getFullYear(); return Math.floor(year / years) * years; }; export const isDateInDecade = (date, startYear) => { const year = date.getFullYear(); const endYear = startYear + 9; return year >= startYear && year <= endYear; }; export const isDateRangeInDecade = (startDate, endDate, decadeStart, decadeEnd) => { const startYear = startDate.getFullYear(); const endYear = endDate.getFullYear(); if (decadeStart && decadeEnd) { // Check if the start and end years of the date range are within the decade const isStartYearInRange = isDateInRange(new Date(startYear, 0, 1), new Date(decadeStart, 0, 1), new Date(decadeEnd, 11, 31)); const isEndYearInRange = isDateInRange(new Date(endYear, 11, 31), new Date(decadeStart, 0, 1), new Date(decadeEnd, 11, 31)); return isStartYearInRange && isEndYearInRange; } // If decadeStart or decadeEnd is not provided, treat it as an open-ended range return true; };