UNPKG

react-native-plain-calendar

Version:
30 lines (29 loc) 1.35 kB
import * as dateFns from 'date-fns'; import * as React from 'react'; import { useMemo } from 'react'; import { View } from 'react-native'; import { dateFormats } from '../../constants'; import { s } from './styles'; import { Weekday } from './Weekday'; function Week({ currentMonth, weekdayContainerStyle, weekdayStyle, weekContainerStyle, weekdays, weekStartsOn, WeekdaysComponent, }) { if (WeekdaysComponent) { return <WeekdaysComponent />; } const formatedWeekdays = useMemo(() => { const secondPart = weekdays.slice(0, weekStartsOn); const firstPart = weekdays.slice(weekStartsOn); const whole = firstPart.concat(secondPart); return whole; }, [weekdays, weekStartsOn]); const dateFormat = dateFormats.daysFormat; const days = []; const startDate = useMemo(() => dateFns.startOfWeek(currentMonth, { weekStartsOn, }), [currentMonth, weekStartsOn]); for (let i = 0; i < 7; i += 1) { days.push(<Weekday key={i} index={i} dateFormat={dateFormat} formatedWeekdays={formatedWeekdays} startDate={startDate} currentMonth={currentMonth} weekdayContainerStyle={weekdayContainerStyle} weekdayStyle={weekdayStyle}/>); } return (<View style={[s.weekContainer, weekContainerStyle]}>{days}</View>); } const WeekMemo = React.memo(Week); export { WeekMemo as Week };