Complete guided Scheduling interface patterns

This commit is contained in:
2026-08-03 10:36:14 +02:00
parent 3d8272b28e
commit c17cbdae63
9 changed files with 334 additions and 52 deletions
+45
View File
@@ -0,0 +1,45 @@
# Scheduling Interface Pattern Migration
Scheduling implements the platform interface pattern language on its owned
surfaces without importing optional module internals.
## Surface Map
| Surface | Pattern | Consequential actions | Help context |
| --- | --- | --- | --- |
| `/scheduling` request list and detail | Persistent list-detail workspace with a lifecycle rail | Open, close, remind, decide, create holds, create final event | `scheduling.list`, `scheduling.request` |
| `/scheduling` create/edit | Bounded editor with unsaved-change guard and typed Core controls | Save or discard a request definition | `scheduling.editor` |
| `/scheduling/public/:requestId/:token` | Privacy-bounded public participation form | Submit or replace the invited participant's response | `scheduling.public-participation` |
| `scheduling.widget.open-requests` | Compact dashboard contribution | Navigate to the selected request | `scheduling.request` |
## Interaction Contract
- Closing a poll, creating reminder jobs or Calendar objects, and deciding a
final slot require a shared confirmation dialog. Invitation-link revocation
uses the same component with danger emphasis.
- Disabled actions expose the active busy, permission, immutable-response, or
optional-capability reason through Core's action-tooltip and blocker
components.
- Calendar selection uses the optional `calendar.picker` UI capability and
bounded Calendar scopes. Scheduling never imports Calendar WebUI code.
- Participant selection uses Core's provider-backed `PeoplePicker`; public
participation receives only the privacy-bounded request projection.
- Stable documentation topics are available from the list, editor, detail,
public participation page, and dashboard widget. Core resolves them through
Docs when enabled and through hosted documentation otherwise.
## Verification
Run:
```bash
cd webui
npm run test:view-model
npm run test:ui-structure
```
The structural check guards shared components, optional-module boundaries,
confirmation gates, contextual documentation, public credential controls, and
request-specific widget navigation. Backend tests validate manifest metadata,
permission boundaries, lifecycle transitions, public participation, and
Calendar capability behavior.