UNPKG

bee-datepicker

Version:
73 lines (67 loc) 2.13 kB
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; } }