UNPKG

react-datepicker-cy

Version:

react datepicker component. (include persian jalaali calendar)

80 lines (71 loc) 2.13 kB
import React, { Component } from 'react'; import classnames from 'classnames'; import { persianNumber } from '../utils/persian'; import PropTypes from 'prop-types'; const styles = { wrapper: {}, button: { outline: 'none', cursor: 'pointer' } }; export default class Day extends Component { static propTypes = { day: PropTypes.object.isRequired, isCurrentMonth: PropTypes.bool, disabled: PropTypes.bool, selected: PropTypes.bool, hovered: PropTypes.bool, onClick: PropTypes.func, onMouseOver: PropTypes.func, isGregorian: PropTypes.bool }; state = { hovered : this.props.hovered ? this.props.hovered : false, }; shouldComponentUpdate(nextProps) { return nextProps.selected !== this.props.selected || nextProps.disabled !== this.props.disabled || nextProps.isCurrentMonth !== this.props.isCurrentMonth || nextProps.hovered !== this.props.hovered; } handleClick(event) { event.preventDefault(); event.stopPropagation(); event.nativeEvent.stopImmediatePropagation(); const { onClick, day } = this.props; if (onClick) { onClick(day); } } handleMouseOverOnDay(event) { event.preventDefault(); event.stopPropagation(); event.nativeEvent.stopImmediatePropagation(); const {onMouseOver, day} = this.props; if (onMouseOver) { onMouseOver(day); } } render() { const { day, disabled, selected, isCurrentMonth, onClick, styles , hovered ,isGregorian, ...rest } = this.props; const className = classnames(styles.dayWrapper, { [styles.selected]: selected, [styles.currentMonth]: isCurrentMonth }); return ( <div className={className}> <button type="button" disabled={disabled} {...rest} onClick={this.handleClick.bind(this) } onMouseOver={this.handleMouseOverOnDay.bind(this) } className={hovered ? "cal-day-hover" : ""} > { isGregorian?day.format('D'):persianNumber(day.format('jD')) } </button> </div> ); } }