Conversation
There was a problem hiding this comment.
Pull request overview
Adds tenant-controlled configuration to disable multi-resource selection in the booking sidebar room checklist (per #1366), including UI plumbing in the schema editor and default schema values.
Changes:
- Introduces
calendarConfig.multipleResourceSelectin the tenant schema (defaultfalse). - Updates the booking
SelectRoomscomponent to enforce single-resource selection when disabled (and adjusts UI cues). - Adds unit coverage for
SelectRoomsbehavior under both config modes and updates test tenant schema helpers.
Reviewed changes
Copilot reviewed 5 out of 5 changed files in this pull request and generated 1 comment.
Show a summary per file
| File | Description |
|---|---|
| booking-app/components/src/client/routes/booking/components/SelectRooms.tsx | Enforces/visualizes single- vs multi-select based on calendarConfig.multipleResourceSelect. |
| booking-app/components/src/client/routes/components/SchemaProvider.tsx | Extends schema typing and sets default for multipleResourceSelect. |
| booking-app/components/src/client/routes/super/schemaEditor.tsx | Adds schema editor toggle for calendarConfig.multipleResourceSelect. |
| booking-app/components/src/testHelpers/testTenantSchemas.ts | Updates test tenant schema defaults to include multipleResourceSelect: false. |
| booking-app/tests/unit/SelectRooms.multipleResourceSelect.unit.test.tsx | New unit tests validating selection behavior for both config states. |
Comments suppressed due to low confidence (1)
booking-app/components/src/client/routes/booking/components/SelectRooms.tsx:176
- In single-select mode the component still renders a MUI
Checkbox(screen reader role: checkbox) but swaps in radio-style icons. This can be confusing for assistive tech and keyboard expectations; if the intent is single-select, consider usingRadio/RadioGroup(or otherwise keep checkbox visuals/semantics aligned with behavior).
checkedIcon={
allowMultipleResourceSelect ? undefined : <CheckCircleIcon />
}
inputProps={{
"aria-label": `${room.roomId} ${room.name}`,
}}
data-testid={`room-option-${room.roomId}`}
disabled={disabled}
/>
}
label={`${room.roomId} ${room.name}`}
key={room.name}
💡 Add Copilot custom instructions for smarter, more guided reviews. Learn how to get started.
booking-app/components/src/client/routes/booking/components/SelectRooms.tsx
Show resolved
Hide resolved
|
Didn't commit copilot's review: UX choice. I've thought of this but this will increase user's chance of accidentally losing their selected time slots and will have to do it again. |
rlho
left a comment
There was a problem hiding this comment.
LGTM!
@n3xta (cc: @nopivnick)
The default is false, so please remember to set this value to true in prod schema before the prod release.
Summary of Changes
#1366
Note on the changes: the calendar do have built-in selection parameters but it's for calendar time-slot selection, not for this sidebar resource checklist.
Our code already uses FullCalendar built-ins, the room picker itself is custom MUI UI logic, so FullCalendar can gate drag/select behavior on the grid. It does not natively control this checklist’s single vs multi resource selection state.
Checklist
Screenshots / Video
Screen.Recording.2026-04-06.at.21.51.16.mov