import React from 'react'; import PropTypes from 'prop-types'; import Select from '../../select'; import Radio from '../../radio'; class CardHeader extends React.PureComponent { static propTypes = { yearRange: PropTypes.arrayOf(PropTypes.number), yearRangeOffset: PropTypes.number, locale: PropTypes.object, }; static defaultProps = { yearRangeOffset: 10, }; selectContainerHandler = target => { return target.parentNode; }; getYearSelect(year) { const { prefix, yearRangeOffset, yearRange = [], locale } = this.props; let [startYear, endYear] = yearRange; if (!startYear || !endYear) { startYear = year - yearRangeOffset; endYear = year + yearRangeOffset; } const options = []; for (let i = startYear; i <= endYear; i++) { options.push( {i} , ); } return ( ); } getMonthSelect(month) { const { prefix, momentLocale, locale } = this.props; const localeMonths = momentLocale.monthsShort(); const options = []; for (let i = 0; i < 12; i++) { options.push( {localeMonths[i]} , ); } return ( ); } onYearChange = year => { const { visibleMonth, changeVisibleMonth } = this.props; changeVisibleMonth(visibleMonth.clone().year(year), 'yearSelect'); }; changeVisibleMonth = month => { const { visibleMonth, changeVisibleMonth } = this.props; changeVisibleMonth(visibleMonth.clone().month(month), 'monthSelect'); }; onModePanelChange = mode => { this.props.changeMode(mode); }; render() { const { prefix, mode, locale, visibleMonth } = this.props; const yearSelect = this.getYearSelect(visibleMonth.year()); const monthSelect = mode === 'month' ? null : this.getMonthSelect(visibleMonth.month()); const panelSelect = ( {locale.month} {locale.year} ); return (
{yearSelect} {monthSelect} {panelSelect}
); } } export default CardHeader;