Home Reference Source Repository

src/calendar/SelectorItem.js

/**
 * @file Calendar/CalendarSelectorItem
 * @author cxtom([email protected])
 */

import React, {PropTypes} from 'react';
import {create} from 'melon-core/classname/cxBuilder';
import Item from './Item';
import * as DateTime from '../util';

const cx = create('CalendarSelectorItem');

/**
 * melon-calendar 年、月选择单元
 *
 * @class
 * @extends {Item}
 */
export default class CalendarSelectorItem extends Item {

    /**
     * 渲染
     *
     * @public
     * @return {React.Element}
     */
    render() {

        const props = this.props;

        const {
            date,
            mode,
            disabled,
            selected,
            ...others
        } = props;


        return (
            <li
                {...others}
                data-mode={mode}
                data-value={date}
                onClick={disabled ? null : this.onClick}
                className={cx(props).addStates({selected}).build()} >
                <span>
                    {mode === 'year' ? date.getFullYear() : DateTime.getShortMonth(date)}
                </span>
            </li>
        );

    }

}

CalendarSelectorItem.displayName = 'CalendarSelectorItem';

CalendarSelectorItem.propTypes = {
    date: PropTypes.object.isRequired,
    onClick: PropTypes.func,
    disabled: PropTypes.bool,
    selected: PropTypes.bool,
    mode: PropTypes.oneOf(['month', 'year'])
};