Project

General

Profile

Download (2.45 KB) Statistics
| Branch: | Tag: | Revision:
import React from 'react';
import PropTypes from 'prop-types';
import {
FormControl,
InputGroup,
Icon,
OverlayTrigger,
Popover,
} from 'patternfly-react';
import TimeInput from './TimeComponents/TimeInput';

class TimePicker extends React.Component {
getDateFromTime = time => {
if (Date.parse(time)) {
return new Date(time);
}
return new Date(`1/1/1 ${time}`);
};
state = {
value: this.getDateFromTime(this.props.value),
};
formatDate = () => {
const { locale } = this.props;
const { value } = this.state;
const options = { hour: '2-digit', minute: '2-digit' };
return value.toLocaleString(locale, options);
};
setSelected = date => {
if (Date.parse(date)) {
const newDate = new Date(date);
this.setState({ value: newDate });
} else if (Date.parse(`1/1/1 ${date}`)) {
const newDate = new Date(`1/1/1 ${date}`);
this.setState({ value: newDate });
}
};
render() {
const { locale } = this.props;
const popover = (
<Popover
id="popover-date-picker"
className="bootstrap-datetimepicker-widget dropdown-menu"
>
<ul className="list-unstyled">
<li className="picker-switch accordion-toggle">
<table className="table-condensed">
<tbody>
<tr />
</tbody>
</table>
</li>
<li>
<TimeInput
time={this.state.value}
setSelected={this.setSelected}
locale={locale}
/>
</li>
</ul>
</Popover>
);
return (
<div>
<OverlayTrigger
trigger="click"
placement="top"
overlay={popover}
rootClose
>
<InputGroup className="input-group date-time-picker-pf">
<FormControl
aria-label="date-time-picker-input"
type="text"
value={this.formatDate()}
onChange={e => this.setSelected(e.target.value)}
/>
<InputGroup.Addon className="date-picker-pf">
<Icon type="fa" name="clock-o" />
</InputGroup.Addon>
</InputGroup>
</OverlayTrigger>
</div>
);
}
}

TimePicker.propTypes = {
value: PropTypes.oneOfType([PropTypes.instanceOf(Date), PropTypes.string]),
locale: PropTypes.string,
};
TimePicker.defaultProps = {
value: new Date(),
locale: 'en-US',
};
export default TimePicker;
(6-6/8)