123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475 |
- import React from 'react'
- import styles from './index.less'
- import PropTypes from 'prop-types'
- import Item from '../ContentItem'
- class Content extends React.Component {
- constructor() {
- super();
- this.state= {
- now: new Date().getTime()
- }
- }
- genItems(){
- let is_now_month=this.props.selectTime.year===this.props.year && this.props.selectTime.month===this.props.month;
- const Items=[];
- const first_day=new Date(this.props.year,this.props.month-1,1).getDay();
- let key=0;
- if(first_day!==7){
- let pre_day=new Date(this.props.year,this.props.month-1,0).getDate()-first_day+1;
- for(let i=0;i<first_day;i++){
- Items.push(<Item value={pre_day++} key={key++} clazzKey={'gray'} handleClick={this.props.handleClick}/>);
- }
- }
- const last_date=new Date(this.props.year,this.props.month,0);
- const day = last_date.getDate();
- for(let i=1,len=day;i<=len;i++){
- const currentTime = new Date(this.props.year,this.props.month-1,i);
- const exceed = +currentTime > this.state.now&&!this.props.canSelectFuture;
- let itemClassName = "";
- if(exceed) {
- itemClassName = "gray";
- }else{
- itemClassName = (is_now_month && i===this.props.selectTime.day)?'select':'';
- }
- Items.push(<Item value={i} key={key++} handleClick={this.props.handleClick} clazzKey={itemClassName}/>);
- }
- if(last_date.getDay()!==6){
- let next_month_first_day=new Date(this.props.year,this.props.month,1).getDay();
- for(let i=1,len=7-next_month_first_day;i<=len;i++){
- Items.push(<Item value={i} key={key++} clazzKey={'gray'} handleClick={this.props.handleClick}/>);
- }
- }
- return Items;
- }
- render() {
- return (
- <div className={styles.wrapper}>
- <ol className={styles.week}>
- <li>日</li>
- <li>一</li>
- <li>二</li>
- <li>三</li>
- <li>四</li>
- <li>五</li>
- <li>六</li>
- </ol>
- <ol className={styles.day}>
- {this.genItems()}
- </ol>
- </div>
- )
- }
- }
- export default Content;
- Content.propTypes={
- year:PropTypes.number,
- month:PropTypes.number,
- selectTime:PropTypes.object,
- handleClick:PropTypes.func,
- canSelectFuture:PropTypes.bool
- };
|