f-react-native-schedule
Version:
Flexible scheduling library with more built-in features and enhanced customization options
67 lines (65 loc) • 2.43 kB
JavaScript
import React, { useMemo } from 'react';
import { View, ScrollView } from 'react-native';
import Sidebar from './Sidebar';
import Content from './Content';
import styles from './styles';
import { DaysWeek, defaultCellDimensions, defaultCellSettings, defaultHeaderSettings, defaultSchedulingSettings, defaultSidebarSettings } from './constants';
import { getCellDimensions, getDays, getHours, getSchedulingSettings } from './utils';
import ScheduleContext from './ScheduleContext';
const Schedule = _ref => {
let {
schedules = [],
currentView = 'week',
selectedDate = new Date(),
startHour = '00:00',
endHour = '24:00',
daysWeek = DaysWeek,
cellDimensions = defaultCellDimensions,
headerSettings = defaultHeaderSettings,
sidebarSettings = defaultSidebarSettings,
cellSettings = defaultCellSettings,
schedulingSettings = defaultSchedulingSettings,
onCellPress,
onCellLongPress,
onSchedulingPress,
onSchedulingLongPress,
style
} = _ref;
const value = useMemo(() => ({
schedules,
currentView,
selectedDate,
rawSchedules: schedules,
startHour,
endHour,
days: getDays(selectedDate, currentView, daysWeek),
hours: getHours(startHour, endHour),
daysWeek,
headerSettings: { ...defaultHeaderSettings,
...headerSettings
},
sidebarSettings: { ...defaultSidebarSettings,
...sidebarSettings
},
schedulingSettings: getSchedulingSettings(schedulingSettings),
cellDimensions: getCellDimensions(currentView, { ...defaultCellDimensions,
...cellDimensions
}),
cellSettings,
onCellPress,
onCellLongPress,
onSchedulingPress,
onSchedulingLongPress
}), [schedules, startHour, endHour, daysWeek, selectedDate, currentView, cellDimensions, headerSettings, sidebarSettings, cellSettings, schedulingSettings, onCellPress, onCellLongPress, onSchedulingPress, onSchedulingLongPress]);
return /*#__PURE__*/React.createElement(ScheduleContext.Provider, {
value: value
}, /*#__PURE__*/React.createElement(ScrollView, {
style: [styles.container, style],
showsVerticalScrollIndicator: true,
showsHorizontalScrollIndicator: true
}, /*#__PURE__*/React.createElement(View, {
style: styles.content
}, /*#__PURE__*/React.createElement(Sidebar, null), /*#__PURE__*/React.createElement(Content, null))));
};
export default Schedule;
//# sourceMappingURL=index.js.map