feat: align approvals with shared UI foundations
This commit is contained in:
@@ -23,6 +23,7 @@ from govoplan_core.core.modules import (
|
|||||||
ModuleManifest,
|
ModuleManifest,
|
||||||
NavItem,
|
NavItem,
|
||||||
PermissionDefinition,
|
PermissionDefinition,
|
||||||
|
ProductAreaContribution,
|
||||||
RoleTemplate,
|
RoleTemplate,
|
||||||
)
|
)
|
||||||
from govoplan_core.core.provider_governance import declared_module_architecture
|
from govoplan_core.core.provider_governance import declared_module_architecture
|
||||||
@@ -178,6 +179,17 @@ manifest = ModuleManifest(
|
|||||||
order=37,
|
order=37,
|
||||||
),
|
),
|
||||||
),
|
),
|
||||||
|
product_areas=(
|
||||||
|
ProductAreaContribution(
|
||||||
|
id="work",
|
||||||
|
module_id=MODULE_ID,
|
||||||
|
label="i18n:govoplan-core.product_area.work",
|
||||||
|
icon="list-checks",
|
||||||
|
description="i18n:govoplan-core.product_area.work_description",
|
||||||
|
surface_ids=("approvals.nav.approvals", "approvals.route.approvals"),
|
||||||
|
order=10,
|
||||||
|
),
|
||||||
|
),
|
||||||
view_surfaces=(
|
view_surfaces=(
|
||||||
ViewSurface(
|
ViewSurface(
|
||||||
id="approvals.navigation",
|
id="approvals.navigation",
|
||||||
|
|||||||
@@ -1,31 +1,31 @@
|
|||||||
.approvals-page { height: 100%; min-height: 0; overflow: hidden; }
|
.approvals-page { height: 100%; min-height: 0; overflow: hidden; }
|
||||||
.approvals-list-panel { display: flex; min-height: 0; flex-direction: column; }
|
.approvals-list-panel { display: flex; min-height: 0; flex-direction: column; }
|
||||||
.approvals-list-viewport, .approvals-detail-viewport { min-height: 0; flex: 1; }
|
.approvals-list-viewport, .approvals-detail-viewport { min-height: 0; flex: 1; }
|
||||||
.approvals-detail header span { color: var(--text-muted, #65717e); }
|
.approvals-detail header span { color: var(--muted); }
|
||||||
.approvals-workspace { display: flex; min-width: 0; min-height: 0; flex-direction: column; }
|
.approvals-workspace { display: flex; min-width: 0; min-height: 0; flex-direction: column; }
|
||||||
.approvals-workspace > .action-blocker-hint { margin: 12px 16px 0; }
|
.approvals-workspace > .action-blocker-hint { margin: 12px 16px 0; }
|
||||||
.approvals-detail { padding: 16px 20px 28px; }
|
.approvals-detail { padding: 16px 20px 28px; }
|
||||||
.approvals-detail header { display: flex; align-items: center; justify-content: space-between; gap: 12px; padding-bottom: 10px; border-bottom: 1px solid var(--border-color, #d8dde3); }
|
.approvals-detail header { display: flex; align-items: center; justify-content: space-between; gap: 12px; padding-bottom: 10px; border-bottom: 1px solid var(--line); }
|
||||||
.approvals-detail header > div:last-child { display: flex; align-items: center; gap: 8px; }
|
.approvals-detail header > div:last-child { display: flex; align-items: center; gap: 8px; }
|
||||||
.approvals-detail h2, .approvals-detail h3, .approval-editor-heading h3 { margin: 0; font-size: 1rem; letter-spacing: 0; }
|
.approvals-detail h2, .approvals-detail h3, .approval-editor-heading h3 { margin: 0; font-size: 1rem; letter-spacing: 0; }
|
||||||
.approvals-detail section { margin-top: 18px; padding-top: 14px; border-top: 1px solid var(--border-color, #d8dde3); }
|
.approvals-detail section { margin-top: 18px; padding-top: 14px; border-top: 1px solid var(--line); }
|
||||||
.approval-chain, .approval-history { display: flex; flex-direction: column; gap: 6px; margin-top: 10px; }
|
.approval-chain, .approval-history { display: flex; flex-direction: column; gap: 6px; margin-top: 10px; }
|
||||||
.approval-chain > div, .approval-history > div { display: grid; grid-template-columns: 32px minmax(120px, .6fr) minmax(0, 1fr) auto; align-items: center; gap: 10px; min-height: 40px; padding: 7px 9px; background: var(--surface-muted, rgba(127,137,147,.08)); }
|
.approval-chain > div, .approval-history > div { display: grid; grid-template-columns: 32px minmax(120px, .6fr) minmax(0, 1fr) auto; align-items: center; gap: 10px; min-height: 40px; padding: 7px 9px; background: var(--surface-muted); }
|
||||||
.approval-chain > div.is-current { border-left: 3px solid var(--accent-color, #36709a); }
|
.approval-chain > div.is-current { border-left: 3px solid var(--data-category-blue); }
|
||||||
.approval-chain em { font-size: .8rem; font-style: normal; }
|
.approval-chain em { font-size: .8rem; font-style: normal; }
|
||||||
.approval-history > div { grid-template-columns: 32px minmax(0, 1fr) auto; }
|
.approval-history > div { grid-template-columns: 32px minmax(0, 1fr) auto; }
|
||||||
.approval-history time { color: var(--text-muted, #65717e); font-size: .82rem; }
|
.approval-history time { color: var(--muted); font-size: .82rem; }
|
||||||
.approval-request-dialog, .approval-template-dialog { width: min(1160px, calc(100vw - 32px)); height: min(860px, calc(100vh - 32px)); }
|
.approval-request-dialog, .approval-template-dialog { width: min(1160px, calc(100vw - 32px)); height: min(860px, calc(100vh - 32px)); }
|
||||||
.approval-editor { display: flex; min-height: 0; flex-direction: column; gap: 12px; overflow: auto; }
|
.approval-editor { display: flex; min-height: 0; flex-direction: column; gap: 12px; overflow: auto; }
|
||||||
.approval-editor-help { display: flex; justify-content: flex-end; }
|
.approval-editor-help { display: flex; justify-content: flex-end; }
|
||||||
.approval-editor-wide { grid-column: 1 / -1; }
|
.approval-editor-wide { grid-column: 1 / -1; }
|
||||||
.approval-editor-heading { display: flex; align-items: center; justify-content: space-between; gap: 8px; }
|
.approval-editor-heading { display: flex; align-items: center; justify-content: space-between; gap: 8px; }
|
||||||
.approval-step-list { display: flex; flex-direction: column; gap: 8px; }
|
.approval-step-list { display: flex; flex-direction: column; gap: 8px; }
|
||||||
.approval-step-editor { display: flex; flex-direction: column; gap: 10px; padding: 10px; border: 1px solid var(--border-color, #d8dde3); border-radius: 4px; }
|
.approval-step-editor { display: flex; flex-direction: column; gap: 10px; padding: 10px; border: 1px solid var(--line); border-radius: var(--radius-sm); }
|
||||||
.approval-step-heading, .approval-selector-heading { display: flex; align-items: center; justify-content: space-between; gap: 8px; }
|
.approval-step-heading, .approval-selector-heading { display: flex; align-items: center; justify-content: space-between; gap: 8px; }
|
||||||
.approval-step-heading > div { display: flex; align-items: center; gap: 4px; }
|
.approval-step-heading > div { display: flex; align-items: center; gap: 4px; }
|
||||||
.approval-step-fields { display: grid; grid-template-columns: repeat(3, minmax(0, 1fr)); align-items: end; gap: 8px; }
|
.approval-step-fields { display: grid; grid-template-columns: repeat(3, minmax(0, 1fr)); align-items: end; gap: 8px; }
|
||||||
.approval-selector-heading { padding-top: 8px; border-top: 1px solid var(--border-color, #d8dde3); }
|
.approval-selector-heading { padding-top: 8px; border-top: 1px solid var(--line); }
|
||||||
.approval-selector-list { display: flex; flex-direction: column; gap: 6px; }
|
.approval-selector-list { display: flex; flex-direction: column; gap: 6px; }
|
||||||
.approval-selector-list > div { display: grid; grid-template-columns: 180px minmax(160px, 1fr) minmax(160px, 1fr) 34px; align-items: end; gap: 8px; }
|
.approval-selector-list > div { display: grid; grid-template-columns: 180px minmax(160px, 1fr) minmax(160px, 1fr) 34px; align-items: end; gap: 8px; }
|
||||||
.approval-template-history-dialog { width: min(1180px, calc(100vw - 32px)); height: min(820px, calc(100vh - 32px)); }
|
.approval-template-history-dialog { width: min(1180px, calc(100vw - 32px)); height: min(820px, calc(100vh - 32px)); }
|
||||||
|
|||||||
Reference in New Issue
Block a user