- New package:
@drsutphin/ngx-mat-facet-toolkit - New selector:
ngx-mat-facet-toolkit - Standalone-only, Angular 19 patterns (signals + new control flow).
- Hybrid config API: provider defaults + per-instance overrides.
- Breaking v1 API for flexibility and long-term growth.
NgxMatFacetToolkitComponent(standalone)- Selector:
<ngx-mat-facet-toolkit>
Inputs (signal-based):
facets:FacetDefinition[]placeholder:stringclearButtonText:stringclearButtonEnabled:booleandateFormat:stringtooltip:string | nulldisplayFilterIcon:booleanfacetWidth:stringfacetHasBackdrop:booleanconfirmOnRemove:booleanchipLabelsEnabled:booleanidentifier:string | nullconfig:Partial<FacetToolkitConfig>(optional per-instance overrides)
Outputs:
facetChange: emits normalizedFacetSelection[](replacement forsearchUpdated)facetRemoved: emitsFacetSelection(optional, for fine-grained consumers)facetReset: emitsvoidwhen filters are cleared
Provider:
provideFacetToolkitConfig(config: Partial<FacetToolkitConfig>)
Per instance:
configinput overrides provider defaults for this component.
Current names to evolve:
Facet->FacetDefinitionFacetOption->FacetValueFacetResult-> internal (not public)
New model shape (proposed):
-
FacetDefinitionid: string(stable identifier, required)label: stringdescription?: stringtype: FacetDataTypedataType?: 'boolean' | 'number' | 'string' | 'date'options?: Observable<FacetValue[]> | FacetValue[]typeahead?: { provider: (text: string) => Observable<FacetValue[]>; debounce?: number; placeholder?: string }fixedFilterType?: FacetFilterTypeicon?: stringcssClass?: stringplaceholder?: string
-
FacetValuevalue: string | number | boolean | Datelabel?: stringcount?: numbermeta?: Record<string, unknown>
-
FacetSelectionid: stringtype: FacetDataTypefilterType?: FacetFilterTypevalues: FacetValue[]
- Rename project to
ngx-mat-facet-toolkit. - Update
package.json,projects/*/package.json, and public API exports. - Update selector from
ngx-mat-facet-searchtongx-mat-facet-toolkit.
- Convert all components, pipes, directives to
standalone: true. - Remove
NgxMatFacetSearchModule. - Export only standalone component + models.
- Update demo app to standalone bootstrapping and imports.
- Replace component state (
selectedFacets,availableFacets,filteredFacets) with signals. - Use
computedfor derived state andeffectfor persistence. - Replace
*ngIf/*ngForwith@if/@for. - Replace RxJS event wiring where signals are a better fit (keep RxJS for async typeahead).
- Introduce
provideFacetToolkitConfigandFacetToolkitConfig. - Merge provider defaults with per-instance
configinput. - Remove legacy
FACET_CONFIGinjection token from public API.
- Move to explicit storage strategy in config:
storage: 'session' | 'local' | 'none'identifierStrategy: 'parent' | 'url' | 'random' | 'manual'
- Use the new config in effects (signals) rather than imperative calls.
- Update demo app to use the new API and selector.
- Refresh README examples with v1 usage.
- Add migration guide for v0.x users (separate doc).
- New package + component name + selector.
- Standalone-only, no NgModule.
- Renamed models and event outputs.
- New config API (provider + per-instance overrides).
- Storage behavior and identity strategy expressed via new config.
- Split into multiple exports (first milestone):
FacetSearchBarComponentFacetChipsComponentFacetPanelComponent
- Advanced filtering (facet groups, nested facets, AND/OR logic).
- Facet persistence plugins (custom storage backends).
- Accessibility and keyboard navigation enhancements.