Secure your code as it's written. Use Snyk Code to scan source code in minutes - no build needed - and fix issues immediately.
constructor(props) {
super(props);
this.outerDiv = null;
const startDate = startOfDay(startOfMonth(this.props.minDate));
const endDate = startOfDay(startOfMonth(this.props.maxDate));
const monthsCount = DateUtils.differenceInCalendarMonths(
endDate,
startDate,
);
const months = getMonthsArray(startDate, monthsCount);
// Here we calculate the height of each calendar grid item in pixels, as the `react-window` API
// requires that these are provided so that they can be efficiently rendered.
const monthItemHeights = months.map(month => {
const firstDayOffset = (month.getDay() + 7 - props.weekStartsOn) % 7;
const monthLength = DateUtils.daysInMonth(
month.getYear(),
month.getMonth(),
);
const calendarGridSpaces = firstDayOffset + monthLength;
const rowCount = Math.ceil(calendarGridSpaces / COLUMN_COUNT);
return BASE_MONTH_ITEM_HEIGHT + ROW_HEIGHT * rowCount;
});
this.getHtmlElement().dir === 'rtl' ? { direction: 'rtl' } : {}
}
width="100%"
height={this.state.outerHeight}
estimatedItemSize={ESTIMATED_MONTH_ITEM_HEIGHT}
itemSize={this.getItemSize}
itemCount={this.state.months.length}
rowCount={this.state.months.length}
overscanCount={1}
initialScrollOffset={this.calculateOffsetInPixels(
isSameMonth(this.props.focusedDate, this.props.selectedDate)
? DateUtils.differenceInCalendarMonths(
this.props.selectedDate,
this.props.minDate,
)
: DateUtils.differenceInCalendarMonths(
this.props.focusedDate,
this.props.minDate,
),
)}
>
{this.rowRenderer}
);
}
}
>
{this.rowRenderer}
);
}
}