## Summary - standardize Filament table defaults across resources, relation managers, widgets, custom pages, and picker tables - add shared pagination profiles, calm default column visibility, explicit empty states, and session persistence on designated critical resource lists - complete Spec 125 artifacts, regression tests, and dashboard widget follow-up for lazy loading, sortable columns, and toggleable detail columns ## Verification - `docker exec tenantatlas-laravel.test-1 php artisan test --compact --filter=BaselineCompareNow` - `docker exec tenantatlas-laravel.test-1 php artisan test --compact --filter=TableStandardsBaseline` - `docker exec tenantatlas-laravel.test-1 php artisan test --compact --filter=TableDetailVisibility` - `docker exec tenantatlas-laravel.test-1 php artisan test --compact --filter=FilamentTableRiskExceptions` - full suite run completed: `2017 passed, 10 failed, 8 skipped` - manual browser QA completed on the tenant dashboard for lazy loading, sortable widget columns, toggleable hidden status columns, badges, and pagination ## Known Failures The full suite still has 10 pre-existing failures unrelated to this branch: - `Tests\\Unit\\OpsUx\\SummaryCountsNormalizerTest` - `Tests\\Feature\\BackupWithAssignmentsConsistencyTest` (2 tests) - `Tests\\Feature\\BaselineDriftEngine\\CaptureBaselineContentTest` - `Tests\\Feature\\BaselineDriftEngine\\CompareContentEvidenceTest` - `Tests\\Feature\\BaselineDriftEngine\\ResolverTest` - `Tests\\Feature\\Filament\\TenantDashboardDbOnlyTest` - `Tests\\Feature\\Operations\\ReconcileAdapterRunsJobTrackingTest` - `Tests\\Feature\\ReviewPack\\ReviewPackRbacTest` - `Tests\\Feature\\Verification\\VerificationReportRedactionTest` Co-authored-by: Ahmed Darrazi <ahmed.darrazi@live.de> Reviewed-on: #152
191 lines
5.9 KiB
YAML
191 lines
5.9 KiB
YAML
openapi: 3.1.0
|
|
info:
|
|
title: Filament Table State Standardization Contract
|
|
version: 1.0.0
|
|
description: |
|
|
Page-level contract for standardized Filament list surfaces affected by Spec 125.
|
|
This feature does not add public APIs. It formalizes the expected query-state
|
|
parameters and page behaviors for resource, tenant-scoped, and system-scoped
|
|
list surfaces that use native Filament tables.
|
|
paths:
|
|
/admin/{listSlug}:
|
|
get:
|
|
summary: Render a standardized workspace-scoped Filament list surface
|
|
operationId: getWorkspaceScopedListSurface
|
|
tags:
|
|
- Filament Table UX
|
|
parameters:
|
|
- $ref: '#/components/parameters/ListSlug'
|
|
- $ref: '#/components/parameters/TableSearch'
|
|
- $ref: '#/components/parameters/TableSortColumn'
|
|
- $ref: '#/components/parameters/TableSortDirection'
|
|
- $ref: '#/components/parameters/TableRecordsPerPage'
|
|
- $ref: '#/components/parameters/Page'
|
|
responses:
|
|
'200':
|
|
description: Standardized list page rendered successfully
|
|
content:
|
|
text/html:
|
|
schema:
|
|
type: string
|
|
'403':
|
|
description: Actor is a member of the scope but lacks the required capability for the page or exposed action
|
|
'404':
|
|
description: Workspace scope is unavailable or the actor is not entitled to the requested scope
|
|
/admin/t/{tenant}/{listSlug}:
|
|
get:
|
|
summary: Render a standardized tenant-scoped Filament list surface
|
|
operationId: getTenantScopedListSurface
|
|
tags:
|
|
- Filament Table UX
|
|
parameters:
|
|
- name: tenant
|
|
in: path
|
|
required: true
|
|
description: Tenant identifier resolved by the existing Filament tenant route binding
|
|
schema:
|
|
type: string
|
|
- $ref: '#/components/parameters/ListSlug'
|
|
- $ref: '#/components/parameters/TableSearch'
|
|
- $ref: '#/components/parameters/TableSortColumn'
|
|
- $ref: '#/components/parameters/TableSortDirection'
|
|
- $ref: '#/components/parameters/TableRecordsPerPage'
|
|
- $ref: '#/components/parameters/Page'
|
|
responses:
|
|
'200':
|
|
description: Standardized tenant-scoped list page rendered successfully
|
|
content:
|
|
text/html:
|
|
schema:
|
|
type: string
|
|
'403':
|
|
description: Tenant member lacks the capability required for the page or exposed action
|
|
'404':
|
|
description: Tenant or workspace context is unavailable or the actor is not entitled to the tenant scope
|
|
/system/{listSlug}:
|
|
get:
|
|
summary: Render a standardized platform-scoped Filament list surface
|
|
operationId: getSystemScopedListSurface
|
|
tags:
|
|
- Filament Table UX
|
|
parameters:
|
|
- $ref: '#/components/parameters/ListSlug'
|
|
- $ref: '#/components/parameters/TableSearch'
|
|
- $ref: '#/components/parameters/TableSortColumn'
|
|
- $ref: '#/components/parameters/TableSortDirection'
|
|
- $ref: '#/components/parameters/TableRecordsPerPage'
|
|
- $ref: '#/components/parameters/Page'
|
|
responses:
|
|
'200':
|
|
description: Standardized platform list page rendered successfully
|
|
content:
|
|
text/html:
|
|
schema:
|
|
type: string
|
|
'403':
|
|
description: Platform user lacks the capability required for the page or exposed action
|
|
'404':
|
|
description: The actor is not entitled to the platform scope
|
|
components:
|
|
parameters:
|
|
ListSlug:
|
|
name: listSlug
|
|
in: path
|
|
required: true
|
|
description: |
|
|
Logical list-surface identifier. Examples include resource list pages,
|
|
system directory tables, operations pages, or custom picker tables.
|
|
schema:
|
|
type: string
|
|
TableSearch:
|
|
name: tableSearch
|
|
in: query
|
|
required: false
|
|
description: Free-text search across the table's approved searchable fields
|
|
schema:
|
|
type: string
|
|
TableSortColumn:
|
|
name: tableSortColumn
|
|
in: query
|
|
required: false
|
|
description: Active sortable column for the table surface
|
|
schema:
|
|
type: string
|
|
TableSortDirection:
|
|
name: tableSortDirection
|
|
in: query
|
|
required: false
|
|
description: Active table sort direction
|
|
schema:
|
|
type: string
|
|
enum:
|
|
- asc
|
|
- desc
|
|
TableRecordsPerPage:
|
|
name: tableRecordsPerPage
|
|
in: query
|
|
required: false
|
|
description: Selected page-size option from the surface's pagination profile
|
|
schema:
|
|
oneOf:
|
|
- type: integer
|
|
minimum: 5
|
|
- type: string
|
|
enum:
|
|
- all
|
|
Page:
|
|
name: page
|
|
in: query
|
|
required: false
|
|
description: Current paginator page for the table surface
|
|
schema:
|
|
type: integer
|
|
minimum: 1
|
|
schemas:
|
|
StandardizedTableBehavior:
|
|
type: object
|
|
required:
|
|
- defaultSort
|
|
- emptyState
|
|
- paginationProfile
|
|
properties:
|
|
defaultSort:
|
|
type: object
|
|
properties:
|
|
column:
|
|
type: string
|
|
direction:
|
|
type: string
|
|
enum:
|
|
- asc
|
|
- desc
|
|
persistence:
|
|
type: object
|
|
properties:
|
|
search:
|
|
type: boolean
|
|
sort:
|
|
type: boolean
|
|
filters:
|
|
type: boolean
|
|
emptyState:
|
|
type: object
|
|
required:
|
|
- heading
|
|
- description
|
|
properties:
|
|
heading:
|
|
type: string
|
|
description:
|
|
type: string
|
|
hasAuthorizedAction:
|
|
type: boolean
|
|
paginationProfile:
|
|
type: string
|
|
enum:
|
|
- resource
|
|
- relation_manager
|
|
- widget
|
|
- picker
|
|
- custom_page
|