material-ui-arabic-datepicker
Version:
React components, that implements material design date and time pickers for material-ui v1 including a customized Datepicker with arabic header, months and weekdays and English numbers, modfied implementation from materail-ui-pickers
79 lines (68 loc) • 2 kB
JSX
import React from 'react';
import PropTypes from 'prop-types';
import withStyles from '@material-ui/core/styles/withStyles';
import withTheme from '@material-ui/core/styles/withTheme';
import Paper from '@material-ui/core/Paper';
import Tabs from '@material-ui/core/Tabs';
import Tab from '@material-ui/core/Tab';
import Icon from '@material-ui/core/Icon';
import * as viewType from '../constants/date-picker-view';
const viewToTabIndex = (openView) => {
if (openView === viewType.DATE || openView === viewType.YEAR) {
return 'date';
}
return 'time';
};
const tabIndexToView = (tab) => {
if (tab === 'date') {
return viewType.DATE;
}
return viewType.HOUR;
};
export const DateTimePickerTabs = (props) => {
const {
view,
onChange,
classes,
theme,
dateRangeIcon,
timeIcon,
} = props;
const indicatorColor = theme.palette.type === 'light' ? 'secondary' : 'primary';
const handleChange = (e, value) => {
if (value !== viewToTabIndex(view)) {
onChange(tabIndexToView(value));
}
};
return (
<Paper>
<Tabs
fullWidth
value={viewToTabIndex(view)}
onChange={handleChange}
className={classes.tabs}
indicatorColor={indicatorColor}
>
<Tab value="date" icon={<Icon>{dateRangeIcon}</Icon>} />
<Tab value="time" icon={<Icon>{timeIcon}</Icon>} />
</Tabs>
</Paper>
);
};
DateTimePickerTabs.propTypes = {
view: PropTypes.string.isRequired,
onChange: PropTypes.func.isRequired,
classes: PropTypes.object.isRequired,
theme: PropTypes.object.isRequired,
dateRangeIcon: PropTypes.node.isRequired,
timeIcon: PropTypes.node.isRequired,
};
const styles = theme => ({
tabs: {
color: theme.palette.common.white,
backgroundColor: theme.palette.type === 'light'
? theme.palette.primary.main
: theme.palette.background.default,
},
});
export default withTheme()(withStyles(styles, { name: 'MuiPickerDTTabs' })(DateTimePickerTabs));