@forgeroute/ui 0.4.48 → 0.4.49

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/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@forgeroute/ui",
3
- "version": "0.4.48",
3
+ "version": "0.4.49",
4
4
  "peerDependencies": {
5
5
  "@angular/common": ">=22.0.0",
6
6
  "@angular/core": ">=22.0.0",
@@ -1577,6 +1577,13 @@ export declare class DataTableComponent<T extends Record<string, any>> implement
1577
1577
  */
1578
1578
  private _columnBadgeLabel;
1579
1579
  protected readonly _error: import("@angular/core").WritableSignal<string | null>;
1580
+ private readonly _loadFailed;
1581
+ /**
1582
+ * True from a failed load (the table shows its error state) until a later load SUCCEEDS. Unlike the error state itself it stays true while
1583
+ * Retry / a reload is in flight, so a host can keep its own controls (a date range card, say) out of the page for the whole time the
1584
+ * table is not showing real data. Read it through the table reference: `tableRef()?.loadFailed()`.
1585
+ */
1586
+ readonly loadFailed: Signal<boolean>;
1580
1587
  protected readonly _search: import("@angular/core").WritableSignal<string>;
1581
1588
  /** The search text as sent to the API: lower-cased, so every search is case-insensitive whatever the backend does. The input still shows what the user typed. */
1582
1589
  protected readonly _searchParam: Signal<string>;
@@ -2226,7 +2233,7 @@ export declare class ModalComponent implements OnInit, OnDestroy {
2226
2233
  readonly title: import("@angular/core").InputSignal<string>;
2227
2234
  readonly description: import("@angular/core").InputSignal<string>;
2228
2235
  readonly maxWidth: import("@angular/core").InputSignal<string>;
2229
- readonly bodyOverflow: import("@angular/core").InputSignal<"hidden" | "visible" | "auto">;
2236
+ readonly bodyOverflow: import("@angular/core").InputSignal<"hidden" | "auto" | "visible">;
2230
2237
  /** `data-testid` of the dialog element itself (the host `<ui-modal>` is always in the page, the dialog only while open). None when empty. */
2231
2238
  readonly dialogTestId: import("@angular/core").InputSignal<string>;
2232
2239
  /** Hides the header X button (e.g. while a request is running). Escape and a backdrop click still close unless `closable` is false. */
@@ -2864,7 +2871,7 @@ export declare class CheckboxComponent implements ControlValueAccessor, Validato
2864
2871
  * clicking it still toggles the box - e.g. a product name that is both the heading of its card and the label of its checkbox.
2865
2872
  * Default null: plain label text, exactly as before. Single mode only.
2866
2873
  */
2867
- readonly headingLevel: import("@angular/core").InputSignal<1 | 2 | 3 | 5 | 6 | 4 | null>;
2874
+ readonly headingLevel: import("@angular/core").InputSignal<1 | 2 | 5 | 3 | 6 | 4 | null>;
2868
2875
  readonly indeterminate: import("@angular/core").InputSignal<boolean>;
2869
2876
  readonly checked: import("@angular/core").ModelSignal<boolean>;
2870
2877
  /**
@@ -3934,8 +3941,8 @@ export declare class ButtonComponent {
3934
3941
  private readonly _narrow;
3935
3942
  readonly color: import("@angular/core").InputSignal<string | undefined>;
3936
3943
  readonly active: import("@angular/core").InputSignal<boolean>;
3937
- readonly size: import("@angular/core").InputSignal<"sm" | "md" | "xs" | "lg">;
3938
- readonly type: import("@angular/core").InputSignal<"reset" | "submit" | "button">;
3944
+ readonly size: import("@angular/core").InputSignal<"sm" | "md" | "lg" | "xs">;
3945
+ readonly type: import("@angular/core").InputSignal<"button" | "reset" | "submit">;
3939
3946
  readonly disabled: import("@angular/core").InputSignal<boolean>;
3940
3947
  readonly loading: import("@angular/core").InputSignal<boolean>;
3941
3948
  readonly fullWidth: import("@angular/core").InputSignal<boolean>;
@@ -4751,7 +4758,7 @@ export declare class TextInputComponent implements ControlValueAccessor, Validat
4751
4758
  * `search`, `text`, `none`). Empty (default) = the browser's default for the field, except `type="tel"`, which keeps `tel`.
4752
4759
  * It only picks the keyboard; it does not restrict what can be typed or pasted.
4753
4760
  */
4754
- readonly inputmode: import("@angular/core").InputSignal<"" | "text" | "search" | "none" | "email" | "numeric" | "tel" | "url" | "decimal">;
4761
+ readonly inputmode: import("@angular/core").InputSignal<"" | "none" | "text" | "search" | "email" | "tel" | "url" | "decimal" | "numeric">;
4755
4762
  readonly readonly: import("@angular/core").InputSignal<boolean>;
4756
4763
  readonly hint: import("@angular/core").InputSignal<string>;
4757
4764
  readonly error: import("@angular/core").InputSignal<string>;
@@ -7426,7 +7433,7 @@ export declare class ChipGroupComponent {
7426
7433
  readonly spaceAbove: import("@angular/core").InputSignal<"none" | "sm" | "md">;
7427
7434
  /** Space below the chip group. */
7428
7435
  readonly spaceBelow: import("@angular/core").InputSignal<"none" | "sm" | "md">;
7429
- protected readonly _gap: import("@angular/core").Signal<"8px" | "6px" | "12px">;
7436
+ protected readonly _gap: import("@angular/core").Signal<"6px" | "12px" | "8px">;
7430
7437
  protected readonly _spaceAbove: import("@angular/core").Signal<"0" | "6px" | "12px">;
7431
7438
  protected readonly _spaceBelow: import("@angular/core").Signal<"0" | "6px" | "12px">;
7432
7439
  static ɵfac: i0.ɵɵFactoryDeclaration<ChipGroupComponent, never>;
@@ -8517,7 +8524,7 @@ export interface DateRange {
8517
8524
  * Date range picker: preset pills (Today … Year to Date, optional All Time, Custom Range) plus
8518
8525
  * From / To date inputs with an Apply button for the custom range. With the presets shown, the custom range opens in a
8519
8526
  * popover card under the pills (right-aligned, closes on Apply / Escape / outside click; picking Custom Range again
8520
- * reopens it); with `showPresets` false the From / To row is rendered inline. Emits `rangeChange` with the
8527
+ * reopens it; a picker CREATED on `activePreset="custom"` starts with the popover closed and the Custom Range tab highlighted); with `showPresets` false the From / To row is rendered inline. Emits `rangeChange` with the
8521
8528
  * resolved ISO dates whenever a preset is picked or a custom range is applied.
8522
8529
  *
8523
8530
  * <ui-date-range-picker [activePreset]="preset()" [includeAllTime]="true" (rangeChange)="onRange($event)" />
@@ -8531,9 +8538,16 @@ export declare class DateRangePickerComponent {
8531
8538
  /** Accessible name of the preset tab list (screen readers announce it when the tabs get focus). */
8532
8539
  readonly ariaLabel: import("@angular/core").InputSignal<string>;
8533
8540
  readonly rangeChange: import("@angular/core").OutputEmitterRef<DateRange>;
8534
- /** Follows `activePreset` from the host, and the user's own picks in between. */
8541
+ /**
8542
+ * Follows `activePreset` from the host, and the user's own picks in between. A pick of Custom Range that is closed without Apply
8543
+ * (Escape / outside click) is discarded: the selection goes back to `activePreset`, the range the host actually applied.
8544
+ */
8535
8545
  protected readonly selectedPreset: import("@angular/core").WritableSignal<DatePreset>;
8536
- /** The popover was closed (Apply / Escape / outside click); any preset change reopens it. */
8546
+ /**
8547
+ * The popover was closed (Apply / Escape / outside click); any preset change reopens it. It starts CLOSED: a picker created with
8548
+ * `activePreset="custom"` (a host that re-creates it while a custom range is applied: a tab switched back to, a retry after an error)
8549
+ * shows that applied range as the highlighted tab, it does not open an empty From / To card. Clicking the tab reopens it.
8550
+ */
8537
8551
  private readonly popoverDismissed;
8538
8552
  protected readonly popoverVisible: import("@angular/core").Signal<boolean>;
8539
8553
  protected readonly popTop: import("@angular/core").WritableSignal<number>;
@@ -8546,6 +8560,13 @@ export declare class DateRangePickerComponent {
8546
8560
  private place;
8547
8561
  protected onDocumentClick(e: Event): void;
8548
8562
  protected onEscape(e: Event): void;
8563
+ /** Closes the custom popover without applying: nothing was applied, so the highlighted preset returns to the host's applied one. */
8564
+ private dismissWithoutApply;
8565
+ /**
8566
+ * The tab list only reports a CHANGE of tab, so a click on the Custom Range tab that is already selected (an applied custom range whose
8567
+ * popover was closed) reopens the popover here.
8568
+ */
8569
+ protected onPillsClick(e: Event): void;
8549
8570
  selectPreset(key: DatePreset): void;
8550
8571
  applyCustom(): void;
8551
8572
  static ɵfac: i0.ɵɵFactoryDeclaration<DateRangePickerComponent, never>;
@@ -9340,7 +9361,7 @@ export declare class DetailCardComponent {
9340
9361
  /** true (default) = the title is displayed in capitals (CSS only); false = shown as written. The text, aria-label and heading name are never changed. */
9341
9362
  readonly uppercaseTitle: import("@angular/core").InputSignal<boolean>;
9342
9363
  /** 1-6 makes the title a real heading for screen readers (role=heading, aria-level); null keeps it plain text. */
9343
- readonly headingLevel: import("@angular/core").InputSignal<1 | 2 | 3 | 5 | 6 | 4 | null>;
9364
+ readonly headingLevel: import("@angular/core").InputSignal<1 | 2 | 5 | 3 | 6 | 4 | null>;
9344
9365
  /** Optional id for the title text; the card is then labelled by it. Without it the title is the card's aria-label. */
9345
9366
  readonly titleId: import("@angular/core").InputSignal<string>;
9346
9367
  /** Accessible name of the card when the header gives none (no header, or no title). A visible title wins; blank = no name. */