Move GE-Enforce to its own top-level section; fix overflow + input theming
GE-Enforce is a large operational surface (manifest authoring + fleet compliance), not a setting, and it was squished in the settings two-pane shell. Promote it to a dedicated full-width top-level section: - New sidebar entry "GE-Enforce" (plugin get_navigation_items, shield icon, auto-gated to the enabled plugin) instead of two Settings > Integrations cards. - Tabbed shell GeEnforceLayout.vue (Manifests | Enforcement Reports) with full-width children under AppLayout, not the narrow settings rail. - Views moved settings/ -> geenforce/ (ManifestEditor.vue, EnforcementReports.vue). Theming + overflow fixes (the "chaotic / cut off / different inputs" report): - Inputs/selects/textareas now match the stock settings look (border, radius, --bg, focus color) instead of browser defaults. - No horizontal overflow: editor grid uses minmax(0,1fr) + min-width:0 on children, collapses to one column under 1000px; entry table and reports table scroll inside their own overflow-x containers; detail actions wrap. Verified at 1280px: no page overflow, detail pane + tables fit. Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
This commit is contained in:
@@ -1,21 +1,30 @@
|
||||
/**
|
||||
* GE-Enforce plugin routes.
|
||||
*
|
||||
* The imaging-PC-type manifest editor lives under /settings. meta.plugin =
|
||||
* 'geenforce' so the ADR-009 router guard hides it when the plugin is disabled.
|
||||
* Admin-only, like the other settings pages.
|
||||
* A top-level section (not under /settings) - the manifest editor + fleet
|
||||
* reports are a large operational surface, so they get their own full-width
|
||||
* shell with tabs. meta.plugin = 'geenforce' so the ADR-009 guard hides the
|
||||
* section when the plugin is disabled. Admin-only.
|
||||
*/
|
||||
export default [
|
||||
{
|
||||
path: 'settings/imagingpctypes',
|
||||
name: 'imagingpctypes',
|
||||
component: () => import('../../views/settings/ImagingPCTypes.vue'),
|
||||
meta: { requiresAuth: true, requiresAdmin: true, plugin: 'geenforce' }
|
||||
},
|
||||
{
|
||||
path: 'settings/enforcementreports',
|
||||
name: 'enforcementreports',
|
||||
component: () => import('../../views/settings/EnforcementReports.vue'),
|
||||
meta: { requiresAuth: true, requiresAdmin: true, plugin: 'geenforce' }
|
||||
path: 'geenforce',
|
||||
component: () => import('../../views/geenforce/GeEnforceLayout.vue'),
|
||||
meta: { requiresAuth: true, requiresAdmin: true, plugin: 'geenforce' },
|
||||
children: [
|
||||
{ path: '', redirect: '/geenforce/manifests' },
|
||||
{
|
||||
path: 'manifests',
|
||||
name: 'geenforce-manifests',
|
||||
component: () => import('../../views/geenforce/ManifestEditor.vue'),
|
||||
meta: { requiresAuth: true, requiresAdmin: true, plugin: 'geenforce' }
|
||||
},
|
||||
{
|
||||
path: 'reports',
|
||||
name: 'geenforce-reports',
|
||||
component: () => import('../../views/geenforce/EnforcementReports.vue'),
|
||||
meta: { requiresAuth: true, requiresAdmin: true, plugin: 'geenforce' }
|
||||
}
|
||||
]
|
||||
}
|
||||
]
|
||||
|
||||
Reference in New Issue
Block a user