import { Dropdown } from 'semantic-ui-react'; import cn from 'classnames'; import { getDateRangeFromValue, getDateRangeLabel, dateRangeValues, getDateRangeFromTs, CUSTOM_RANGE, DATE_RANGE_VALUES, } from 'App/dateRange'; import { Icon } from 'UI'; import DateRangePopup from './DateRangePopup'; import DateOptionLabel from './DateOptionLabel'; import styles from './dateRangeDropdown.css'; const getDateRangeOptions = (customRange = getDateRangeFromValue(CUSTOM_RANGE)) => dateRangeValues.map(value => ({ value, text: , content: getDateRangeLabel(value), })); export default class DateRangeDropdown extends React.PureComponent { state = { showDateRangePopup: false, range: null, value: DATE_RANGE_VALUES.TODAY, }; static getDerivedStateFromProps(props) { const { rangeValue, startDate, endDate } = props; if (rangeValue) { const range = rangeValue === CUSTOM_RANGE ? getDateRangeFromTs(startDate, endDate) : getDateRangeFromValue(rangeValue); return { value: rangeValue, range, }; } return null; } onCancelDateRange = () => this.setState({ showDateRangePopup: false }); onApplyDateRange = (range, value) => { this.setState({ showDateRangePopup: false, range, value, }); this.props.onChange({ startDate: range.start.unix() * 1000, endDate: range.end.unix() * 1000, rangeValue: value, }); } onItemClick = (event, { value }) => { if (value !== CUSTOM_RANGE) { const range = getDateRangeFromValue(value); this.onApplyDateRange(range, value); } else { this.setState({ showDateRangePopup: true }); } } render() { const { customRangeRight, button = false, className, direction = 'right', customHidden=false, show30Minutes=false } = this.props; const { showDateRangePopup, value, range } = this.state; let options = getDateRangeOptions(range); if (customHidden) { options.pop(); } if (!show30Minutes) { options.shift() } return (
{ value === CUSTOM_RANGE ? range.start.format('MMM Do YY, hh:mm A') + ' - ' + range.end.format('MMM Do YY, hh:mm A') : getDateRangeLabel(value) }
: null } selection={!button} name="sessionDateRange" direction={ direction } className={ button ? "" : "customDropdown" } // pointing="top left" placeholder="Select..." icon={ null } > { options.map(props => ) } { showDateRangePopup &&
} ); } }