react-native-booking-calendar
Version:
calendar component for booking app
106 lines (93 loc) • 3.73 kB
JavaScript
"use strict";
Object.defineProperty(exports, "__esModule", {
value: true
});
exports.default = void 0;
var _react = _interopRequireWildcard(require("react"));
var _reactNative = require("react-native");
var _Row = _interopRequireDefault(require("./Row"));
function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
function _getRequireWildcardCache() { if (typeof WeakMap !== "function") return null; var cache = new WeakMap(); _getRequireWildcardCache = function () { return cache; }; return cache; }
function _interopRequireWildcard(obj) { if (obj && obj.__esModule) { return obj; } if (obj === null || typeof obj !== "object" && typeof obj !== "function") { return { default: obj }; } var cache = _getRequireWildcardCache(); if (cache && cache.has(obj)) { return cache.get(obj); } var newObj = {}; var hasPropertyDescriptor = Object.defineProperty && Object.getOwnPropertyDescriptor; for (var key in obj) { if (Object.prototype.hasOwnProperty.call(obj, key)) { var desc = hasPropertyDescriptor ? Object.getOwnPropertyDescriptor(obj, key) : null; if (desc && (desc.get || desc.set)) { Object.defineProperty(newObj, key, desc); } else { newObj[key] = obj[key]; } } } newObj.default = obj; if (cache) { cache.set(obj, newObj); } return newObj; }
const {
width: windowWidth
} = _reactNative.Dimensions.get('window');
const Time = ({
defaultRow,
startTime,
endTime,
intervalMinutes,
dateTime,
date,
fontColor,
borderColor
}) => {
const [time, setTime] = (0, _react.useState)();
(0, _react.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.default.createElement(_reactNative.View, {
style: TimeStyles.timeRowWrapper
}, /*#__PURE__*/_react.default.createElement(_reactNative.View, {
style: TimeStyles.timeWrapper
}, time === null || time === void 0 ? void 0 : time.map(item => /*#__PURE__*/_react.default.createElement(_reactNative.View, {
key: item,
style: [TimeStyles.time, {
borderColor: borderColor
}]
}, /*#__PURE__*/_react.default.createElement(_reactNative.Text, {
style: [TimeStyles.timeText, {
color: fontColor
}]
}, item)))), /*#__PURE__*/_react.default.createElement(_reactNative.View, {
style: TimeStyles.markRows
}, time === null || time === void 0 ? void 0 : time.map(t => /*#__PURE__*/_react.default.createElement(_reactNative.View, {
key: t,
style: TimeStyles.rowWrapper
}, date.map(eachDate => /*#__PURE__*/_react.default.createElement(_Row.default, {
defaultRow: defaultRow,
key: eachDate.date.toFormat('L/dd') + t,
dateTimeObj: dateTime,
date: eachDate.date,
timeString: t,
borderColor: borderColor
}))))));
};
const TimeStyles = _reactNative.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'
}
});
var _default = Time;
exports.default = _default;
//# sourceMappingURL=Time.js.map