@appearhere/bloom
Version:
Appear Here's pattern library and styleguide
65 lines (55 loc) • 1.28 kB
JavaScript
import PropTypes from 'prop-types';
import React from 'react';
import cx from 'classnames';
import momentPropTypes from 'react-moment-proptypes';
import moment from 'moment';
import css from './CalendarItem.css';
const defaultDate = moment();
export const defaultClassNames = {
root: css.root,
today: css.today,
outOfRange: css.outOfRange,
};
const CalendarDay = (props) => {
const {
day,
format,
className,
dayClassName,
classNames,
today,
outOfRange,
...rest,
} = props;
const classes = cx(
classNames.root,
today ? classNames.today : null,
outOfRange ? classNames.outOfRange : null,
className,
);
return day ? (
<div { ...rest } className={ classes }>
<span className={ dayClassName }>{ day.format(format) }</span>
</div>
) : (
<div className={ classes }>
{ '\u00a0' }
</div>
);
};
CalendarDay.propTypes = {
day: momentPropTypes.momentObj,
format: PropTypes.string,
dayClassName: PropTypes.string,
className: PropTypes.string,
classNames: PropTypes.object,
today: PropTypes.bool,
outOfRange: PropTypes.bool,
};
CalendarDay.defaultProps = {
day: defaultDate,
format: 'D',
dayClassName: '',
classNames: defaultClassNames,
};
export default CalendarDay;