date-fns#lastDayOfMonth JavaScript Examples
The following examples show how to use
date-fns#lastDayOfMonth.
You can vote up the ones you like or vote down the ones you don't like,
and go to the original project or source file by following the links above each example. You may check out the related API usage on the sidebar.
Example #1
Source File: DateView.js From react-horizontal-datepicker with MIT License | 4 votes |
DateView = ({
startDate,
lastDate,
selectDate,
getSelectedDay,
primaryColor,
labelFormat
}) => {
const [selectedDate, setSelectedDate] = useState(null);
const firstSection = {
marginLeft: '40px'
};
const selectedStyle = {
fontWeight: "bold",
width: "45px",
height: "45px",
borderRadius: "50%",
border: `2px solid ${primaryColor}`,
color: primaryColor
};
const labelColor = {
color: primaryColor
};
const getStyles = day => {
return isSameDay(day, selectedDate) ? selectedStyle : null;
};
const getId = day => {
return isSameDay(day, selectedDate) ? 'selected' : "";
};
const renderDays = () => {
const dayFormat = "E";
const dateFormat = "d";
const months = [];
let days = [];
for (let i = 0; i <= differenceInMonths(lastDate, startDate); i++) {
let start, end;
const month = startOfMonth(addMonths(startDate, i));
start = i === 0 ? Number(format(startDate, dateFormat)) - 1 : 0;
end = i === differenceInMonths(lastDate, startDate) ? Number(format(lastDate, "d")) : Number(format(lastDayOfMonth(month), "d"));
for (let j = start; j < end; j++) {
let currentDay = addDays(month, j);
days.push( /*#__PURE__*/React.createElement("div", {
id: `${getId(currentDay)}`,
className: styles.dateDayItem,
style: getStyles(currentDay),
key: currentDay,
onClick: () => onDateClick(currentDay)
}, /*#__PURE__*/React.createElement("div", {
className: styles.dayLabel
}, format(currentDay, dayFormat)), /*#__PURE__*/React.createElement("div", {
className: styles.dateLabel
}, format(currentDay, dateFormat))));
}
months.push( /*#__PURE__*/React.createElement("div", {
className: styles.monthContainer,
key: month
}, /*#__PURE__*/React.createElement("span", {
className: styles.monthYearLabel,
style: labelColor
}, format(month, labelFormat || "MMMM yyyy")), /*#__PURE__*/React.createElement("div", {
className: styles.daysContainer,
style: i === 0 ? firstSection : null
}, days)));
days = [];
}
return /*#__PURE__*/React.createElement("div", {
id: "container",
className: styles.dateListScrollable
}, months);
};
const onDateClick = day => {
setSelectedDate(day);
if (getSelectedDay) {
getSelectedDay(day);
}
};
useEffect(() => {
if (getSelectedDay) {
if (selectDate) {
getSelectedDay(selectDate);
} else {
getSelectedDay(startDate);
}
}
}, []);
useEffect(() => {
if (selectDate) {
if (!isSameDay(selectedDate, selectDate)) {
setSelectedDate(selectDate);
setTimeout(() => {
let view = document.getElementById('selected');
if (view) {
view.scrollIntoView({
behavior: "smooth",
inline: "center",
block: "nearest"
});
}
}, 20);
}
}
}, [selectDate]);
return /*#__PURE__*/React.createElement(React.Fragment, null, renderDays());
}
Example #2
Source File: DateView.js From react-horizontal-datepicker with MIT License | 4 votes |
DateView = ({startDate, lastDate, selectDate, getSelectedDay, primaryColor, labelFormat, marked}) => {
const [selectedDate, setSelectedDate] = useState(null);
const firstSection = {marginLeft: '40px'};
const selectedStyle = {fontWeight:"bold",width:"45px",height:"45px",borderRadius:"50%",border:`2px solid ${primaryColor}`,color:primaryColor};
const labelColor = {color: primaryColor};
const markedStyle = {color: "#8c3737", padding: "2px", fontSize: 12};
const getStyles = (day) => {
return isSameDay(day, selectedDate)?selectedStyle:null;
};
const getId = (day) => {
return isSameDay(day, selectedDate)?'selected':"";
};
const getMarked = (day) => {
let markedRes = marked.find(i => isSameDay(i.date, day));
if (markedRes) {
if (!markedRes?.marked) {
return;
}
return <div style={{ ...markedRes?.style ?? markedStyle }} className={styles.markedLabel}>
{markedRes.text}
</div>;
}
return "";
};
const renderDays = () => {
const dayFormat = "E";
const dateFormat = "d";
const months = [];
let days = [];
// const styleItemMarked = marked ? styles.dateDayItemMarked : styles.dateDayItem;
for (let i = 0; i <= differenceInMonths(lastDate, startDate); i++) {
let start, end;
const month = startOfMonth(addMonths(startDate, i));
start = i === 0 ? Number(format(startDate, dateFormat)) - 1 : 0;
end = i === differenceInMonths(lastDate, startDate) ? Number(format(lastDate, "d")) : Number(format(lastDayOfMonth(month), "d"));
for (let j = start; j < end; j++) {
let currentDay = addDays(month, j);
days.push(
<div id={`${getId(currentDay)}`}
className={marked ? styles.dateDayItemMarked : styles.dateDayItem}
style={getStyles(currentDay)}
key={currentDay}
onClick={() => onDateClick(currentDay)}
>
<div className={styles.dayLabel}>{format(currentDay, dayFormat)}</div>
<div className={styles.dateLabel}>{format(currentDay, dateFormat)}</div>
{getMarked(currentDay)}
</div>
);
}
months.push(
<div className={styles.monthContainer}
key={month}
>
<span className={styles.monthYearLabel} style={labelColor}>
{format(month, labelFormat || "MMMM yyyy")}
</span>
<div className={styles.daysContainer} style={i===0?firstSection:null}>
{days}
</div>
</div>
);
days = [];
}
return <div id={"container"} className={styles.dateListScrollable}>{months}</div>;
}
const onDateClick = day => {
setSelectedDate(day);
if (getSelectedDay) {
getSelectedDay(day);
}
};
useEffect(() => {
if (getSelectedDay) {
if (selectDate) {
getSelectedDay(selectDate);
} else {
getSelectedDay(startDate);
}
}
}, []);
useEffect(() => {
if (selectDate) {
if (!isSameDay(selectedDate, selectDate)) {
setSelectedDate(selectDate);
setTimeout(() => {
let view = document.getElementById('selected');
if (view) {
view.scrollIntoView({behavior: "smooth", inline: "center", block: "nearest"});
}
}, 20);
}
}
}, [selectDate]);
return <React.Fragment>{renderDays()}</React.Fragment>
}