1 import React from 'react';
2 import PropTypes from 'prop-types';
3 import DatePicker from 'react-datepicker';
4 import moment from 'moment';
5 import SVGIcon from 'sdc-ui/lib/react/SVGIcon.js';
7 class CustomInput extends React.Component {
10 placeHolderText: PropTypes.string,
11 onChange: PropTypes.func,
12 onClick: PropTypes.func,
13 value: PropTypes.string
17 const {placeholderText, onClick, onClear, inputRef, value: date} = this.props;
18 const text = date ? date : placeholderText;
19 const textStyle = date ? '' : 'placeholder';
21 <div onClick={onClick} ref={inputRef} className='datepicker-custom-input'>
22 <div className={`datepicker-text ${textStyle}`}>{text}</div>
23 {date && <SVGIcon onClick={e => {e.stopPropagation(); onClear();}} name='close' className='clear-input'/>}
24 <SVGIcon name='calendar'/>
30 const parseDate = (date, format) => {
31 return typeof date === 'number' ? moment.unix(date) : moment(date, format);
34 class Datepicker extends React.Component {
36 date: PropTypes.oneOfType([PropTypes.string, PropTypes.number]),
37 format: PropTypes.string,
38 onChange: PropTypes.func,
39 selectsStart: PropTypes.bool,
40 selectsEnd: PropTypes.bool,
41 startDate: PropTypes.oneOfType([PropTypes.string, PropTypes.number]),
42 endDate: PropTypes.oneOfType([PropTypes.string, PropTypes.number]),
43 disabled: PropTypes.bool,
44 label: PropTypes.string,
45 isRequired: PropTypes.bool
48 let {date, format, onChange, selectsStart = false, startDate = null, endDate = null, selectsEnd = false,
49 disabled = false, inputRef} = this.props;
50 const placeholderText = 'Enter a date';
55 selected: date ? parseDate(date, format) : date,
59 startDate: startDate ? parseDate(startDate, format) : startDate,
60 endDate: endDate ? parseDate(endDate, format) : endDate
64 <div className='customized-date-picker'>
66 calendarClassName='customized-date-picker-calendar'
67 customInput={<CustomInput inputRef={inputRef} onClear={() => onChange(undefined)} placeholderText={placeholderText}/>}
68 minDate={selectsEnd && props.startDate}
69 maxDate={selectsStart && props.endDate}
76 export default Datepicker;