Skip to content

Server mode for query-bound tables: complete-result filtering and sorting before paging #178

Description

@woksin

Problem

Components 4 deliberately applies table search, column filtering, and sorting only to the currently loaded page. Arc's paginator totals still describe the complete server result. A consumer can otherwise mistake a convenient loaded-page interaction for complete-result behavior and miss matches on unloaded pages.

The deprecated clientFiltering compatibility prop does not toggle this behavior; loaded-page filtering is always available. Issue #159 tracks that old silent-no-op contract and is resolved by the explicit v4 semantics. This issue owns the distinct complete-result capability.

Direction

Complete-result filtering and sorting belong in explicit Arc query arguments and server query logic, applied before paging. Components may provide typed UI state and callbacks that a consumer maps to generated query arguments, but it must not infer backend field names, operators, or authorization policy and must not silently mix loaded-page and complete-result modes.

Coordinate with #109 if consumer proof shows a reusable Arc React state seam. Do not block a server-capable consumer on a new Components table abstraction.

Acceptance criteria

  • Documentation names loaded-page and complete-result behavior distinctly.
  • A representative generated query accepts explicit sort/filter arguments and applies them before paging.
  • Table state changes reset or validate the current page and cannot show stale totals/results during races.
  • Snapshot and observable query paths have specs for argument changes, paging, empty results, and server failures.
  • The UI indicates which behavior is active and does not claim complete-result search/filter/sort when only the loaded page is affected.
  • Public contracts remain renderer-neutral where they represent Arc query state and Cratis-owned where they represent table UI.

Activity

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Metadata

Metadata

Assignees

Labels

Projects

No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions