react-native-booking-calendar
Version:
calendar component for booking app
88 lines (84 loc) • 2.35 kB
JavaScript
import React, { useEffect, useState } from 'react';
import { Dimensions, StyleSheet, Text, View } from 'react-native';
import Row from './Row';
const {
width: windowWidth
} = Dimensions.get('window');
const Time = ({
defaultRow,
startTime,
endTime,
intervalMinutes,
dateTime,
date,
fontColor,
borderColor
}) => {
const [time, setTime] = useState();
useEffect(() => {
const arr = [];
const datetime = startTime;
const startHour = startTime.getHours();
const endHour = endTime.getHours();
const endMinute = endTime.getMinutes();
arr.push(startTime.toTimeString().slice(0, 5));
const loop = (endHour - startHour) * 60 / intervalMinutes + endMinute;
for (let i = 0; i < loop; i++) {
datetime.setMinutes(datetime.getMinutes() + intervalMinutes);
arr.push(datetime.toTimeString().slice(0, 5));
}
setTime(arr);
}, [startTime, endTime, intervalMinutes, dateTime]);
return /*#__PURE__*/React.createElement(View, {
style: TimeStyles.timeRowWrapper
}, /*#__PURE__*/React.createElement(View, {
style: TimeStyles.timeWrapper
}, time === null || time === void 0 ? void 0 : time.map(item => /*#__PURE__*/React.createElement(View, {
key: item,
style: [TimeStyles.time, {
borderColor: borderColor
}]
}, /*#__PURE__*/React.createElement(Text, {
style: [TimeStyles.timeText, {
color: fontColor
}]
}, item)))), /*#__PURE__*/React.createElement(View, {
style: TimeStyles.markRows
}, time === null || time === void 0 ? void 0 : time.map(t => /*#__PURE__*/React.createElement(View, {
key: t,
style: TimeStyles.rowWrapper
}, date.map(eachDate => /*#__PURE__*/React.createElement(Row, {
defaultRow: defaultRow,
key: eachDate.date.toFormat('L/dd') + t,
dateTimeObj: dateTime,
date: eachDate.date,
timeString: t,
borderColor: borderColor
}))))));
};
const TimeStyles = StyleSheet.create({
timeRowWrapper: {
flexDirection: 'row'
},
timeWrapper: {
width: windowWidth * 0.11
},
time: {
borderTopWidth: 1,
borderRightWidth: 1,
height: 50,
justifyContent: 'center',
alignItems: 'center'
},
timeText: {
fontSize: 12
},
rowWrapper: {
flexDirection: 'row'
},
markRows: {
flexDirection: 'column'
}
});
export default Time;
//# sourceMappingURL=Time.js.map