flowbite-react
Version:
Official React components built for Flowbite and Tailwind CSS
132 lines (131 loc) • 5.53 kB
JavaScript
Object.defineProperty(exports, "__esModule", { value: true });
exports.isDateRangeInDecade = exports.isDateInDecade = exports.startOfYearPeriod = exports.getFormattedDate = exports.addYears = exports.addMonths = exports.addDays = exports.getWeekDays = exports.getFirstDayOfTheMonth = exports.getFirstDateInRange = exports.isDateEqual = exports.isDateInRange = exports.WeekStart = exports.Views = void 0;
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 || (exports.Views = Views = {}));
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 || (exports.WeekStart = WeekStart = {}));
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;
};
exports.isDateInRange = isDateInRange;
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();
};
exports.isDateEqual = isDateEqual;
const getFirstDateInRange = (date, minDate, maxDate) => {
if (!(0, exports.isDateInRange)(date, minDate, maxDate)) {
if (minDate && date < minDate) {
date = minDate;
}
else if (maxDate && date > maxDate) {
date = maxDate;
}
}
return date;
};
exports.getFirstDateInRange = getFirstDateInRange;
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 (0, exports.addDays)(firstDayOfMonth, -diff);
};
exports.getFirstDayOfTheMonth = getFirstDayOfTheMonth;
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((0, exports.addDays)(date, i)));
}
return weekdays;
};
exports.getWeekDays = getWeekDays;
const addDays = (date, amount) => {
const newDate = new Date(date);
newDate.setDate(newDate.getDate() + amount);
return newDate;
};
exports.addDays = addDays;
const addMonths = (date, amount) => {
const newDate = new Date(date);
newDate.setMonth(newDate.getMonth() + amount);
return newDate;
};
exports.addMonths = addMonths;
const addYears = (date, amount) => {
const newDate = new Date(date);
newDate.setFullYear(newDate.getFullYear() + amount);
return newDate;
};
exports.addYears = addYears;
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);
};
exports.getFormattedDate = getFormattedDate;
const startOfYearPeriod = (date, years) => {
const year = date.getFullYear();
return Math.floor(year / years) * years;
};
exports.startOfYearPeriod = startOfYearPeriod;
const isDateInDecade = (date, startYear) => {
const year = date.getFullYear();
const endYear = startYear + 9;
return year >= startYear && year <= endYear;
};
exports.isDateInDecade = isDateInDecade;
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 = (0, exports.isDateInRange)(new Date(startYear, 0, 1), new Date(decadeStart, 0, 1), new Date(decadeEnd, 11, 31));
const isEndYearInRange = (0, exports.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;
};
exports.isDateRangeInDecade = isDateRangeInDecade;
;