UNPKG

@e-group/material-lab

Version:

EGroup Team Lab - Incubator for EGroup Team experimental React components.

111 lines (103 loc) 3.12 kB
import _slicedToArray from "@babel/runtime/helpers/esm/slicedToArray"; import React, { useEffect, useState } from 'react'; import { addMonths } from 'date-fns'; import { Divider, createStyles, withStyles, Button } from '@material-ui/core'; import Month from './Month'; import Time from './Time'; import MenuActions from './MenuActions'; export const MARKERS = { FIRST_MONTH: Symbol('firstMonth'), SECOND_MONTH: Symbol('secondMonth') }; const styles = theme => createStyles({ root: { display: 'flex', flexDirection: 'column', [theme.breakpoints.down('xs')]: { width: '100%', alignItems: 'center', justifyContent: 'center' } }, container: { display: 'flex', flexDirection: 'column' }, item: { display: 'flex' }, monthContainer: { marginBottom: 0 } }); const Menu = props => { const classes = props.classes, startDate = props.startDate, endDate = props.endDate, hoverDay = props.hoverDay, minDate = props.minDate, maxDate = props.maxDate, onDayClick = props.onDayClick, onDayHover = props.onDayHover, onTimeClick = props.onTimeClick, onConfirmClick = props.onConfirmClick, touched = props.touched, focused = props.focused, startTime = props.startTime, endTime = props.endTime; const _useState = useState(new Date()), _useState2 = _slicedToArray(_useState, 2), month = _useState2[0], setMonth = _useState2[1]; useEffect(() => { if (focused === 'start' && startDate) { setMonth(startDate); } if (focused === 'end' && endDate) { setMonth(endDate); } }, [endDate, focused, startDate]); const handleMonthNavigate = action => { setMonth(addMonths(month, action)); }; return /*#__PURE__*/React.createElement("div", { className: classes.root }, /*#__PURE__*/React.createElement("div", { className: classes.container }, /*#__PURE__*/React.createElement("div", { className: classes.item }, /*#__PURE__*/React.createElement(Month, { startDate: startDate, endDate: endDate, minDate: minDate, maxDate: maxDate, hoverDay: hoverDay, value: month, touched: touched, focused: focused, navState: [true, true], setValue: setMonth, onDayClick: onDayClick, onDayHover: onDayHover, onMonthNavigate: handleMonthNavigate, classes: { monthContainer: classes.monthContainer } }), /*#__PURE__*/React.createElement(Divider, { orientation: "vertical", flexItem: true }), /*#__PURE__*/React.createElement(Time, { onTimeClick: onTimeClick, value: focused === 'start' ? startTime : endTime })), /*#__PURE__*/React.createElement("div", { className: classes.item }, /*#__PURE__*/React.createElement(MenuActions, null, /*#__PURE__*/React.createElement(Button, { disabled: focused === 'start' ? !startDate : !endDate, onClick: onConfirmClick, disableElevation: true, color: "primary" }, "\u78BA\u8A8D"))))); }; export default withStyles(styles, { name: 'EgMenu' })(Menu);