DataListingBar

components/data/ListingBar.vue

The strip over a listing table: FilterTriggerBar with UxColumnPicker seated as its last segment — "which rows" and "which columns" in one right-aligned row (c95). Pass `columns` and the picker appears, drawn in the bar's TONE colours and reading "Columns" until something is hidden, then the count; omit `columns` or set columnPicker=false for the bar alone. The key dropdown is restricted to the table: only filter keys the catalog has a column for are offered (a column matches by key or by its filterKey), and one key renders as a fixed label. Its canonical seat is DataTable's #toolbar slot; the picker opens above by default so the table under it stays in view.

FilterTriggerBar + UxColumnPicker as one strip, in its canonical seat: DataTable's #toolbar. The filter is live (rows filter by team); the picker opens above so the table stays in view.

Devices

Team
Owner
Team
Sessions
Coverage
ci-runner-07—platform1204Full
thinkpad-choDana Chodata231Partial
mbp-aliceAlice Ngplatform142Full
mbp-raviRavi Menonapps19Blocked
team = All · visible: name, owner, team, sessions, coverage
Scenarios
Opt-out — no columns, so it is FilterTriggerBar alone
Team
Nothing hidden — the segment reads "Columns"
Team
Three hidden — the count takes the selected tone
Team
Keys restricted to the table — Provider has no column and is dropped; the owner column answers the user key via filterKey
Team
offered: Team · Coverage · User — current: team
Multiple keys + lead-in label
Global Filter :
Team
Overflow — many options, a 16-column catalog, and an extra #end segment after the picker
Team
components/data/ListingBar.vue

Usage

<DataListingBar label = "—" :filterKeyDefs = "[]" filterKey = "—" :options = "[]" :modelValue = "modelValue" :columns = "columns" :visibleColumns = "[]" :columnPicker = "true" columnsLabel = "Columns" side = "above" :minVisible = "1" :restrictKeys = "true" />

Props

PropTypeDefaultDescription
labelString''FilterTriggerBar lead-in text, e.g. "Global Filter :"
filterKeyDefsArray[]FilterTriggerBar — FilterKeyDefinition[]; a dropdown only when more than one
filterKeyString''FilterTriggerBar — the current key (v-model:filterKey)
optionsArray[]FilterTriggerBar — { value, label }[] quick-select values
modelValueAnynullFilterTriggerBar — selected value; null = "All" (v-model)
columnsArraynullFull column catalog { key, label, locked? } — omit it and there is no picker
visibleColumnsString[][]Visible column keys (v-model:visibleColumns), emitted in catalog order
columnPickerBooleantrueThe opt-out: false hides the picker even when columns is passed
columnsLabelString'Columns'Segment text while nothing is hidden, and the panel heading
sideString'above'Where the picker panel opens; 'above' keeps the table uncovered
minVisibleNumber1The visible set never drops below this many
restrictKeysBooleantrueOffer only the filter keys the catalog has a column for — a column matches by its key or by its filterKey (string | string[]); a current filterKey the table can't answer is replaced by the first offered one

Events

EventDescription
update:modelValueFilterTriggerBar — the clicked value, or null for "All"
update:filterKeyFilterTriggerBar — the key chosen from the dropdown, or the first offered key when the current one has no column
update:visibleColumnsUxColumnPicker — the visible keys after a toggle or Show all

Slots

SlotDescription
endFurther trailing segment(s) on the bar, after the picker; scope { tone } (the bar's colour roles)

Related

Qpoint Brand Style Guide