mirror of
https://github.com/rcourtman/Pulse.git
synced 2026-05-19 16:27:37 +00:00
Use shared grouped rows in settings infrastructure table
This commit is contained in:
parent
6b95532044
commit
6b2516648d
5 changed files with 19 additions and 3 deletions
|
|
@ -139,6 +139,11 @@ those facts into source-strategy copy, but it must not turn an admitted
|
|||
`first-lab-ready` platform such as VMware into a product-level supported
|
||||
claim, invent platform-local projections, or classify assistant control beyond
|
||||
the manifest's support-floor row.
|
||||
The lifecycle-owned infrastructure source manager also owns platform/system
|
||||
grouping as source-management content, but not its table band presentation:
|
||||
`frontend-modern/src/components/Settings/InfrastructureSourceManager.tsx` must
|
||||
route table-level product/system group rows through the shared grouped table row
|
||||
helper instead of carrying lifecycle-local background or hover classes.
|
||||
|
||||
## Extension Points
|
||||
|
||||
|
|
|
|||
|
|
@ -181,8 +181,9 @@ work extends shared components instead of creating new local variants.
|
|||
helper and `.grouped-table-row` CSS token contract instead of local
|
||||
`bg-surface-alt` or page-specific hover fills. This applies to grouped
|
||||
rows across Infrastructure, Workloads, Storage, Recovery, alert history,
|
||||
and alert threshold tables; feature owners may own group content and
|
||||
behavior, but not duplicate the subgroup band styling.
|
||||
alert threshold tables, and Infrastructure Settings source-manager tables;
|
||||
feature owners may own group content and behavior, but not duplicate the
|
||||
subgroup band styling.
|
||||
Shared monitored-system warning primitives under that path must stay compact
|
||||
app-shell pointers into the owned Pulse Pro billing surface. The shared
|
||||
banner may announce posture and route to the relevant billing tab, but
|
||||
|
|
@ -358,6 +359,10 @@ work extends shared components instead of creating new local variants.
|
|||
Pulse Agent`, or `via platform API and Pulse Agent`), with fuller detail in
|
||||
the edit dialog, instead of duplicating the same machine across multiple
|
||||
peer groups or forcing operators to decode badge jargon.
|
||||
The table-level product/system group rows in
|
||||
`InfrastructureSourceManager.tsx` must also use the shared grouped table row
|
||||
presentation helper, not local table-background classes, so source-manager
|
||||
grouping stays visually consistent with the product tables.
|
||||
That same shared shell boundary owns the landing taxonomy too: the primary
|
||||
grouping labels in the infrastructure manager must describe real
|
||||
platform/system owners, not collection methods. Agent-only machines belong
|
||||
|
|
|
|||
|
|
@ -18,6 +18,7 @@ import {
|
|||
TableHeader,
|
||||
TableRow,
|
||||
} from '@/components/shared/Table';
|
||||
import { getGroupedTableRowClass } from '@/components/shared/groupedTableRowPresentation';
|
||||
import {
|
||||
connectionAgentVersionPresentation,
|
||||
fleetSignalClassName,
|
||||
|
|
@ -617,7 +618,7 @@ export const InfrastructureSourceManager: Component<InfrastructureSourceManagerP
|
|||
const configuredRows = () => groupedConfiguredRows().get(product.type) ?? [];
|
||||
const discoveredRows = () => groupedDiscoveredRows().get(product.type) ?? [];
|
||||
const groupRowClass = () =>
|
||||
'border-b border-border-subtle bg-base hover:bg-base';
|
||||
getGroupedTableRowClass('border-b border-border-subtle');
|
||||
const groupLabelClass = () => 'text-[15px] font-semibold text-base-content';
|
||||
|
||||
return (
|
||||
|
|
|
|||
|
|
@ -256,6 +256,8 @@ describe('settings architecture guardrails', () => {
|
|||
expect(infrastructureSourceManagerSource).toContain('Discovered');
|
||||
expect(infrastructureSourceManagerSource).toContain('getInfrastructureSourceManagerProducts');
|
||||
expect(infrastructureSourceManagerSource).toContain('TableHeader');
|
||||
expect(infrastructureSourceManagerSource).toContain('getGroupedTableRowClass');
|
||||
expect(infrastructureSourceManagerSource).not.toContain('bg-base hover:bg-base');
|
||||
expect(infrastructureSourceManagerSource).toContain('aria-label={product.actionLabel}');
|
||||
expect(infrastructureSourceManagerSource).toContain('Review');
|
||||
expect(infrastructureSourceManagerSource).toContain('Manage');
|
||||
|
|
|
|||
|
|
@ -67,6 +67,7 @@ import summaryTableCardHeaderSource from '@/components/shared/SummaryTableCardHe
|
|||
import summaryTableFocusSource from '@/components/shared/summaryTableFocus.ts?raw';
|
||||
import tableCardSource from '@/components/shared/TableCard.tsx?raw';
|
||||
import groupedTableRowPresentationSource from '@/components/shared/groupedTableRowPresentation.ts?raw';
|
||||
import infrastructureSourceManagerSource from '@/components/Settings/InfrastructureSourceManager.tsx?raw';
|
||||
import infrastructureSummaryTableSource from '@/components/shared/InfrastructureSummaryTable.tsx?raw';
|
||||
import infrastructureSummaryTableRowSource from '@/components/shared/InfrastructureSummaryTableRow.tsx?raw';
|
||||
import infrastructureSelectorModelSource from '@/components/shared/infrastructureSelectorModel.ts?raw';
|
||||
|
|
@ -469,6 +470,8 @@ describe('shared primitive guardrails', () => {
|
|||
expect(alertHistoryTableGroupRowSource).toContain('getGroupedTableRowClass');
|
||||
expect(alertHistoryTableGroupRowSource).not.toContain('class="bg-surface-alt"');
|
||||
expect(alertResourceTableDesktopSource).toContain('getGroupedTableRowClass');
|
||||
expect(infrastructureSourceManagerSource).toContain('getGroupedTableRowClass');
|
||||
expect(infrastructureSourceManagerSource).not.toContain('bg-base hover:bg-base');
|
||||
expect(unifiedResourceHostTableCardSource).toContain('data-summary-group-member-active');
|
||||
});
|
||||
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue