2.2 KiB
2.2 KiB
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.pickerUI 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:
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.