fold-ng 0.24.0 → 0.26.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.
@@ -2323,6 +2323,16 @@ declare class FoldHeroCardComponent {
2323
2323
  * cards). The parent owns paging/sorting/filtering; the table only renders. */
2324
2324
  /** Per-row semantic accent — a left bar + subtle tint. */
2325
2325
  type FoldTableTone = "warning" | "alert" | "success" | null;
2326
+ /**
2327
+ * Which rows carry a **note** — the always-visible line a `foldRowNote`
2328
+ * template draws under its row.
2329
+ *
2330
+ * A predicate and not an accessor: the note's content comes from the template,
2331
+ * where a caller already has Angular's whole vocabulary. This only answers
2332
+ * *which rows*, and it must answer, because a row without a note must emit no
2333
+ * `<tr>` at all — an empty one is read aloud as a blank record.
2334
+ */
2335
+ type FoldTableRowNote<T = unknown> = (row: T, index: number) => boolean;
2326
2336
  type FoldTableSortDir = "asc" | "desc";
2327
2337
  /** The active sort, or `null` when unsorted. `key` matches a column key. */
2328
2338
  interface FoldTableSort {
@@ -2483,6 +2493,15 @@ declare class FoldDataTableComponent<T> {
2483
2493
  readonly rowKey: _angular_core.InputSignal<((row: T, index: number) => string | number) | undefined>;
2484
2494
  /** Optional per-row semantic tone (left accent + tint). */
2485
2495
  readonly rowTone: _angular_core.InputSignal<((row: T) => FoldTableTone) | undefined>;
2496
+ /**
2497
+ * Which rows carry a **note** — the always-visible line a `foldRowNote`
2498
+ * template draws beneath its row.
2499
+ *
2500
+ * Both halves are required for anything to render: this says *which* rows,
2501
+ * the template says *what*. See {@link FoldDataTableRowNoteDirective} for why
2502
+ * a row without a note must emit no `<tr>` at all.
2503
+ */
2504
+ readonly rowNote: _angular_core.InputSignal<FoldTableRowNote<T> | undefined>;
2486
2505
  readonly sort: _angular_core.InputSignal<FoldTableSort | null>;
2487
2506
  readonly empty: _angular_core.InputSignal<FoldTableEmpty | undefined>;
2488
2507
  /** While `true`, shows a spinner instead of the empty state — a table that
@@ -2585,6 +2604,9 @@ declare class FoldDataTableComponent<T> {
2585
2604
  constructor();
2586
2605
  private readonly cells;
2587
2606
  private readonly cellMap;
2607
+ private readonly rowNoteTpl;
2608
+ /** The note template, or `null`. Paired with `rowNote` to decide each row. */
2609
+ protected readonly rowNoteTemplate: _angular_core.Signal<TemplateRef<unknown> | null>;
2588
2610
  private readonly rowDetail;
2589
2611
  /** The drawer template, or `null`. Its PRESENCE is the feature switch. */
2590
2612
  protected readonly rowDetailTemplate: _angular_core.Signal<TemplateRef<unknown> | null>;
@@ -2652,6 +2674,12 @@ declare class FoldDataTableComponent<T> {
2652
2674
  protected cellText(column: FoldTableColumn<T>, row: T): string;
2653
2675
  keyOf(row: T, index: number): string | number;
2654
2676
  toneOf(row: T): FoldTableTone;
2677
+ /**
2678
+ * Does this row draw a note? Both halves must be there — the template and the
2679
+ * predicate. Either alone renders nothing, which is the quiet behaviour a
2680
+ * half-wired table should have.
2681
+ */
2682
+ protected hasNote(row: T, index: number): boolean;
2655
2683
  isSorted(key: string): boolean;
2656
2684
  /** The sort icon for a column: a neutral up/down (`expand-all`) when idle, or
2657
2685
  * the active direction chevron. Decorative — `aria-sort` on the `<th>` is the
@@ -2673,7 +2701,7 @@ declare class FoldDataTableComponent<T> {
2673
2701
  onRowFocus(row: T, index: number): void;
2674
2702
  onRowKeydown(event: KeyboardEvent, row: T): void;
2675
2703
  static ɵfac: _angular_core.ɵɵFactoryDeclaration<FoldDataTableComponent<any>, never>;
2676
- static ɵcmp: _angular_core.ɵɵComponentDeclaration<FoldDataTableComponent<any>, "fold-data-table", never, { "columns": { "alias": "columns"; "required": true; "isSignal": true; }; "rows": { "alias": "rows"; "required": true; "isSignal": true; }; "rowKey": { "alias": "rowKey"; "required": false; "isSignal": true; }; "rowTone": { "alias": "rowTone"; "required": false; "isSignal": true; }; "sort": { "alias": "sort"; "required": false; "isSignal": true; }; "empty": { "alias": "empty"; "required": false; "isSignal": true; }; "loading": { "alias": "loading"; "required": false; "isSignal": true; }; "caption": { "alias": "caption"; "required": false; "isSignal": true; }; "clickable": { "alias": "clickable"; "required": false; "isSignal": true; }; "zebra": { "alias": "zebra"; "required": false; "isSignal": true; }; "hover": { "alias": "hover"; "required": false; "isSignal": true; }; "narrowLayout": { "alias": "narrowLayout"; "required": false; "isSignal": true; }; "cardsAt": { "alias": "cardsAt"; "required": false; "isSignal": true; }; "rowCardChrome": { "alias": "rowCardChrome"; "required": false; "isSignal": true; }; "mobileLayout": { "alias": "mobileLayout"; "required": false; "isSignal": true; }; "density": { "alias": "density"; "required": false; "isSignal": true; }; "stickyFirst": { "alias": "stickyFirst"; "required": false; "isSignal": true; }; "selectable": { "alias": "selectable"; "required": false; "isSignal": true; }; "selected": { "alias": "selected"; "required": false; "isSignal": true; }; "selectionLabel": { "alias": "selectionLabel"; "required": false; "isSignal": true; }; "labels": { "alias": "labels"; "required": false; "isSignal": true; }; "expanded": { "alias": "expanded"; "required": false; "isSignal": true; }; "expandMode": { "alias": "expandMode"; "required": false; "isSignal": true; }; "toolbarSurface": { "alias": "toolbarSurface"; "required": false; "isSignal": true; }; }, { "selected": "selectedChange"; "expanded": "expandedChange"; "sortChange": "sortChange"; "rowClick": "rowClick"; }, ["cells", "rowDetail", "rowCard"], ["[foldToolbar]"], true, never>;
2704
+ static ɵcmp: _angular_core.ɵɵComponentDeclaration<FoldDataTableComponent<any>, "fold-data-table", never, { "columns": { "alias": "columns"; "required": true; "isSignal": true; }; "rows": { "alias": "rows"; "required": true; "isSignal": true; }; "rowKey": { "alias": "rowKey"; "required": false; "isSignal": true; }; "rowTone": { "alias": "rowTone"; "required": false; "isSignal": true; }; "rowNote": { "alias": "rowNote"; "required": false; "isSignal": true; }; "sort": { "alias": "sort"; "required": false; "isSignal": true; }; "empty": { "alias": "empty"; "required": false; "isSignal": true; }; "loading": { "alias": "loading"; "required": false; "isSignal": true; }; "caption": { "alias": "caption"; "required": false; "isSignal": true; }; "clickable": { "alias": "clickable"; "required": false; "isSignal": true; }; "zebra": { "alias": "zebra"; "required": false; "isSignal": true; }; "hover": { "alias": "hover"; "required": false; "isSignal": true; }; "narrowLayout": { "alias": "narrowLayout"; "required": false; "isSignal": true; }; "cardsAt": { "alias": "cardsAt"; "required": false; "isSignal": true; }; "rowCardChrome": { "alias": "rowCardChrome"; "required": false; "isSignal": true; }; "mobileLayout": { "alias": "mobileLayout"; "required": false; "isSignal": true; }; "density": { "alias": "density"; "required": false; "isSignal": true; }; "stickyFirst": { "alias": "stickyFirst"; "required": false; "isSignal": true; }; "selectable": { "alias": "selectable"; "required": false; "isSignal": true; }; "selected": { "alias": "selected"; "required": false; "isSignal": true; }; "selectionLabel": { "alias": "selectionLabel"; "required": false; "isSignal": true; }; "labels": { "alias": "labels"; "required": false; "isSignal": true; }; "expanded": { "alias": "expanded"; "required": false; "isSignal": true; }; "expandMode": { "alias": "expandMode"; "required": false; "isSignal": true; }; "toolbarSurface": { "alias": "toolbarSurface"; "required": false; "isSignal": true; }; }, { "selected": "selectedChange"; "expanded": "expandedChange"; "sortChange": "sortChange"; "rowClick": "rowClick"; }, ["cells", "rowNoteTpl", "rowDetail", "rowCard"], ["[foldToolbar]"], true, never>;
2677
2705
  }
2678
2706
 
2679
2707
  /**
@@ -2749,6 +2777,43 @@ declare class FoldDataTableRowDetailDirective {
2749
2777
  static ɵdir: _angular_core.ɵɵDirectiveDeclaration<FoldDataTableRowDetailDirective, "ng-template[foldRowDetail]", never, {}, {}, never, never, true, never>;
2750
2778
  }
2751
2779
 
2780
+ /**
2781
+ * Marks the `<ng-template>` that renders a row's **note** — a full-width line
2782
+ * that sits under its row and is **always visible**:
2783
+ *
2784
+ * ```html
2785
+ * <fold-data-table [rowNote]="isLate" …>
2786
+ * <ng-template foldRowNote let-row let-i="index">
2787
+ * <fold-callout variant="warning">…</fold-callout>
2788
+ * </ng-template>
2789
+ * </fold-data-table>
2790
+ * ```
2791
+ *
2792
+ * The template context is `{ $implicit: row, index }`.
2793
+ *
2794
+ * **A note is not a drawer.** {@link FoldDataTableRowDetailDirective} hides
2795
+ * something until asked and grows a toggle column to ask with; a note hides
2796
+ * nothing, so there is nothing to reveal, no chevron, and no `aria-expanded`.
2797
+ * Reach for a note when the row's own cells cannot hold what must be read at
2798
+ * the same moment as the row — a warning that comes with the action answering
2799
+ * it, a refusal and its reason.
2800
+ *
2801
+ * 🔴 **It takes TWO halves, and the second is not ceremony.** The template says
2802
+ * *what* a note looks like; the `rowNote` predicate says *which* rows have one.
2803
+ * Without the predicate every row would emit a `<tr>` — empty for most of them,
2804
+ * and an empty row is not invisible: a screen reader walks into it and
2805
+ * announces a blank line per record. The predicate is what keeps the table
2806
+ * honest about how many rows it has.
2807
+ *
2808
+ * As with cell templates, `let-row` is untyped by design — annotate through the
2809
+ * parent component's typed helpers.
2810
+ */
2811
+ declare class FoldDataTableRowNoteDirective {
2812
+ readonly template: TemplateRef<any>;
2813
+ static ɵfac: _angular_core.ɵɵFactoryDeclaration<FoldDataTableRowNoteDirective, never>;
2814
+ static ɵdir: _angular_core.ɵɵDirectiveDeclaration<FoldDataTableRowNoteDirective, "ng-template[foldRowNote]", never, {}, {}, never, never, true, never>;
2815
+ }
2816
+
2752
2817
  /** Where the column pins while the main content scrolls past it. */
2753
2818
  type FoldStickyColumnAnchor = "top" | "center" | "bottom";
2754
2819
  /**
@@ -4907,6 +4972,29 @@ declare class FoldInputComponent implements FormValueControl<string> {
4907
4972
  readonly hint: _angular_core.InputSignal<string | undefined>;
4908
4973
  /** Placeholder text. */
4909
4974
  readonly placeholder: _angular_core.InputSignal<string>;
4975
+ /**
4976
+ * An icon drawn **inside the box, before the text** — a magnifier on a search
4977
+ * field, a currency mark on an amount.
4978
+ *
4979
+ * The input reserves the room itself, so the glyph never sits on the text.
4980
+ * Purely decorative: it is `aria-hidden`, and it never replaces a `label` or
4981
+ * an `ariaLabel` — an icon is not an accessible name.
4982
+ */
4983
+ readonly leadingIcon: _angular_core.InputSignal<FoldIconName | undefined>;
4984
+ /**
4985
+ * Show a trailing **clear** button while the field holds text.
4986
+ *
4987
+ * The affordance every search box grows by hand: a conditional `×` that empties
4988
+ * the value and gives the focus back, so typing can resume without a second
4989
+ * click. Off by default — a form field that clears itself invites the accident
4990
+ * it cannot undo.
4991
+ *
4992
+ * A `revealable` password wins the trailing slot: the two never make sense
4993
+ * together, and hiding the reveal would be the worse of the two losses.
4994
+ */
4995
+ readonly clearable: _angular_core.InputSignalWithTransform<boolean, unknown>;
4996
+ /** Accessible name of the clear button. Override it to translate. */
4997
+ readonly clearLabel: _angular_core.InputSignal<string>;
4910
4998
  /** Render as read-only. Named `readOnly` (not `readonly`) to avoid the
4911
4999
  * signal-forms `FormField` reserved `readonly` field-state binding. */
4912
5000
  readonly readOnly: _angular_core.InputSignal<boolean>;
@@ -4928,6 +5016,8 @@ declare class FoldInputComponent implements FormValueControl<string> {
4928
5016
  readonly autocomplete: _angular_core.InputSignal<string | null>;
4929
5017
  /** Unique, SSR-safe id for label association (see {@link FoldIdService}). */
4930
5018
  readonly inputId: string;
5019
+ /** The native control — the clear button hands the focus back to it. */
5020
+ private readonly field;
4931
5021
  /** The message to show under the field: the first error, once touched. */
4932
5022
  protected readonly errorMessage: _angular_core.Signal<string | undefined>;
4933
5023
  /** `aria-describedby` target: the error when shown, else the hint, else none. */
@@ -4940,14 +5030,22 @@ declare class FoldInputComponent implements FormValueControl<string> {
4940
5030
  protected readonly effectiveType: _angular_core.Signal<"text" | "email" | "password" | "tel" | "url">;
4941
5031
  /** The reveal control's accessible name, tracking its state. */
4942
5032
  protected readonly revealAria: _angular_core.Signal<string>;
5033
+ /**
5034
+ * Whether to render the clear button: asked for, something to clear, and a
5035
+ * field that can still be edited. A `×` over a read-only value would promise
5036
+ * a gesture the control refuses.
5037
+ */
5038
+ protected readonly showClear: _angular_core.Signal<boolean>;
4943
5039
  protected toggleReveal(): void;
5040
+ /** Empties the field and returns the focus, so typing resumes in place. */
5041
+ protected clear(): void;
4944
5042
  /** Handles native input event. `value.set()` also fires the model's
4945
5043
  * auto `valueChange` output for standalone `(valueChange)` consumers. */
4946
5044
  onInputChange(event: Event): void;
4947
5045
  /** Mark the field touched on blur, so errors can surface. */
4948
5046
  protected onBlur(): void;
4949
5047
  static ɵfac: _angular_core.ɵɵFactoryDeclaration<FoldInputComponent, never>;
4950
- static ɵcmp: _angular_core.ɵɵComponentDeclaration<FoldInputComponent, "fold-input", never, { "value": { "alias": "value"; "required": false; "isSignal": true; }; "disabled": { "alias": "disabled"; "required": false; "isSignal": true; }; "touched": { "alias": "touched"; "required": false; "isSignal": true; }; "errors": { "alias": "errors"; "required": false; "isSignal": true; }; "type": { "alias": "type"; "required": false; "isSignal": true; }; "revealable": { "alias": "revealable"; "required": false; "isSignal": true; }; "revealLabel": { "alias": "revealLabel"; "required": false; "isSignal": true; }; "hideLabel": { "alias": "hideLabel"; "required": false; "isSignal": true; }; "size": { "alias": "size"; "required": false; "isSignal": true; }; "align": { "alias": "align"; "required": false; "isSignal": true; }; "variant": { "alias": "variant"; "required": false; "isSignal": true; }; "label": { "alias": "label"; "required": false; "isSignal": true; }; "required": { "alias": "required"; "required": false; "isSignal": true; }; "optional": { "alias": "optional"; "required": false; "isSignal": true; }; "optionalLabel": { "alias": "optionalLabel"; "required": false; "isSignal": true; }; "info": { "alias": "info"; "required": false; "isSignal": true; }; "infoLabel": { "alias": "infoLabel"; "required": false; "isSignal": true; }; "ariaLabel": { "alias": "ariaLabel"; "required": false; "isSignal": true; }; "hint": { "alias": "hint"; "required": false; "isSignal": true; }; "placeholder": { "alias": "placeholder"; "required": false; "isSignal": true; }; "readOnly": { "alias": "readOnly"; "required": false; "isSignal": true; }; "autofocus": { "alias": "autofocus"; "required": false; "isSignal": true; }; "autocomplete": { "alias": "autocomplete"; "required": false; "isSignal": true; }; }, { "value": "valueChange"; "touched": "touchedChange"; }, never, never, true, never>;
5048
+ static ɵcmp: _angular_core.ɵɵComponentDeclaration<FoldInputComponent, "fold-input", never, { "value": { "alias": "value"; "required": false; "isSignal": true; }; "disabled": { "alias": "disabled"; "required": false; "isSignal": true; }; "touched": { "alias": "touched"; "required": false; "isSignal": true; }; "errors": { "alias": "errors"; "required": false; "isSignal": true; }; "type": { "alias": "type"; "required": false; "isSignal": true; }; "revealable": { "alias": "revealable"; "required": false; "isSignal": true; }; "revealLabel": { "alias": "revealLabel"; "required": false; "isSignal": true; }; "hideLabel": { "alias": "hideLabel"; "required": false; "isSignal": true; }; "size": { "alias": "size"; "required": false; "isSignal": true; }; "align": { "alias": "align"; "required": false; "isSignal": true; }; "variant": { "alias": "variant"; "required": false; "isSignal": true; }; "label": { "alias": "label"; "required": false; "isSignal": true; }; "required": { "alias": "required"; "required": false; "isSignal": true; }; "optional": { "alias": "optional"; "required": false; "isSignal": true; }; "optionalLabel": { "alias": "optionalLabel"; "required": false; "isSignal": true; }; "info": { "alias": "info"; "required": false; "isSignal": true; }; "infoLabel": { "alias": "infoLabel"; "required": false; "isSignal": true; }; "ariaLabel": { "alias": "ariaLabel"; "required": false; "isSignal": true; }; "hint": { "alias": "hint"; "required": false; "isSignal": true; }; "placeholder": { "alias": "placeholder"; "required": false; "isSignal": true; }; "leadingIcon": { "alias": "leadingIcon"; "required": false; "isSignal": true; }; "clearable": { "alias": "clearable"; "required": false; "isSignal": true; }; "clearLabel": { "alias": "clearLabel"; "required": false; "isSignal": true; }; "readOnly": { "alias": "readOnly"; "required": false; "isSignal": true; }; "autofocus": { "alias": "autofocus"; "required": false; "isSignal": true; }; "autocomplete": { "alias": "autocomplete"; "required": false; "isSignal": true; }; }, { "value": "valueChange"; "touched": "touchedChange"; }, never, never, true, never>;
4951
5049
  }
4952
5050
 
4953
5051
  /** The increment/decrement glyph: chevrons, `− / +`, or no buttons. */
@@ -5352,39 +5450,117 @@ declare class FoldTimeComponent implements FormValueControl<string> {
5352
5450
  }
5353
5451
 
5354
5452
  /**
5355
- * `<fold-search>` — an {@link FoldInputComponent} that **debounces its emit**: it
5356
- * fires `searchChange` only once typing pauses for `delayMs`, so a fast typer
5357
- * triggers one query instead of one per keystroke. The delay is adjustable; the
5358
- * emitted term is trimmed and de-duplicated (no emit when the settled value is
5359
- * unchanged). A thin wrapper over the text input — the search *behaviour*, not a
5360
- * new control.
5453
+ * `<fold-search>` — a search box: the magnifier, the clear `×`, an optional
5454
+ * **announced result count**, and a **debounced emit**. `searchChange` fires only once typing pauses for
5455
+ * `delayMs`, so a fast typer triggers one query instead of one per keystroke;
5456
+ * the emitted term is trimmed and de-duplicated.
5457
+ *
5458
+ * `value` is a `model()`, and that is what makes it a control rather than a
5459
+ * one-way sensor. Bind it and the box becomes **steerable from outside** —
5460
+ * picking a filter elsewhere can empty the field, which a write-only search
5461
+ * cannot do: it would keep showing a term the results no longer honour.
5462
+ *
5463
+ * Two ways to use it, and they answer different questions:
5464
+ *
5465
+ * - `[(value)]` — the term as **state**, updated on every keystroke. Filtering
5466
+ * an array already in memory wants this; a debounce there only adds lag.
5467
+ * - `(searchChange)` — the term as an **event**, once it settles. A request to
5468
+ * a server wants this.
5469
+ *
5470
+ * They compose: bind both when a screen filters locally *and* refetches.
5471
+ * Writing `value` from outside never emits `searchChange` — whoever wrote it
5472
+ * already knows.
5361
5473
  *
5362
5474
  * @selector `fold-search`
5363
5475
  *
5364
5476
  * @example
5365
5477
  * ```html
5478
+ * <!-- Local filtering, instant, with the count beside the box -->
5479
+ * <fold-search
5480
+ * placeholder="Filter…"
5481
+ * [(value)]="term"
5482
+ * [resultCount]="rows().length"
5483
+ * resultLabel="rows" />
5484
+ *
5485
+ * <!-- Remote query, once typing settles -->
5366
5486
  * <fold-search
5367
5487
  * placeholder="Search name, email, job…"
5368
5488
  * (searchChange)="store.setSearch($event)" />
5369
5489
  * ```
5370
5490
  */
5371
5491
  declare class FoldSearchComponent {
5492
+ /**
5493
+ * The term in the box — the SOURCE of truth, not a copy of it.
5494
+ *
5495
+ * Two-way, so a screen can clear or preset it: choosing a category that
5496
+ * supersedes the search empties the field in the same gesture, instead of
5497
+ * leaving a stale term above results that ignore it.
5498
+ */
5499
+ readonly value: _angular_core.ModelSignal<string>;
5372
5500
  readonly placeholder: _angular_core.InputSignal<string>;
5373
5501
  readonly size: _angular_core.InputSignal<"sm" | "md" | "lg">;
5374
5502
  /** Visual variant, forwarded to the inner `fold-input` (`panel` for side-panel
5375
5503
  * forms; `default` elsewhere). */
5376
5504
  readonly variant: _angular_core.InputSignal<"panel" | "default">;
5505
+ /**
5506
+ * Accessible name, when the design leaves no room for a visible label — the
5507
+ * magnifier is decorative and names nothing.
5508
+ */
5509
+ readonly ariaLabel: _angular_core.InputSignal<string | undefined>;
5510
+ /** The `×` that empties the box. On by default: it is what a search box is. */
5511
+ readonly clearable: _angular_core.InputSignalWithTransform<boolean, unknown>;
5512
+ /** Accessible name of the clear button. Override it to translate. */
5513
+ readonly clearLabel: _angular_core.InputSignal<string>;
5514
+ /**
5515
+ * How many results the term found — `null` (the default) shows nothing.
5516
+ *
5517
+ * It belongs here rather than beside the box because it is the ANSWER to what
5518
+ * the box asked, and because every screen that wrote it by hand forgot the
5519
+ * same thing: a count that changes under a search has to be **announced**.
5520
+ * It carries `role="status"` and `aria-live="polite"`, so a user who cannot
5521
+ * see the grid still learns that four hundred rows became three.
5522
+ */
5523
+ readonly resultCount: _angular_core.InputSignal<number | null>;
5524
+ /**
5525
+ * The word after the number — « pièces », "results", "matches".
5526
+ *
5527
+ * A plain string and not a template: the count reads `12 pièces`, and a
5528
+ * language that needs another order or a plural rule formats the whole thing
5529
+ * upstream and passes it as {@link resultLabel} with `resultCount` left null…
5530
+ * which it cannot. So: this covers `<number> <word>`, and anything else stays
5531
+ * the consumer's own markup beside the box.
5532
+ */
5533
+ readonly resultLabel: _angular_core.InputSignal<string>;
5534
+ /**
5535
+ * Where the count sits: above the box, after it on the same line, or below.
5536
+ *
5537
+ * `end` and not `right` — the whole library lays out in **logical**
5538
+ * properties, so the count follows the reading direction instead of pinning
5539
+ * itself to a side of the screen.
5540
+ */
5541
+ readonly placement: _angular_core.InputSignal<"top" | "bottom" | "end">;
5377
5542
  /** Quiet period after the last keystroke before emitting, in ms. */
5378
5543
  readonly delayMs: _angular_core.InputSignal<number>;
5379
5544
  /** Emits the trimmed term once typing pauses for `delayMs` (deduped). */
5380
5545
  readonly searchChange: _angular_core.OutputEmitterRef<string>;
5546
+ protected readonly showCount: _angular_core.Signal<boolean>;
5547
+ protected readonly countText: _angular_core.Signal<string>;
5381
5548
  private timer;
5382
5549
  private lastEmitted;
5383
5550
  constructor();
5551
+ /**
5552
+ * The value moves **now**, the event waits.
5553
+ *
5554
+ * The box must show what was typed on the keystroke — deferring the text
5555
+ * itself would make the field feel broken — while the query it triggers is
5556
+ * what deserves the quiet period. Clearing settles like any other edit: the
5557
+ * empty term goes out after the same delay, so a consumer sees one contract
5558
+ * and not two.
5559
+ */
5384
5560
  protected onInput(value: string): void;
5385
5561
  private clear;
5386
5562
  static ɵfac: _angular_core.ɵɵFactoryDeclaration<FoldSearchComponent, never>;
5387
- static ɵcmp: _angular_core.ɵɵComponentDeclaration<FoldSearchComponent, "fold-search", never, { "placeholder": { "alias": "placeholder"; "required": false; "isSignal": true; }; "size": { "alias": "size"; "required": false; "isSignal": true; }; "variant": { "alias": "variant"; "required": false; "isSignal": true; }; "delayMs": { "alias": "delayMs"; "required": false; "isSignal": true; }; }, { "searchChange": "searchChange"; }, never, never, true, never>;
5563
+ static ɵcmp: _angular_core.ɵɵComponentDeclaration<FoldSearchComponent, "fold-search", never, { "value": { "alias": "value"; "required": false; "isSignal": true; }; "placeholder": { "alias": "placeholder"; "required": false; "isSignal": true; }; "size": { "alias": "size"; "required": false; "isSignal": true; }; "variant": { "alias": "variant"; "required": false; "isSignal": true; }; "ariaLabel": { "alias": "ariaLabel"; "required": false; "isSignal": true; }; "clearable": { "alias": "clearable"; "required": false; "isSignal": true; }; "clearLabel": { "alias": "clearLabel"; "required": false; "isSignal": true; }; "resultCount": { "alias": "resultCount"; "required": false; "isSignal": true; }; "resultLabel": { "alias": "resultLabel"; "required": false; "isSignal": true; }; "placement": { "alias": "placement"; "required": false; "isSignal": true; }; "delayMs": { "alias": "delayMs"; "required": false; "isSignal": true; }; }, { "value": "valueChange"; "searchChange": "searchChange"; }, never, never, true, never>;
5388
5564
  }
5389
5565
 
5390
5566
  /**
@@ -9769,6 +9945,6 @@ declare class FoldCalendarSourceFilterComponent {
9769
9945
  static ɵcmp: _angular_core.ɵɵComponentDeclaration<FoldCalendarSourceFilterComponent, "fold-calendar-source-filter", never, { "sources": { "alias": "sources"; "required": false; "isSignal": true; }; "events": { "alias": "events"; "required": false; "isSignal": true; }; "active": { "alias": "active"; "required": false; "isSignal": true; }; }, { "active": "activeChange"; "selectionChange": "selectionChange"; }, never, never, true, [{ directive: typeof FoldCalendarChromeDirective; inputs: { "locale": "locale"; "labels": "labels"; "formats": "formats"; }; outputs: {}; }]>;
9770
9946
  }
9771
9947
 
9772
- export { FOLD_AUTO_PALETTES, FOLD_BLUR_TOKENS, FOLD_BUILTIN_ICONS, FOLD_BUILTIN_ICON_CATEGORIES, FOLD_CALENDAR_DEFAULT_LABELS, FOLD_CALENDAR_FORMATS, FOLD_CALENDAR_LABELS, FOLD_COMMON_DEFAULT_LABELS, FOLD_COMMON_LABELS, FOLD_DATA_TABLE_DEFAULT_LABELS, FOLD_DATA_TABLE_LABELS, FOLD_DEFAULT_WEEKEND_DAYS, FOLD_FALLBACK_WEEK_INFO, FOLD_FONT_TOKENS, FOLD_INLINE_CONFIRM_DEFAULT_LABELS, FOLD_INLINE_CONFIRM_LABELS, FOLD_LEADING_TOKENS, FOLD_MINUTES_PER_DAY, FOLD_MOTION_TOKENS, FOLD_PAGINATOR_DEFAULT_LABELS, FOLD_PAGINATOR_LABELS, FOLD_PALETTE_DEFAULT, FOLD_PANEL_CLOSE_LABEL, FOLD_PANEL_DEFAULTS, FOLD_RADIUS_TOKENS, FOLD_SEMANTIC_COLOR_TOKENS, FOLD_SHADOW_TOKENS, FOLD_SPACE_TOKENS, FOLD_TEXT_TOKENS, FOLD_TOAST_CONFIG, FOLD_TRACKING_TOKENS, FOLD_WEIGHT_TOKENS, FoldAppShellComponent, FoldAsideLayoutComponent, FoldAvatarComponent, FoldAvatarDetailComponent, FoldAvatarListComponent, FoldBackLinkComponent, FoldBadgeComponent, FoldBreadcrumbComponent, FoldButtonComponent, FoldButtonIconComponent, FoldCalendarAgendaComponent, FoldCalendarChromeDirective, FoldCalendarDayComponent, FoldCalendarDayDirective, FoldCalendarEventDirective, FoldCalendarHeadingDirective, FoldCalendarListComponent, FoldCalendarMonthComponent, FoldCalendarOverflowDirective, FoldCalendarSourceFilterComponent, FoldCalendarTimegridComponent, FoldCalendarTitleDirective, FoldCalendarToolbarComponent, FoldCalendarWeekComponent, FoldCalloutComponent, FoldCardComponent, FoldCheckboxComponent, FoldChecklistComponent, FoldChoiceRowComponent, FoldContextCardComponent, FoldDangerZoneComponent, FoldDataTableCellDirective, FoldDataTableComponent, FoldDataTableRowCardDirective, FoldDataTableRowDetailDirective, FoldDateComponent, FoldDisclosureComponent, FoldDropdownComponent, FoldDropdownItemComponent, FoldElementTitleComponent, FoldElevatedDirective, FoldEmptyStateComponent, FoldFieldComponent, FoldFieldIdDirective, FoldFieldListComponent, FoldFieldsetComponent, FoldFileDropzoneComponent, FoldHeroCardComponent, FoldHeroSectionComponent, FoldIconComponent, FoldIconRegistry, FoldIdService, FoldInfoComponent, FoldInlineConfirmComponent, FoldInputComponent, FoldLinkComponent, FoldListboxComponent, FoldLoadingStateComponent, FoldMenuComponent, FoldMenuItemComponent, FoldMenuSectionComponent, FoldMenuSeparatorComponent, FoldMeterComponent, FoldMultiselectComponent, FoldNavGroupComponent, FoldNavLauncherComponent, FoldNavLayoutComponent, FoldNavTileComponent, FoldNumberInputComponent, FoldOptgroupComponent, FoldOptionComponent, FoldPageLayoutComponent, FoldPageSectionComponent, FoldPageTitleDirective, FoldPaginatorComponent, FoldPaletteRegistry, FoldPanelBodyComponent, FoldPanelComponentOutletDirective, FoldPanelFooterComponent, FoldPanelHeaderComponent, FoldPanelHostComponent, FoldPanelHostService, FoldPanelRef, FoldPanelToggle, FoldPasswordFieldComponent, FoldPopoverComponent, FoldPopoverTriggerDirective, FoldRangeSliderComponent, FoldRepeatPressDirective, FoldScrollRegionDirective, FoldSearchComponent, FoldSelectComponent, FoldSliderComponent, FoldSpinnerComponent, FoldStatusBadgeComponent, FoldStickyColumnDirective, FoldSurfaceDirective, FoldTabPanelComponent, FoldTabsComponent, FoldTextareaComponent, FoldTimeComponent, FoldTimelineComponent, FoldToastComponent, FoldToastContainerComponent, FoldToastService, FoldToggleIconComponent, FoldViewNavComponent, FoldViewToggleComponent, ScrollRegionRegistry, autoUpdate, computePlacement, foldAddDays, foldAddMinutes, foldAddMonths, foldBlurVar, foldBuildAgenda, foldBuildDay, foldBuildMonthGrid, foldBuildTimeGrid, foldBuildWeek, foldCalendarNextFocus, foldCardBandChrome, foldColorProperty, foldColorVar, foldCountActionable, foldDaysBetween, foldDefaultPasswordRules, foldEndOfMonth, foldEventsInRange, foldEventsOnDay, foldFilterBySource, foldFontVar, foldFromMinutes, foldFromNativeDate, foldFromTemporal, foldHashSeed, foldIsActionable, foldIsCalendarDate, foldIsCalendarTime, foldIsTimed, foldIsWeekend, foldIsoWeek, foldIsoWeekYear, foldLayOutOverlaps, foldLeadingVar, foldLocaleWeekInfo, foldMotionVar, foldRadiusVar, foldRangeForView, foldRegexRule, foldResolvePalette, foldShadowVar, foldShiftDate, foldSpaceVar, foldStartOfMonth, foldStartOfWeek, foldTextVar, foldToMinutes, foldToNativeDate, foldToday, foldTrackingVar, foldViewTitle, foldWeekdayIndex, foldWeekdayOf, foldWeightVar, isFoldSelectOptionGroup, observeElementWidth, provideFoldCalendarLabels, provideFoldCommonLabels, provideFoldDataTableLabels, provideFoldIcons, provideFoldInlineConfirmLabels, provideFoldPaginatorLabels, provideFoldPalette, provideFoldPanelDefaults, provideFoldPanelLabels, provideFoldToasts };
9773
- export type { FoldAgendaOptions, FoldAsideBand, FoldAutoPaletteName, FoldAvatarListItem, FoldAvatarRing, FoldAvatarRingStyle, FoldAvatarVariant, FoldBadgeVariant, FoldBlurToken, FoldBreadcrumbItem, FoldBuiltinIconName, FoldButtonEmphasis, FoldButtonIconShape, FoldButtonIconSize, FoldButtonIconTone, FoldButtonIntent, FoldButtonShape, FoldButtonSize, FoldCalendarActionable, FoldCalendarAgenda, FoldCalendarAgendaGroup, FoldCalendarAgendaMode, FoldCalendarBand, FoldCalendarBlock, FoldCalendarBuiltInView, FoldCalendarDate, FoldCalendarDay, FoldCalendarDayContext, FoldCalendarDayEvents, FoldCalendarDayModifiers, FoldCalendarEvent, FoldCalendarEventContext, FoldCalendarFormat, FoldCalendarHalfDay, FoldCalendarHeadingContext, FoldCalendarLabels, FoldCalendarOverflowContext, FoldCalendarRange, FoldCalendarSource, FoldCalendarTime, FoldCalendarTitleContext, FoldCalendarTone, FoldCalendarView, FoldCalendarViewOption, FoldCalendarWeek, FoldCalloutAppearance, FoldCalloutVariant, FoldCardBandChrome, FoldCardBandChromeInput, FoldChecklistItem, FoldChecklistState, FoldChoiceOption, FoldCommonLabels, FoldComponentPanelDescriptor, FoldCustomIcons, FoldDataTableLabels, FoldDateType, FoldDayColumnsOptions, FoldFieldsetAppearance, FoldFieldsetDirection, FoldFieldsetHintPosition, FoldFieldsetLegendVariant, FoldFontToken, FoldIconCategoryId, FoldIconName, FoldIconSet, FoldIconSize, FoldIconTone, FoldInlineConfirmLabels, FoldIsoDateLike, FoldLeadingToken, FoldMenuItemBadgeTone, FoldMenuLevel, FoldMenuTint, FoldMenuTogglePlacement, FoldMeterTone, FoldMonthGridOptions, FoldMotionToken, FoldNavTileTone, FoldNumberControls, FoldNumberSpinner, FoldOverlapInput, FoldOverlapSlot, FoldPageItem, FoldPaginatorLabels, FoldPaletteInput, FoldPanelConfig, FoldPanelContent, FoldPanelDefaults, FoldPanelDefaultsProvider, FoldPanelDescriptor, FoldPanelHandle, FoldPanelLabels, FoldPanelSide, FoldPanelSize, FoldPanelSurface, FoldPasswordRule, FoldPlacementInput, FoldPlacementResult, FoldPopoverAlign, FoldPopoverPlacement, FoldPopoverSide, FoldRadiusToken, FoldRangeValue, FoldRect, FoldScrollAxis, FoldSectionTitleVariant, FoldSelectItem, FoldSelectOption, FoldSelectOptionGroup, FoldSemanticColorToken, FoldShadowToken, FoldSpaceToken, FoldSpinnerSize, FoldStickyColumnAnchor, FoldSurfaceName, FoldTabItem, FoldTableColumn, FoldTableEmpty, FoldTableSort, FoldTableSortDir, FoldTableTone, FoldTabsContext, FoldTemplatePanelDescriptor, FoldTextToken, FoldTimeGrid, FoldTimeGridColumn, FoldTimeGridOptions, FoldTimelineDatePlacement, FoldTimelineNode, FoldToast, FoldToastConfig, FoldToastVariant, FoldTrackingToken, FoldViewNavItem, FoldViewToggleActiveStyle, FoldViewToggleDot, FoldViewToggleOption, FoldWeekInfo, FoldWeekday, FoldWeightToken };
9948
+ export { FOLD_AUTO_PALETTES, FOLD_BLUR_TOKENS, FOLD_BUILTIN_ICONS, FOLD_BUILTIN_ICON_CATEGORIES, FOLD_CALENDAR_DEFAULT_LABELS, FOLD_CALENDAR_FORMATS, FOLD_CALENDAR_LABELS, FOLD_COMMON_DEFAULT_LABELS, FOLD_COMMON_LABELS, FOLD_DATA_TABLE_DEFAULT_LABELS, FOLD_DATA_TABLE_LABELS, FOLD_DEFAULT_WEEKEND_DAYS, FOLD_FALLBACK_WEEK_INFO, FOLD_FONT_TOKENS, FOLD_INLINE_CONFIRM_DEFAULT_LABELS, FOLD_INLINE_CONFIRM_LABELS, FOLD_LEADING_TOKENS, FOLD_MINUTES_PER_DAY, FOLD_MOTION_TOKENS, FOLD_PAGINATOR_DEFAULT_LABELS, FOLD_PAGINATOR_LABELS, FOLD_PALETTE_DEFAULT, FOLD_PANEL_CLOSE_LABEL, FOLD_PANEL_DEFAULTS, FOLD_RADIUS_TOKENS, FOLD_SEMANTIC_COLOR_TOKENS, FOLD_SHADOW_TOKENS, FOLD_SPACE_TOKENS, FOLD_TEXT_TOKENS, FOLD_TOAST_CONFIG, FOLD_TRACKING_TOKENS, FOLD_WEIGHT_TOKENS, FoldAppShellComponent, FoldAsideLayoutComponent, FoldAvatarComponent, FoldAvatarDetailComponent, FoldAvatarListComponent, FoldBackLinkComponent, FoldBadgeComponent, FoldBreadcrumbComponent, FoldButtonComponent, FoldButtonIconComponent, FoldCalendarAgendaComponent, FoldCalendarChromeDirective, FoldCalendarDayComponent, FoldCalendarDayDirective, FoldCalendarEventDirective, FoldCalendarHeadingDirective, FoldCalendarListComponent, FoldCalendarMonthComponent, FoldCalendarOverflowDirective, FoldCalendarSourceFilterComponent, FoldCalendarTimegridComponent, FoldCalendarTitleDirective, FoldCalendarToolbarComponent, FoldCalendarWeekComponent, FoldCalloutComponent, FoldCardComponent, FoldCheckboxComponent, FoldChecklistComponent, FoldChoiceRowComponent, FoldContextCardComponent, FoldDangerZoneComponent, FoldDataTableCellDirective, FoldDataTableComponent, FoldDataTableRowCardDirective, FoldDataTableRowDetailDirective, FoldDataTableRowNoteDirective, FoldDateComponent, FoldDisclosureComponent, FoldDropdownComponent, FoldDropdownItemComponent, FoldElementTitleComponent, FoldElevatedDirective, FoldEmptyStateComponent, FoldFieldComponent, FoldFieldIdDirective, FoldFieldListComponent, FoldFieldsetComponent, FoldFileDropzoneComponent, FoldHeroCardComponent, FoldHeroSectionComponent, FoldIconComponent, FoldIconRegistry, FoldIdService, FoldInfoComponent, FoldInlineConfirmComponent, FoldInputComponent, FoldLinkComponent, FoldListboxComponent, FoldLoadingStateComponent, FoldMenuComponent, FoldMenuItemComponent, FoldMenuSectionComponent, FoldMenuSeparatorComponent, FoldMeterComponent, FoldMultiselectComponent, FoldNavGroupComponent, FoldNavLauncherComponent, FoldNavLayoutComponent, FoldNavTileComponent, FoldNumberInputComponent, FoldOptgroupComponent, FoldOptionComponent, FoldPageLayoutComponent, FoldPageSectionComponent, FoldPageTitleDirective, FoldPaginatorComponent, FoldPaletteRegistry, FoldPanelBodyComponent, FoldPanelComponentOutletDirective, FoldPanelFooterComponent, FoldPanelHeaderComponent, FoldPanelHostComponent, FoldPanelHostService, FoldPanelRef, FoldPanelToggle, FoldPasswordFieldComponent, FoldPopoverComponent, FoldPopoverTriggerDirective, FoldRangeSliderComponent, FoldRepeatPressDirective, FoldScrollRegionDirective, FoldSearchComponent, FoldSelectComponent, FoldSliderComponent, FoldSpinnerComponent, FoldStatusBadgeComponent, FoldStickyColumnDirective, FoldSurfaceDirective, FoldTabPanelComponent, FoldTabsComponent, FoldTextareaComponent, FoldTimeComponent, FoldTimelineComponent, FoldToastComponent, FoldToastContainerComponent, FoldToastService, FoldToggleIconComponent, FoldViewNavComponent, FoldViewToggleComponent, ScrollRegionRegistry, autoUpdate, computePlacement, foldAddDays, foldAddMinutes, foldAddMonths, foldBlurVar, foldBuildAgenda, foldBuildDay, foldBuildMonthGrid, foldBuildTimeGrid, foldBuildWeek, foldCalendarNextFocus, foldCardBandChrome, foldColorProperty, foldColorVar, foldCountActionable, foldDaysBetween, foldDefaultPasswordRules, foldEndOfMonth, foldEventsInRange, foldEventsOnDay, foldFilterBySource, foldFontVar, foldFromMinutes, foldFromNativeDate, foldFromTemporal, foldHashSeed, foldIsActionable, foldIsCalendarDate, foldIsCalendarTime, foldIsTimed, foldIsWeekend, foldIsoWeek, foldIsoWeekYear, foldLayOutOverlaps, foldLeadingVar, foldLocaleWeekInfo, foldMotionVar, foldRadiusVar, foldRangeForView, foldRegexRule, foldResolvePalette, foldShadowVar, foldShiftDate, foldSpaceVar, foldStartOfMonth, foldStartOfWeek, foldTextVar, foldToMinutes, foldToNativeDate, foldToday, foldTrackingVar, foldViewTitle, foldWeekdayIndex, foldWeekdayOf, foldWeightVar, isFoldSelectOptionGroup, observeElementWidth, provideFoldCalendarLabels, provideFoldCommonLabels, provideFoldDataTableLabels, provideFoldIcons, provideFoldInlineConfirmLabels, provideFoldPaginatorLabels, provideFoldPalette, provideFoldPanelDefaults, provideFoldPanelLabels, provideFoldToasts };
9949
+ export type { FoldAgendaOptions, FoldAsideBand, FoldAutoPaletteName, FoldAvatarListItem, FoldAvatarRing, FoldAvatarRingStyle, FoldAvatarVariant, FoldBadgeVariant, FoldBlurToken, FoldBreadcrumbItem, FoldBuiltinIconName, FoldButtonEmphasis, FoldButtonIconShape, FoldButtonIconSize, FoldButtonIconTone, FoldButtonIntent, FoldButtonShape, FoldButtonSize, FoldCalendarActionable, FoldCalendarAgenda, FoldCalendarAgendaGroup, FoldCalendarAgendaMode, FoldCalendarBand, FoldCalendarBlock, FoldCalendarBuiltInView, FoldCalendarDate, FoldCalendarDay, FoldCalendarDayContext, FoldCalendarDayEvents, FoldCalendarDayModifiers, FoldCalendarEvent, FoldCalendarEventContext, FoldCalendarFormat, FoldCalendarHalfDay, FoldCalendarHeadingContext, FoldCalendarLabels, FoldCalendarOverflowContext, FoldCalendarRange, FoldCalendarSource, FoldCalendarTime, FoldCalendarTitleContext, FoldCalendarTone, FoldCalendarView, FoldCalendarViewOption, FoldCalendarWeek, FoldCalloutAppearance, FoldCalloutVariant, FoldCardBandChrome, FoldCardBandChromeInput, FoldChecklistItem, FoldChecklistState, FoldChoiceOption, FoldCommonLabels, FoldComponentPanelDescriptor, FoldCustomIcons, FoldDataTableLabels, FoldDateType, FoldDayColumnsOptions, FoldFieldsetAppearance, FoldFieldsetDirection, FoldFieldsetHintPosition, FoldFieldsetLegendVariant, FoldFontToken, FoldIconCategoryId, FoldIconName, FoldIconSet, FoldIconSize, FoldIconTone, FoldInlineConfirmLabels, FoldIsoDateLike, FoldLeadingToken, FoldMenuItemBadgeTone, FoldMenuLevel, FoldMenuTint, FoldMenuTogglePlacement, FoldMeterTone, FoldMonthGridOptions, FoldMotionToken, FoldNavTileTone, FoldNumberControls, FoldNumberSpinner, FoldOverlapInput, FoldOverlapSlot, FoldPageItem, FoldPaginatorLabels, FoldPaletteInput, FoldPanelConfig, FoldPanelContent, FoldPanelDefaults, FoldPanelDefaultsProvider, FoldPanelDescriptor, FoldPanelHandle, FoldPanelLabels, FoldPanelSide, FoldPanelSize, FoldPanelSurface, FoldPasswordRule, FoldPlacementInput, FoldPlacementResult, FoldPopoverAlign, FoldPopoverPlacement, FoldPopoverSide, FoldRadiusToken, FoldRangeValue, FoldRect, FoldScrollAxis, FoldSectionTitleVariant, FoldSelectItem, FoldSelectOption, FoldSelectOptionGroup, FoldSemanticColorToken, FoldShadowToken, FoldSpaceToken, FoldSpinnerSize, FoldStickyColumnAnchor, FoldSurfaceName, FoldTabItem, FoldTableColumn, FoldTableEmpty, FoldTableRowNote, FoldTableSort, FoldTableSortDir, FoldTableTone, FoldTabsContext, FoldTemplatePanelDescriptor, FoldTextToken, FoldTimeGrid, FoldTimeGridColumn, FoldTimeGridOptions, FoldTimelineDatePlacement, FoldTimelineNode, FoldToast, FoldToastConfig, FoldToastVariant, FoldTrackingToken, FoldViewNavItem, FoldViewToggleActiveStyle, FoldViewToggleDot, FoldViewToggleOption, FoldWeekInfo, FoldWeekday, FoldWeightToken };
9774
9950
  //# sourceMappingURL=fold-ng.d.ts.map