diff --git a/packages/grafana-ui/src/components/DateTimePickers/DateTimePicker/DateTimePicker.tsx b/packages/grafana-ui/src/components/DateTimePickers/DateTimePicker/DateTimePicker.tsx index 49fbb738328..3bdddaabdd3 100644 --- a/packages/grafana-ui/src/components/DateTimePickers/DateTimePicker/DateTimePicker.tsx +++ b/packages/grafana-ui/src/components/DateTimePickers/DateTimePicker/DateTimePicker.tsx @@ -3,7 +3,7 @@ import { useMedia } from 'react-use'; import Calendar from 'react-calendar/dist/entry.nostyle'; import { css, cx } from '@emotion/css'; import { dateTimeFormat, DateTime, dateTime, GrafanaTheme2, isDateTime } from '@grafana/data'; -import { Button, ClickOutsideWrapper, Field, HorizontalGroup, Icon, Input, Portal } from '../..'; +import { Button, ClickOutsideWrapper, HorizontalGroup, Icon, InlineField, Input, Portal } from '../..'; import { TimeOfDayPicker } from '../TimeOfDayPicker'; import { getBodyStyles, getStyles as getCalendarStyles } from '../TimeRangePicker/TimePickerCalendar'; import { useStyles2, useTheme2 } from '../../../themes'; @@ -16,11 +16,13 @@ export interface Props { onChange: (date: DateTime) => void; /** label for the input field */ label?: ReactNode; + /** Set the latest selectable date */ + maxDate?: Date; } const stopPropagation = (event: React.MouseEvent) => event.stopPropagation(); -export const DateTimePicker: FC = ({ date, label, onChange }) => { +export const DateTimePicker: FC = ({ date, maxDate, label, onChange }) => { const [isOpen, setOpen] = useState(false); const theme = useTheme2(); @@ -50,7 +52,13 @@ export const DateTimePicker: FC = ({ date, label, onChange }) => { {isOpen ? ( isFullscreen ? ( setOpen(false)}> - setOpen(false)} /> + setOpen(false)} + maxDate={maxDate} + /> ) : ( @@ -72,6 +80,7 @@ interface DateTimeCalendarProps { onChange: (date: DateTime) => void; onClose: () => void; isFullscreen: boolean; + maxDate?: Date; } interface InputProps { @@ -127,11 +136,13 @@ const DateTimeInput: FC = ({ date, label, onChange, isFullscreen, on const icon =