Press n or j to go to the next uncovered block, b, p or k for the previous block.
| 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 | 1x 1x 1x 1x 1x 1x 1x 1x 1x 1x 1x 1x 1x 1x 10x 10x 10x 10x 10x 10x 10x 10x 10x 10x 10x 10x 10x 10x 10x 10x 10x 10x 10x 10x 10x 10x 10x 1x | import { useFormikContext } from 'formik';
import { memo, useCallback } from 'react';
import { FormattedMessage, useIntl } from 'react-intl';
import { DatePicker, useDatePickerTimestampsAdapter } from '@allshares/studio-design-system';
import { type UnixTimestampInSeconds } from '@amalia/ext/dates';
import { type DuplicatePlanFormValues } from '../DuplicatePlanForm';
interface AssignmentDatePickerProps {
readonly fieldName: 'assignmentsEffectiveAsOf' | 'assignmentsEffectiveUntil';
}
export const AssignmentDatePicker = memo(function AssignmentDatePicker({ fieldName }: AssignmentDatePickerProps) {
const { formatMessage } = useIntl();
const { values, setFieldValue } = useFormikContext<DuplicatePlanFormValues>();
const datePickerProps = useDatePickerTimestampsAdapter({
value: values[fieldName],
minDate: fieldName === 'assignmentsEffectiveAsOf' ? null : values.assignmentsEffectiveAsOf,
maxDate: fieldName === 'assignmentsEffectiveAsOf' ? values.assignmentsEffectiveUntil : null,
boundary: fieldName === 'assignmentsEffectiveAsOf' ? 'start' : 'end',
onChange: useCallback(
(value: UnixTimestampInSeconds | null) => setFieldValue(fieldName, value),
[fieldName, setFieldValue],
),
});
return (
<DatePicker
{...datePickerProps}
isClearable
clearButtonLabel={<FormattedMessage defaultMessage="Reset date to indefinite" />}
dateFormat="yyyy-MM-dd"
placeholder={formatMessage({ defaultMessage: 'Indefinite' })}
/>
);
});
|