roko-date-picker
Version:
A simple single/multi date picker
67 lines (66 loc) • 2.52 kB
JavaScript
;
var __importDefault = (this && this.__importDefault) || function (mod) {
return (mod && mod.__esModule) ? mod : { "default": mod };
};
Object.defineProperty(exports, "__esModule", { value: true });
exports.weekDayList = exports.getYearsOfCurrentDecade = exports.getMonthsOfCurrentYear = exports.getWeeksOfCurrentMonth = void 0;
exports.getItemLayout = getItemLayout;
const date_fns_1 = require("date-fns");
const addDays_1 = __importDefault(require("date-fns/addDays"));
const eachDayOfInterval_1 = __importDefault(require("date-fns/eachDayOfInterval"));
const eachWeekOfInterval_1 = __importDefault(require("date-fns/eachWeekOfInterval"));
const endOfMonth_1 = __importDefault(require("date-fns/endOfMonth"));
const startOfMonth_1 = __importDefault(require("date-fns/startOfMonth"));
const getWeeksOfCurrentMonth = (date) => {
return (0, eachWeekOfInterval_1.default)({
start: (0, startOfMonth_1.default)(date),
end: (0, endOfMonth_1.default)(date),
}, {
weekStartsOn: 1,
}).reduce((acc, cur) => {
const allDays = (0, eachDayOfInterval_1.default)({
start: cur,
end: (0, addDays_1.default)(cur, 6),
});
acc.push(allDays);
return acc;
}, []);
};
exports.getWeeksOfCurrentMonth = getWeeksOfCurrentMonth;
const getMonthsOfCurrentYear = (date) => {
const year = date.getFullYear();
const months = [];
for (let month = 0; month < 12; month++) {
const monthDate = new Date(year, month);
months.push(monthDate);
}
return months;
};
exports.getMonthsOfCurrentYear = getMonthsOfCurrentYear;
const getYearsOfCurrentDecade = (date) => {
const currentYear = date.getFullYear();
const years = [];
for (let year = currentYear - 11; year <= currentYear; year++) {
const yearDate = new Date(year, 0); // Using 0 for the month to get January of each year
years.push(yearDate);
}
return years;
};
exports.getYearsOfCurrentDecade = getYearsOfCurrentDecade;
const weekDayList = () => {
const weekStart = (0, date_fns_1.startOfWeek)(new Date(), { weekStartsOn: 1 }); // Monday
const days = [];
for (let i = 0; i < 7; i++) {
days.push((0, addDays_1.default)(weekStart, i));
}
return days;
};
exports.weekDayList = weekDayList;
function getItemLayout(_data, index, cellLayout) {
const itemLayout = {
length: cellLayout.height,
offset: cellLayout.height * index,
index,
};
return itemLayout;
}