Merge pull request 'fix(chatelet): don't offer a check-in that can't fit a minimum stay' (#157) from fix/chatelet-stay-picker-checkin-validity into dev

Reviewed-on: #157
This commit is contained in:
padreug 2026-09-21 09:57:42 +00:00
commit fa7436a499

View file

@ -106,8 +106,19 @@ function isDateDisabled(d: DateValue): boolean {
if (y < todayYmd) return true
const start = activeStart.value
if (!start) {
// Picking a check-in: occupied nights are out; everything else is fair.
return props.nightSet.has(y) && !(bothSet.value && y === props.checkOut)
// Picking a check-in. An occupied night is out — except a committed
// check-out that landed on one, which must stay rendered as selected.
if (props.nightSet.has(y)) return !(bothSet.value && y === props.checkOut)
// A free day is only a valid check-in if a minimum stay fits before the
// next occupied night AND within the loaded window. Otherwise reka would
// offer it, then strand the guest with no reachable check-out (every
// later day disabled), so the only click left is an earlier day, which
// reka silently swaps into the range. Disable it up front instead.
const minCheckOut = addDays(y, props.minNights)
const nextOccupied = nextUnavailableOnOrAfter(props.nights, y)
if (nextOccupied && nextOccupied < minCheckOut) return true
if (props.maxDate && minCheckOut > props.maxDate) return true
return false
}
if (y === start) return false
if (y > start) {