Files
govoplan-views/docs/INTERFACE_PATTERN_MIGRATION.md
T

49 lines
2.9 KiB
Markdown

# Views Interface Pattern Migration
This document records the bounded migration of Views-owned WebUI surfaces to
the GovOPlaN interface pattern language. Core owns shared controls, surface
projection, and the host shells. Views owns definitions, revisions,
assignments, effective selection, and the safeguards described here.
## Surface Inventory
| Surface | Archetype | Consequence class | Contract |
| --- | --- | --- | --- |
| `views.selector` | Compact titlebar eye menu | Change active presentation projection | Neutral full-interface state, accented specialized state, localized accessible menu, required-state explanation, unsaved-change guard |
| `views.admin.system` | Administration list-detail editor | Create, publish, archive, assign | Shared admin layout, explicit disabled reasons, required-View lockout validation, contextual help |
| `views.admin.tenant` | Administration list-detail editor | Create, publish, archive, assign | Inheritance provenance, searchable group/user targets, explicit optional-module blocker |
| `views.settings.personal` | Settings list-detail editor | Create and publish owned Views | Shared owner selector, permission blocker, contextual field help |
## Consequence And Availability Rules
- Views filter presentation only. Authorization remains owned by Access and
each protected backend route.
- Published revisions are immutable. Unpinned assignments follow later
publications; pinned assignments retain one published revision.
- Required Views keep the selector and the applicable administration escape
surface. The backend validates this before accepting the assignment.
- User and group assignments take precedence over tenant and system
assignments. Inherited definitions and assignments are changed at their
owning scope, not copied implicitly.
- The optional Access directory supplies searchable group and user targets.
If it is absent, the UI explains the missing capability and its remedy while
system and tenant targets remain usable.
- Definition, creation, and assignment drafts use Core's shared unsaved-change
guard. Archive and assignment removal use shared consequential-action
confirmation.
## State And Accessibility Evidence
The surfaces use Core loading, error, success, empty, disabled-action, blocker,
dialog, status, selector, and tree controls. Consequential actions stay visible
and explain missing permission, inherited ownership, lifecycle state, missing
catalogue data, or lockout validation. Labels and accessible properties are
provided through the module translation catalogue. Shared dialogs own focus
containment and restoration, while fixed-height panes retain responsive
scrolling.
Stable help references are contributed through the manifest for the selector,
administration sections, settings panel, fields, assignment precedence, and
consequential actions. Backend and WebUI contract tests prevent those
references and safeguards from silently regressing.