feat: room/rental tabs in booking modal + smart time slot filtering

BookingModal:
- Add 'Номер' / 'Аренда объекта' tabs when rental objects exist
- Rental tab: object picker, date, full-day toggle, conflict-aware time dropdowns, guest/phone fields, total amount

RentalBookingModal:
- Filter start times: exclude hours inside booked slots + bufferMinutes gap
- Filter end times: cap at next booking's start hour
- Disable 'Весь день' if any timed bookings exist for the day
- Show 'Все слоты заняты' when no start hours are available
- Show buffer duration in time section label

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
This commit is contained in:
2026-03-21 22:07:40 +03:00
parent 5cab0ce8da
commit 31858ca5cc
3 changed files with 388 additions and 53 deletions

View File

@@ -741,6 +741,10 @@ export function BookingCalendar({ rooms, bookings, slug, onBookingCreate, onBook
draft={bookingModalDraft}
rooms={rooms}
bookings={bookings}
slug={slug}
rentalObjects={rentalObjects}
rentalBookings={rentalBookings as unknown as import('../../data/rentalData').RentalBooking[]}
onRentalSave={rb => { onRentalBookingCreate?.(rb); setBookingModalDraft(null) }}
onClose={() => {
if (bookingModalDraft) onDraftCancel?.(bookingModalDraft.roomId)
setBookingModalDraft(null)