Skip to content

VexClientViewConfig

VexClientViewConfig<TFieldSlug> = object

Defined in: packages/core/src/collections/types.ts:744

The client-safe projection of a config-source VexViewConfig (Decision 25): every field except state.where, plus a hidden-filter summary the UI renders as a lock badge — hasHiddenFilter (whether the view has a where at all) and hiddenFilterCount (the number of leaf conditions in its DNF tree, counting through and/or/not).

Built by toClientSavedListViewConfig (collections/savedListViews/toClientSavedListViewConfig.ts), called CLIENT-SIDE by useSavedListViews (Step 12), straight off collection.admin.views (and admin.view, the resolved default) as read from the bundled VexClientConfig — that object IS directly imported into client JS (P-004), so state.where already shipped to the browser as plain text before this function ever runs. toClientSavedListViewConfig doesn’t keep where out of the bundle; it keeps UI CODE from reading it, so the filter builder, chips, and every other control only ever see hasHiddenFilter/hiddenFilterCount. Step 7’s listViews query never touches a config-source (or default) view at all — it returns shared views only. To actually QUERY a config/default view, the list passes the RAW VexViewConfig (not this type) to composeSavedListViewWhere.

shared and local views need no client projection — their where is the caller’s own and travels as a full VexStoredView / local VexViewConfig.

TFieldSlug extends string = string

Union of this collection’s field slugs.

optional description?: string

Defined in: packages/core/src/collections/types.ts:747


hasHiddenFilter: boolean

Defined in: packages/core/src/collections/types.ts:749


hiddenFilterCount: number

Defined in: packages/core/src/collections/types.ts:750


name: string

Defined in: packages/core/src/collections/types.ts:746


state: VexClientViewState<TFieldSlug>

Defined in: packages/core/src/collections/types.ts:748


viewId: string

Defined in: packages/core/src/collections/types.ts:745