import { DownOutlined } from '@ant-design/icons'; import Period from 'Types/app/period'; import { Dropdown, Button } from 'antd'; import cn from 'classnames'; import { observer } from 'mobx-react-lite'; import React from 'react'; import { components } from 'react-select'; import { CUSTOM_RANGE, DATE_RANGE_OPTIONS } from 'App/dateRange'; import DateRangePopup from 'Shared/DateRangeDropdown/DateRangePopup'; import OutsideClickDetectingDiv from 'Shared/OutsideClickDetectingDiv'; import Select from 'Shared/Select'; interface Props { period: any; onChange: (data: any) => void; disableCustom?: boolean; right?: boolean; timezone?: string; isAnt?: boolean; small?: boolean; useButtonStyle?: boolean; // New prop to control button style [x: string]: any; } function SelectDateRange(props: Props) { const [isCustom, setIsCustom] = React.useState(false); const { right = false, period, disableCustom = false, timezone, useButtonStyle = false } = props; let selectedValue = DATE_RANGE_OPTIONS.find( (obj: any) => obj.value === period.rangeName ); const options = DATE_RANGE_OPTIONS.filter((obj: any) => disableCustom ? obj.value !== CUSTOM_RANGE : true ); const onChange = (value: any) => { if (value === CUSTOM_RANGE) { setTimeout(() => { setIsCustom(true); }, 1); } else { props.onChange(new Period({ rangeName: value })); } }; const onApplyDateRange = (value: any) => { const range = new Period({ rangeName: CUSTOM_RANGE, start: value.start, end: value.end, }); props.onChange(range); setIsCustom(false); }; const isCustomRange = period.rangeName === CUSTOM_RANGE; const customRange = isCustomRange ? period.rangeFormatted() : ''; if (props.isAnt) { const menuProps = { items: options.map((opt) => ({ label: opt.label, key: opt.value, })), defaultSelectedKeys: selectedValue?.value ? [selectedValue.value] : undefined, onClick: (e: any) => { onChange(e.key); }, }; return (
{useButtonStyle ? ( ) : (
{isCustomRange ? customRange : selectedValue?.label}
)}
{isCustom && ( { if ( e.target.parentElement.parentElement.classList.contains( 'rc-time-picker-panel-select' ) || e.target.parentElement.parentElement.classList[0]?.includes( '-menu' ) || e.target.className.includes('ant-picker') ) { return false; } setIsCustom(false); }} >
setIsCustom(false)} selectedDateRange={period.range} />
)}
); } return (