@sinequa/atomic-angular 1.11.0 → 1.13.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/fesm2022/sinequa-atomic-angular.mjs +1119 -650
- package/fesm2022/sinequa-atomic-angular.mjs.map +1 -1
- package/index.d.ts +326 -22
- package/package.json +1 -1
package/index.d.ts
CHANGED
|
@@ -4,7 +4,7 @@ import * as rxjs from 'rxjs';
|
|
|
4
4
|
import { BehaviorSubject, Observable, Subject } from 'rxjs';
|
|
5
5
|
import * as _ngrx_signals from '@ngrx/signals';
|
|
6
6
|
import * as _sinequa_atomic from '@sinequa/atomic';
|
|
7
|
-
import { Article as Article$1, LegacyFilter, KeyOf, Query, QueryParams as QueryParams$1, AggregationItem, TreeAggregationNode, Aggregation, TreeAggregation, Conversion, CCApp, CCColumn, CCQuery, CCWebService, Principal, SpellingCorrectionMode, AuditEvents, CustomHighlights, Result, AuditEventType, AuditEventTypeValues, Suggestion, Filter as Filter$2, PreviewData, TextLocation, TextChunk, UserProfile, CCSortingChoice, LinkResult, ExportQueryModel, ExportOutputFormat, FilterOperator } from '@sinequa/atomic';
|
|
7
|
+
import { Article as Article$1, LegacyFilter, KeyOf, Query, QueryParams as QueryParams$1, AggregationItem, TreeAggregationNode, Aggregation, TreeAggregation, Conversion, CCApp, CCColumn, CCQuery, CCWebService, Principal, SpellingCorrectionMode, AuditEvents, CustomHighlights, Result, AuditEventType, AuditEventTypeValues, Suggestion, Filter as Filter$2, PreviewData, TextLocation, TextChunk, UserProfile, CCSortingChoice, LinkResult, DidYouMeanAction, ExportQueryModel, ExportOutputFormat, FilterOperator } from '@sinequa/atomic';
|
|
8
8
|
import { Router, Params, Route, NavigationEnd, CanActivateFn, ResolveFn } from '@angular/router';
|
|
9
9
|
import * as _sinequa_atomic_angular from '@sinequa/atomic-angular';
|
|
10
10
|
import * as _sinequa_ui from '@sinequa/ui';
|
|
@@ -4754,13 +4754,18 @@ declare class JsonMethodPluginService {
|
|
|
4754
4754
|
declare class NavigationService {
|
|
4755
4755
|
private readonly router;
|
|
4756
4756
|
private readonly auditService;
|
|
4757
|
-
private
|
|
4757
|
+
private previousRouteName;
|
|
4758
4758
|
/**
|
|
4759
4759
|
* The URL of the current navigation, used to redirect the user after login.
|
|
4760
4760
|
*
|
|
4761
4761
|
* Sourced directly from `Router.url`, which Angular keeps up to date on every navigation with no
|
|
4762
4762
|
* subscription required — unlike a field updated as a side effect of `navigationEnd$` below,
|
|
4763
4763
|
* which only happens for whoever actually subscribes to it.
|
|
4764
|
+
*
|
|
4765
|
+
* The authentication screens are never returned: sending someone back to `/logout` after they
|
|
4766
|
+
* signed in defeats the sign-in, and back to `/login` loops. The exclusion used to be a literal
|
|
4767
|
+
* `!== "/login"`, which let through `/logout`, `/login?mode=changepassword` — same screen, one
|
|
4768
|
+
* query param — and any application whose `loginPath` is not spelled `/login`.
|
|
4764
4769
|
*/
|
|
4765
4770
|
get urlAfterNavigation(): string | null;
|
|
4766
4771
|
/**
|
|
@@ -4769,8 +4774,8 @@ declare class NavigationService {
|
|
|
4769
4774
|
* This observable performs the following operations:
|
|
4770
4775
|
* - Maps all router events to `RouterEvent`.
|
|
4771
4776
|
* - Filters the events to only include instances of `NavigationEnd`.
|
|
4772
|
-
* - Taps into the event stream to
|
|
4773
|
-
*
|
|
4777
|
+
* - Taps into the event stream to notify the audit service when the route itself changes — a new
|
|
4778
|
+
* query, a filter or another page of results stays on the same route and is not one.
|
|
4774
4779
|
* - Shares the replayed value with a buffer size of 1 to ensure subscribers receive the latest emitted value.
|
|
4775
4780
|
*
|
|
4776
4781
|
* @type Observable<RouterEvent>
|
|
@@ -4780,6 +4785,24 @@ declare class NavigationService {
|
|
|
4780
4785
|
static ɵprov: _angular_core.ɵɵInjectableDeclaration<NavigationService>;
|
|
4781
4786
|
}
|
|
4782
4787
|
|
|
4788
|
+
/**
|
|
4789
|
+
* Whether `url` is one of the authentication screens: the configured `loginPath` (defaulting to
|
|
4790
|
+
* `/login`) or `/logout`.
|
|
4791
|
+
*
|
|
4792
|
+
* Two things follow from it, and both were bugs before it existed:
|
|
4793
|
+
*
|
|
4794
|
+
* - **Nothing redirects to the login screen from one of these routes.** A request still trailing
|
|
4795
|
+
* behind a logout answers 401; recovering from it navigated to `loginPath` and replaced the
|
|
4796
|
+
* "signed out" confirmation the user was reading with the login form they had just left.
|
|
4797
|
+
* - **No `returnUrl` points at one of them.** Signing in only to be returned to `/logout` is a
|
|
4798
|
+
* loop with a friendly face.
|
|
4799
|
+
*
|
|
4800
|
+
* Comparisons are on the path alone, so `/login?mode=changepassword` counts, and by segment, so a
|
|
4801
|
+
* route merely starting with the same letters does not. Query params matter to the screen, never to
|
|
4802
|
+
* the question being asked here.
|
|
4803
|
+
*/
|
|
4804
|
+
declare function isAuthRoute(url: string | null | undefined, loginPath?: string): boolean;
|
|
4805
|
+
|
|
4783
4806
|
/**
|
|
4784
4807
|
* Creates a debounced signal that updates its value after a specified timeout.
|
|
4785
4808
|
*
|
|
@@ -4952,6 +4975,17 @@ declare function withThemes(app: ApplicationRef, themes: Theme[]): ApplicationRe
|
|
|
4952
4975
|
* @returns A promise resolving to a boolean indicating whether the user is authenticated.
|
|
4953
4976
|
*/
|
|
4954
4977
|
declare function signIn(): Promise<boolean>;
|
|
4978
|
+
/**
|
|
4979
|
+
* Whether a `signIn()` call is currently in flight for this page — kept `true` even after it has
|
|
4980
|
+
* resolved for an oauth/saml redirect that has not unloaded the document yet (see the `.finally()`
|
|
4981
|
+
* above).
|
|
4982
|
+
*
|
|
4983
|
+
* Exposed for `SignInComponent`: `AuthGuard` can mount it while `bootstrapApp()`'s own `signIn()`
|
|
4984
|
+
* is still deciding on, or navigating away for, a provider redirect. Calling `login()` again
|
|
4985
|
+
* directly in that window bypasses this mutex and re-reads the SDK's one-shot redirect guard as a
|
|
4986
|
+
* genuine repeat failure — see the regression this guards against in `sign-in-form.ts`.
|
|
4987
|
+
*/
|
|
4988
|
+
declare function isSignInInFlight(): boolean;
|
|
4955
4989
|
/**
|
|
4956
4990
|
* @internal Test-only hook: forces the concurrent-call mutex back to its initial (unheld) state.
|
|
4957
4991
|
* Production code never needs this — the mutex only stays held while a redirect/reload triggered
|
|
@@ -5546,10 +5580,10 @@ declare class PreviewService {
|
|
|
5546
5580
|
preview(id: string, q: Partial<Query>, customHighlights?: CustomHighlights[], audit?: AuditEvents): Observable<PreviewData>;
|
|
5547
5581
|
/**
|
|
5548
5582
|
* Closes the preview with the specified ID and updates the audit log.
|
|
5549
|
-
|
|
5550
|
-
|
|
5551
|
-
|
|
5552
|
-
|
|
5583
|
+
*
|
|
5584
|
+
* @param id - The ID of the preview to close.
|
|
5585
|
+
* @param query - The partial query object used to retrieve the preview detail.
|
|
5586
|
+
*/
|
|
5553
5587
|
close(id: string, query: Partial<Query>): void;
|
|
5554
5588
|
/**
|
|
5555
5589
|
* Previews an article in a new browser's tab.
|
|
@@ -6747,7 +6781,7 @@ declare class AggregationItemDirective {
|
|
|
6747
6781
|
* Tree-only fields (`level`/`expanded`/`hasChildren`) are typed as optional; a tree
|
|
6748
6782
|
* template can re-annotate them via {@link AggregationTreeItemContext} if desired.
|
|
6749
6783
|
*/
|
|
6750
|
-
static ngTemplateContextGuard(_dir: AggregationItemDirective,
|
|
6784
|
+
static ngTemplateContextGuard(_dir: AggregationItemDirective, _ctx: unknown): _ctx is AggregationItemContext;
|
|
6751
6785
|
static ɵfac: _angular_core.ɵɵFactoryDeclaration<AggregationItemDirective, never>;
|
|
6752
6786
|
static ɵdir: _angular_core.ɵɵDirectiveDeclaration<AggregationItemDirective, "[aggregationItem]", never, {}, {}, never, never, true, never>;
|
|
6753
6787
|
}
|
|
@@ -8076,6 +8110,22 @@ declare class AggregationDateComponent {
|
|
|
8076
8110
|
*/
|
|
8077
8111
|
private seedingForm;
|
|
8078
8112
|
readonly aggregation: _angular_core.Signal<AggEx | null>;
|
|
8113
|
+
/**
|
|
8114
|
+
* `true` when the aggregation cannot be resolved — missing from the store, or an
|
|
8115
|
+
* empty `[aggregation]` input in controlled mode. Always drives the `hidden`
|
|
8116
|
+
* class on the host — unlike list/tree, there is no separate "resolved but
|
|
8117
|
+
* empty" state to gate behind a `hideWhenEmpty` input here.
|
|
8118
|
+
*
|
|
8119
|
+
* Unlike list/tree, a date aggregation *with* no items stays visible: its custom
|
|
8120
|
+
* range is still usable (same rule as `FilterButton`, which never disables a date
|
|
8121
|
+
* filter).
|
|
8122
|
+
*
|
|
8123
|
+
* Resolved on its own rather than derived from {@link aggregation}: that computed
|
|
8124
|
+
* spreads the resolution into a new object, and the spread of a `null` yields a
|
|
8125
|
+
* non-null `{ items: [] }` shell — the missing case is not observable from it.
|
|
8126
|
+
* Interposing a shared computed is not an option either: its referential equality
|
|
8127
|
+
* check would stop `aggregation()` from recomputing, and with it `dateOptions()`.
|
|
8128
|
+
*/
|
|
8079
8129
|
readonly isEmpty: _angular_core.Signal<boolean>;
|
|
8080
8130
|
readonly items: _angular_core.Signal<AggregationItem[]>;
|
|
8081
8131
|
protected readonly dateOptions: _angular_core.Signal<_sinequa_atomic.DateFilter[]>;
|
|
@@ -8898,19 +8948,22 @@ declare class SignInComponent {
|
|
|
8898
8948
|
autoOAuthProvider: string;
|
|
8899
8949
|
autoSAMLProvider: string;
|
|
8900
8950
|
bearerToken: string;
|
|
8901
|
-
loginPath: string;
|
|
8902
8951
|
userOverride: {
|
|
8903
8952
|
username: string;
|
|
8904
8953
|
domain: string;
|
|
8905
8954
|
};
|
|
8906
8955
|
userOverrideActive: boolean;
|
|
8907
8956
|
authMode: _sinequa_atomic.AuthMode;
|
|
8957
|
+
auth: _sinequa_atomic.AuthOptions;
|
|
8958
|
+
uiLanguage: string;
|
|
8959
|
+
aggregationCounts: _sinequa_atomic.AggregationCounts;
|
|
8908
8960
|
useCredentials: boolean;
|
|
8909
8961
|
useSSO: boolean;
|
|
8910
8962
|
useSAML: boolean;
|
|
8911
8963
|
logLevel: _sinequa_atomic.LogLevel;
|
|
8964
|
+
loginPath: string;
|
|
8912
8965
|
createRoutes: boolean;
|
|
8913
|
-
} & Record<string,
|
|
8966
|
+
}> & Record<string, unknown>;
|
|
8914
8967
|
/**
|
|
8915
8968
|
* True when authentication is handled outside the credentials form — i.e. by the
|
|
8916
8969
|
* browser/proxy (`sso`) or by an auto-configured OAuth/SAML provider. In those modes
|
|
@@ -9010,7 +9063,7 @@ declare class SignedOutComponent {
|
|
|
9010
9063
|
|
|
9011
9064
|
declare class BookmarkButtonComponent {
|
|
9012
9065
|
variant: _angular_core.InputSignal<"icon" | "default" | "none" | "primary" | "secondary" | "destructive" | "ai" | "link" | "outline" | "accent" | "tertiary" | "ghost" | "light-accent" | null | undefined>;
|
|
9013
|
-
size: _angular_core.InputSignal<"icon" | "
|
|
9066
|
+
size: _angular_core.InputSignal<"icon" | "sm" | "md" | "lg" | "xs" | null | undefined>;
|
|
9014
9067
|
readonly article: _angular_core.InputSignal<Partial<Article$1>>;
|
|
9015
9068
|
private readonly userSettingsStore;
|
|
9016
9069
|
private readonly route;
|
|
@@ -9201,6 +9254,14 @@ declare class DidYouMeanComponent {
|
|
|
9201
9254
|
protected spellingCorrectionMode: _angular_core.Signal<_sinequa_atomic.SpellingCorrectionMode | undefined>;
|
|
9202
9255
|
protected correction: _angular_core.Signal<string | undefined>;
|
|
9203
9256
|
protected original: _angular_core.Signal<string | undefined>;
|
|
9257
|
+
/**
|
|
9258
|
+
* Resolves the action to display from the per-term `appliedChanges` reported by the engine (ES-28698).
|
|
9259
|
+
* Falls back to `spellingCorrectionMode`-based inference for engine versions prior to 11.14 that
|
|
9260
|
+
* do not report `appliedChanges`, or when the applied changes disagree on the action to take
|
|
9261
|
+
* (defaults to `suggestion`, the only case that does not assert a search behavior that may not
|
|
9262
|
+
* actually have happened — the root cause of ES-27719).
|
|
9263
|
+
*/
|
|
9264
|
+
protected action: _angular_core.Signal<DidYouMeanAction | undefined>;
|
|
9204
9265
|
readonly router: Router;
|
|
9205
9266
|
private readonly queryParamsStore;
|
|
9206
9267
|
selectCorrected(): void;
|
|
@@ -10730,7 +10791,6 @@ declare class SearchFeedbackComponent {
|
|
|
10730
10791
|
}
|
|
10731
10792
|
|
|
10732
10793
|
declare class AggregationTreeComponent {
|
|
10733
|
-
#private;
|
|
10734
10794
|
cn: typeof cn;
|
|
10735
10795
|
class: _angular_core.InputSignal<string>;
|
|
10736
10796
|
id: _angular_core.InputSignal<string | null>;
|
|
@@ -10748,6 +10808,18 @@ declare class AggregationTreeComponent {
|
|
|
10748
10808
|
* @default true
|
|
10749
10809
|
*/
|
|
10750
10810
|
showCheckbox: _angular_core.InputSignalWithTransform<boolean, unknown>;
|
|
10811
|
+
/**
|
|
10812
|
+
* Whether every selection gesture — row click, checkbox click, Enter on the
|
|
10813
|
+
* checkbox — applies the filter immediately, instead of only revealing the
|
|
10814
|
+
* Apply button.
|
|
10815
|
+
*
|
|
10816
|
+
* Independent of the `features.quickFilter` customization flag: `applyOnSelect`
|
|
10817
|
+
* applies even when `quickFilter` is off, and leaves the label-click behavior
|
|
10818
|
+
* untouched when it is off itself.
|
|
10819
|
+
*
|
|
10820
|
+
* @default false
|
|
10821
|
+
*/
|
|
10822
|
+
applyOnSelect: _angular_core.InputSignalWithTransform<boolean, unknown>;
|
|
10751
10823
|
expandedLevel: _angular_core.InputSignalWithTransform<number | undefined, unknown>;
|
|
10752
10824
|
/**
|
|
10753
10825
|
* When `false`, applying or clearing filters updates the store without
|
|
@@ -10780,6 +10852,20 @@ declare class AggregationTreeComponent {
|
|
|
10780
10852
|
* @default undefined — derive from `QueryParamsStore` filters (current behavior)
|
|
10781
10853
|
*/
|
|
10782
10854
|
controlledSelection: _angular_core.InputSignal<AggregationSelection | undefined>;
|
|
10855
|
+
/**
|
|
10856
|
+
* Whether the host removes itself from the layout (Tailwind's `hidden`, i.e.
|
|
10857
|
+
* `display: none`) when it resolves to zero items with no filter applied.
|
|
10858
|
+
* When `false` (default), the facet stays in the layout with its dimmed,
|
|
10859
|
+
* non-expandable header.
|
|
10860
|
+
*
|
|
10861
|
+
* Does not affect a **missing** aggregation — no entry in the store (or an
|
|
10862
|
+
* empty `[aggregation]` input in controlled mode) — which always hides
|
|
10863
|
+
* unconditionally: a facet with no backing data is not a legitimate empty
|
|
10864
|
+
* state worth an opt-in, it is a misconfiguration.
|
|
10865
|
+
*
|
|
10866
|
+
* @default false
|
|
10867
|
+
*/
|
|
10868
|
+
hideWhenEmpty: _angular_core.InputSignalWithTransform<boolean, unknown>;
|
|
10783
10869
|
onSelect: _angular_core.OutputEmitterRef<AggregationItem[]>;
|
|
10784
10870
|
onApply: _angular_core.OutputEmitterRef<void>;
|
|
10785
10871
|
onClear: _angular_core.OutputEmitterRef<void>;
|
|
@@ -10810,6 +10896,13 @@ declare class AggregationTreeComponent {
|
|
|
10810
10896
|
protected readonly resolvedItemTemplate: _angular_core.Signal<TemplateRef<AggregationItemContext> | undefined>;
|
|
10811
10897
|
selection: _angular_core.WritableSignal<boolean>;
|
|
10812
10898
|
isAllSelected: _angular_core.WritableSignal<boolean>;
|
|
10899
|
+
/**
|
|
10900
|
+
* Paths of the nodes the user expanded, so they can be reopened after a refresh
|
|
10901
|
+
* wipes `$opened`. Plain field, not a signal: nothing renders from it.
|
|
10902
|
+
*/
|
|
10903
|
+
private readonly openedPaths;
|
|
10904
|
+
/** Re-entrancy guard: `open()` writes to the store, which re-runs the restore effect. */
|
|
10905
|
+
private isRestoringOpenedNodes;
|
|
10813
10906
|
searchText: _angular_core.ModelSignal<string>;
|
|
10814
10907
|
private readonly base;
|
|
10815
10908
|
readonly isControlled: _angular_core.Signal<boolean>;
|
|
@@ -11258,7 +11351,31 @@ declare class AggregationTreeComponent {
|
|
|
11258
11351
|
readonly linkChildren: _angular_core.Signal<boolean | undefined>;
|
|
11259
11352
|
aggregation: _angular_core.Signal<AggEx | null>;
|
|
11260
11353
|
items: _angular_core.Signal<AggregationListItem[]>;
|
|
11354
|
+
/**
|
|
11355
|
+
* `true` when there is nothing to render: the aggregation is missing from the
|
|
11356
|
+
* store, or it resolves to zero items. Drives the panel's dimmed header.
|
|
11357
|
+
*/
|
|
11261
11358
|
isEmpty: _angular_core.Signal<boolean>;
|
|
11359
|
+
/**
|
|
11360
|
+
* `true` when the aggregation cannot be resolved at all: missing from the
|
|
11361
|
+
* store (or an empty `[aggregation]` input in controlled mode). Always hides
|
|
11362
|
+
* the host, regardless of `hideWhenEmpty` — a facet with no backing data has
|
|
11363
|
+
* nothing a dimmed header could ever offer the user.
|
|
11364
|
+
*/
|
|
11365
|
+
readonly isMissing: _angular_core.Signal<boolean>;
|
|
11366
|
+
/**
|
|
11367
|
+
* `true` when the host is removed from the layout when `hideWhenEmpty` is
|
|
11368
|
+
* `true`: the aggregation resolves but has nothing to render *and* no filter
|
|
11369
|
+
* is applied. Does not cover a missing aggregation — see {@link isMissing},
|
|
11370
|
+
* which hides unconditionally.
|
|
11371
|
+
*
|
|
11372
|
+
* A tree keeps its facet visible while a filter is applied, even with zero nodes.
|
|
11373
|
+
* Unlike a list, the applied values are not merged back into the item list
|
|
11374
|
+
* (`addCurrentFiltersToItems` skips trees), so a filtered tree can legitimately
|
|
11375
|
+
* resolve to nothing — and hiding it would leave no way to clear that filter from
|
|
11376
|
+
* the facet.
|
|
11377
|
+
*/
|
|
11378
|
+
readonly isHidden: _angular_core.Signal<boolean>;
|
|
11262
11379
|
readonly searchedItems: _angular_core.Signal<TreeAggregationNode[] | {
|
|
11263
11380
|
name: string | null;
|
|
11264
11381
|
value: string;
|
|
@@ -11272,9 +11389,25 @@ declare class AggregationTreeComponent {
|
|
|
11272
11389
|
clear(): void;
|
|
11273
11390
|
selectAll(): void;
|
|
11274
11391
|
unselectAll(): void;
|
|
11275
|
-
|
|
11392
|
+
/**
|
|
11393
|
+
* @param opts.keepSearchText Leave the search-within-facet text in place. Used by
|
|
11394
|
+
* `applyOnSelect`, where the user is expected to tick several values in a row and
|
|
11395
|
+
* would otherwise lose the search context on the first one.
|
|
11396
|
+
*/
|
|
11397
|
+
apply(overrideFilters?: LegacyFilter[], opts?: {
|
|
11398
|
+
keepSearchText?: boolean;
|
|
11399
|
+
}): void;
|
|
11276
11400
|
loadMore(): void;
|
|
11277
11401
|
open(node: AggregationListItem): Promise<void>;
|
|
11402
|
+
/**
|
|
11403
|
+
* Reopen the nodes the user had expanded, after a search replaced the aggregation.
|
|
11404
|
+
*
|
|
11405
|
+
* Shallowest first, sequentially: a deep node only exists in the tree once its parent
|
|
11406
|
+
* has been reopened. Nodes whose children were lazily loaded come back empty, so they
|
|
11407
|
+
* are re-fetched through `open()` — which is why this cannot be a plain synchronous pass.
|
|
11408
|
+
*/
|
|
11409
|
+
private restoreOpenedNodes;
|
|
11410
|
+
private findNodeByPath;
|
|
11278
11411
|
select(): void;
|
|
11279
11412
|
protected treeItemName(item: AggregationListItem): string;
|
|
11280
11413
|
protected isTreeItemFiltered(item: AggregationListItem, field: string | null | undefined): boolean;
|
|
@@ -11282,6 +11415,19 @@ declare class AggregationTreeComponent {
|
|
|
11282
11415
|
protected treeChildrenPath(item: AggregationListItem, parentPath: string[]): string[];
|
|
11283
11416
|
protected selectTreeItem(node: AggregationListItem, parent: AggregationListItem | null, e?: Event, updateChildren?: boolean): void;
|
|
11284
11417
|
protected toggleTreeNode(e: Event, node: AggregationListItem): void;
|
|
11418
|
+
/** Remember (or forget) an expanded node, keyed by its full `$path`. */
|
|
11419
|
+
private trackOpened;
|
|
11420
|
+
/**
|
|
11421
|
+
* Single decision point for the item interaction paths: select, then apply only
|
|
11422
|
+
* when the caller says so. Never call `apply()` from anywhere else in that path.
|
|
11423
|
+
*/
|
|
11424
|
+
private commitTreeSelection;
|
|
11425
|
+
/** Row click, and checkbox click/Enter — the "any selection gesture" surface. */
|
|
11426
|
+
protected onTreeItemRowClick(node: AggregationListItem, parent: AggregationListItem | null, event: Event): void;
|
|
11427
|
+
/**
|
|
11428
|
+
* Label click. `quickFilter` is the app-wide label-only shortcut; `applyOnSelect`
|
|
11429
|
+
* covers the label too. With neither, the click bubbles up to the row handler.
|
|
11430
|
+
*/
|
|
11285
11431
|
protected onTreeItemTextClick(node: AggregationListItem, parent: AggregationListItem | null, event: Event): void;
|
|
11286
11432
|
protected getFilters(): LegacyFilter[];
|
|
11287
11433
|
protected getFiltersForTree(): LegacyFilter[];
|
|
@@ -11297,7 +11443,7 @@ declare class AggregationTreeComponent {
|
|
|
11297
11443
|
private expandItems;
|
|
11298
11444
|
private traverse;
|
|
11299
11445
|
static ɵfac: _angular_core.ɵɵFactoryDeclaration<AggregationTreeComponent, never>;
|
|
11300
|
-
static ɵcmp: _angular_core.ɵɵComponentDeclaration<AggregationTreeComponent, "AggregationTree, aggregation-tree, aggregationtree", never, { "class": { "alias": "class"; "required": false; "isSignal": true; }; "id": { "alias": "id"; "required": false; "isSignal": true; }; "name": { "alias": "name"; "required": true; "isSignal": true; }; "column": { "alias": "column"; "required": true; "isSignal": true; }; "collapsible": { "alias": "collapsible"; "required": false; "isSignal": true; }; "collapsed": { "alias": "collapsed"; "required": false; "isSignal": true; }; "searchable": { "alias": "searchable"; "required": false; "isSignal": true; }; "showFiltersCount": { "alias": "showFiltersCount"; "required": false; "isSignal": true; }; "showCheckbox": { "alias": "showCheckbox"; "required": false; "isSignal": true; }; "expandedLevel": { "alias": "expandedLevel"; "required": false; "isSignal": true; }; "syncUrl": { "alias": "syncUrl"; "required": false; "isSignal": true; }; "controlledQuery": { "alias": "query"; "required": false; "isSignal": true; }; "controlledAggregation": { "alias": "aggregation"; "required": false; "isSignal": true; }; "controlledSelection": { "alias": "selection"; "required": false; "isSignal": true; }; "itemTemplateInput": { "alias": "itemTemplate"; "required": false; "isSignal": true; }; "searchText": { "alias": "searchText"; "required": false; "isSignal": true; }; }, { "onSelect": "onSelect"; "onApply": "onApply"; "onClear": "onClear"; "selectionChange": "selectionChange"; "filtersChange": "filtersChange"; "searchText": "searchTextChange"; }, ["itemDirective"], ["label"], true, never>;
|
|
11446
|
+
static ɵcmp: _angular_core.ɵɵComponentDeclaration<AggregationTreeComponent, "AggregationTree, aggregation-tree, aggregationtree", never, { "class": { "alias": "class"; "required": false; "isSignal": true; }; "id": { "alias": "id"; "required": false; "isSignal": true; }; "name": { "alias": "name"; "required": true; "isSignal": true; }; "column": { "alias": "column"; "required": true; "isSignal": true; }; "collapsible": { "alias": "collapsible"; "required": false; "isSignal": true; }; "collapsed": { "alias": "collapsed"; "required": false; "isSignal": true; }; "searchable": { "alias": "searchable"; "required": false; "isSignal": true; }; "showFiltersCount": { "alias": "showFiltersCount"; "required": false; "isSignal": true; }; "showCheckbox": { "alias": "showCheckbox"; "required": false; "isSignal": true; }; "applyOnSelect": { "alias": "applyOnSelect"; "required": false; "isSignal": true; }; "expandedLevel": { "alias": "expandedLevel"; "required": false; "isSignal": true; }; "syncUrl": { "alias": "syncUrl"; "required": false; "isSignal": true; }; "controlledQuery": { "alias": "query"; "required": false; "isSignal": true; }; "controlledAggregation": { "alias": "aggregation"; "required": false; "isSignal": true; }; "controlledSelection": { "alias": "selection"; "required": false; "isSignal": true; }; "hideWhenEmpty": { "alias": "hideWhenEmpty"; "required": false; "isSignal": true; }; "itemTemplateInput": { "alias": "itemTemplate"; "required": false; "isSignal": true; }; "searchText": { "alias": "searchText"; "required": false; "isSignal": true; }; }, { "onSelect": "onSelect"; "onApply": "onApply"; "onClear": "onClear"; "selectionChange": "selectionChange"; "filtersChange": "filtersChange"; "searchText": "searchTextChange"; }, ["itemDirective"], ["label"], true, never>;
|
|
11301
11447
|
}
|
|
11302
11448
|
|
|
11303
11449
|
declare class AggregationListComponent {
|
|
@@ -11318,6 +11464,18 @@ declare class AggregationListComponent {
|
|
|
11318
11464
|
* @default true
|
|
11319
11465
|
*/
|
|
11320
11466
|
showCheckbox: _angular_core.InputSignalWithTransform<boolean, unknown>;
|
|
11467
|
+
/**
|
|
11468
|
+
* Whether every selection gesture — row click, checkbox click, Enter on the
|
|
11469
|
+
* checkbox — applies the filter immediately, instead of only revealing the
|
|
11470
|
+
* Apply button.
|
|
11471
|
+
*
|
|
11472
|
+
* Independent of the `features.quickFilter` customization flag: `applyOnSelect`
|
|
11473
|
+
* applies even when `quickFilter` is off, and leaves the label-click behavior
|
|
11474
|
+
* untouched when it is off itself.
|
|
11475
|
+
*
|
|
11476
|
+
* @default false
|
|
11477
|
+
*/
|
|
11478
|
+
applyOnSelect: _angular_core.InputSignalWithTransform<boolean, unknown>;
|
|
11321
11479
|
/**
|
|
11322
11480
|
* When `false`, applying or clearing filters updates the store without
|
|
11323
11481
|
* synchronizing the URL (no browser history entry, not shareable/restorable).
|
|
@@ -11348,6 +11506,19 @@ declare class AggregationListComponent {
|
|
|
11348
11506
|
* @default undefined — derive from `QueryParamsStore` filters (current behavior)
|
|
11349
11507
|
*/
|
|
11350
11508
|
controlledSelection: _angular_core.InputSignal<AggregationSelection | undefined>;
|
|
11509
|
+
/**
|
|
11510
|
+
* Whether the host removes itself from the layout (Tailwind's `hidden`, i.e.
|
|
11511
|
+
* `display: none`) when it resolves to zero items. When `false` (default), the
|
|
11512
|
+
* facet stays in the layout with its dimmed, non-expandable header.
|
|
11513
|
+
*
|
|
11514
|
+
* Does not affect a **missing** aggregation — no entry in the store (or an
|
|
11515
|
+
* empty `[aggregation]` input in controlled mode) — which always hides
|
|
11516
|
+
* unconditionally: a facet with no backing data is not a legitimate empty
|
|
11517
|
+
* state worth an opt-in, it is a misconfiguration.
|
|
11518
|
+
*
|
|
11519
|
+
* @default false
|
|
11520
|
+
*/
|
|
11521
|
+
hideWhenEmpty: _angular_core.InputSignalWithTransform<boolean, unknown>;
|
|
11351
11522
|
onSelect: _angular_core.OutputEmitterRef<AggregationItem[]>;
|
|
11352
11523
|
onApply: _angular_core.OutputEmitterRef<void>;
|
|
11353
11524
|
onClear: _angular_core.OutputEmitterRef<void>;
|
|
@@ -11838,23 +12009,54 @@ declare class AggregationListComponent {
|
|
|
11838
12009
|
readonly virtualizer: _tanstack_angular_virtual.AngularVirtualizer<HTMLDivElement, Element>;
|
|
11839
12010
|
aggregation: _angular_core.Signal<AggEx | null>;
|
|
11840
12011
|
items: _angular_core.Signal<AggregationListItem[]>;
|
|
12012
|
+
/**
|
|
12013
|
+
* `true` when there is nothing to render: the aggregation is missing from the
|
|
12014
|
+
* store, or it resolves to zero items. Drives the panel's dimmed header.
|
|
12015
|
+
* Drives the `hidden` class on the host only when `hideWhenEmpty` is `true` —
|
|
12016
|
+
* {@link isMissing} handles the unconditional case on its own.
|
|
12017
|
+
*/
|
|
11841
12018
|
isEmpty: _angular_core.Signal<boolean>;
|
|
12019
|
+
/**
|
|
12020
|
+
* `true` when the aggregation cannot be resolved at all: missing from the
|
|
12021
|
+
* store (or an empty `[aggregation]` input in controlled mode). Always hides
|
|
12022
|
+
* the host, regardless of `hideWhenEmpty` — a facet with no backing data has
|
|
12023
|
+
* nothing a dimmed header could ever offer the user.
|
|
12024
|
+
*/
|
|
12025
|
+
isMissing: _angular_core.Signal<boolean>;
|
|
11842
12026
|
searchedItems: _angular_core.Signal<AggregationItem[]>;
|
|
11843
12027
|
constructor();
|
|
11844
12028
|
clear(): void;
|
|
11845
12029
|
selectAll(): void;
|
|
11846
12030
|
unselectAll(): void;
|
|
11847
|
-
|
|
12031
|
+
/**
|
|
12032
|
+
* @param opts.keepSearchText Leave the search-within-facet text in place. Used by
|
|
12033
|
+
* `applyOnSelect`, where the user is expected to tick several values in a row and
|
|
12034
|
+
* would otherwise lose the search context on the first one.
|
|
12035
|
+
*/
|
|
12036
|
+
apply(opts?: {
|
|
12037
|
+
keepSearchText?: boolean;
|
|
12038
|
+
}): void;
|
|
11848
12039
|
loadMore(): void;
|
|
11849
12040
|
select(): void;
|
|
11850
12041
|
protected listItemName(item: AggregationItem): string;
|
|
11851
12042
|
protected isListItemFiltered(item: AggregationItem, field: string | null | undefined): boolean;
|
|
11852
12043
|
protected selectListItem(item: AggregationItem, e?: Event): void;
|
|
12044
|
+
/**
|
|
12045
|
+
* Single decision point for the item interaction paths: select, then apply only
|
|
12046
|
+
* when the caller says so. Never call `apply()` from anywhere else in that path.
|
|
12047
|
+
*/
|
|
12048
|
+
private commitListSelection;
|
|
12049
|
+
/** Row click, and checkbox click/Enter — the "any selection gesture" surface. */
|
|
12050
|
+
protected onListItemRowClick(item: AggregationItem, event: Event): void;
|
|
12051
|
+
/**
|
|
12052
|
+
* Label click. `quickFilter` is the app-wide label-only shortcut; `applyOnSelect`
|
|
12053
|
+
* covers the label too. With neither, the click bubbles up to the row handler.
|
|
12054
|
+
*/
|
|
11853
12055
|
protected onListItemTextClick(item: AggregationItem, event: Event): void;
|
|
11854
12056
|
protected getFilters(): LegacyFilter[];
|
|
11855
12057
|
private addCurrentFiltersToItems;
|
|
11856
12058
|
static ɵfac: _angular_core.ɵɵFactoryDeclaration<AggregationListComponent, never>;
|
|
11857
|
-
static ɵcmp: _angular_core.ɵɵComponentDeclaration<AggregationListComponent, "AggregationList, aggregation-list, aggregationlist", never, { "class": { "alias": "class"; "required": false; "isSignal": true; }; "id": { "alias": "id"; "required": false; "isSignal": true; }; "name": { "alias": "name"; "required": true; "isSignal": true; }; "column": { "alias": "column"; "required": true; "isSignal": true; }; "collapsible": { "alias": "collapsible"; "required": false; "isSignal": true; }; "collapsed": { "alias": "collapsed"; "required": false; "isSignal": true; }; "searchable": { "alias": "searchable"; "required": false; "isSignal": true; }; "showFiltersCount": { "alias": "showFiltersCount"; "required": false; "isSignal": true; }; "showCheckbox": { "alias": "showCheckbox"; "required": false; "isSignal": true; }; "syncUrl": { "alias": "syncUrl"; "required": false; "isSignal": true; }; "controlledQuery": { "alias": "query"; "required": false; "isSignal": true; }; "controlledAggregation": { "alias": "aggregation"; "required": false; "isSignal": true; }; "controlledSelection": { "alias": "selection"; "required": false; "isSignal": true; }; "itemTemplateInput": { "alias": "itemTemplate"; "required": false; "isSignal": true; }; "searchText": { "alias": "searchText"; "required": false; "isSignal": true; }; }, { "onSelect": "onSelect"; "onApply": "onApply"; "onClear": "onClear"; "selectionChange": "selectionChange"; "filtersChange": "filtersChange"; "searchText": "searchTextChange"; }, ["itemDirective"], ["label"], true, never>;
|
|
12059
|
+
static ɵcmp: _angular_core.ɵɵComponentDeclaration<AggregationListComponent, "AggregationList, aggregation-list, aggregationlist", never, { "class": { "alias": "class"; "required": false; "isSignal": true; }; "id": { "alias": "id"; "required": false; "isSignal": true; }; "name": { "alias": "name"; "required": true; "isSignal": true; }; "column": { "alias": "column"; "required": true; "isSignal": true; }; "collapsible": { "alias": "collapsible"; "required": false; "isSignal": true; }; "collapsed": { "alias": "collapsed"; "required": false; "isSignal": true; }; "searchable": { "alias": "searchable"; "required": false; "isSignal": true; }; "showFiltersCount": { "alias": "showFiltersCount"; "required": false; "isSignal": true; }; "showCheckbox": { "alias": "showCheckbox"; "required": false; "isSignal": true; }; "applyOnSelect": { "alias": "applyOnSelect"; "required": false; "isSignal": true; }; "syncUrl": { "alias": "syncUrl"; "required": false; "isSignal": true; }; "controlledQuery": { "alias": "query"; "required": false; "isSignal": true; }; "controlledAggregation": { "alias": "aggregation"; "required": false; "isSignal": true; }; "controlledSelection": { "alias": "selection"; "required": false; "isSignal": true; }; "hideWhenEmpty": { "alias": "hideWhenEmpty"; "required": false; "isSignal": true; }; "itemTemplateInput": { "alias": "itemTemplate"; "required": false; "isSignal": true; }; "searchText": { "alias": "searchText"; "required": false; "isSignal": true; }; }, { "onSelect": "onSelect"; "onApply": "onApply"; "onClear": "onClear"; "selectionChange": "selectionChange"; "filtersChange": "filtersChange"; "searchText": "searchTextChange"; }, ["itemDirective"], ["label"], true, never>;
|
|
11858
12060
|
}
|
|
11859
12061
|
|
|
11860
12062
|
/**
|
|
@@ -12199,6 +12401,7 @@ declare class AggregationComponent {
|
|
|
12199
12401
|
aggregations: Aggregation[];
|
|
12200
12402
|
}>;
|
|
12201
12403
|
aggregationsService: AggregationsService;
|
|
12404
|
+
private readonly queryParamsStore;
|
|
12202
12405
|
aggregationDate: _angular_core.Signal<AggregationDateComponent | undefined>;
|
|
12203
12406
|
aggregationTree: _angular_core.Signal<AggregationTreeComponent | undefined>;
|
|
12204
12407
|
aggregationList: _angular_core.Signal<AggregationListComponent | undefined>;
|
|
@@ -12258,6 +12461,18 @@ declare class AggregationComponent {
|
|
|
12258
12461
|
* @default true
|
|
12259
12462
|
*/
|
|
12260
12463
|
showCheckbox: _angular_core.InputSignalWithTransform<boolean, unknown>;
|
|
12464
|
+
/**
|
|
12465
|
+
* **List/tree only.** Whether every selection gesture — row click, checkbox click,
|
|
12466
|
+
* Enter on the checkbox — applies the filter immediately, instead of only revealing
|
|
12467
|
+
* the Apply button.
|
|
12468
|
+
*
|
|
12469
|
+
* Independent of the `features.quickFilter` customization flag, which governs the
|
|
12470
|
+
* label click only. Ignored by the date variant, which is a radio list: use
|
|
12471
|
+
* `emitOn="selection"` there for the equivalent behavior.
|
|
12472
|
+
*
|
|
12473
|
+
* @default false
|
|
12474
|
+
*/
|
|
12475
|
+
applyOnSelect: _angular_core.InputSignalWithTransform<boolean, unknown>;
|
|
12261
12476
|
expandedLevel: _angular_core.InputSignalWithTransform<number | undefined, unknown>;
|
|
12262
12477
|
/**
|
|
12263
12478
|
* Controls whether applying or clearing a filter synchronizes the URL.
|
|
@@ -12300,6 +12515,9 @@ declare class AggregationComponent {
|
|
|
12300
12515
|
* emissions to a visible Apply button, matching the list/tree select-then-Apply
|
|
12301
12516
|
* flow. Ignored outside controlled mode.
|
|
12302
12517
|
*
|
|
12518
|
+
* The list/tree counterpart of `emitOn="selection"` is `applyOnSelect` — do not
|
|
12519
|
+
* use `emitOn` on those variants, it has no effect there.
|
|
12520
|
+
*
|
|
12303
12521
|
* @default 'selection'
|
|
12304
12522
|
*/
|
|
12305
12523
|
emitOn: _angular_core.InputSignal<"selection" | "apply">;
|
|
@@ -12316,6 +12534,19 @@ declare class AggregationComponent {
|
|
|
12316
12534
|
* @default "auto"
|
|
12317
12535
|
*/
|
|
12318
12536
|
type: _angular_core.InputSignal<"auto" | "list" | "tree" | "date">;
|
|
12537
|
+
/**
|
|
12538
|
+
* Whether the host removes itself from the layout (Tailwind's `hidden`, i.e.
|
|
12539
|
+
* `display: none`) when it resolves to zero items. When `false` (default), the
|
|
12540
|
+
* facet stays in the layout with its dimmed, non-expandable header.
|
|
12541
|
+
*
|
|
12542
|
+
* Does not affect a **missing** aggregation — no entry in the store (or an
|
|
12543
|
+
* empty `[aggregation]` input in controlled mode) — which always hides
|
|
12544
|
+
* unconditionally: a facet with no backing data is not a legitimate empty
|
|
12545
|
+
* state worth an opt-in, it is a misconfiguration.
|
|
12546
|
+
*
|
|
12547
|
+
* @default false
|
|
12548
|
+
*/
|
|
12549
|
+
hideWhenEmpty: _angular_core.InputSignalWithTransform<boolean, unknown>;
|
|
12319
12550
|
/**
|
|
12320
12551
|
* An output event that emits an array of selected `AggregationItem` objects when the user selects items in the aggregation component. This allows parent components to listen for selection changes and react accordingly, such as applying filters or updating the UI based on the selected items.
|
|
12321
12552
|
*/
|
|
@@ -12355,6 +12586,39 @@ declare class AggregationComponent {
|
|
|
12355
12586
|
* date/tree/list heuristic when `type` is `"auto"`.
|
|
12356
12587
|
*/
|
|
12357
12588
|
protected resolvedType: _angular_core.Signal<"list" | "tree" | "date">;
|
|
12589
|
+
/** Whether a filter is currently applied on this aggregation. */
|
|
12590
|
+
private readonly hasFilters;
|
|
12591
|
+
/**
|
|
12592
|
+
* `true` when the aggregation cannot be resolved at all: missing from the store
|
|
12593
|
+
* (or an empty `[aggregation]` input in controlled mode). Always hides the host,
|
|
12594
|
+
* regardless of `hideWhenEmpty` — a facet with no backing data has nothing a
|
|
12595
|
+
* dimmed header could ever offer the user (it can never expand, gain items, or
|
|
12596
|
+
* be searched), so showing it is not a legitimate "empty state" worth an opt-in.
|
|
12597
|
+
*/
|
|
12598
|
+
protected readonly isMissing: _angular_core.Signal<boolean>;
|
|
12599
|
+
/**
|
|
12600
|
+
* `true` when the aggregation resolves but has nothing to show: zero items and
|
|
12601
|
+
* no applied filter. When `hideWhenEmpty` is `true`, the host is then removed
|
|
12602
|
+
* from the layout, so a parent laying its facets out with `gap`/`divide` is left
|
|
12603
|
+
* with no phantom slot. When `false` (default), the facet stays with its dimmed,
|
|
12604
|
+
* non-expandable header — unlike {@link isMissing}, this is a legitimate,
|
|
12605
|
+
* temporary state (e.g. the current search matches nothing).
|
|
12606
|
+
*
|
|
12607
|
+
* Two exemptions keep a facet the user can still act on:
|
|
12608
|
+
* - date aggregations, whose custom range stays usable without any bucket — the
|
|
12609
|
+
* same reason `FilterButton` never disables a date filter;
|
|
12610
|
+
* - an aggregation carrying an applied filter. It matters for trees, which can
|
|
12611
|
+
* resolve to zero nodes while filtered (`addCurrentFiltersToItems` does not
|
|
12612
|
+
* merge applied values back into a tree's items); hiding those would leave no
|
|
12613
|
+
* way to clear the filter from the facet. It is a no-op for lists, whose
|
|
12614
|
+
* applied values are always part of the item list. Mirrors
|
|
12615
|
+
* `AggregationTreeComponent.isHidden`.
|
|
12616
|
+
*
|
|
12617
|
+
* Resolved here rather than read from the sub-component's own `isHidden()`: a host
|
|
12618
|
+
* binding must not depend on a `viewChild`, which is still unresolved on the
|
|
12619
|
+
* first change detection pass.
|
|
12620
|
+
*/
|
|
12621
|
+
protected readonly isEmpty: _angular_core.Signal<boolean>;
|
|
12358
12622
|
/**
|
|
12359
12623
|
* Checks if the specified column is a date filter.
|
|
12360
12624
|
*
|
|
@@ -12363,7 +12627,7 @@ declare class AggregationComponent {
|
|
|
12363
12627
|
*/
|
|
12364
12628
|
protected isDate(column: string | undefined): boolean;
|
|
12365
12629
|
static ɵfac: _angular_core.ɵɵFactoryDeclaration<AggregationComponent, never>;
|
|
12366
|
-
static ɵcmp: _angular_core.ɵɵComponentDeclaration<AggregationComponent, "Aggregation, aggregation", never, { "class": { "alias": "class"; "required": false; "isSignal": true; }; "id": { "alias": "id"; "required": false; "isSignal": true; }; "name": { "alias": "name"; "required": true; "isSignal": true; }; "column": { "alias": "column"; "required": true; "isSignal": true; }; "showFiltersCount": { "alias": "showFiltersCount"; "required": false; "isSignal": true; }; "collapsible": { "alias": "collapsible"; "required": false; "isSignal": true; }; "collapsed": { "alias": "collapsed"; "required": false; "isSignal": true; }; "searchable": { "alias": "searchable"; "required": false; "isSignal": true; }; "showCheckbox": { "alias": "showCheckbox"; "required": false; "isSignal": true; }; "expandedLevel": { "alias": "expandedLevel"; "required": false; "isSignal": true; }; "syncUrl": { "alias": "syncUrl"; "required": false; "isSignal": true; }; "controlledQuery": { "alias": "query"; "required": false; "isSignal": true; }; "controlledAggregation": { "alias": "aggregation"; "required": false; "isSignal": true; }; "controlledSelection": { "alias": "selection"; "required": false; "isSignal": true; }; "emitOn": { "alias": "emitOn"; "required": false; "isSignal": true; }; "type": { "alias": "type"; "required": false; "isSignal": true; }; }, { "onSelect": "onSelect"; "onApply": "onApply"; "onClear": "onClear"; "selectionChange": "selectionChange"; "filtersChange": "filtersChange"; }, ["itemDirective"], never, true, never>;
|
|
12630
|
+
static ɵcmp: _angular_core.ɵɵComponentDeclaration<AggregationComponent, "Aggregation, aggregation", never, { "class": { "alias": "class"; "required": false; "isSignal": true; }; "id": { "alias": "id"; "required": false; "isSignal": true; }; "name": { "alias": "name"; "required": true; "isSignal": true; }; "column": { "alias": "column"; "required": true; "isSignal": true; }; "showFiltersCount": { "alias": "showFiltersCount"; "required": false; "isSignal": true; }; "collapsible": { "alias": "collapsible"; "required": false; "isSignal": true; }; "collapsed": { "alias": "collapsed"; "required": false; "isSignal": true; }; "searchable": { "alias": "searchable"; "required": false; "isSignal": true; }; "showCheckbox": { "alias": "showCheckbox"; "required": false; "isSignal": true; }; "applyOnSelect": { "alias": "applyOnSelect"; "required": false; "isSignal": true; }; "expandedLevel": { "alias": "expandedLevel"; "required": false; "isSignal": true; }; "syncUrl": { "alias": "syncUrl"; "required": false; "isSignal": true; }; "controlledQuery": { "alias": "query"; "required": false; "isSignal": true; }; "controlledAggregation": { "alias": "aggregation"; "required": false; "isSignal": true; }; "controlledSelection": { "alias": "selection"; "required": false; "isSignal": true; }; "emitOn": { "alias": "emitOn"; "required": false; "isSignal": true; }; "type": { "alias": "type"; "required": false; "isSignal": true; }; "hideWhenEmpty": { "alias": "hideWhenEmpty"; "required": false; "isSignal": true; }; }, { "onSelect": "onSelect"; "onApply": "onApply"; "onClear": "onClear"; "selectionChange": "selectionChange"; "filtersChange": "filtersChange"; }, ["itemDirective"], never, true, never>;
|
|
12367
12631
|
}
|
|
12368
12632
|
|
|
12369
12633
|
declare class AggregationPanelComponent {
|
|
@@ -12427,12 +12691,35 @@ declare class AsideFiltersComponent {
|
|
|
12427
12691
|
* independently — closer to a typical SBA v2 "Facets List".
|
|
12428
12692
|
*/
|
|
12429
12693
|
exclusive: _angular_core.InputSignalWithTransform<boolean, unknown>;
|
|
12694
|
+
/**
|
|
12695
|
+
* Whether every aggregation section can be collapsed/expanded by the user.
|
|
12696
|
+
* Relayed as-is to each `<Aggregation [collapsible]>`.
|
|
12697
|
+
*
|
|
12698
|
+
* @default true
|
|
12699
|
+
*/
|
|
12700
|
+
collapsible: _angular_core.InputSignalWithTransform<boolean, unknown>;
|
|
12701
|
+
/**
|
|
12702
|
+
* Whether every aggregation section starts collapsed. Relayed as-is to each
|
|
12703
|
+
* `<Aggregation [collapsed]>`.
|
|
12704
|
+
*
|
|
12705
|
+
* @default true
|
|
12706
|
+
*/
|
|
12707
|
+
collapsed: _angular_core.InputSignalWithTransform<boolean, unknown>;
|
|
12708
|
+
/**
|
|
12709
|
+
* Whether a section removes itself from the layout when its aggregation
|
|
12710
|
+
* resolves to zero items, instead of staying with a dimmed, non-expandable
|
|
12711
|
+
* header. Relayed as-is to each `<Aggregation [hideWhenEmpty]>` — a missing
|
|
12712
|
+
* aggregation always hides regardless of this input.
|
|
12713
|
+
*
|
|
12714
|
+
* @default false
|
|
12715
|
+
*/
|
|
12716
|
+
hideWhenEmpty: _angular_core.InputSignalWithTransform<boolean, unknown>;
|
|
12430
12717
|
private readonly appStore;
|
|
12431
12718
|
private readonly aggregationsStore;
|
|
12432
12719
|
private readonly aggregationsService;
|
|
12433
12720
|
asideFilters: _angular_core.Signal<Pick<Aggregation, "column" | "name">[]>;
|
|
12434
12721
|
static ɵfac: _angular_core.ɵɵFactoryDeclaration<AsideFiltersComponent, never>;
|
|
12435
|
-
static ɵcmp: _angular_core.ɵɵComponentDeclaration<AsideFiltersComponent, "aside-filters, AsideFilters, asidefilters", never, { "class": { "alias": "class"; "required": false; "isSignal": true; }; "aggregations": { "alias": "aggregations"; "required": false; "isSignal": true; }; "exclusive": { "alias": "exclusive"; "required": false; "isSignal": true; }; }, {}, never, never, true, never>;
|
|
12722
|
+
static ɵcmp: _angular_core.ɵɵComponentDeclaration<AsideFiltersComponent, "aside-filters, AsideFilters, asidefilters", never, { "class": { "alias": "class"; "required": false; "isSignal": true; }; "aggregations": { "alias": "aggregations"; "required": false; "isSignal": true; }; "exclusive": { "alias": "exclusive"; "required": false; "isSignal": true; }; "collapsible": { "alias": "collapsible"; "required": false; "isSignal": true; }; "collapsed": { "alias": "collapsed"; "required": false; "isSignal": true; }; "hideWhenEmpty": { "alias": "hideWhenEmpty"; "required": false; "isSignal": true; }; }, {}, never, never, true, never>;
|
|
12436
12723
|
}
|
|
12437
12724
|
|
|
12438
12725
|
type CFilterEx = CFilter & {
|
|
@@ -13322,9 +13609,17 @@ declare class MoreButtonComponent {
|
|
|
13322
13609
|
excludedFilters: _angular_core.InputSignal<string[]>;
|
|
13323
13610
|
aggregations: _angular_core.InputSignal<Aggregation[] | undefined>;
|
|
13324
13611
|
homepage: _angular_core.InputSignalWithTransform<boolean, unknown>;
|
|
13612
|
+
/**
|
|
13613
|
+
* Whether a section removes itself from the layout when its aggregation
|
|
13614
|
+
* resolves to zero items, instead of staying with a dimmed, non-expandable
|
|
13615
|
+
* header. Relayed as-is to `<More [hideWhenEmpty]>`.
|
|
13616
|
+
*
|
|
13617
|
+
* @default false
|
|
13618
|
+
*/
|
|
13619
|
+
hideWhenEmpty: _angular_core.InputSignalWithTransform<boolean, unknown>;
|
|
13325
13620
|
totalFiltersCount: _angular_core.Signal<number>;
|
|
13326
13621
|
static ɵfac: _angular_core.ɵɵFactoryDeclaration<MoreButtonComponent, never>;
|
|
13327
|
-
static ɵcmp: _angular_core.ɵɵComponentDeclaration<MoreButtonComponent, "more-button, MoreButton", never, { "count": { "alias": "count"; "required": false; "isSignal": true; }; "position": { "alias": "position"; "required": false; "isSignal": true; }; "includedFilters": { "alias": "includedFilters"; "required": false; "isSignal": true; }; "excludedFilters": { "alias": "excludedFilters"; "required": false; "isSignal": true; }; "aggregations": { "alias": "aggregations"; "required": false; "isSignal": true; }; "homepage": { "alias": "homepage"; "required": false; "isSignal": true; }; }, {}, never, never, true, never>;
|
|
13622
|
+
static ɵcmp: _angular_core.ɵɵComponentDeclaration<MoreButtonComponent, "more-button, MoreButton", never, { "count": { "alias": "count"; "required": false; "isSignal": true; }; "position": { "alias": "position"; "required": false; "isSignal": true; }; "includedFilters": { "alias": "includedFilters"; "required": false; "isSignal": true; }; "excludedFilters": { "alias": "excludedFilters"; "required": false; "isSignal": true; }; "aggregations": { "alias": "aggregations"; "required": false; "isSignal": true; }; "homepage": { "alias": "homepage"; "required": false; "isSignal": true; }; "hideWhenEmpty": { "alias": "hideWhenEmpty"; "required": false; "isSignal": true; }; }, {}, never, never, true, never>;
|
|
13328
13623
|
}
|
|
13329
13624
|
|
|
13330
13625
|
declare class FiltersBarComponent {
|
|
@@ -13916,6 +14211,15 @@ declare class MoreComponent {
|
|
|
13916
14211
|
excludedFilters: _angular_core.InputSignal<string[]>;
|
|
13917
14212
|
aggregations: _angular_core.InputSignal<Aggregation[] | undefined>;
|
|
13918
14213
|
homepage: _angular_core.InputSignalWithTransform<boolean, unknown>;
|
|
14214
|
+
/**
|
|
14215
|
+
* Whether a section removes itself from the layout when its aggregation
|
|
14216
|
+
* resolves to zero items, instead of staying with a dimmed, non-expandable
|
|
14217
|
+
* header. Relayed as-is to each `<Aggregation [hideWhenEmpty]>` — a missing
|
|
14218
|
+
* aggregation always hides regardless of this input.
|
|
14219
|
+
*
|
|
14220
|
+
* @default false
|
|
14221
|
+
*/
|
|
14222
|
+
hideWhenEmpty: _angular_core.InputSignalWithTransform<boolean, unknown>;
|
|
13919
14223
|
aggregationsService: AggregationsService;
|
|
13920
14224
|
/**
|
|
13921
14225
|
* The overflow filters rendered as accordions: the authorized filters beyond the
|
|
@@ -13932,7 +14236,7 @@ declare class MoreComponent {
|
|
|
13932
14236
|
name: string;
|
|
13933
14237
|
}[]>;
|
|
13934
14238
|
static ɵfac: _angular_core.ɵɵFactoryDeclaration<MoreComponent, never>;
|
|
13935
|
-
static ɵcmp: _angular_core.ɵɵComponentDeclaration<MoreComponent, "more, More", never, { "count": { "alias": "count"; "required": false; "isSignal": true; }; "includedFilters": { "alias": "includedFilters"; "required": false; "isSignal": true; }; "excludedFilters": { "alias": "excludedFilters"; "required": false; "isSignal": true; }; "aggregations": { "alias": "aggregations"; "required": false; "isSignal": true; }; "homepage": { "alias": "homepage"; "required": false; "isSignal": true; }; }, {}, never, never, true, never>;
|
|
14239
|
+
static ɵcmp: _angular_core.ɵɵComponentDeclaration<MoreComponent, "more, More", never, { "count": { "alias": "count"; "required": false; "isSignal": true; }; "includedFilters": { "alias": "includedFilters"; "required": false; "isSignal": true; }; "excludedFilters": { "alias": "excludedFilters"; "required": false; "isSignal": true; }; "aggregations": { "alias": "aggregations"; "required": false; "isSignal": true; }; "homepage": { "alias": "homepage"; "required": false; "isSignal": true; }; "hideWhenEmpty": { "alias": "hideWhenEmpty"; "required": false; "isSignal": true; }; }, {}, never, never, true, never>;
|
|
13936
14240
|
}
|
|
13937
14241
|
|
|
13938
14242
|
/**
|
|
@@ -15743,5 +16047,5 @@ type AppFeatures = {
|
|
|
15743
16047
|
*/
|
|
15744
16048
|
declare const APP_FEATURES: InjectionToken<AppFeatures>;
|
|
15745
16049
|
|
|
15746
|
-
export { AGGREGATIONS_NAMES, AGGREGATIONS_NAMES_PRESET_DEFAULT, APP_FEATURES, AdvancedFiltersComponent, AdvancedSearch, AdvancedSearchComponent, AggregationComponent, AggregationDateComponent, AggregationDateRangeDialogComponent, AggregationItemDirective, AggregationListComponent, AggregationPanelComponent, AggregationTreeComponent, AggregationsService, AggregationsStore, Alert, AlertDialog, AlertsComponent, AppService, AppStore, ApplicationService, ApplicationStore, ArticleEntities, ArticleExtracts, ArticleLabels, ArticleSimilarDocuments, AsideFiltersComponent, AuditFeedbackType, AuditService, AuthGuard, AuthPageComponent, AutocompleteService, BOOKMARKS_CONFIG, BOOKMARKS_OPTIONS, BackdropComponent, BackdropService, BookmarkButtonComponent, BookmarksComponent, COLLECTIONS_CONFIG, COLLECTIONS_OPTIONS, COMPONENTS_FOR_DOCUMENT_TYPE, ChangePasswordComponent, ChildMarkerDirective, CollectionsComponent, CollectionsDialog, DRAWER_COMPONENT, DRAWER_STACK_MAX_COUNT, DateComponent, DeleteCollectionDialog, DidYouMeanComponent, DocumentLocatorComponent, DrawerAdvancedFiltersComponent, DrawerComponent, DrawerNavbarComponent, DrawerPreviewComponent, DrawerService, DrawerStackComponent, DrawerStackService, DropdownInputComponent, DropdownListComponent, ErrorComponent, ExportDialog, ExportService, FILTERS_BREAKPOINT, FILTER_DATE_ALLOW_CUSTOM_RANGE, FeatureFlagsDialogComponent, FeedbackDialogComponent, FileSizePipe, FilterButtonComponent, FiltersBarComponent, HIGHLIGHTS, HighlightWordPipe, InfinityScrollDirective, InlineWorker, JsonMethodPluginService, KeyboardNavigatorDirective, LabelService, LabelsEditDialog, LoadingComponent, MetadataComponent, MissingTermsComponent, MoreButtonComponent, MoreComponent, MultiSelectLabelsComponent, MultiSelectionToolbarComponent, NON_SEARCHABLE_COLUMNS, NON_SEARCHABLE_DEFAULTS, NavbarTabsComponent, NavigationService, NoResultComponent, OpenArticleOnCtrlEnterDirective, OperatorPipe, OverflowItemDirective, OverflowManagerDirective, OverflowStopDirective, OverrideUserDialogComponent, PREVIEW_CONFIG, PagerComponent, PreviewNavigator, PreviewService, PrincipalService, PrincipalStore, QueryParamsStore, QueryService, RECENT_SEARCHES_CONFIG, RECENT_SEARCHES_OPTIONS, ROUTE_COMPONENTS, RecentSearchesComponent, ResetUserSettingsDialogComponent, SAVED_SEARCHES_CONFIG, SAVED_SEARCHES_OPTIONS, SavedSearchDialog, SavedSearchesComponent, SavedSearchesService, SearchFeedbackComponent, SearchInputFooter, SearchService, SelectArticleDirective, SelectArticleOnClickDirective, SelectionHistoryService, SelectionService, SelectionStore, ShowBookmarkDirective, SidebarNavComponent, SignInComponent, SignedOutComponent, SortSelectorComponent, SourceComponent, SourceIconPipe, SponsoredResultsComponent, SyslangPipe, THEMES, TextChunkService, ThemeProviderDirective, ThemeSelectorComponent, ThemeStore, ThemeToggleComponent, TranslocoDateImpurePipe, UserProfileDialog, UserProfileFormComponent, UserProfileService, UserSettingsStore, __resetSignInMutexForTests, applyThemeToNativeElement, auditInterceptorFn, authInterceptorFn, bodyInterceptorFn, bootstrapApp, buildQuery, debouncedSignal, errorInterceptorFn, getCurrentPath, getCurrentQueryName, getQueryNameFromRoute, injectRouteNavigation, legacyFilterToFilter, processCssVars, queryNameResolver, signIn, themeColorNameToCssVariable, themeColorsToCssVariables, toastInterceptorFn, withAggregationsFeatures, withAlertsFeatures, withAppFeatures, withApplicationFeatures, withAssistantFeatures, withBasketsFeatures, withBookmarkFeatures, withBootstrapApp, withExtractsFeatures, withFetch, withMultiSelectionFeatures, withQueryParamsFeatures, withRecentSearchesFeatures, withSavedSearchesFeatures, withSelectionFeatures, withThemeBodyHook, withThemes, withThemesFeatures, withUserSettingsFeatures };
|
|
16050
|
+
export { AGGREGATIONS_NAMES, AGGREGATIONS_NAMES_PRESET_DEFAULT, APP_FEATURES, AdvancedFiltersComponent, AdvancedSearch, AdvancedSearchComponent, AggregationComponent, AggregationDateComponent, AggregationDateRangeDialogComponent, AggregationItemDirective, AggregationListComponent, AggregationPanelComponent, AggregationTreeComponent, AggregationsService, AggregationsStore, Alert, AlertDialog, AlertsComponent, AppService, AppStore, ApplicationService, ApplicationStore, ArticleEntities, ArticleExtracts, ArticleLabels, ArticleSimilarDocuments, AsideFiltersComponent, AuditFeedbackType, AuditService, AuthGuard, AuthPageComponent, AutocompleteService, BOOKMARKS_CONFIG, BOOKMARKS_OPTIONS, BackdropComponent, BackdropService, BookmarkButtonComponent, BookmarksComponent, COLLECTIONS_CONFIG, COLLECTIONS_OPTIONS, COMPONENTS_FOR_DOCUMENT_TYPE, ChangePasswordComponent, ChildMarkerDirective, CollectionsComponent, CollectionsDialog, DRAWER_COMPONENT, DRAWER_STACK_MAX_COUNT, DateComponent, DeleteCollectionDialog, DidYouMeanComponent, DocumentLocatorComponent, DrawerAdvancedFiltersComponent, DrawerComponent, DrawerNavbarComponent, DrawerPreviewComponent, DrawerService, DrawerStackComponent, DrawerStackService, DropdownInputComponent, DropdownListComponent, ErrorComponent, ExportDialog, ExportService, FILTERS_BREAKPOINT, FILTER_DATE_ALLOW_CUSTOM_RANGE, FeatureFlagsDialogComponent, FeedbackDialogComponent, FileSizePipe, FilterButtonComponent, FiltersBarComponent, HIGHLIGHTS, HighlightWordPipe, InfinityScrollDirective, InlineWorker, JsonMethodPluginService, KeyboardNavigatorDirective, LabelService, LabelsEditDialog, LoadingComponent, MetadataComponent, MissingTermsComponent, MoreButtonComponent, MoreComponent, MultiSelectLabelsComponent, MultiSelectionToolbarComponent, NON_SEARCHABLE_COLUMNS, NON_SEARCHABLE_DEFAULTS, NavbarTabsComponent, NavigationService, NoResultComponent, OpenArticleOnCtrlEnterDirective, OperatorPipe, OverflowItemDirective, OverflowManagerDirective, OverflowStopDirective, OverrideUserDialogComponent, PREVIEW_CONFIG, PagerComponent, PreviewNavigator, PreviewService, PrincipalService, PrincipalStore, QueryParamsStore, QueryService, RECENT_SEARCHES_CONFIG, RECENT_SEARCHES_OPTIONS, ROUTE_COMPONENTS, RecentSearchesComponent, ResetUserSettingsDialogComponent, SAVED_SEARCHES_CONFIG, SAVED_SEARCHES_OPTIONS, SavedSearchDialog, SavedSearchesComponent, SavedSearchesService, SearchFeedbackComponent, SearchInputFooter, SearchService, SelectArticleDirective, SelectArticleOnClickDirective, SelectionHistoryService, SelectionService, SelectionStore, ShowBookmarkDirective, SidebarNavComponent, SignInComponent, SignedOutComponent, SortSelectorComponent, SourceComponent, SourceIconPipe, SponsoredResultsComponent, SyslangPipe, THEMES, TextChunkService, ThemeProviderDirective, ThemeSelectorComponent, ThemeStore, ThemeToggleComponent, TranslocoDateImpurePipe, UserProfileDialog, UserProfileFormComponent, UserProfileService, UserSettingsStore, __resetSignInMutexForTests, applyThemeToNativeElement, auditInterceptorFn, authInterceptorFn, bodyInterceptorFn, bootstrapApp, buildQuery, debouncedSignal, errorInterceptorFn, getCurrentPath, getCurrentQueryName, getQueryNameFromRoute, injectRouteNavigation, isAuthRoute, isSignInInFlight, legacyFilterToFilter, processCssVars, queryNameResolver, signIn, themeColorNameToCssVariable, themeColorsToCssVariables, toastInterceptorFn, withAggregationsFeatures, withAlertsFeatures, withAppFeatures, withApplicationFeatures, withAssistantFeatures, withBasketsFeatures, withBookmarkFeatures, withBootstrapApp, withExtractsFeatures, withFetch, withMultiSelectionFeatures, withQueryParamsFeatures, withRecentSearchesFeatures, withSavedSearchesFeatures, withSelectionFeatures, withThemeBodyHook, withThemes, withThemesFeatures, withUserSettingsFeatures };
|
|
15747
16051
|
export type { AgentUserSettings, AggEx, AggregationEx, AggregationItemContext, AggregationListEx, AggregationListItem, AggregationSelection, AggregationTitle, AggregationTreeEx, AggregationTreeItemContext, AggregationsState, AppCJson, AppFeatures, ApplicationState, ArticleMetadata, AssistantDetails, Autocomplete, Basket, Bookmark, BookmarksConfig, CAggregation, CAggregationItem, CCAppState, CCWebServiceLabels, CConverter, CFeedback, CFilter, CFilterEx, CFilterItem, CJ, CJson, CJsonMint, CSources, CollectionsConfig, ComponentMapping, CssVars, DateRange, DocumentOffsets, DocumentPages, DocumentTypeMap, DropdownItem, ExportQueryOptions, Extract, FilterDropdown, KeyboardNavigationOnSelectionHandlers, KeyboardNavigatorOptions, LabelsConfig, MultiSelectionState, MultiSelectionToolbarVariants, NavRouteTab, PageConfiguration, PreviewEvents, PreviewHighlight, PreviewHighlightName, PreviewHighlights, PrincipalState, SearchItem, SearchOptions, SearchesConfig, SelectionHistoryEvent, SelectionState, SelectionStrategy, SideCJson, SortingChoice, Theme, ThemeBodyHookParameters, ThemeScope, ThemeStoreState, UserSettingsState };
|