public/js/components/FormFields/FormFieldDateInput.js (52 lines of code) (raw):

import React from 'react'; import {PropTypes} from 'prop-types'; import {SingleDatePicker} from 'react-dates'; import format from 'date-fns/format'; import ShowErrors from '../Utilities/ShowErrors'; import { errorPropType } from '../../constants/errorPropType'; export default class FormFieldDateInput extends React.Component { static propTypes = { fieldLabel: PropTypes.string, fieldName: PropTypes.string, fieldValue: PropTypes.number, fieldPlaceholder: PropTypes.string, fieldErrors: PropTypes.arrayOf(errorPropType), formRowClass: PropTypes.string, onUpdateField: PropTypes.func, isOutsideRange: PropTypes.func, placeholder: PropTypes.string }; state = { focused: false }; onDateChange = (momentDate) => { this.props.onUpdateField(momentDate.valueOf()); }; getPlaceholder = () => { if (this.props.fieldValue) { return format(this.props.fieldValue, 'DD/MM/YYYY'); } if (this.props.placeholder) { return this.props.placeholder; } return 'Pick Expiry Date'; }; render() { return ( <div className={this.props.formRowClass || "form__row"}> {this.props.fieldLabel ? <label htmlFor={this.props.fieldName} className="form__label">{this.props.fieldLabel}</label> : false} <SingleDatePicker id="date_input" date={this.state.fieldValue} focused={this.state.focused} onDateChange={this.onDateChange} onFocusChange={({ focused }) => { this.setState({ focused }); }} numberOfMonths={1} placeholder={this.getPlaceholder()} isOutsideRange={this.props.isOutsideRange} /> <ShowErrors errors={this.props.fieldErrors}/> </div> ); } }