UNPKG

f-react-native-schedule

Version:

Flexible scheduling library with more built-in features and enhanced customization options

73 lines (70 loc) 2.3 kB
import dayjs from 'dayjs'; import { defaultSchedulingSettings, Hours } from './constants'; import isSameOrAfter from 'dayjs/plugin/isSameOrAfter'; import isSameOrBefore from 'dayjs/plugin/isSameOrBefore'; import { Dimensions } from 'react-native'; dayjs.extend(isSameOrAfter); dayjs.extend(isSameOrBefore); export function getHours(startHourRaw, endHourRaw) { const [startHour, startMinute = '00'] = startHourRaw.split(':'); const [endHour, endMinute = '00'] = endHourRaw.split(':'); const start = dayjs().hour(parseInt(startHour, 10)).minute(parseInt(startMinute, 10)); const end = dayjs().hour(parseInt(endHour, 10)).minute(parseInt(endMinute, 10)); const hours = Hours; Hours.forEach((hour, key) => { const hourMoment = dayjs().hour(hour); if (!hourMoment.isSameOrAfter(start, 'hour')) { delete hours[key]; } if (!hourMoment.isSameOrBefore(end, 'hour')) { delete hours[key]; } }); return hours; } export function getDays(selectedDate, currentView, daysWeek) { if (currentView === 'day') return [dayjs(selectedDate).day()]; return daysWeek; } export function getCellDimensions(view, settings) { if (view === 'day') { return { width: Dimensions.get('window').width - 50, height: settings.height }; } return settings; } export function getScrollViewContainerWidth(view, days, cellWidth) { if (view === 'day') return Dimensions.get('window').width - 80; return cellWidth * days.length; } export function isUndefined(value) { return value === undefined; } export function getSchedulingSettings(settings) { const { fields, style, render } = settings; return { fields: { subject: { ...defaultSchedulingSettings.fields.subject, ...((fields === null || fields === void 0 ? void 0 : fields.subject) && { ...fields.subject }) }, startTime: { ...defaultSchedulingSettings.fields.startTime, ...((fields === null || fields === void 0 ? void 0 : fields.startTime) && { ...fields.startTime }) }, endTime: { ...defaultSchedulingSettings.fields.endTime, ...((fields === null || fields === void 0 ? void 0 : fields.endTime) && { ...fields.endTime }) } }, style, render }; } //# sourceMappingURL=utils.js.map