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 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 | 3x 56x 3x 5x 5x 3x 4x 21x 5x 16x 8x 8x 8x | import {
DATE_PICKER_TIME_SLOT,
type DatePickerTimeSlot,
} from '@repo/ui/components/DatePicker';
import type { QuickSelectOption } from '@repo/ui/components/QuickSelect';
import {
generateDynamicQuickSelectOptions as sharedGenerateOptions,
normalizeDateValue,
type QuickSelectLabelParams,
toQuickSelectValue as sharedToQuickSelectValue,
} from '@repo/utils';
import { type ReallocationShift } from '../Reallocation/types';
export { normalizeDateValue };
export const toDatePickerSlot = (
shift: ReallocationShift | undefined,
): DatePickerTimeSlot => {
return shift === 'Afternoon'
? DATE_PICKER_TIME_SLOT.AFTERNOON
: DATE_PICKER_TIME_SLOT.MORNING;
};
export const toQuickSelectValue = (date: Date, shift: ReallocationShift) => {
const timeSlot = toDatePickerSlot(shift);
return sharedToQuickSelectValue(date, timeSlot);
};
export const generateDynamicQuickSelectOptions = ({
holidays,
makeUpWorkdays,
now = new Date(),
maxBusinessDays = 4,
}: {
holidays: string[];
makeUpWorkdays: string[];
now?: Date;
maxBusinessDays?: number;
}): QuickSelectOption[] => {
return sharedGenerateOptions({
holidays,
makeUpWorkdays,
now,
maxBusinessDays,
limit: 100, // No specific limit other than business days for reallocation
slotSequence: [
DATE_PICKER_TIME_SLOT.MORNING,
DATE_PICKER_TIME_SLOT.AFTERNOON,
],
fallbackSlotSequence: [
DATE_PICKER_TIME_SLOT.MORNING,
DATE_PICKER_TIME_SLOT.AFTERNOON,
],
labelFormatter: ({
day,
isToday,
isCalendarTomorrow,
timeSlot,
}: QuickSelectLabelParams) => {
if (isToday) {
return timeSlot === DATE_PICKER_TIME_SLOT.MORNING
? 'This morning'
: 'This afternoon';
}
if (isCalendarTomorrow) {
return timeSlot === DATE_PICKER_TIME_SLOT.MORNING
? 'Tomorrow morning'
: 'Tomorrow afternoon';
}
const weekday = day.toLocaleDateString('en-US', { weekday: 'short' });
return `${weekday} - ${
timeSlot === DATE_PICKER_TIME_SLOT.MORNING ? 'Morning' : 'Afternoon'
}`;
},
});
};
|