import * as React from 'react'; import * as moment from 'moment'; import { PREFIX_CLS } from './Constants'; import Select from '../select'; import { Group, Button } from '../radio'; const Option = Select.Option; export interface HeaderProps { prefixCls?: string; locale?: any; fullscreen?: boolean; yearSelectOffset?: number; yearSelectTotal?: number; type?: string; onValueChange?: (value) => void; onTypeChange?: (type: string) => void; value: any; } export default class Header extends React.Component { static defaultProps = { prefixCls: `${PREFIX_CLS}-header`, yearSelectOffset: 10, yearSelectTotal: 20, }; private calenderHeaderNode: any; getYearSelectElement(year) { const { yearSelectOffset, yearSelectTotal, locale, prefixCls, fullscreen } = this.props; const start = year - (yearSelectOffset as number); const end = start + (yearSelectTotal as number); const suffix = locale.year === '年' ? '年' : ''; const options: React.ReactElement[] = []; for (let index = start; index < end; index++) { options.push(); } return ( ); } getMonthsLocale(value: moment.Moment) { const current = value.clone(); const localeData = value.localeData(); const months: any[] = []; for (let i = 0; i < 12; i++) { current.month(i); months.push(localeData.monthsShort(current)); } return months; } getMonthSelectElement(month, months) { const props = this.props; const { prefixCls, fullscreen } = props; const options: React.ReactElement[] = []; for (let index = 0; index < 12; index++) { options.push(); } return ( ); } onYearChange = (year) => { const newValue = this.props.value.clone(); newValue.year(parseInt(year, 10)); const onValueChange = this.props.onValueChange; if (onValueChange) { onValueChange(newValue); } } onMonthChange = (month) => { const newValue = this.props.value.clone(); newValue.month(parseInt(month, 10)); const onValueChange = this.props.onValueChange; if (onValueChange) { onValueChange(newValue); } } onTypeChange = (e: React.ChangeEvent) => { const onTypeChange = this.props.onTypeChange; if (onTypeChange) { onTypeChange(e.target.value); } } getCalenderHeaderNode = (node) => { this.calenderHeaderNode = node; } render() { const { type, value, prefixCls, locale, fullscreen } = this.props; const yearSelect = this.getYearSelectElement(value.year()); const monthSelect = type === 'date' ? this.getMonthSelectElement(value.month(), this.getMonthsLocale(value)) : null; const size = (fullscreen ? 'default' : 'small') as any; const typeSwitch = ( ); return (
{yearSelect} {monthSelect} {typeSwitch}
); } }