import React from "react";
import { Button } from "../UI/Button";
import { Panel } from "../UI/Panel";
import { formatDeliveryDate, getDeliveryRelativeDayLabel } from "./deliveryDateFormatting";
const groupSlotsByDate = (slots) => {
const groups = new Map();
const getSlotPriority = (slot) => {
const time = String(slot?.time || "").toLowerCase();
if (time.includes("первая") || time.includes("до обеда")) {
return 0;
}
if (time.includes("вторая") || time.includes("после обеда")) {
return 1;
}
return 2;
};
for (const slot of slots) {
if (!groups.has(slot.date)) {
groups.set(slot.date, []);
}
groups.get(slot.date).push(slot);
}
return Array.from(groups.entries())
.map(([date, dateSlots]) => [
date,
[...dateSlots].sort((left, right) => getSlotPriority(left) - getSlotPriority(right)),
])
.sort(([a], [b]) => a.localeCompare(b));
};
const getDeliverySlotGroupHeading = (dateStr, referenceDate = new Date()) => {
const relative = getDeliveryRelativeDayLabel(dateStr, referenceDate);
const formatted = formatDeliveryDate(dateStr);
if (relative) {
return `Доставка ${relative.charAt(0).toLowerCase()}${relative.slice(1)} · ${formatted}`;
}
return `Доставка ${formatted}`;
};
export { formatDeliveryDate, formatDeliverySlotGroupLabel } from "./deliveryDateFormatting";
export { getDeliverySlotGroupHeading };
export const DeliverySlotsPicker = ({
slots,
onSelectSlot,
selectedSlotId,
referenceDate = new Date(),
}) => {
if (!slots || !slots.length) {
return (
Нет доступных слотов для выбора. Логист назначит слот позже.