bee-datepicker
Version:
DatePicker ui component for react
73 lines (67 loc) • 2.13 kB
JSX
import React from 'react';
import ReactDOM from 'react-dom';
import PropTypes from 'prop-types';
import toFragment from 'rc-util/lib/Children/mapSelf';
import cx from 'classnames';
import TodayButton from '../calendar/TodayButton';
import OkButton from '../calendar/OkButton';
import TimePickerButton from '../calendar/TimePickerButton';
export default class CalendarFooter extends React.Component {
static propTypes = {
prefixCls: PropTypes.string,
showDateInput: PropTypes.bool,
disabledTime: PropTypes.any,
timePicker: PropTypes.element,
selectedValue: PropTypes.any,
showOk: PropTypes.bool,
onSelect: PropTypes.func,
value: PropTypes.object,
renderFooter: PropTypes.func,
defaultValue: PropTypes.object,
mode: PropTypes.string,
}
onSelect(value) {
this.props.onSelect(value);
}
getRootDOMNode() {
return ReactDOM.findDOMNode(this);
}
render() {
const props = this.props;
const { value, prefixCls, showOk, timePicker, renderFooter, mode } = props;
let footerEl = null;
const extraFooter = renderFooter && renderFooter(mode);
if (props.showToday || timePicker || extraFooter) {
let nowEl;
if (props.showToday) {
nowEl = <TodayButton {...props} value={value} />;
}
let okBtn;
if (showOk === true || showOk !== false && !!props.timePicker) {
okBtn = <OkButton {...props} />;
}
let timePickerBtn;
if (!!props.timePicker) {
timePickerBtn = <TimePickerButton {...props} />;
}
let footerBtn;
if (nowEl || timePickerBtn || okBtn || extraFooter) {
footerBtn = (
<span className={`${prefixCls}-footer-btn`}>
{extraFooter ? <div className={`${prefixCls}-footer-extra`}>{extraFooter}</div> : null}
{toFragment([nowEl, timePickerBtn, okBtn])}
</span>
);
}
const cls = cx(`${prefixCls}-footer`, {
[`${prefixCls}-footer-show-ok`]: okBtn,
});
footerEl = (
<div className={cls}>
{footerBtn}
</div>
);
}
return footerEl;
}
}