Skip to content

Commit

Permalink
refactor: move constrainValue to date utils (#138)
Browse files Browse the repository at this point in the history
  • Loading branch information
ValeraS authored Aug 23, 2024
1 parent 29032a5 commit cb91068
Show file tree
Hide file tree
Showing 5 changed files with 19 additions and 20 deletions.
4 changes: 2 additions & 2 deletions src/components/CalendarView/hooks/useCalendarState.ts
Original file line number Diff line number Diff line change
Expand Up @@ -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';

Expand Down
3 changes: 1 addition & 2 deletions src/components/CalendarView/hooks/useRangeCalendarState.ts
Original file line number Diff line number Diff line change
Expand Up @@ -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';
Expand Down
15 changes: 0 additions & 15 deletions src/components/CalendarView/utils.ts
Original file line number Diff line number Diff line change
Expand Up @@ -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[] = [];

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -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';
Expand Down
15 changes: 15 additions & 0 deletions src/components/utils/dates.ts
Original file line number Diff line number Diff line change
Expand Up @@ -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())
Expand Down

0 comments on commit cb91068

Please sign in to comment.