Skip to main content
Version: Next 🚧

AggregationListComponent

The AggregationListComponent displays a flat, scrollable list of aggregation values. Users can select one or more items and apply them as search filters.

Features​

  • Multi-select list with checkbox-style items
  • Apply button appears only when the selection differs from the last applied state
  • Keyboard accessible: Space toggles an item, Enter applies the current selection
  • Virtual scrolling for large item lists (thousands of items rendered without performance loss)
  • Live search / suggest: type to filter items and fetch suggestions from the server
  • Select all / Unselect all
  • Load more: paginate through aggregation results
  • Quick filter mode: a single click instantly applies a filter, bypassing the Apply button
  • Multiple instances on the same page stay in sync automatically

Usage​

Basic Example​

sample.component.ts
import { AggregationListComponent } from "@sinequa/atomic-angular";

@Component({
selector: "sample-component",
imports: [AggregationListComponent],
template: `
<AggregationList
name="FileExt"
column="fileext"
[collapsible]="true"
[showFiltersCount]="true"
(onApply)="onFiltersApplied()"
(onClear)="onFiltersCleared()" />
`,
})
export class SampleComponent {
onFiltersApplied() { /* triggered after each apply */ }
onFiltersCleared() { /* triggered after clear */ }
}

Selectors​

<AggregationList ... />
<aggregation-list ... />
<aggregationlist ... />

Interaction model​

ActionResult
Click an itemToggles selection
Click item label (quick filter mode)Instantly applies that single filter
Space on a focused itemToggles selection
Enter on a focused item (Apply visible)Applies the current selection
Enter on a focused item (Apply not visible)Toggles selection
Click ApplyApplies all selected items as filters
Click ClearRemoves all active filters for this aggregation
Click Select allSelects all visible items
Click Unselect allDeselects all items
Click Load moreFetches the next page of aggregation items

API Reference​

Inputs​

NameTypeDefaultDescription
name*string | null(required)Name of the aggregation as defined in the search configuration.
column*string | null(required)Column name associated with the aggregation.
idstring | nullnullHTML id forwarded to the panel header.
classstring""Additional CSS classes applied to the host element.
collapsiblebooleanfalseWhether the panel can be collapsed by clicking the header.
collapsedbooleanfalseInitial collapsed state (only when collapsible is true).
searchableboolean | undefinedundefinedOverrides the aggregation's own searchable flag. When undefined, the aggregation configuration is used.
showFiltersCountbooleanfalseShows a badge in the panel header with the number of active filters.

Outputs​

NamePayloadDescription
onSelectAggregationItem[]Emitted when an item is checked or unchecked. Carries the full list of currently selected items.
onApplyvoidEmitted when the user applies the current selection.
onClearvoidEmitted when the user clears all active filters.

CSS Custom Properties​

PropertyDefaultDescription
--scroll-height20remMaximum height of the scrollable item area. Accepts any valid CSS length (px, rem, vh, etc.).
<!-- inline style -->
<AggregationList style="--scroll-height: 400px" ... />

<!-- Tailwind v4 arbitrary property -->
<AggregationList class="[--scroll-height:400px]" ... />

<!-- Tailwind v4 with responsive variant -->
<AggregationList class="[--scroll-height:20rem] lg:[--scroll-height:40rem]" ... />

Feature flags (from AppStore)​

FeatureEffect
showAggregationItemCountShows the result count next to each item.
quickFilterClicking an item's label instantly applies a single-value filter, bypassing the Apply button.

Schemas​

Component Interaction​

Store Interaction​

Notes​

  • Use AggregationList for flat aggregations only. If the aggregation has isTree: true, use AggregationTree instead — an error will be displayed otherwise.
  • The height of the scrollable area can be controlled using the --scroll-height CSS variable on the host element (e.g. style="--scroll-height: 400px"). Defaults to 20rem.
  • When multiple instances of the same aggregation coexist on the page (e.g. same filter in two side panels), all instances stay in sync: applying a filter from one instance is immediately reflected in all others.