diff --git a/src/components/CalendarView/hooks/useCalendarState.ts b/src/components/CalendarView/hooks/useCalendarState.ts index 0e48165..a8b4f36 100644 --- a/src/components/CalendarView/hooks/useCalendarState.ts +++ b/src/components/CalendarView/hooks/useCalendarState.ts @@ -5,9 +5,9 @@ import type {DateTime} from '@gravity-ui/date-utils'; import {useControlledState} from '@gravity-ui/uikit'; import type {ValueBase} from '../../types'; -import {createPlaceholderValue, mergeDateTime} from '../../utils/dates'; +import {constrainValue, createPlaceholderValue, mergeDateTime} from '../../utils/dates'; import {useDefaultTimeZone} from '../../utils/useDefaultTimeZone'; -import {calendarLayouts, constrainValue} from '../utils'; +import {calendarLayouts} from '../utils'; import type {CalendarLayout, CalendarState, CalendarStateOptionsBase} from './types'; diff --git a/src/components/CalendarView/hooks/useRangeCalendarState.ts b/src/components/CalendarView/hooks/useRangeCalendarState.ts index d1ee13e..42ce985 100644 --- a/src/components/CalendarView/hooks/useRangeCalendarState.ts +++ b/src/components/CalendarView/hooks/useRangeCalendarState.ts @@ -4,9 +4,8 @@ import type {DateTime} from '@gravity-ui/date-utils'; import {useControlledState} from '@gravity-ui/uikit'; import type {RangeValue} from '../../types'; -import {mergeDateTime} from '../../utils/dates'; +import {constrainValue, mergeDateTime} from '../../utils/dates'; import {useDefaultTimeZone} from '../../utils/useDefaultTimeZone'; -import {constrainValue} from '../utils'; import type {CalendarLayout, RangeCalendarState} from './types'; import {useCalendarState} from './useCalendarState'; diff --git a/src/components/CalendarView/utils.ts b/src/components/CalendarView/utils.ts index d4710df..23d6765 100644 --- a/src/components/CalendarView/utils.ts +++ b/src/components/CalendarView/utils.ts @@ -3,21 +3,6 @@ import type {DateTime} from '@gravity-ui/date-utils'; import type {CalendarLayout} from './hooks/types'; -export function constrainValue( - value: DateTime, - minValue: DateTime | undefined, - maxValue: DateTime | undefined, -) { - if (minValue && value.isBefore(minValue)) { - return minValue; - } - if (maxValue && maxValue.isBefore(value)) { - return maxValue; - } - - return value; -} - export function getDaysInPeriod(startDate: DateTime, _endDate: DateTime, mode: CalendarLayout) { const days: DateTime[] = []; diff --git a/src/components/RelativeDatePicker/__stories__/RelativeDatePicker.stories.tsx b/src/components/RelativeDatePicker/__stories__/RelativeDatePicker.stories.tsx index ea1c2fa..92e5f7b 100644 --- a/src/components/RelativeDatePicker/__stories__/RelativeDatePicker.stories.tsx +++ b/src/components/RelativeDatePicker/__stories__/RelativeDatePicker.stories.tsx @@ -8,7 +8,7 @@ import type {Meta, StoryObj} from '@storybook/react'; import {timeZoneControl} from '../../../demo/utils/zones'; import {Calendar} from '../../Calendar'; -import {constrainValue} from '../../CalendarView/utils'; +import {constrainValue} from '../../utils/dates'; import {RelativeDatePicker} from '../RelativeDatePicker'; import type {RelativeDatePickerProps} from '../RelativeDatePicker'; import type {Value} from '../hooks/useRelativeDatePickerState'; diff --git a/src/components/utils/dates.ts b/src/components/utils/dates.ts index c578ec8..6092c52 100644 --- a/src/components/utils/dates.ts +++ b/src/components/utils/dates.ts @@ -30,6 +30,21 @@ export function isInvalid( return false; } +export function constrainValue( + value: DateTime, + minValue: DateTime | undefined, + maxValue: DateTime | undefined, +) { + if (minValue && value.isBefore(minValue)) { + return minValue; + } + if (maxValue && maxValue.isBefore(value)) { + return maxValue; + } + + return value; +} + export function mergeDateTime(date: DateTime, time: DateTime) { return date .set('hours', time.hour())