@arsedizioni/ars-utils 22.1.3 → 22.1.4
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/arsedizioni-ars-utils-ui.mjs +642 -86
- package/fesm2022/arsedizioni-ars-utils-ui.mjs.map +1 -1
- package/package.json +1 -1
- package/types/arsedizioni-ars-utils-clipper.ui.d.ts +1 -1
- package/types/arsedizioni-ars-utils-ui.application.d.ts +2 -2
- package/types/arsedizioni-ars-utils-ui.d.ts +1098 -784
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import { MatPaginatorIntl } from '@angular/material/paginator';
|
|
2
2
|
import * as _angular_core from '@angular/core';
|
|
3
|
-
import { ElementRef,
|
|
3
|
+
import { ElementRef, TemplateRef, InjectionToken, Signal, Renderer2 } from '@angular/core';
|
|
4
4
|
import { ComponentType } from '@angular/cdk/portal';
|
|
5
5
|
import { MatDialogConfig, MatDialogRef } from '@angular/material/dialog';
|
|
6
6
|
import { MatSnackBarRef } from '@angular/material/snack-bar';
|
|
@@ -8,6 +8,7 @@ import { Observable } from 'rxjs';
|
|
|
8
8
|
import { MatFormFieldAppearance } from '@angular/material/form-field';
|
|
9
9
|
import { ControlValueAccessor, Validator, AbstractControl, ValidationErrors } from '@angular/forms';
|
|
10
10
|
import { PasswordStrength } from '@arsedizioni/ars-utils/core';
|
|
11
|
+
import { ConnectedPosition } from '@angular/cdk/overlay';
|
|
11
12
|
import { TooltipPosition } from '@angular/material/tooltip';
|
|
12
13
|
import { ActivatedRoute } from '@angular/router';
|
|
13
14
|
|
|
@@ -412,7 +413,7 @@ declare class BusyDialogComponent {
|
|
|
412
413
|
/** Current progress value (0–100). Used when `progressMode` is `'determinate'`. */
|
|
413
414
|
readonly progress: _angular_core.WritableSignal<number>;
|
|
414
415
|
/** Progress mode passed to the Material progress components. */
|
|
415
|
-
readonly progressMode: _angular_core.WritableSignal<"
|
|
416
|
+
readonly progressMode: _angular_core.WritableSignal<"determinate" | "indeterminate">;
|
|
416
417
|
/** Message displayed above the progress indicator. */
|
|
417
418
|
readonly message: _angular_core.WritableSignal<string>;
|
|
418
419
|
/**
|
|
@@ -628,6 +629,25 @@ declare class PasswordStrengthComponent {
|
|
|
628
629
|
static ɵcmp: _angular_core.ɵɵComponentDeclaration<PasswordStrengthComponent, "password-strength", never, { "password": { "alias": "password"; "required": false; "isSignal": true; }; }, {}, never, never, true, never>;
|
|
629
630
|
}
|
|
630
631
|
|
|
632
|
+
declare class IfBpDirective {
|
|
633
|
+
private readonly tpl;
|
|
634
|
+
private readonly vcr;
|
|
635
|
+
private readonly media;
|
|
636
|
+
/** Space-separated list of breakpoint aliases, e.g. `'lg gt-lg handset'` */
|
|
637
|
+
readonly ifBp: _angular_core.InputSignal<string>;
|
|
638
|
+
/** Optional else-template shown when no alias is active */
|
|
639
|
+
readonly ifBpElse: _angular_core.InputSignal<TemplateRef<unknown>>;
|
|
640
|
+
private readonly _aliases;
|
|
641
|
+
private readonly _isActive;
|
|
642
|
+
/** Which template is currently rendered. `undefined` = nothing decided yet. */
|
|
643
|
+
private _rendered;
|
|
644
|
+
/** The TemplateRef instance currently rendered (detects [ifBpElse] swaps). */
|
|
645
|
+
private _renderedTpl;
|
|
646
|
+
constructor();
|
|
647
|
+
static ɵfac: _angular_core.ɵɵFactoryDeclaration<IfBpDirective, never>;
|
|
648
|
+
static ɵdir: _angular_core.ɵɵDirectiveDeclaration<IfBpDirective, "[ifBp]", never, { "ifBp": { "alias": "ifBp"; "required": true; "isSignal": true; }; "ifBpElse": { "alias": "ifBpElse"; "required": false; "isSignal": true; }; }, {}, never, never, true, never>;
|
|
649
|
+
}
|
|
650
|
+
|
|
631
651
|
/**
|
|
632
652
|
* @file breakpoints.ts
|
|
633
653
|
* Angular CDK (v22) breakpoint definitions.
|
|
@@ -683,516 +703,452 @@ declare const ALIAS_FAMILIES: {
|
|
|
683
703
|
};
|
|
684
704
|
|
|
685
705
|
/**
|
|
686
|
-
* @file
|
|
706
|
+
* @file media-observer.service.ts (v2 — optimized)
|
|
687
707
|
*
|
|
688
|
-
*
|
|
689
|
-
* navigation component: Navigation bar, Navigation rail (collapsed and
|
|
690
|
-
* expanded) and Navigation drawer (standard and modal).
|
|
708
|
+
* ── Optimizations over v1 ─────────────────────────────────────────────────
|
|
691
709
|
*
|
|
692
|
-
*
|
|
693
|
-
*
|
|
694
|
-
*
|
|
710
|
+
* ✅ Single bo.observe() call for all 5 canonical CDK breakpoints.
|
|
711
|
+
* CDK internally uses one MediaQueryList listener per query string.
|
|
712
|
+
* Calling observe() N times creates N listeners — here we create only one.
|
|
713
|
+
*
|
|
714
|
+
* ✅ currentBp$ is shared (shareReplay(1)): all subscribers (effects in
|
|
715
|
+
* directives) receive the same value without redundant re-computations.
|
|
716
|
+
*
|
|
717
|
+
* ✅ The currentBp Signal is derived from the Observable via toSignal():
|
|
718
|
+
* Angular manages the subscription internally and tears it down with root.
|
|
719
|
+
*
|
|
720
|
+
* ✅ isActive() delegates to bo.isMatched() — synchronous, O(1), no extra observer.
|
|
721
|
+
*
|
|
722
|
+
* ✅ isActive$() reuses the shared currentBp$ stream instead of opening
|
|
723
|
+
* a new bo.observe() for every requested alias.
|
|
695
724
|
*/
|
|
696
725
|
|
|
726
|
+
declare class MediaObserver {
|
|
727
|
+
private readonly bo;
|
|
728
|
+
private readonly bp;
|
|
729
|
+
/**
|
|
730
|
+
* A SINGLE CDK observation for all 5 canonical CDK breakpoints.
|
|
731
|
+
* Each breakpoint change emits → we resolve the current alias → shared.
|
|
732
|
+
*
|
|
733
|
+
* shareReplay(1): all subscribers (N directives in the DOM) receive
|
|
734
|
+
* the same value without N separate recomputations.
|
|
735
|
+
*/
|
|
736
|
+
readonly currentBp$: Observable<BreakpointAlias>;
|
|
737
|
+
/**
|
|
738
|
+
* Signal derived from currentBp$.
|
|
739
|
+
* Directives read it via effect() — zero manual subscriptions.
|
|
740
|
+
* providedIn: 'root' ensures the Signal is a singleton.
|
|
741
|
+
*/
|
|
742
|
+
readonly currentBp: Signal<BreakpointAlias>;
|
|
743
|
+
/**
|
|
744
|
+
* Returns true if the given alias (or raw media query) is currently active.
|
|
745
|
+
* Delegates to bo.isMatched() — synchronous, O(1), no extra observer created.
|
|
746
|
+
*
|
|
747
|
+
* @example
|
|
748
|
+
* media.isActive('md') // true on 960–1279px screens
|
|
749
|
+
* media.isActive('gt-md') // true on 1280px+
|
|
750
|
+
* media.isActive('handset') // CDK device alias (orientation-aware)
|
|
751
|
+
*/
|
|
752
|
+
isActive(alias: string): boolean;
|
|
753
|
+
/**
|
|
754
|
+
* Observable true/false for a specific alias.
|
|
755
|
+
* Reuses currentBp$ instead of opening a new bo.observe():
|
|
756
|
+
* no additional MediaQueryList listener is created.
|
|
757
|
+
*/
|
|
758
|
+
isActive$(alias: string): Observable<boolean>;
|
|
759
|
+
/** Resolves the active canonical alias (from xl down to xs, mobile-first) */
|
|
760
|
+
private _resolve;
|
|
761
|
+
static ɵfac: _angular_core.ɵɵFactoryDeclaration<MediaObserver, never>;
|
|
762
|
+
static ɵprov: _angular_core.ɵɵInjectableDeclaration<MediaObserver>;
|
|
763
|
+
}
|
|
764
|
+
|
|
697
765
|
/**
|
|
698
|
-
*
|
|
766
|
+
* @file responsive-inputs.mixin.ts
|
|
699
767
|
*
|
|
700
|
-
*
|
|
701
|
-
*
|
|
702
|
-
*
|
|
703
|
-
*
|
|
704
|
-
*
|
|
705
|
-
*
|
|
768
|
+
* Shared type helpers for the full set of breakpoint @Input keys.
|
|
769
|
+
*
|
|
770
|
+
* Every responsive directive stores values in two maps:
|
|
771
|
+
* _v — canonical aliases (xs … xl, CDK tiers) + 'default'
|
|
772
|
+
* _nc — non-canonical aliases (lt-*, gt-*)
|
|
773
|
+
*
|
|
774
|
+
* This file exports the key union types so directives stay type-safe
|
|
775
|
+
* without repeating the string literals everywhere.
|
|
706
776
|
*/
|
|
707
|
-
type
|
|
708
|
-
|
|
709
|
-
type
|
|
777
|
+
type CanonicalKey = 'default' | 'xs' | 'sm' | 'md' | 'lg' | 'xl';
|
|
778
|
+
type NonCanonicalKey = 'lt-sm' | 'lt-md' | 'lt-lg' | 'lt-xl' | 'gt-xs' | 'gt-sm' | 'gt-md' | 'gt-lg';
|
|
779
|
+
type BpValues<T> = Partial<Record<CanonicalKey, T>>;
|
|
780
|
+
type NcValues<T> = Partial<Record<NonCanonicalKey, T>>;
|
|
781
|
+
|
|
710
782
|
/**
|
|
711
|
-
*
|
|
783
|
+
* @file responsive-base.directive.ts (v5 — Angular 21 signals)
|
|
712
784
|
*
|
|
713
|
-
*
|
|
714
|
-
*
|
|
715
|
-
*
|
|
716
|
-
*
|
|
785
|
+
* ── What changed in v5 ────────────────────────────────────────────────────
|
|
786
|
+
*
|
|
787
|
+
* Full Angular 21 signals refactor:
|
|
788
|
+
*
|
|
789
|
+
* • resolve(), resolveNonCanonical(), resolveAll() are now PURE EXPORTED
|
|
790
|
+
* FUNCTIONS that accept currentBp and isActive as parameters.
|
|
791
|
+
* Directives call them from computed() or effect() with no "this" binding.
|
|
792
|
+
*
|
|
793
|
+
* • ResponsiveBaseDirective is now a thin utility base:
|
|
794
|
+
* – Only injects ElementRef, Renderer2, MediaObserver, PLATFORM_ID.
|
|
795
|
+
* – Exposes safeSetStyle() helper.
|
|
796
|
+
* – No lifecycle hooks, no Injector, no EffectRef, no abstract apply().
|
|
797
|
+
*
|
|
798
|
+
* • Each concrete directive uses:
|
|
799
|
+
* – input() for every @Input (signals, no more setters + _v/_nc maps)
|
|
800
|
+
* – computed() to build BpValues / NcValues maps and derive resolved CSS
|
|
801
|
+
* – effect() in the constructor to write to the DOM
|
|
802
|
+
*
|
|
803
|
+
* Benefits vs v4:
|
|
804
|
+
* ✅ Zero manual lifecycle/subscription management (no OnInit/OnChanges/EffectRef)
|
|
805
|
+
* ✅ Angular's reactive graph provides built-in dirty-checking and memoization
|
|
806
|
+
* ✅ DOM writes happen only when the resolved CSS value actually changes
|
|
807
|
+
* ✅ No more Injector injection just to create effects
|
|
808
|
+
*
|
|
809
|
+
* ── Resolution strategy (unchanged) ──────────────────────────────────────
|
|
810
|
+
*
|
|
811
|
+
* Canonical aliases (xs … xl, CDK tiers) → exact match, then the unsuffixed value
|
|
812
|
+
* Non-canonical (lt-*, gt-*) → point-in-time isActive() checks
|
|
813
|
+
* Final order: resolveNonCanonical() wins over resolve()
|
|
717
814
|
*/
|
|
718
|
-
|
|
815
|
+
|
|
719
816
|
/**
|
|
720
|
-
*
|
|
817
|
+
* All non-canonical alias keys in priority order (most specific first).
|
|
818
|
+
* lt-sm is "below sm" (= xs only), lt-md is "below md" (= xs+sm), etc.
|
|
819
|
+
* Narrower range = higher priority = checked first.
|
|
820
|
+
*/
|
|
821
|
+
declare const NON_CANONICAL_PRIORITY: readonly ["lt-sm", "lt-md", "lt-lg", "lt-xl", "gt-xs", "gt-sm", "gt-md", "gt-lg"];
|
|
822
|
+
/**
|
|
823
|
+
* Resolution with two-tier priority:
|
|
721
824
|
*
|
|
722
|
-
*
|
|
723
|
-
*
|
|
724
|
-
*
|
|
725
|
-
*
|
|
825
|
+
* 1. Exact breakpoint match (e.g. currentBp='sm' → values['sm'])
|
|
826
|
+
* 2. Generic `default` value (the unsuffixed input, e.g. [fxFlex]="49")
|
|
827
|
+
*
|
|
828
|
+
* There is deliberately NO cascade between canonical tiers. A suffixed value belongs to its own
|
|
829
|
+
* breakpoint and to no other, which is what ngx-layout does and what fxShow/fxHide already did
|
|
830
|
+
* here. The cascade this replaces made `fxFlex.xs="100"` with no base `fxFlex` apply at every
|
|
831
|
+
* width — the exact opposite of what the `.xs` suffix reads like.
|
|
832
|
+
*
|
|
833
|
+
* So `[fxFlex]="49" [fxFlex.xs]="100"` gives xs→100 and sm+→49, while `[fxFlex.xs]="100"` on its
|
|
834
|
+
* own gives xs→100 and sm+→no style at all.
|
|
835
|
+
* @param values - The value declared for each canonical alias, plus the unsuffixed `default`.
|
|
836
|
+
* @param currentBp - The canonical alias currently active.
|
|
837
|
+
* @returns The value to apply, or `undefined` when no rule covers the current breakpoint.
|
|
726
838
|
*/
|
|
727
|
-
|
|
728
|
-
/** Vertical alignment of the destination list inside a rail. */
|
|
729
|
-
type NavigationAlignment = 'top' | 'center' | 'bottom';
|
|
730
|
-
/** Side the rail / drawer is anchored to. Automatically mirrored in RTL. */
|
|
731
|
-
type NavigationPosition = 'start' | 'end';
|
|
839
|
+
declare function resolve<T>(values: BpValues<T>, currentBp: BreakpointAlias): T | undefined;
|
|
732
840
|
/**
|
|
733
|
-
*
|
|
734
|
-
*
|
|
735
|
-
* badge showing the value (clamped to `max`).
|
|
841
|
+
* Non-canonical point-in-time check: iterates NON_CANONICAL_PRIORITY and
|
|
842
|
+
* returns the value for the first alias that isActive().
|
|
736
843
|
*/
|
|
737
|
-
|
|
738
|
-
/** Numeric or textual content of the badge. Leave `undefined` for a dot badge. */
|
|
739
|
-
value?: number | string;
|
|
740
|
-
/** Upper bound for numeric values; above it the badge renders `${max}+`. Defaults to 999. */
|
|
741
|
-
max?: number;
|
|
742
|
-
/** Accessible description announced together with the destination label. */
|
|
743
|
-
ariaLabel?: string;
|
|
744
|
-
/** Optional CSS colour override for this badge only. */
|
|
745
|
-
color?: string;
|
|
746
|
-
}
|
|
747
|
-
/** A single navigation destination. */
|
|
748
|
-
interface NavigationItem {
|
|
749
|
-
/** Stable unique identifier; used as the `@for` track key and as the selection value. */
|
|
750
|
-
id: string;
|
|
751
|
-
/** Visible label. Also used as the accessible name and as the tooltip fallback. */
|
|
752
|
-
label: string;
|
|
753
|
-
/** Material Symbols ligature rendered when the destination is NOT selected. */
|
|
754
|
-
icon?: string;
|
|
755
|
-
/** Material Symbols ligature rendered when the destination IS selected (usually the filled variant). */
|
|
756
|
-
activeIcon?: string;
|
|
757
|
-
/** Name of an SVG icon registered in `MatIconRegistry`; takes precedence over `icon`. */
|
|
758
|
-
svgIcon?: string;
|
|
759
|
-
/** SVG icon used when the destination is selected; takes precedence over `activeIcon`. */
|
|
760
|
-
activeSvgIcon?: string;
|
|
761
|
-
/** Badge shown on top of the icon (collapsed variants) or at the trailing edge (expanded variants). */
|
|
762
|
-
badge?: NavigationBadge;
|
|
763
|
-
/** Short trailing text shown at the end of the row in the expanded rail and in the drawer. */
|
|
764
|
-
trailing?: string;
|
|
765
|
-
/** When `true` the destination is rendered dimmed and is not interactive. */
|
|
766
|
-
disabled?: boolean;
|
|
767
|
-
/** Tooltip text; defaults to `label` when the label is not visible. */
|
|
768
|
-
tooltip?: string;
|
|
769
|
-
/** Router commands used to build the destination URL. */
|
|
770
|
-
route?: string | readonly unknown[];
|
|
771
|
-
/** Query parameters appended to `route`. */
|
|
772
|
-
queryParams?: Record<string, unknown>;
|
|
773
|
-
/** Fragment appended to `route`. */
|
|
774
|
-
fragment?: string;
|
|
775
|
-
/** When `true` the route must match the whole URL to mark the destination active. Defaults to `false`. */
|
|
776
|
-
exact?: boolean;
|
|
777
|
-
/** External URL. Rendered as a plain anchor and never matched against the router. */
|
|
778
|
-
href?: string;
|
|
779
|
-
/** Anchor target used together with `href`. */
|
|
780
|
-
target?: string;
|
|
781
|
-
/** Explicit accessible name, when the visible label is not descriptive enough. */
|
|
782
|
-
ariaLabel?: string;
|
|
783
|
-
/** Arbitrary payload echoed back in `NavigationSelection`. */
|
|
784
|
-
data?: unknown;
|
|
785
|
-
}
|
|
844
|
+
declare function resolveNonCanonical<T>(nc: NcValues<T>, isActive: (alias: string) => boolean): T | undefined;
|
|
786
845
|
/**
|
|
787
|
-
*
|
|
788
|
-
*
|
|
846
|
+
* Full resolution: non-canonical overrides win over the canonical cascade.
|
|
847
|
+
*
|
|
848
|
+
* Usage inside computed():
|
|
849
|
+
* const resolved = computed(() =>
|
|
850
|
+
* resolveAll(this._v(), this._nc(), this.media.currentBp(), a => this.media.isActive(a))
|
|
851
|
+
* );
|
|
789
852
|
*/
|
|
790
|
-
|
|
791
|
-
|
|
792
|
-
|
|
793
|
-
|
|
794
|
-
|
|
795
|
-
/**
|
|
796
|
-
|
|
797
|
-
/**
|
|
798
|
-
|
|
853
|
+
declare function resolveAll<T>(canonical: BpValues<T>, nonCanonical: NcValues<T>, currentBp: BreakpointAlias, isActive: (alias: string) => boolean): T | undefined;
|
|
854
|
+
declare abstract class ResponsiveBaseDirective {
|
|
855
|
+
protected readonly el: ElementRef<any>;
|
|
856
|
+
protected readonly r2: Renderer2;
|
|
857
|
+
protected readonly media: MediaObserver;
|
|
858
|
+
/** true in browser, false in SSR */
|
|
859
|
+
protected readonly isBrowser: boolean;
|
|
860
|
+
/** SSR-safe style setter. Pass null/empty string to remove the property. */
|
|
861
|
+
protected safeSetStyle(prop: string, value: string | null): void;
|
|
862
|
+
static ɵfac: _angular_core.ɵɵFactoryDeclaration<ResponsiveBaseDirective, never>;
|
|
863
|
+
static ɵdir: _angular_core.ɵɵDirectiveDeclaration<ResponsiveBaseDirective, never, never, {}, {}, never, never, true, never>;
|
|
799
864
|
}
|
|
800
|
-
|
|
801
|
-
|
|
802
|
-
|
|
803
|
-
|
|
804
|
-
|
|
805
|
-
|
|
806
|
-
|
|
807
|
-
|
|
865
|
+
|
|
866
|
+
declare class FxFlexOrderDirective extends ResponsiveBaseDirective {
|
|
867
|
+
readonly fxFlexOrder: _angular_core.InputSignal<string>;
|
|
868
|
+
readonly xs: _angular_core.InputSignal<string>;
|
|
869
|
+
readonly sm: _angular_core.InputSignal<string>;
|
|
870
|
+
readonly md: _angular_core.InputSignal<string>;
|
|
871
|
+
readonly lg: _angular_core.InputSignal<string>;
|
|
872
|
+
readonly xl: _angular_core.InputSignal<string>;
|
|
873
|
+
readonly ltSm: _angular_core.InputSignal<string>;
|
|
874
|
+
readonly ltMd: _angular_core.InputSignal<string>;
|
|
875
|
+
readonly ltLg: _angular_core.InputSignal<string>;
|
|
876
|
+
readonly ltXl: _angular_core.InputSignal<string>;
|
|
877
|
+
readonly gtXs: _angular_core.InputSignal<string>;
|
|
878
|
+
readonly gtSm: _angular_core.InputSignal<string>;
|
|
879
|
+
readonly gtMd: _angular_core.InputSignal<string>;
|
|
880
|
+
readonly gtLg: _angular_core.InputSignal<string>;
|
|
881
|
+
private readonly _order;
|
|
882
|
+
constructor();
|
|
883
|
+
static ɵfac: _angular_core.ɵɵFactoryDeclaration<FxFlexOrderDirective, never>;
|
|
884
|
+
static ɵdir: _angular_core.ɵɵDirectiveDeclaration<FxFlexOrderDirective, " [fxFlexOrder], [fxFlexOrder.xs], [fxFlexOrder.sm], [fxFlexOrder.md], [fxFlexOrder.lg], [fxFlexOrder.xl], [fxFlexOrder.lt-sm], [fxFlexOrder.lt-md], [fxFlexOrder.lt-lg], [fxFlexOrder.lt-xl], [fxFlexOrder.gt-xs], [fxFlexOrder.gt-sm], [fxFlexOrder.gt-md], [fxFlexOrder.gt-lg] ", never, { "fxFlexOrder": { "alias": "fxFlexOrder"; "required": false; "isSignal": true; }; "xs": { "alias": "fxFlexOrder.xs"; "required": false; "isSignal": true; }; "sm": { "alias": "fxFlexOrder.sm"; "required": false; "isSignal": true; }; "md": { "alias": "fxFlexOrder.md"; "required": false; "isSignal": true; }; "lg": { "alias": "fxFlexOrder.lg"; "required": false; "isSignal": true; }; "xl": { "alias": "fxFlexOrder.xl"; "required": false; "isSignal": true; }; "ltSm": { "alias": "fxFlexOrder.lt-sm"; "required": false; "isSignal": true; }; "ltMd": { "alias": "fxFlexOrder.lt-md"; "required": false; "isSignal": true; }; "ltLg": { "alias": "fxFlexOrder.lt-lg"; "required": false; "isSignal": true; }; "ltXl": { "alias": "fxFlexOrder.lt-xl"; "required": false; "isSignal": true; }; "gtXs": { "alias": "fxFlexOrder.gt-xs"; "required": false; "isSignal": true; }; "gtSm": { "alias": "fxFlexOrder.gt-sm"; "required": false; "isSignal": true; }; "gtMd": { "alias": "fxFlexOrder.gt-md"; "required": false; "isSignal": true; }; "gtLg": { "alias": "fxFlexOrder.gt-lg"; "required": false; "isSignal": true; }; }, {}, never, never, true, never>;
|
|
808
885
|
}
|
|
809
|
-
|
|
810
|
-
|
|
886
|
+
declare class FxFlexOffsetDirective extends ResponsiveBaseDirective {
|
|
887
|
+
/** Ancestor FxLayout (matched to the direct parent inside resolveParentFlow). */
|
|
888
|
+
private readonly parentLayout;
|
|
889
|
+
readonly fxFlexOffset: _angular_core.InputSignal<string>;
|
|
890
|
+
readonly xs: _angular_core.InputSignal<string>;
|
|
891
|
+
readonly sm: _angular_core.InputSignal<string>;
|
|
892
|
+
readonly md: _angular_core.InputSignal<string>;
|
|
893
|
+
readonly lg: _angular_core.InputSignal<string>;
|
|
894
|
+
readonly xl: _angular_core.InputSignal<string>;
|
|
895
|
+
readonly ltSm: _angular_core.InputSignal<string>;
|
|
896
|
+
readonly ltMd: _angular_core.InputSignal<string>;
|
|
897
|
+
readonly ltLg: _angular_core.InputSignal<string>;
|
|
898
|
+
readonly ltXl: _angular_core.InputSignal<string>;
|
|
899
|
+
readonly gtXs: _angular_core.InputSignal<string>;
|
|
900
|
+
readonly gtSm: _angular_core.InputSignal<string>;
|
|
901
|
+
readonly gtMd: _angular_core.InputSignal<string>;
|
|
902
|
+
readonly gtLg: _angular_core.InputSignal<string>;
|
|
903
|
+
private readonly _offset;
|
|
904
|
+
constructor();
|
|
905
|
+
static ɵfac: _angular_core.ɵɵFactoryDeclaration<FxFlexOffsetDirective, never>;
|
|
906
|
+
static ɵdir: _angular_core.ɵɵDirectiveDeclaration<FxFlexOffsetDirective, " [fxFlexOffset], [fxFlexOffset.xs], [fxFlexOffset.sm], [fxFlexOffset.md], [fxFlexOffset.lg], [fxFlexOffset.xl], [fxFlexOffset.lt-sm], [fxFlexOffset.lt-md], [fxFlexOffset.lt-lg], [fxFlexOffset.lt-xl], [fxFlexOffset.gt-xs], [fxFlexOffset.gt-sm], [fxFlexOffset.gt-md], [fxFlexOffset.gt-lg] ", never, { "fxFlexOffset": { "alias": "fxFlexOffset"; "required": false; "isSignal": true; }; "xs": { "alias": "fxFlexOffset.xs"; "required": false; "isSignal": true; }; "sm": { "alias": "fxFlexOffset.sm"; "required": false; "isSignal": true; }; "md": { "alias": "fxFlexOffset.md"; "required": false; "isSignal": true; }; "lg": { "alias": "fxFlexOffset.lg"; "required": false; "isSignal": true; }; "xl": { "alias": "fxFlexOffset.xl"; "required": false; "isSignal": true; }; "ltSm": { "alias": "fxFlexOffset.lt-sm"; "required": false; "isSignal": true; }; "ltMd": { "alias": "fxFlexOffset.lt-md"; "required": false; "isSignal": true; }; "ltLg": { "alias": "fxFlexOffset.lt-lg"; "required": false; "isSignal": true; }; "ltXl": { "alias": "fxFlexOffset.lt-xl"; "required": false; "isSignal": true; }; "gtXs": { "alias": "fxFlexOffset.gt-xs"; "required": false; "isSignal": true; }; "gtSm": { "alias": "fxFlexOffset.gt-sm"; "required": false; "isSignal": true; }; "gtMd": { "alias": "fxFlexOffset.gt-md"; "required": false; "isSignal": true; }; "gtLg": { "alias": "fxFlexOffset.gt-lg"; "required": false; "isSignal": true; }; }, {}, never, never, true, never>;
|
|
907
|
+
}
|
|
908
|
+
type AlignSelf = 'auto' | 'start' | 'center' | 'end' | 'stretch' | 'baseline';
|
|
909
|
+
declare class FxFlexAlignDirective extends ResponsiveBaseDirective {
|
|
910
|
+
readonly fxFlexAlign: _angular_core.InputSignal<AlignSelf>;
|
|
911
|
+
readonly xs: _angular_core.InputSignal<AlignSelf>;
|
|
912
|
+
readonly sm: _angular_core.InputSignal<AlignSelf>;
|
|
913
|
+
readonly md: _angular_core.InputSignal<AlignSelf>;
|
|
914
|
+
readonly lg: _angular_core.InputSignal<AlignSelf>;
|
|
915
|
+
readonly xl: _angular_core.InputSignal<AlignSelf>;
|
|
916
|
+
readonly ltSm: _angular_core.InputSignal<AlignSelf>;
|
|
917
|
+
readonly ltMd: _angular_core.InputSignal<AlignSelf>;
|
|
918
|
+
readonly ltLg: _angular_core.InputSignal<AlignSelf>;
|
|
919
|
+
readonly ltXl: _angular_core.InputSignal<AlignSelf>;
|
|
920
|
+
readonly gtXs: _angular_core.InputSignal<AlignSelf>;
|
|
921
|
+
readonly gtSm: _angular_core.InputSignal<AlignSelf>;
|
|
922
|
+
readonly gtMd: _angular_core.InputSignal<AlignSelf>;
|
|
923
|
+
readonly gtLg: _angular_core.InputSignal<AlignSelf>;
|
|
924
|
+
private readonly _alignSelf;
|
|
925
|
+
constructor();
|
|
926
|
+
static ɵfac: _angular_core.ɵɵFactoryDeclaration<FxFlexAlignDirective, never>;
|
|
927
|
+
static ɵdir: _angular_core.ɵɵDirectiveDeclaration<FxFlexAlignDirective, " [fxFlexAlign], [fxFlexAlign.xs], [fxFlexAlign.sm], [fxFlexAlign.md], [fxFlexAlign.lg], [fxFlexAlign.xl], [fxFlexAlign.lt-sm], [fxFlexAlign.lt-md], [fxFlexAlign.lt-lg], [fxFlexAlign.lt-xl], [fxFlexAlign.gt-xs], [fxFlexAlign.gt-sm], [fxFlexAlign.gt-md], [fxFlexAlign.gt-lg] ", never, { "fxFlexAlign": { "alias": "fxFlexAlign"; "required": false; "isSignal": true; }; "xs": { "alias": "fxFlexAlign.xs"; "required": false; "isSignal": true; }; "sm": { "alias": "fxFlexAlign.sm"; "required": false; "isSignal": true; }; "md": { "alias": "fxFlexAlign.md"; "required": false; "isSignal": true; }; "lg": { "alias": "fxFlexAlign.lg"; "required": false; "isSignal": true; }; "xl": { "alias": "fxFlexAlign.xl"; "required": false; "isSignal": true; }; "ltSm": { "alias": "fxFlexAlign.lt-sm"; "required": false; "isSignal": true; }; "ltMd": { "alias": "fxFlexAlign.lt-md"; "required": false; "isSignal": true; }; "ltLg": { "alias": "fxFlexAlign.lt-lg"; "required": false; "isSignal": true; }; "ltXl": { "alias": "fxFlexAlign.lt-xl"; "required": false; "isSignal": true; }; "gtXs": { "alias": "fxFlexAlign.gt-xs"; "required": false; "isSignal": true; }; "gtSm": { "alias": "fxFlexAlign.gt-sm"; "required": false; "isSignal": true; }; "gtMd": { "alias": "fxFlexAlign.gt-md"; "required": false; "isSignal": true; }; "gtLg": { "alias": "fxFlexAlign.gt-lg"; "required": false; "isSignal": true; }; }, {}, never, never, true, never>;
|
|
928
|
+
}
|
|
929
|
+
type FillValue = 'fill' | 'none' | '' | boolean;
|
|
930
|
+
declare class FxFlexFillDirective extends ResponsiveBaseDirective {
|
|
931
|
+
readonly fxFlexFill: _angular_core.InputSignalWithTransform<boolean, FillValue>;
|
|
932
|
+
readonly fxFill: _angular_core.InputSignalWithTransform<boolean, FillValue>;
|
|
933
|
+
readonly xs: _angular_core.InputSignalWithTransform<boolean, FillValue>;
|
|
934
|
+
readonly sm: _angular_core.InputSignalWithTransform<boolean, FillValue>;
|
|
935
|
+
readonly md: _angular_core.InputSignalWithTransform<boolean, FillValue>;
|
|
936
|
+
readonly lg: _angular_core.InputSignalWithTransform<boolean, FillValue>;
|
|
937
|
+
readonly xl: _angular_core.InputSignalWithTransform<boolean, FillValue>;
|
|
938
|
+
readonly ltSm: _angular_core.InputSignalWithTransform<boolean, FillValue>;
|
|
939
|
+
readonly ltMd: _angular_core.InputSignalWithTransform<boolean, FillValue>;
|
|
940
|
+
readonly ltLg: _angular_core.InputSignalWithTransform<boolean, FillValue>;
|
|
941
|
+
readonly ltXl: _angular_core.InputSignalWithTransform<boolean, FillValue>;
|
|
942
|
+
readonly gtXs: _angular_core.InputSignalWithTransform<boolean, FillValue>;
|
|
943
|
+
readonly gtSm: _angular_core.InputSignalWithTransform<boolean, FillValue>;
|
|
944
|
+
readonly gtMd: _angular_core.InputSignalWithTransform<boolean, FillValue>;
|
|
945
|
+
readonly gtLg: _angular_core.InputSignalWithTransform<boolean, FillValue>;
|
|
946
|
+
private readonly _active;
|
|
947
|
+
constructor();
|
|
948
|
+
static ɵfac: _angular_core.ɵɵFactoryDeclaration<FxFlexFillDirective, never>;
|
|
949
|
+
static ɵdir: _angular_core.ɵɵDirectiveDeclaration<FxFlexFillDirective, " [fxFlexFill], [fxFill], [fxFlexFill.xs], [fxFlexFill.sm], [fxFlexFill.md], [fxFlexFill.lg], [fxFlexFill.xl], [fxFlexFill.lt-sm], [fxFlexFill.lt-md], [fxFlexFill.lt-lg], [fxFlexFill.lt-xl], [fxFlexFill.gt-xs], [fxFlexFill.gt-sm], [fxFlexFill.gt-md], [fxFlexFill.gt-lg] ", never, { "fxFlexFill": { "alias": "fxFlexFill"; "required": false; "isSignal": true; }; "fxFill": { "alias": "fxFill"; "required": false; "isSignal": true; }; "xs": { "alias": "fxFlexFill.xs"; "required": false; "isSignal": true; }; "sm": { "alias": "fxFlexFill.sm"; "required": false; "isSignal": true; }; "md": { "alias": "fxFlexFill.md"; "required": false; "isSignal": true; }; "lg": { "alias": "fxFlexFill.lg"; "required": false; "isSignal": true; }; "xl": { "alias": "fxFlexFill.xl"; "required": false; "isSignal": true; }; "ltSm": { "alias": "fxFlexFill.lt-sm"; "required": false; "isSignal": true; }; "ltMd": { "alias": "fxFlexFill.lt-md"; "required": false; "isSignal": true; }; "ltLg": { "alias": "fxFlexFill.lt-lg"; "required": false; "isSignal": true; }; "ltXl": { "alias": "fxFlexFill.lt-xl"; "required": false; "isSignal": true; }; "gtXs": { "alias": "fxFlexFill.gt-xs"; "required": false; "isSignal": true; }; "gtSm": { "alias": "fxFlexFill.gt-sm"; "required": false; "isSignal": true; }; "gtMd": { "alias": "fxFlexFill.gt-md"; "required": false; "isSignal": true; }; "gtLg": { "alias": "fxFlexFill.gt-lg"; "required": false; "isSignal": true; }; }, {}, never, never, true, never>;
|
|
950
|
+
}
|
|
951
|
+
|
|
952
|
+
/** Port of ngx validateBasis(): returns [grow, shrink, basis]. */
|
|
953
|
+
declare function validateBasis(basis: string, grow?: string, shrink?: string): string[];
|
|
811
954
|
/**
|
|
812
|
-
*
|
|
813
|
-
*
|
|
814
|
-
*
|
|
955
|
+
* Builds the complete flex style map for a child, given the raw fxFlex value
|
|
956
|
+
* and the parent flow. `null` values mean "remove this property".
|
|
957
|
+
* Matches ngx-layout output exactly (useColumnBasisZero = true, the default).
|
|
815
958
|
*/
|
|
816
|
-
declare
|
|
817
|
-
/**
|
|
818
|
-
|
|
959
|
+
declare function buildFlexStyles(value: string, direction: string, hasWrap: boolean): Record<string, string | null>;
|
|
960
|
+
/**
|
|
961
|
+
* Resolves the non-ngx `fxFlex="*"` extension to `grow` (`flex: 1 1 100%`, max-* 100%).
|
|
962
|
+
* Every other value — including a bare `fxFlex` ('') — is returned unchanged, so a bare
|
|
963
|
+
* fxFlex keeps the ngx-layout default (`1 1 0%` in row, `1 1 0.000000001px` in column).
|
|
964
|
+
* @param raw - The resolved fxFlex value for the active breakpoint.
|
|
965
|
+
* @returns The value to pass to `buildFlexStyles`.
|
|
966
|
+
*/
|
|
967
|
+
declare function resolveFlexInput(raw: string): string;
|
|
968
|
+
declare class FxFlexDirective extends ResponsiveBaseDirective {
|
|
969
|
+
/** Direct ancestor FxLayout (any level); matched to the direct parent in the effect. */
|
|
970
|
+
private readonly parentLayout;
|
|
971
|
+
readonly fxFlex: _angular_core.InputSignal<string>;
|
|
972
|
+
readonly xs: _angular_core.InputSignal<string>;
|
|
973
|
+
readonly sm: _angular_core.InputSignal<string>;
|
|
974
|
+
readonly md: _angular_core.InputSignal<string>;
|
|
975
|
+
readonly lg: _angular_core.InputSignal<string>;
|
|
976
|
+
readonly xl: _angular_core.InputSignal<string>;
|
|
977
|
+
readonly ltSm: _angular_core.InputSignal<string>;
|
|
978
|
+
readonly ltMd: _angular_core.InputSignal<string>;
|
|
979
|
+
readonly ltLg: _angular_core.InputSignal<string>;
|
|
980
|
+
readonly ltXl: _angular_core.InputSignal<string>;
|
|
981
|
+
readonly gtXs: _angular_core.InputSignal<string>;
|
|
982
|
+
readonly gtSm: _angular_core.InputSignal<string>;
|
|
983
|
+
readonly gtMd: _angular_core.InputSignal<string>;
|
|
984
|
+
readonly gtLg: _angular_core.InputSignal<string>;
|
|
985
|
+
private readonly _rawFlex;
|
|
986
|
+
/** CSS properties applied on the last effect run (for stale cleanup). */
|
|
987
|
+
private _applied;
|
|
988
|
+
constructor();
|
|
989
|
+
static ɵfac: _angular_core.ɵɵFactoryDeclaration<FxFlexDirective, never>;
|
|
990
|
+
static ɵdir: _angular_core.ɵɵDirectiveDeclaration<FxFlexDirective, " [fxFlex], [fxFlex.xs], [fxFlex.sm], [fxFlex.md], [fxFlex.lg], [fxFlex.xl], [fxFlex.lt-sm], [fxFlex.lt-md], [fxFlex.lt-lg], [fxFlex.lt-xl], [fxFlex.gt-xs], [fxFlex.gt-sm], [fxFlex.gt-md], [fxFlex.gt-lg] ", never, { "fxFlex": { "alias": "fxFlex"; "required": false; "isSignal": true; }; "xs": { "alias": "fxFlex.xs"; "required": false; "isSignal": true; }; "sm": { "alias": "fxFlex.sm"; "required": false; "isSignal": true; }; "md": { "alias": "fxFlex.md"; "required": false; "isSignal": true; }; "lg": { "alias": "fxFlex.lg"; "required": false; "isSignal": true; }; "xl": { "alias": "fxFlex.xl"; "required": false; "isSignal": true; }; "ltSm": { "alias": "fxFlex.lt-sm"; "required": false; "isSignal": true; }; "ltMd": { "alias": "fxFlex.lt-md"; "required": false; "isSignal": true; }; "ltLg": { "alias": "fxFlex.lt-lg"; "required": false; "isSignal": true; }; "ltXl": { "alias": "fxFlex.lt-xl"; "required": false; "isSignal": true; }; "gtXs": { "alias": "fxFlex.gt-xs"; "required": false; "isSignal": true; }; "gtSm": { "alias": "fxFlex.gt-sm"; "required": false; "isSignal": true; }; "gtMd": { "alias": "fxFlex.gt-md"; "required": false; "isSignal": true; }; "gtLg": { "alias": "fxFlex.gt-lg"; "required": false; "isSignal": true; }; }, {}, never, never, true, never>;
|
|
991
|
+
}
|
|
819
992
|
|
|
820
|
-
|
|
821
|
-
|
|
822
|
-
|
|
823
|
-
readonly
|
|
824
|
-
|
|
825
|
-
readonly
|
|
826
|
-
|
|
827
|
-
readonly
|
|
828
|
-
|
|
829
|
-
readonly
|
|
830
|
-
|
|
831
|
-
readonly
|
|
832
|
-
|
|
833
|
-
readonly
|
|
834
|
-
|
|
835
|
-
readonly
|
|
836
|
-
|
|
837
|
-
readonly
|
|
838
|
-
|
|
839
|
-
readonly
|
|
840
|
-
|
|
841
|
-
readonly
|
|
842
|
-
|
|
843
|
-
readonly
|
|
844
|
-
|
|
845
|
-
readonly
|
|
846
|
-
|
|
847
|
-
readonly
|
|
993
|
+
declare class FxGridDirective extends ResponsiveBaseDirective {
|
|
994
|
+
readonly fxGrid: _angular_core.InputSignal<string>;
|
|
995
|
+
readonly xs: _angular_core.InputSignal<string>;
|
|
996
|
+
readonly sm: _angular_core.InputSignal<string>;
|
|
997
|
+
readonly md: _angular_core.InputSignal<string>;
|
|
998
|
+
readonly lg: _angular_core.InputSignal<string>;
|
|
999
|
+
readonly xl: _angular_core.InputSignal<string>;
|
|
1000
|
+
readonly ltSm: _angular_core.InputSignal<string>;
|
|
1001
|
+
readonly ltMd: _angular_core.InputSignal<string>;
|
|
1002
|
+
readonly ltLg: _angular_core.InputSignal<string>;
|
|
1003
|
+
readonly ltXl: _angular_core.InputSignal<string>;
|
|
1004
|
+
readonly gtXs: _angular_core.InputSignal<string>;
|
|
1005
|
+
readonly gtSm: _angular_core.InputSignal<string>;
|
|
1006
|
+
readonly gtMd: _angular_core.InputSignal<string>;
|
|
1007
|
+
readonly gtLg: _angular_core.InputSignal<string>;
|
|
1008
|
+
readonly fxGridRows: _angular_core.InputSignal<string>;
|
|
1009
|
+
readonly rowsXs: _angular_core.InputSignal<string>;
|
|
1010
|
+
readonly rowsSm: _angular_core.InputSignal<string>;
|
|
1011
|
+
readonly rowsMd: _angular_core.InputSignal<string>;
|
|
1012
|
+
readonly rowsLg: _angular_core.InputSignal<string>;
|
|
1013
|
+
readonly rowsXl: _angular_core.InputSignal<string>;
|
|
1014
|
+
readonly rowsLtSm: _angular_core.InputSignal<string>;
|
|
1015
|
+
readonly rowsLtMd: _angular_core.InputSignal<string>;
|
|
1016
|
+
readonly rowsLtLg: _angular_core.InputSignal<string>;
|
|
1017
|
+
readonly rowsLtXl: _angular_core.InputSignal<string>;
|
|
1018
|
+
readonly rowsGtXs: _angular_core.InputSignal<string>;
|
|
1019
|
+
readonly rowsGtSm: _angular_core.InputSignal<string>;
|
|
1020
|
+
readonly rowsGtMd: _angular_core.InputSignal<string>;
|
|
1021
|
+
readonly rowsGtLg: _angular_core.InputSignal<string>;
|
|
1022
|
+
readonly fxGridGap: _angular_core.InputSignal<string>;
|
|
1023
|
+
readonly gapXs: _angular_core.InputSignal<string>;
|
|
1024
|
+
readonly gapSm: _angular_core.InputSignal<string>;
|
|
1025
|
+
readonly gapMd: _angular_core.InputSignal<string>;
|
|
1026
|
+
readonly gapLg: _angular_core.InputSignal<string>;
|
|
1027
|
+
readonly gapXl: _angular_core.InputSignal<string>;
|
|
1028
|
+
readonly gapLtSm: _angular_core.InputSignal<string>;
|
|
1029
|
+
readonly gapLtMd: _angular_core.InputSignal<string>;
|
|
1030
|
+
readonly gapLtLg: _angular_core.InputSignal<string>;
|
|
1031
|
+
readonly gapLtXl: _angular_core.InputSignal<string>;
|
|
1032
|
+
readonly gapGtXs: _angular_core.InputSignal<string>;
|
|
1033
|
+
readonly gapGtSm: _angular_core.InputSignal<string>;
|
|
1034
|
+
readonly gapGtMd: _angular_core.InputSignal<string>;
|
|
1035
|
+
readonly gapGtLg: _angular_core.InputSignal<string>;
|
|
1036
|
+
private readonly _cols;
|
|
1037
|
+
private readonly _rows;
|
|
1038
|
+
private readonly _gap;
|
|
1039
|
+
constructor();
|
|
1040
|
+
static ɵfac: _angular_core.ɵɵFactoryDeclaration<FxGridDirective, never>;
|
|
1041
|
+
static ɵdir: _angular_core.ɵɵDirectiveDeclaration<FxGridDirective, " [fxGrid], [fxGrid.xs], [fxGrid.sm], [fxGrid.md], [fxGrid.lg], [fxGrid.xl], [fxGrid.lt-sm], [fxGrid.lt-md], [fxGrid.lt-lg], [fxGrid.lt-xl], [fxGrid.gt-xs], [fxGrid.gt-sm], [fxGrid.gt-md], [fxGrid.gt-lg] ", never, { "fxGrid": { "alias": "fxGrid"; "required": false; "isSignal": true; }; "xs": { "alias": "fxGrid.xs"; "required": false; "isSignal": true; }; "sm": { "alias": "fxGrid.sm"; "required": false; "isSignal": true; }; "md": { "alias": "fxGrid.md"; "required": false; "isSignal": true; }; "lg": { "alias": "fxGrid.lg"; "required": false; "isSignal": true; }; "xl": { "alias": "fxGrid.xl"; "required": false; "isSignal": true; }; "ltSm": { "alias": "fxGrid.lt-sm"; "required": false; "isSignal": true; }; "ltMd": { "alias": "fxGrid.lt-md"; "required": false; "isSignal": true; }; "ltLg": { "alias": "fxGrid.lt-lg"; "required": false; "isSignal": true; }; "ltXl": { "alias": "fxGrid.lt-xl"; "required": false; "isSignal": true; }; "gtXs": { "alias": "fxGrid.gt-xs"; "required": false; "isSignal": true; }; "gtSm": { "alias": "fxGrid.gt-sm"; "required": false; "isSignal": true; }; "gtMd": { "alias": "fxGrid.gt-md"; "required": false; "isSignal": true; }; "gtLg": { "alias": "fxGrid.gt-lg"; "required": false; "isSignal": true; }; "fxGridRows": { "alias": "fxGridRows"; "required": false; "isSignal": true; }; "rowsXs": { "alias": "fxGridRows.xs"; "required": false; "isSignal": true; }; "rowsSm": { "alias": "fxGridRows.sm"; "required": false; "isSignal": true; }; "rowsMd": { "alias": "fxGridRows.md"; "required": false; "isSignal": true; }; "rowsLg": { "alias": "fxGridRows.lg"; "required": false; "isSignal": true; }; "rowsXl": { "alias": "fxGridRows.xl"; "required": false; "isSignal": true; }; "rowsLtSm": { "alias": "fxGridRows.lt-sm"; "required": false; "isSignal": true; }; "rowsLtMd": { "alias": "fxGridRows.lt-md"; "required": false; "isSignal": true; }; "rowsLtLg": { "alias": "fxGridRows.lt-lg"; "required": false; "isSignal": true; }; "rowsLtXl": { "alias": "fxGridRows.lt-xl"; "required": false; "isSignal": true; }; "rowsGtXs": { "alias": "fxGridRows.gt-xs"; "required": false; "isSignal": true; }; "rowsGtSm": { "alias": "fxGridRows.gt-sm"; "required": false; "isSignal": true; }; "rowsGtMd": { "alias": "fxGridRows.gt-md"; "required": false; "isSignal": true; }; "rowsGtLg": { "alias": "fxGridRows.gt-lg"; "required": false; "isSignal": true; }; "fxGridGap": { "alias": "fxGridGap"; "required": false; "isSignal": true; }; "gapXs": { "alias": "fxGridGap.xs"; "required": false; "isSignal": true; }; "gapSm": { "alias": "fxGridGap.sm"; "required": false; "isSignal": true; }; "gapMd": { "alias": "fxGridGap.md"; "required": false; "isSignal": true; }; "gapLg": { "alias": "fxGridGap.lg"; "required": false; "isSignal": true; }; "gapXl": { "alias": "fxGridGap.xl"; "required": false; "isSignal": true; }; "gapLtSm": { "alias": "fxGridGap.lt-sm"; "required": false; "isSignal": true; }; "gapLtMd": { "alias": "fxGridGap.lt-md"; "required": false; "isSignal": true; }; "gapLtLg": { "alias": "fxGridGap.lt-lg"; "required": false; "isSignal": true; }; "gapLtXl": { "alias": "fxGridGap.lt-xl"; "required": false; "isSignal": true; }; "gapGtXs": { "alias": "fxGridGap.gt-xs"; "required": false; "isSignal": true; }; "gapGtSm": { "alias": "fxGridGap.gt-sm"; "required": false; "isSignal": true; }; "gapGtMd": { "alias": "fxGridGap.gt-md"; "required": false; "isSignal": true; }; "gapGtLg": { "alias": "fxGridGap.gt-lg"; "required": false; "isSignal": true; }; }, {}, never, never, true, never>;
|
|
848
1042
|
}
|
|
849
|
-
|
|
850
|
-
|
|
851
|
-
|
|
852
|
-
readonly
|
|
853
|
-
|
|
854
|
-
readonly
|
|
1043
|
+
declare class FxGridColumnDirective extends ResponsiveBaseDirective {
|
|
1044
|
+
readonly fxGridColumn: _angular_core.InputSignal<string>;
|
|
1045
|
+
readonly xs: _angular_core.InputSignal<string>;
|
|
1046
|
+
readonly sm: _angular_core.InputSignal<string>;
|
|
1047
|
+
readonly md: _angular_core.InputSignal<string>;
|
|
1048
|
+
readonly lg: _angular_core.InputSignal<string>;
|
|
1049
|
+
readonly xl: _angular_core.InputSignal<string>;
|
|
1050
|
+
readonly ltSm: _angular_core.InputSignal<string>;
|
|
1051
|
+
readonly ltMd: _angular_core.InputSignal<string>;
|
|
1052
|
+
readonly ltLg: _angular_core.InputSignal<string>;
|
|
1053
|
+
readonly ltXl: _angular_core.InputSignal<string>;
|
|
1054
|
+
readonly gtXs: _angular_core.InputSignal<string>;
|
|
1055
|
+
readonly gtSm: _angular_core.InputSignal<string>;
|
|
1056
|
+
readonly gtMd: _angular_core.InputSignal<string>;
|
|
1057
|
+
readonly gtLg: _angular_core.InputSignal<string>;
|
|
1058
|
+
private readonly _resolved;
|
|
1059
|
+
constructor();
|
|
1060
|
+
static ɵfac: _angular_core.ɵɵFactoryDeclaration<FxGridColumnDirective, never>;
|
|
1061
|
+
static ɵdir: _angular_core.ɵɵDirectiveDeclaration<FxGridColumnDirective, " [fxGridColumn], [fxGridColumn.xs], [fxGridColumn.sm], [fxGridColumn.md], [fxGridColumn.lg], [fxGridColumn.xl], [fxGridColumn.lt-sm], [fxGridColumn.lt-md], [fxGridColumn.lt-lg], [fxGridColumn.lt-xl], [fxGridColumn.gt-xs], [fxGridColumn.gt-sm], [fxGridColumn.gt-md], [fxGridColumn.gt-lg] ", never, { "fxGridColumn": { "alias": "fxGridColumn"; "required": false; "isSignal": true; }; "xs": { "alias": "fxGridColumn.xs"; "required": false; "isSignal": true; }; "sm": { "alias": "fxGridColumn.sm"; "required": false; "isSignal": true; }; "md": { "alias": "fxGridColumn.md"; "required": false; "isSignal": true; }; "lg": { "alias": "fxGridColumn.lg"; "required": false; "isSignal": true; }; "xl": { "alias": "fxGridColumn.xl"; "required": false; "isSignal": true; }; "ltSm": { "alias": "fxGridColumn.lt-sm"; "required": false; "isSignal": true; }; "ltMd": { "alias": "fxGridColumn.lt-md"; "required": false; "isSignal": true; }; "ltLg": { "alias": "fxGridColumn.lt-lg"; "required": false; "isSignal": true; }; "ltXl": { "alias": "fxGridColumn.lt-xl"; "required": false; "isSignal": true; }; "gtXs": { "alias": "fxGridColumn.gt-xs"; "required": false; "isSignal": true; }; "gtSm": { "alias": "fxGridColumn.gt-sm"; "required": false; "isSignal": true; }; "gtMd": { "alias": "fxGridColumn.gt-md"; "required": false; "isSignal": true; }; "gtLg": { "alias": "fxGridColumn.gt-lg"; "required": false; "isSignal": true; }; }, {}, never, never, true, never>;
|
|
855
1062
|
}
|
|
856
|
-
declare class
|
|
857
|
-
|
|
858
|
-
|
|
859
|
-
|
|
860
|
-
|
|
861
|
-
|
|
862
|
-
readonly
|
|
863
|
-
|
|
864
|
-
readonly
|
|
865
|
-
|
|
866
|
-
readonly
|
|
867
|
-
|
|
868
|
-
readonly
|
|
869
|
-
|
|
870
|
-
readonly
|
|
871
|
-
|
|
872
|
-
readonly open: _angular_core.ModelSignal<boolean>;
|
|
873
|
-
/** Label visibility policy. */
|
|
874
|
-
readonly labelVisibility: _angular_core.InputSignal<NavigationLabelVisibility>;
|
|
875
|
-
/** Icon / label arrangement inside a destination. */
|
|
876
|
-
readonly itemLayout: _angular_core.InputSignal<NavigationItemLayout>;
|
|
877
|
-
/** Vertical alignment of the destination list inside a rail. */
|
|
878
|
-
readonly alignment: _angular_core.InputSignal<NavigationAlignment>;
|
|
879
|
-
/** Edge the rail / drawer is anchored to. Mirrored automatically in RTL. */
|
|
880
|
-
readonly position: _angular_core.InputSignal<NavigationPosition>;
|
|
881
|
-
/** Headline rendered above the destinations in the expanded rail and in the drawer. */
|
|
882
|
-
readonly headline: _angular_core.InputSignal<string>;
|
|
883
|
-
/** When `true` a leading menu button is rendered; it emits `menuClick`. */
|
|
884
|
-
readonly showMenuButton: _angular_core.InputSignalWithTransform<boolean, unknown>;
|
|
885
|
-
/** Material Symbols ligature used by the menu button. */
|
|
886
|
-
readonly menuIcon: _angular_core.InputSignal<string>;
|
|
887
|
-
/** Accessible name of the menu button. */
|
|
888
|
-
readonly menuAriaLabel: _angular_core.InputSignal<string>;
|
|
889
|
-
/** Accessible name of the navigation landmark. */
|
|
890
|
-
readonly ariaLabel: _angular_core.InputSignal<string>;
|
|
891
|
-
/** When `true` a scrim is rendered behind the modal drawer. */
|
|
892
|
-
readonly scrim: _angular_core.InputSignalWithTransform<boolean, unknown>;
|
|
893
|
-
/** When `true` the modal drawer closes as soon as a destination is activated. */
|
|
894
|
-
readonly closeOnSelect: _angular_core.InputSignalWithTransform<boolean, unknown>;
|
|
895
|
-
/** When `true` the surface gets the M3 elevation-3 shadow. */
|
|
896
|
-
readonly elevated: _angular_core.InputSignalWithTransform<boolean, unknown>;
|
|
897
|
-
/** When `true` a 1px divider separates the surface from the page content. */
|
|
898
|
-
readonly bordered: _angular_core.InputSignalWithTransform<boolean, unknown>;
|
|
899
|
-
/** When `true` tooltips are shown for destinations whose label is not visible. */
|
|
900
|
-
readonly tooltips: _angular_core.InputSignalWithTransform<boolean, unknown>;
|
|
901
|
-
/** When `true` the selection follows the current router URL. */
|
|
902
|
-
readonly routerSync: _angular_core.InputSignalWithTransform<boolean, unknown>;
|
|
903
|
-
/** Route used to resolve relative `route` commands. Absolute resolution when omitted. */
|
|
904
|
-
readonly relativeTo: _angular_core.InputSignal<ActivatedRoute>;
|
|
905
|
-
/** Explicit surface width in pixels for the rail / drawer variants. `0` keeps the spec default. */
|
|
906
|
-
readonly width: _angular_core.InputSignalWithTransform<number, unknown>;
|
|
907
|
-
/** When `true` the whole surface is hidden (animated off-screen) without being destroyed. */
|
|
908
|
-
readonly hidden: _angular_core.InputSignalWithTransform<boolean, unknown>;
|
|
909
|
-
/** Emitted when a destination is activated by the user. */
|
|
910
|
-
readonly itemSelected: _angular_core.OutputEmitterRef<NavigationSelection>;
|
|
911
|
-
/** Emitted when the leading menu button is pressed. */
|
|
912
|
-
readonly menuClick: _angular_core.OutputEmitterRef<void>;
|
|
913
|
-
/** Focusable destination elements, in DOM order; used for keyboard roving. */
|
|
914
|
-
private readonly itemElements;
|
|
915
|
-
/** Current router URL, kept in a signal so the template stays zoneless-friendly. */
|
|
916
|
-
private readonly routerUrl;
|
|
1063
|
+
declare class FxGridAreaDirective extends ResponsiveBaseDirective {
|
|
1064
|
+
readonly fxGridArea: _angular_core.InputSignal<string>;
|
|
1065
|
+
readonly xs: _angular_core.InputSignal<string>;
|
|
1066
|
+
readonly sm: _angular_core.InputSignal<string>;
|
|
1067
|
+
readonly md: _angular_core.InputSignal<string>;
|
|
1068
|
+
readonly lg: _angular_core.InputSignal<string>;
|
|
1069
|
+
readonly xl: _angular_core.InputSignal<string>;
|
|
1070
|
+
readonly ltSm: _angular_core.InputSignal<string>;
|
|
1071
|
+
readonly ltMd: _angular_core.InputSignal<string>;
|
|
1072
|
+
readonly ltLg: _angular_core.InputSignal<string>;
|
|
1073
|
+
readonly ltXl: _angular_core.InputSignal<string>;
|
|
1074
|
+
readonly gtXs: _angular_core.InputSignal<string>;
|
|
1075
|
+
readonly gtSm: _angular_core.InputSignal<string>;
|
|
1076
|
+
readonly gtMd: _angular_core.InputSignal<string>;
|
|
1077
|
+
readonly gtLg: _angular_core.InputSignal<string>;
|
|
1078
|
+
private readonly _resolved;
|
|
917
1079
|
constructor();
|
|
918
|
-
|
|
919
|
-
|
|
920
|
-
/** The variant to render, resolving `auto` against the active CDK breakpoint. */
|
|
921
|
-
protected readonly resolvedVariant: _angular_core.Signal<ResolvedNavigationVariant>;
|
|
922
|
-
/** `true` for the variants that render labels beside icons and support sections. */
|
|
923
|
-
protected readonly isExpanded: _angular_core.Signal<boolean>;
|
|
924
|
-
/** `true` when the surface is the modal drawer. */
|
|
925
|
-
protected readonly isModal: _angular_core.Signal<boolean>;
|
|
926
|
-
/** `true` when the modal drawer is currently open. */
|
|
927
|
-
protected readonly isOverlayOpen: _angular_core.Signal<boolean>;
|
|
928
|
-
/** `true` when the surface must be visually hidden. */
|
|
929
|
-
protected readonly isHidden: _angular_core.Signal<boolean>;
|
|
930
|
-
/** Resolved icon / label arrangement. */
|
|
931
|
-
protected readonly resolvedLayout: _angular_core.Signal<"horizontal" | "vertical">;
|
|
932
|
-
/** Resolved label visibility; the expanded variants always show labels. */
|
|
933
|
-
protected readonly resolvedLabelVisibility: _angular_core.Signal<"selected" | "labeled" | "unlabeled">;
|
|
934
|
-
/** `true` when the section headline and the divider must be rendered. */
|
|
935
|
-
protected readonly showsSections: _angular_core.Signal<boolean>;
|
|
936
|
-
/** `true` when the headline row (menu button, headline text, projected header) is rendered. */
|
|
937
|
-
protected readonly showsHeader: _angular_core.Signal<boolean>;
|
|
938
|
-
/**
|
|
939
|
-
* Geometry of the active indicator:
|
|
940
|
-
* `compact` wraps the icon only (56x32 pill), `wide` wraps icon and label
|
|
941
|
-
* together, exactly as described by the M3 Expressive specs.
|
|
942
|
-
*/
|
|
943
|
-
protected readonly indicatorMode: _angular_core.Signal<"wide" | "compact">;
|
|
944
|
-
/** Tooltip placement derived from the variant and from the anchoring edge. */
|
|
945
|
-
protected readonly tooltipPosition: _angular_core.Signal<TooltipPosition>;
|
|
946
|
-
/** Inline width override for the rail / drawer, or `undefined` to keep the spec default. */
|
|
947
|
-
protected readonly widthStyle: _angular_core.Signal<string>;
|
|
948
|
-
/** Map of destination id to resolved URL. Recomputed only when the destinations change. */
|
|
949
|
-
private readonly hrefs;
|
|
950
|
-
/** Pre-computed render model, rebuilt only when the destinations or the resolved URLs change. */
|
|
951
|
-
protected readonly renderSections: _angular_core.Signal<readonly NavigationRenderSection[]>;
|
|
952
|
-
/** Id of the destination matching the current router URL, using longest-prefix matching. */
|
|
953
|
-
private readonly routerActiveId;
|
|
954
|
-
/** Id of the currently active destination: router URL first, explicit selection as fallback. */
|
|
955
|
-
protected readonly activeId: _angular_core.Signal<string>;
|
|
956
|
-
/** `true` when the layout runs right-to-left; used to mirror the arrow keys. */
|
|
957
|
-
private readonly isRtl;
|
|
958
|
-
/**
|
|
959
|
-
* Activates a destination: updates the selection, navigates when routed and
|
|
960
|
-
* emits `itemSelected`.
|
|
961
|
-
* @param render - The render model of the activated destination.
|
|
962
|
-
* @param event - The originating mouse or keyboard event.
|
|
963
|
-
*/
|
|
964
|
-
protected select(render: NavigationRenderItem, event: Event): void;
|
|
965
|
-
/**
|
|
966
|
-
* Emits `menuClick` when the leading menu button is pressed.
|
|
967
|
-
*/
|
|
968
|
-
protected onMenuClick(): void;
|
|
969
|
-
/**
|
|
970
|
-
* Closes the modal drawer when the scrim is clicked.
|
|
971
|
-
*/
|
|
972
|
-
protected onScrimClick(): void;
|
|
973
|
-
/**
|
|
974
|
-
* Handles keyboard interaction: arrow keys move the focus between
|
|
975
|
-
* destinations, `Home` / `End` jump to the first / last one and `Escape`
|
|
976
|
-
* closes the modal drawer.
|
|
977
|
-
* @param event - The originating keyboard event.
|
|
978
|
-
*/
|
|
979
|
-
protected onKeydown(event: KeyboardEvent): void;
|
|
980
|
-
/**
|
|
981
|
-
* Opens the modal drawer. No-op for the other variants.
|
|
982
|
-
*/
|
|
983
|
-
openDrawer(): void;
|
|
984
|
-
/**
|
|
985
|
-
* Closes the modal drawer. No-op for the other variants.
|
|
986
|
-
*/
|
|
987
|
-
closeDrawer(): void;
|
|
988
|
-
/**
|
|
989
|
-
* Toggles the modal drawer. No-op for the other variants.
|
|
990
|
-
*/
|
|
991
|
-
toggleDrawer(): void;
|
|
992
|
-
/**
|
|
993
|
-
* Moves the browser focus to the destination with the given id.
|
|
994
|
-
* @param id - Identifier of the destination to focus.
|
|
995
|
-
* @returns `true` when a matching destination was found and focused.
|
|
996
|
-
*/
|
|
997
|
-
focusItem(id: string): boolean;
|
|
998
|
-
/**
|
|
999
|
-
* Formats the badge content of a destination.
|
|
1000
|
-
* @param item - The destination whose badge must be formatted.
|
|
1001
|
-
* @returns The badge text, or an empty string for a dot badge / no badge.
|
|
1002
|
-
*/
|
|
1003
|
-
private static formatBadge;
|
|
1004
|
-
/**
|
|
1005
|
-
* Strips the query string and the fragment from a URL.
|
|
1006
|
-
* @param url - The URL to normalise.
|
|
1007
|
-
* @returns The path portion of the URL.
|
|
1008
|
-
*/
|
|
1009
|
-
private static pathOf;
|
|
1010
|
-
static ɵfac: _angular_core.ɵɵFactoryDeclaration<NavigationBarComponent, never>;
|
|
1011
|
-
static ɵcmp: _angular_core.ɵɵComponentDeclaration<NavigationBarComponent, "navigation-bar", never, { "items": { "alias": "items"; "required": false; "isSignal": true; }; "sections": { "alias": "sections"; "required": false; "isSignal": true; }; "variant": { "alias": "variant"; "required": false; "isSignal": true; }; "autoVariants": { "alias": "autoVariants"; "required": false; "isSignal": true; }; "selectedId": { "alias": "selectedId"; "required": false; "isSignal": true; }; "open": { "alias": "open"; "required": false; "isSignal": true; }; "labelVisibility": { "alias": "labelVisibility"; "required": false; "isSignal": true; }; "itemLayout": { "alias": "itemLayout"; "required": false; "isSignal": true; }; "alignment": { "alias": "alignment"; "required": false; "isSignal": true; }; "position": { "alias": "position"; "required": false; "isSignal": true; }; "headline": { "alias": "headline"; "required": false; "isSignal": true; }; "showMenuButton": { "alias": "showMenuButton"; "required": false; "isSignal": true; }; "menuIcon": { "alias": "menuIcon"; "required": false; "isSignal": true; }; "menuAriaLabel": { "alias": "menuAriaLabel"; "required": false; "isSignal": true; }; "ariaLabel": { "alias": "ariaLabel"; "required": false; "isSignal": true; }; "scrim": { "alias": "scrim"; "required": false; "isSignal": true; }; "closeOnSelect": { "alias": "closeOnSelect"; "required": false; "isSignal": true; }; "elevated": { "alias": "elevated"; "required": false; "isSignal": true; }; "bordered": { "alias": "bordered"; "required": false; "isSignal": true; }; "tooltips": { "alias": "tooltips"; "required": false; "isSignal": true; }; "routerSync": { "alias": "routerSync"; "required": false; "isSignal": true; }; "relativeTo": { "alias": "relativeTo"; "required": false; "isSignal": true; }; "width": { "alias": "width"; "required": false; "isSignal": true; }; "hidden": { "alias": "hidden"; "required": false; "isSignal": true; }; }, { "selectedId": "selectedIdChange"; "open": "openChange"; "itemSelected": "itemSelected"; "menuClick": "menuClick"; }, never, ["[navHeader]", "[navFab]", "[navFooter]"], true, never>;
|
|
1080
|
+
static ɵfac: _angular_core.ɵɵFactoryDeclaration<FxGridAreaDirective, never>;
|
|
1081
|
+
static ɵdir: _angular_core.ɵɵDirectiveDeclaration<FxGridAreaDirective, " [fxGridArea], [fxGridArea.xs], [fxGridArea.sm], [fxGridArea.md], [fxGridArea.lg], [fxGridArea.xl], [fxGridArea.lt-sm], [fxGridArea.lt-md], [fxGridArea.lt-lg], [fxGridArea.lt-xl], [fxGridArea.gt-xs], [fxGridArea.gt-sm], [fxGridArea.gt-md], [fxGridArea.gt-lg] ", never, { "fxGridArea": { "alias": "fxGridArea"; "required": false; "isSignal": true; }; "xs": { "alias": "fxGridArea.xs"; "required": false; "isSignal": true; }; "sm": { "alias": "fxGridArea.sm"; "required": false; "isSignal": true; }; "md": { "alias": "fxGridArea.md"; "required": false; "isSignal": true; }; "lg": { "alias": "fxGridArea.lg"; "required": false; "isSignal": true; }; "xl": { "alias": "fxGridArea.xl"; "required": false; "isSignal": true; }; "ltSm": { "alias": "fxGridArea.lt-sm"; "required": false; "isSignal": true; }; "ltMd": { "alias": "fxGridArea.lt-md"; "required": false; "isSignal": true; }; "ltLg": { "alias": "fxGridArea.lt-lg"; "required": false; "isSignal": true; }; "ltXl": { "alias": "fxGridArea.lt-xl"; "required": false; "isSignal": true; }; "gtXs": { "alias": "fxGridArea.gt-xs"; "required": false; "isSignal": true; }; "gtSm": { "alias": "fxGridArea.gt-sm"; "required": false; "isSignal": true; }; "gtMd": { "alias": "fxGridArea.gt-md"; "required": false; "isSignal": true; }; "gtLg": { "alias": "fxGridArea.gt-lg"; "required": false; "isSignal": true; }; }, {}, never, never, true, never>;
|
|
1012
1082
|
}
|
|
1013
1083
|
|
|
1014
|
-
|
|
1015
|
-
|
|
1016
|
-
|
|
1017
|
-
|
|
1018
|
-
|
|
1019
|
-
|
|
1020
|
-
/**
|
|
1021
|
-
readonly
|
|
1022
|
-
|
|
1023
|
-
|
|
1024
|
-
|
|
1025
|
-
|
|
1026
|
-
|
|
1027
|
-
|
|
1084
|
+
/**
|
|
1085
|
+
* Port of ngx LayoutAlignStyleBuilder.buildStyles.
|
|
1086
|
+
* `null` values mean "remove the property".
|
|
1087
|
+
*/
|
|
1088
|
+
declare function buildAlignStyles(align: string, layoutDirection: string, inline: boolean): Record<string, string | null>;
|
|
1089
|
+
declare class FxLayoutAlignDirective extends ResponsiveBaseDirective {
|
|
1090
|
+
/** FxLayout on the same host (optional): direction/inline read reactively. */
|
|
1091
|
+
private readonly selfLayout;
|
|
1092
|
+
readonly fxLayoutAlign: _angular_core.InputSignal<string>;
|
|
1093
|
+
readonly xs: _angular_core.InputSignal<string>;
|
|
1094
|
+
readonly sm: _angular_core.InputSignal<string>;
|
|
1095
|
+
readonly md: _angular_core.InputSignal<string>;
|
|
1096
|
+
readonly lg: _angular_core.InputSignal<string>;
|
|
1097
|
+
readonly xl: _angular_core.InputSignal<string>;
|
|
1098
|
+
readonly ltSm: _angular_core.InputSignal<string>;
|
|
1099
|
+
readonly ltMd: _angular_core.InputSignal<string>;
|
|
1100
|
+
readonly ltLg: _angular_core.InputSignal<string>;
|
|
1101
|
+
readonly ltXl: _angular_core.InputSignal<string>;
|
|
1102
|
+
readonly gtXs: _angular_core.InputSignal<string>;
|
|
1103
|
+
readonly gtSm: _angular_core.InputSignal<string>;
|
|
1104
|
+
readonly gtMd: _angular_core.InputSignal<string>;
|
|
1105
|
+
readonly gtLg: _angular_core.InputSignal<string>;
|
|
1106
|
+
private readonly _align;
|
|
1028
1107
|
constructor();
|
|
1029
|
-
static ɵfac: _angular_core.ɵɵFactoryDeclaration<
|
|
1030
|
-
static ɵdir: _angular_core.ɵɵDirectiveDeclaration<
|
|
1108
|
+
static ɵfac: _angular_core.ɵɵFactoryDeclaration<FxLayoutAlignDirective, never>;
|
|
1109
|
+
static ɵdir: _angular_core.ɵɵDirectiveDeclaration<FxLayoutAlignDirective, " [fxLayoutAlign], [fxLayoutAlign.xs], [fxLayoutAlign.sm], [fxLayoutAlign.md], [fxLayoutAlign.lg], [fxLayoutAlign.xl], [fxLayoutAlign.lt-sm], [fxLayoutAlign.lt-md], [fxLayoutAlign.lt-lg], [fxLayoutAlign.lt-xl], [fxLayoutAlign.gt-xs], [fxLayoutAlign.gt-sm], [fxLayoutAlign.gt-md], [fxLayoutAlign.gt-lg] ", never, { "fxLayoutAlign": { "alias": "fxLayoutAlign"; "required": false; "isSignal": true; }; "xs": { "alias": "fxLayoutAlign.xs"; "required": false; "isSignal": true; }; "sm": { "alias": "fxLayoutAlign.sm"; "required": false; "isSignal": true; }; "md": { "alias": "fxLayoutAlign.md"; "required": false; "isSignal": true; }; "lg": { "alias": "fxLayoutAlign.lg"; "required": false; "isSignal": true; }; "xl": { "alias": "fxLayoutAlign.xl"; "required": false; "isSignal": true; }; "ltSm": { "alias": "fxLayoutAlign.lt-sm"; "required": false; "isSignal": true; }; "ltMd": { "alias": "fxLayoutAlign.lt-md"; "required": false; "isSignal": true; }; "ltLg": { "alias": "fxLayoutAlign.lt-lg"; "required": false; "isSignal": true; }; "ltXl": { "alias": "fxLayoutAlign.lt-xl"; "required": false; "isSignal": true; }; "gtXs": { "alias": "fxLayoutAlign.gt-xs"; "required": false; "isSignal": true; }; "gtSm": { "alias": "fxLayoutAlign.gt-sm"; "required": false; "isSignal": true; }; "gtMd": { "alias": "fxLayoutAlign.gt-md"; "required": false; "isSignal": true; }; "gtLg": { "alias": "fxLayoutAlign.gt-lg"; "required": false; "isSignal": true; }; }, {}, never, never, true, never>;
|
|
1110
|
+
}
|
|
1111
|
+
|
|
1112
|
+
declare class FxLayoutGapDirective extends ResponsiveBaseDirective {
|
|
1113
|
+
readonly fxLayoutGap: _angular_core.InputSignal<string>;
|
|
1114
|
+
readonly xs: _angular_core.InputSignal<string>;
|
|
1115
|
+
readonly sm: _angular_core.InputSignal<string>;
|
|
1116
|
+
readonly md: _angular_core.InputSignal<string>;
|
|
1117
|
+
readonly lg: _angular_core.InputSignal<string>;
|
|
1118
|
+
readonly xl: _angular_core.InputSignal<string>;
|
|
1119
|
+
readonly ltSm: _angular_core.InputSignal<string>;
|
|
1120
|
+
readonly ltMd: _angular_core.InputSignal<string>;
|
|
1121
|
+
readonly ltLg: _angular_core.InputSignal<string>;
|
|
1122
|
+
readonly ltXl: _angular_core.InputSignal<string>;
|
|
1123
|
+
readonly gtXs: _angular_core.InputSignal<string>;
|
|
1124
|
+
readonly gtSm: _angular_core.InputSignal<string>;
|
|
1125
|
+
readonly gtMd: _angular_core.InputSignal<string>;
|
|
1126
|
+
readonly gtLg: _angular_core.InputSignal<string>;
|
|
1127
|
+
private readonly _gap;
|
|
1128
|
+
constructor();
|
|
1129
|
+
static ɵfac: _angular_core.ɵɵFactoryDeclaration<FxLayoutGapDirective, never>;
|
|
1130
|
+
static ɵdir: _angular_core.ɵɵDirectiveDeclaration<FxLayoutGapDirective, " [fxLayoutGap], [fxLayoutGap.xs], [fxLayoutGap.sm], [fxLayoutGap.md], [fxLayoutGap.lg], [fxLayoutGap.xl], [fxLayoutGap.lt-sm], [fxLayoutGap.lt-md], [fxLayoutGap.lt-lg], [fxLayoutGap.lt-xl], [fxLayoutGap.gt-xs], [fxLayoutGap.gt-sm], [fxLayoutGap.gt-md], [fxLayoutGap.gt-lg] ", never, { "fxLayoutGap": { "alias": "fxLayoutGap"; "required": false; "isSignal": true; }; "xs": { "alias": "fxLayoutGap.xs"; "required": false; "isSignal": true; }; "sm": { "alias": "fxLayoutGap.sm"; "required": false; "isSignal": true; }; "md": { "alias": "fxLayoutGap.md"; "required": false; "isSignal": true; }; "lg": { "alias": "fxLayoutGap.lg"; "required": false; "isSignal": true; }; "xl": { "alias": "fxLayoutGap.xl"; "required": false; "isSignal": true; }; "ltSm": { "alias": "fxLayoutGap.lt-sm"; "required": false; "isSignal": true; }; "ltMd": { "alias": "fxLayoutGap.lt-md"; "required": false; "isSignal": true; }; "ltLg": { "alias": "fxLayoutGap.lt-lg"; "required": false; "isSignal": true; }; "ltXl": { "alias": "fxLayoutGap.lt-xl"; "required": false; "isSignal": true; }; "gtXs": { "alias": "fxLayoutGap.gt-xs"; "required": false; "isSignal": true; }; "gtSm": { "alias": "fxLayoutGap.gt-sm"; "required": false; "isSignal": true; }; "gtMd": { "alias": "fxLayoutGap.gt-md"; "required": false; "isSignal": true; }; "gtLg": { "alias": "fxLayoutGap.gt-lg"; "required": false; "isSignal": true; }; }, {}, never, never, true, never>;
|
|
1031
1131
|
}
|
|
1032
1132
|
|
|
1133
|
+
declare const LAYOUT_VALUES: readonly ["row", "column", "row-reverse", "column-reverse"];
|
|
1134
|
+
/** Port of ngx-layout validateWrapValue(). */
|
|
1135
|
+
declare function validateWrapValue(value: string): string;
|
|
1136
|
+
/** Port of ngx-layout validateValue(): [direction, wrap, inline]. */
|
|
1137
|
+
declare function validateLayoutValue(value: string): [string, string, boolean];
|
|
1138
|
+
/** Port of ngx-layout buildLayoutCSS(): null values mean "remove the property". */
|
|
1139
|
+
declare function buildLayoutCSS(value: string): Record<string, string | null>;
|
|
1033
1140
|
/**
|
|
1034
|
-
*
|
|
1035
|
-
*
|
|
1036
|
-
*
|
|
1037
|
-
*
|
|
1038
|
-
* ✅ Single bo.observe() call for all 5 canonical CDK breakpoints.
|
|
1039
|
-
* CDK internally uses one MediaQueryList listener per query string.
|
|
1040
|
-
* Calling observe() N times creates N listeners — here we create only one.
|
|
1041
|
-
*
|
|
1042
|
-
* ✅ currentBp$ is shared (shareReplay(1)): all subscribers (effects in
|
|
1043
|
-
* directives) receive the same value without redundant re-computations.
|
|
1044
|
-
*
|
|
1045
|
-
* ✅ The currentBp Signal is derived from the Observable via toSignal():
|
|
1046
|
-
* Angular manages the subscription internally and tears it down with root.
|
|
1047
|
-
*
|
|
1048
|
-
* ✅ isActive() delegates to bo.isMatched() — synchronous, O(1), no extra observer.
|
|
1049
|
-
*
|
|
1050
|
-
* ✅ isActive$() reuses the shared currentBp$ stream instead of opening
|
|
1051
|
-
* a new bo.observe() for every requested alias.
|
|
1141
|
+
* Resolves the flex flow of the parent container for a flex child.
|
|
1142
|
+
* Prefers the reactive FxLayoutDirective instance when it sits on the DIRECT
|
|
1143
|
+
* parent element (signal read → re-evaluates with the parent); falls back to
|
|
1144
|
+
* getComputedStyle for plain-CSS flex parents; SSR-safe defaults.
|
|
1052
1145
|
*/
|
|
1053
|
-
|
|
1054
|
-
|
|
1055
|
-
|
|
1056
|
-
|
|
1057
|
-
|
|
1058
|
-
|
|
1059
|
-
* Each breakpoint change emits → we resolve the current alias → shared.
|
|
1060
|
-
*
|
|
1061
|
-
* shareReplay(1): all subscribers (N directives in the DOM) receive
|
|
1062
|
-
* the same value without N separate recomputations.
|
|
1063
|
-
*/
|
|
1064
|
-
readonly currentBp$: Observable<BreakpointAlias>;
|
|
1065
|
-
/**
|
|
1066
|
-
* Signal derived from currentBp$.
|
|
1067
|
-
* Directives read it via effect() — zero manual subscriptions.
|
|
1068
|
-
* providedIn: 'root' ensures the Signal is a singleton.
|
|
1069
|
-
*/
|
|
1070
|
-
readonly currentBp: Signal<BreakpointAlias>;
|
|
1071
|
-
/**
|
|
1072
|
-
* Returns true if the given alias (or raw media query) is currently active.
|
|
1073
|
-
* Delegates to bo.isMatched() — synchronous, O(1), no extra observer created.
|
|
1074
|
-
*
|
|
1075
|
-
* @example
|
|
1076
|
-
* media.isActive('md') // true on 960–1279px screens
|
|
1077
|
-
* media.isActive('gt-md') // true on 1280px+
|
|
1078
|
-
* media.isActive('handset') // CDK device alias (orientation-aware)
|
|
1079
|
-
*/
|
|
1080
|
-
isActive(alias: string): boolean;
|
|
1081
|
-
/**
|
|
1082
|
-
* Observable true/false for a specific alias.
|
|
1083
|
-
* Reuses currentBp$ instead of opening a new bo.observe():
|
|
1084
|
-
* no additional MediaQueryList listener is created.
|
|
1085
|
-
*/
|
|
1086
|
-
isActive$(alias: string): Observable<boolean>;
|
|
1087
|
-
/** Resolves the active canonical alias (from xl down to xs, mobile-first) */
|
|
1088
|
-
private _resolve;
|
|
1089
|
-
static ɵfac: _angular_core.ɵɵFactoryDeclaration<MediaObserver, never>;
|
|
1090
|
-
static ɵprov: _angular_core.ɵɵInjectableDeclaration<MediaObserver>;
|
|
1091
|
-
}
|
|
1092
|
-
|
|
1093
|
-
/**
|
|
1094
|
-
* @file responsive-inputs.mixin.ts
|
|
1095
|
-
*
|
|
1096
|
-
* Shared type helpers for the full set of breakpoint @Input keys.
|
|
1097
|
-
*
|
|
1098
|
-
* Every responsive directive stores values in two maps:
|
|
1099
|
-
* _v — canonical aliases (xs … xl, CDK tiers) + 'default'
|
|
1100
|
-
* _nc — non-canonical aliases (lt-*, gt-*)
|
|
1101
|
-
*
|
|
1102
|
-
* This file exports the key union types so directives stay type-safe
|
|
1103
|
-
* without repeating the string literals everywhere.
|
|
1104
|
-
*/
|
|
1105
|
-
type CanonicalKey = 'default' | 'xs' | 'sm' | 'md' | 'lg' | 'xl';
|
|
1106
|
-
type NonCanonicalKey = 'lt-sm' | 'lt-md' | 'lt-lg' | 'lt-xl' | 'gt-xs' | 'gt-sm' | 'gt-md' | 'gt-lg';
|
|
1107
|
-
type BpValues<T> = Partial<Record<CanonicalKey, T>>;
|
|
1108
|
-
type NcValues<T> = Partial<Record<NonCanonicalKey, T>>;
|
|
1109
|
-
|
|
1110
|
-
/**
|
|
1111
|
-
* @file responsive-base.directive.ts (v5 — Angular 21 signals)
|
|
1112
|
-
*
|
|
1113
|
-
* ── What changed in v5 ────────────────────────────────────────────────────
|
|
1114
|
-
*
|
|
1115
|
-
* Full Angular 21 signals refactor:
|
|
1116
|
-
*
|
|
1117
|
-
* • resolve(), resolveNonCanonical(), resolveAll() are now PURE EXPORTED
|
|
1118
|
-
* FUNCTIONS that accept currentBp and isActive as parameters.
|
|
1119
|
-
* Directives call them from computed() or effect() with no "this" binding.
|
|
1120
|
-
*
|
|
1121
|
-
* • ResponsiveBaseDirective is now a thin utility base:
|
|
1122
|
-
* – Only injects ElementRef, Renderer2, MediaObserver, PLATFORM_ID.
|
|
1123
|
-
* – Exposes safeSetStyle() helper.
|
|
1124
|
-
* – No lifecycle hooks, no Injector, no EffectRef, no abstract apply().
|
|
1125
|
-
*
|
|
1126
|
-
* • Each concrete directive uses:
|
|
1127
|
-
* – input() for every @Input (signals, no more setters + _v/_nc maps)
|
|
1128
|
-
* – computed() to build BpValues / NcValues maps and derive resolved CSS
|
|
1129
|
-
* – effect() in the constructor to write to the DOM
|
|
1130
|
-
*
|
|
1131
|
-
* Benefits vs v4:
|
|
1132
|
-
* ✅ Zero manual lifecycle/subscription management (no OnInit/OnChanges/EffectRef)
|
|
1133
|
-
* ✅ Angular's reactive graph provides built-in dirty-checking and memoization
|
|
1134
|
-
* ✅ DOM writes happen only when the resolved CSS value actually changes
|
|
1135
|
-
* ✅ No more Injector injection just to create effects
|
|
1136
|
-
*
|
|
1137
|
-
* ── Resolution strategy (unchanged) ──────────────────────────────────────
|
|
1138
|
-
*
|
|
1139
|
-
* Canonical aliases (xs … xl, CDK tiers) → exact match, then the unsuffixed value
|
|
1140
|
-
* Non-canonical (lt-*, gt-*) → point-in-time isActive() checks
|
|
1141
|
-
* Final order: resolveNonCanonical() wins over resolve()
|
|
1142
|
-
*/
|
|
1143
|
-
|
|
1144
|
-
/**
|
|
1145
|
-
* All non-canonical alias keys in priority order (most specific first).
|
|
1146
|
-
* lt-sm is "below sm" (= xs only), lt-md is "below md" (= xs+sm), etc.
|
|
1147
|
-
* Narrower range = higher priority = checked first.
|
|
1148
|
-
*/
|
|
1149
|
-
declare const NON_CANONICAL_PRIORITY: readonly ["lt-sm", "lt-md", "lt-lg", "lt-xl", "gt-xs", "gt-sm", "gt-md", "gt-lg"];
|
|
1150
|
-
/**
|
|
1151
|
-
* Resolution with two-tier priority:
|
|
1152
|
-
*
|
|
1153
|
-
* 1. Exact breakpoint match (e.g. currentBp='sm' → values['sm'])
|
|
1154
|
-
* 2. Generic `default` value (the unsuffixed input, e.g. [fxFlex]="49")
|
|
1155
|
-
*
|
|
1156
|
-
* There is deliberately NO cascade between canonical tiers. A suffixed value belongs to its own
|
|
1157
|
-
* breakpoint and to no other, which is what ngx-layout does and what fxShow/fxHide already did
|
|
1158
|
-
* here. The cascade this replaces made `fxFlex.xs="100"` with no base `fxFlex` apply at every
|
|
1159
|
-
* width — the exact opposite of what the `.xs` suffix reads like.
|
|
1160
|
-
*
|
|
1161
|
-
* So `[fxFlex]="49" [fxFlex.xs]="100"` gives xs→100 and sm+→49, while `[fxFlex.xs]="100"` on its
|
|
1162
|
-
* own gives xs→100 and sm+→no style at all.
|
|
1163
|
-
* @param values - The value declared for each canonical alias, plus the unsuffixed `default`.
|
|
1164
|
-
* @param currentBp - The canonical alias currently active.
|
|
1165
|
-
* @returns The value to apply, or `undefined` when no rule covers the current breakpoint.
|
|
1166
|
-
*/
|
|
1167
|
-
declare function resolve<T>(values: BpValues<T>, currentBp: BreakpointAlias): T | undefined;
|
|
1168
|
-
/**
|
|
1169
|
-
* Non-canonical point-in-time check: iterates NON_CANONICAL_PRIORITY and
|
|
1170
|
-
* returns the value for the first alias that isActive().
|
|
1171
|
-
*/
|
|
1172
|
-
declare function resolveNonCanonical<T>(nc: NcValues<T>, isActive: (alias: string) => boolean): T | undefined;
|
|
1173
|
-
/**
|
|
1174
|
-
* Full resolution: non-canonical overrides win over the canonical cascade.
|
|
1175
|
-
*
|
|
1176
|
-
* Usage inside computed():
|
|
1177
|
-
* const resolved = computed(() =>
|
|
1178
|
-
* resolveAll(this._v(), this._nc(), this.media.currentBp(), a => this.media.isActive(a))
|
|
1179
|
-
* );
|
|
1180
|
-
*/
|
|
1181
|
-
declare function resolveAll<T>(canonical: BpValues<T>, nonCanonical: NcValues<T>, currentBp: BreakpointAlias, isActive: (alias: string) => boolean): T | undefined;
|
|
1182
|
-
declare abstract class ResponsiveBaseDirective {
|
|
1183
|
-
protected readonly el: ElementRef<any>;
|
|
1184
|
-
protected readonly r2: Renderer2;
|
|
1185
|
-
protected readonly media: MediaObserver;
|
|
1186
|
-
/** true in browser, false in SSR */
|
|
1187
|
-
protected readonly isBrowser: boolean;
|
|
1188
|
-
/** SSR-safe style setter. Pass null/empty string to remove the property. */
|
|
1189
|
-
protected safeSetStyle(prop: string, value: string | null): void;
|
|
1190
|
-
static ɵfac: _angular_core.ɵɵFactoryDeclaration<ResponsiveBaseDirective, never>;
|
|
1191
|
-
static ɵdir: _angular_core.ɵɵDirectiveDeclaration<ResponsiveBaseDirective, never, never, {}, {}, never, never, true, never>;
|
|
1192
|
-
}
|
|
1193
|
-
|
|
1194
|
-
declare class FxFlexOrderDirective extends ResponsiveBaseDirective {
|
|
1195
|
-
readonly fxFlexOrder: _angular_core.InputSignal<string>;
|
|
1146
|
+
declare function resolveParentFlow(host: HTMLElement, parentLayout: FxLayoutDirective | null, isBrowser: boolean): {
|
|
1147
|
+
direction: string;
|
|
1148
|
+
hasWrap: boolean;
|
|
1149
|
+
};
|
|
1150
|
+
declare class FxLayoutDirective extends ResponsiveBaseDirective {
|
|
1151
|
+
readonly fxLayout: _angular_core.InputSignal<string>;
|
|
1196
1152
|
readonly xs: _angular_core.InputSignal<string>;
|
|
1197
1153
|
readonly sm: _angular_core.InputSignal<string>;
|
|
1198
1154
|
readonly md: _angular_core.InputSignal<string>;
|
|
@@ -1206,15 +1162,19 @@ declare class FxFlexOrderDirective extends ResponsiveBaseDirective {
|
|
|
1206
1162
|
readonly gtSm: _angular_core.InputSignal<string>;
|
|
1207
1163
|
readonly gtMd: _angular_core.InputSignal<string>;
|
|
1208
1164
|
readonly gtLg: _angular_core.InputSignal<string>;
|
|
1209
|
-
private readonly
|
|
1165
|
+
private readonly _parsed;
|
|
1166
|
+
/** Reactive layout parts — readable by FxFlex / FxLayoutAlign / FxFlexOffset. */
|
|
1167
|
+
readonly direction: _angular_core.Signal<string>;
|
|
1168
|
+
readonly wrap: _angular_core.Signal<string>;
|
|
1169
|
+
readonly inline: _angular_core.Signal<boolean>;
|
|
1170
|
+
/** Host element, exposed for direct-parent matching by child directives. */
|
|
1171
|
+
get hostElement(): HTMLElement;
|
|
1210
1172
|
constructor();
|
|
1211
|
-
static ɵfac: _angular_core.ɵɵFactoryDeclaration<
|
|
1212
|
-
static ɵdir: _angular_core.ɵɵDirectiveDeclaration<
|
|
1173
|
+
static ɵfac: _angular_core.ɵɵFactoryDeclaration<FxLayoutDirective, never>;
|
|
1174
|
+
static ɵdir: _angular_core.ɵɵDirectiveDeclaration<FxLayoutDirective, " [fxLayout], [fxLayout.xs], [fxLayout.sm], [fxLayout.md], [fxLayout.lg], [fxLayout.xl], [fxLayout.lt-sm], [fxLayout.lt-md], [fxLayout.lt-lg], [fxLayout.lt-xl], [fxLayout.gt-xs], [fxLayout.gt-sm], [fxLayout.gt-md], [fxLayout.gt-lg] ", never, { "fxLayout": { "alias": "fxLayout"; "required": false; "isSignal": true; }; "xs": { "alias": "fxLayout.xs"; "required": false; "isSignal": true; }; "sm": { "alias": "fxLayout.sm"; "required": false; "isSignal": true; }; "md": { "alias": "fxLayout.md"; "required": false; "isSignal": true; }; "lg": { "alias": "fxLayout.lg"; "required": false; "isSignal": true; }; "xl": { "alias": "fxLayout.xl"; "required": false; "isSignal": true; }; "ltSm": { "alias": "fxLayout.lt-sm"; "required": false; "isSignal": true; }; "ltMd": { "alias": "fxLayout.lt-md"; "required": false; "isSignal": true; }; "ltLg": { "alias": "fxLayout.lt-lg"; "required": false; "isSignal": true; }; "ltXl": { "alias": "fxLayout.lt-xl"; "required": false; "isSignal": true; }; "gtXs": { "alias": "fxLayout.gt-xs"; "required": false; "isSignal": true; }; "gtSm": { "alias": "fxLayout.gt-sm"; "required": false; "isSignal": true; }; "gtMd": { "alias": "fxLayout.gt-md"; "required": false; "isSignal": true; }; "gtLg": { "alias": "fxLayout.gt-lg"; "required": false; "isSignal": true; }; }, {}, never, never, true, never>;
|
|
1213
1175
|
}
|
|
1214
|
-
declare class
|
|
1215
|
-
|
|
1216
|
-
private readonly parentLayout;
|
|
1217
|
-
readonly fxFlexOffset: _angular_core.InputSignal<string>;
|
|
1176
|
+
declare class FxLayoutWrapDirective extends ResponsiveBaseDirective {
|
|
1177
|
+
readonly fxLayoutWrap: _angular_core.InputSignal<string>;
|
|
1218
1178
|
readonly xs: _angular_core.InputSignal<string>;
|
|
1219
1179
|
readonly sm: _angular_core.InputSignal<string>;
|
|
1220
1180
|
readonly md: _angular_core.InputSignal<string>;
|
|
@@ -1228,305 +1188,17 @@ declare class FxFlexOffsetDirective extends ResponsiveBaseDirective {
|
|
|
1228
1188
|
readonly gtSm: _angular_core.InputSignal<string>;
|
|
1229
1189
|
readonly gtMd: _angular_core.InputSignal<string>;
|
|
1230
1190
|
readonly gtLg: _angular_core.InputSignal<string>;
|
|
1231
|
-
private readonly
|
|
1232
|
-
constructor();
|
|
1233
|
-
static ɵfac: _angular_core.ɵɵFactoryDeclaration<FxFlexOffsetDirective, never>;
|
|
1234
|
-
static ɵdir: _angular_core.ɵɵDirectiveDeclaration<FxFlexOffsetDirective, " [fxFlexOffset], [fxFlexOffset.xs], [fxFlexOffset.sm], [fxFlexOffset.md], [fxFlexOffset.lg], [fxFlexOffset.xl], [fxFlexOffset.lt-sm], [fxFlexOffset.lt-md], [fxFlexOffset.lt-lg], [fxFlexOffset.lt-xl], [fxFlexOffset.gt-xs], [fxFlexOffset.gt-sm], [fxFlexOffset.gt-md], [fxFlexOffset.gt-lg] ", never, { "fxFlexOffset": { "alias": "fxFlexOffset"; "required": false; "isSignal": true; }; "xs": { "alias": "fxFlexOffset.xs"; "required": false; "isSignal": true; }; "sm": { "alias": "fxFlexOffset.sm"; "required": false; "isSignal": true; }; "md": { "alias": "fxFlexOffset.md"; "required": false; "isSignal": true; }; "lg": { "alias": "fxFlexOffset.lg"; "required": false; "isSignal": true; }; "xl": { "alias": "fxFlexOffset.xl"; "required": false; "isSignal": true; }; "ltSm": { "alias": "fxFlexOffset.lt-sm"; "required": false; "isSignal": true; }; "ltMd": { "alias": "fxFlexOffset.lt-md"; "required": false; "isSignal": true; }; "ltLg": { "alias": "fxFlexOffset.lt-lg"; "required": false; "isSignal": true; }; "ltXl": { "alias": "fxFlexOffset.lt-xl"; "required": false; "isSignal": true; }; "gtXs": { "alias": "fxFlexOffset.gt-xs"; "required": false; "isSignal": true; }; "gtSm": { "alias": "fxFlexOffset.gt-sm"; "required": false; "isSignal": true; }; "gtMd": { "alias": "fxFlexOffset.gt-md"; "required": false; "isSignal": true; }; "gtLg": { "alias": "fxFlexOffset.gt-lg"; "required": false; "isSignal": true; }; }, {}, never, never, true, never>;
|
|
1235
|
-
}
|
|
1236
|
-
type AlignSelf = 'auto' | 'start' | 'center' | 'end' | 'stretch' | 'baseline';
|
|
1237
|
-
declare class FxFlexAlignDirective extends ResponsiveBaseDirective {
|
|
1238
|
-
readonly fxFlexAlign: _angular_core.InputSignal<AlignSelf>;
|
|
1239
|
-
readonly xs: _angular_core.InputSignal<AlignSelf>;
|
|
1240
|
-
readonly sm: _angular_core.InputSignal<AlignSelf>;
|
|
1241
|
-
readonly md: _angular_core.InputSignal<AlignSelf>;
|
|
1242
|
-
readonly lg: _angular_core.InputSignal<AlignSelf>;
|
|
1243
|
-
readonly xl: _angular_core.InputSignal<AlignSelf>;
|
|
1244
|
-
readonly ltSm: _angular_core.InputSignal<AlignSelf>;
|
|
1245
|
-
readonly ltMd: _angular_core.InputSignal<AlignSelf>;
|
|
1246
|
-
readonly ltLg: _angular_core.InputSignal<AlignSelf>;
|
|
1247
|
-
readonly ltXl: _angular_core.InputSignal<AlignSelf>;
|
|
1248
|
-
readonly gtXs: _angular_core.InputSignal<AlignSelf>;
|
|
1249
|
-
readonly gtSm: _angular_core.InputSignal<AlignSelf>;
|
|
1250
|
-
readonly gtMd: _angular_core.InputSignal<AlignSelf>;
|
|
1251
|
-
readonly gtLg: _angular_core.InputSignal<AlignSelf>;
|
|
1252
|
-
private readonly _alignSelf;
|
|
1253
|
-
constructor();
|
|
1254
|
-
static ɵfac: _angular_core.ɵɵFactoryDeclaration<FxFlexAlignDirective, never>;
|
|
1255
|
-
static ɵdir: _angular_core.ɵɵDirectiveDeclaration<FxFlexAlignDirective, " [fxFlexAlign], [fxFlexAlign.xs], [fxFlexAlign.sm], [fxFlexAlign.md], [fxFlexAlign.lg], [fxFlexAlign.xl], [fxFlexAlign.lt-sm], [fxFlexAlign.lt-md], [fxFlexAlign.lt-lg], [fxFlexAlign.lt-xl], [fxFlexAlign.gt-xs], [fxFlexAlign.gt-sm], [fxFlexAlign.gt-md], [fxFlexAlign.gt-lg] ", never, { "fxFlexAlign": { "alias": "fxFlexAlign"; "required": false; "isSignal": true; }; "xs": { "alias": "fxFlexAlign.xs"; "required": false; "isSignal": true; }; "sm": { "alias": "fxFlexAlign.sm"; "required": false; "isSignal": true; }; "md": { "alias": "fxFlexAlign.md"; "required": false; "isSignal": true; }; "lg": { "alias": "fxFlexAlign.lg"; "required": false; "isSignal": true; }; "xl": { "alias": "fxFlexAlign.xl"; "required": false; "isSignal": true; }; "ltSm": { "alias": "fxFlexAlign.lt-sm"; "required": false; "isSignal": true; }; "ltMd": { "alias": "fxFlexAlign.lt-md"; "required": false; "isSignal": true; }; "ltLg": { "alias": "fxFlexAlign.lt-lg"; "required": false; "isSignal": true; }; "ltXl": { "alias": "fxFlexAlign.lt-xl"; "required": false; "isSignal": true; }; "gtXs": { "alias": "fxFlexAlign.gt-xs"; "required": false; "isSignal": true; }; "gtSm": { "alias": "fxFlexAlign.gt-sm"; "required": false; "isSignal": true; }; "gtMd": { "alias": "fxFlexAlign.gt-md"; "required": false; "isSignal": true; }; "gtLg": { "alias": "fxFlexAlign.gt-lg"; "required": false; "isSignal": true; }; }, {}, never, never, true, never>;
|
|
1256
|
-
}
|
|
1257
|
-
type FillValue = 'fill' | 'none' | '' | boolean;
|
|
1258
|
-
declare class FxFlexFillDirective extends ResponsiveBaseDirective {
|
|
1259
|
-
readonly fxFlexFill: _angular_core.InputSignalWithTransform<boolean, FillValue>;
|
|
1260
|
-
readonly fxFill: _angular_core.InputSignalWithTransform<boolean, FillValue>;
|
|
1261
|
-
readonly xs: _angular_core.InputSignalWithTransform<boolean, FillValue>;
|
|
1262
|
-
readonly sm: _angular_core.InputSignalWithTransform<boolean, FillValue>;
|
|
1263
|
-
readonly md: _angular_core.InputSignalWithTransform<boolean, FillValue>;
|
|
1264
|
-
readonly lg: _angular_core.InputSignalWithTransform<boolean, FillValue>;
|
|
1265
|
-
readonly xl: _angular_core.InputSignalWithTransform<boolean, FillValue>;
|
|
1266
|
-
readonly ltSm: _angular_core.InputSignalWithTransform<boolean, FillValue>;
|
|
1267
|
-
readonly ltMd: _angular_core.InputSignalWithTransform<boolean, FillValue>;
|
|
1268
|
-
readonly ltLg: _angular_core.InputSignalWithTransform<boolean, FillValue>;
|
|
1269
|
-
readonly ltXl: _angular_core.InputSignalWithTransform<boolean, FillValue>;
|
|
1270
|
-
readonly gtXs: _angular_core.InputSignalWithTransform<boolean, FillValue>;
|
|
1271
|
-
readonly gtSm: _angular_core.InputSignalWithTransform<boolean, FillValue>;
|
|
1272
|
-
readonly gtMd: _angular_core.InputSignalWithTransform<boolean, FillValue>;
|
|
1273
|
-
readonly gtLg: _angular_core.InputSignalWithTransform<boolean, FillValue>;
|
|
1274
|
-
private readonly _active;
|
|
1191
|
+
private readonly _wrap;
|
|
1275
1192
|
constructor();
|
|
1276
|
-
static ɵfac: _angular_core.ɵɵFactoryDeclaration<
|
|
1277
|
-
static ɵdir: _angular_core.ɵɵDirectiveDeclaration<
|
|
1193
|
+
static ɵfac: _angular_core.ɵɵFactoryDeclaration<FxLayoutWrapDirective, never>;
|
|
1194
|
+
static ɵdir: _angular_core.ɵɵDirectiveDeclaration<FxLayoutWrapDirective, " [fxLayoutWrap], [fxLayoutWrap.xs], [fxLayoutWrap.sm], [fxLayoutWrap.md], [fxLayoutWrap.lg], [fxLayoutWrap.xl], [fxLayoutWrap.lt-sm], [fxLayoutWrap.lt-md], [fxLayoutWrap.lt-lg], [fxLayoutWrap.lt-xl], [fxLayoutWrap.gt-xs], [fxLayoutWrap.gt-sm], [fxLayoutWrap.gt-md], [fxLayoutWrap.gt-lg] ", never, { "fxLayoutWrap": { "alias": "fxLayoutWrap"; "required": false; "isSignal": true; }; "xs": { "alias": "fxLayoutWrap.xs"; "required": false; "isSignal": true; }; "sm": { "alias": "fxLayoutWrap.sm"; "required": false; "isSignal": true; }; "md": { "alias": "fxLayoutWrap.md"; "required": false; "isSignal": true; }; "lg": { "alias": "fxLayoutWrap.lg"; "required": false; "isSignal": true; }; "xl": { "alias": "fxLayoutWrap.xl"; "required": false; "isSignal": true; }; "ltSm": { "alias": "fxLayoutWrap.lt-sm"; "required": false; "isSignal": true; }; "ltMd": { "alias": "fxLayoutWrap.lt-md"; "required": false; "isSignal": true; }; "ltLg": { "alias": "fxLayoutWrap.lt-lg"; "required": false; "isSignal": true; }; "ltXl": { "alias": "fxLayoutWrap.lt-xl"; "required": false; "isSignal": true; }; "gtXs": { "alias": "fxLayoutWrap.gt-xs"; "required": false; "isSignal": true; }; "gtSm": { "alias": "fxLayoutWrap.gt-sm"; "required": false; "isSignal": true; }; "gtMd": { "alias": "fxLayoutWrap.gt-md"; "required": false; "isSignal": true; }; "gtLg": { "alias": "fxLayoutWrap.gt-lg"; "required": false; "isSignal": true; }; }, {}, never, never, true, never>;
|
|
1278
1195
|
}
|
|
1279
1196
|
|
|
1280
|
-
/** Port of ngx validateBasis(): returns [grow, shrink, basis]. */
|
|
1281
|
-
declare function validateBasis(basis: string, grow?: string, shrink?: string): string[];
|
|
1282
|
-
/**
|
|
1283
|
-
* Builds the complete flex style map for a child, given the raw fxFlex value
|
|
1284
|
-
* and the parent flow. `null` values mean "remove this property".
|
|
1285
|
-
* Matches ngx-layout output exactly (useColumnBasisZero = true, the default).
|
|
1286
|
-
*/
|
|
1287
|
-
declare function buildFlexStyles(value: string, direction: string, hasWrap: boolean): Record<string, string | null>;
|
|
1288
1197
|
/**
|
|
1289
|
-
*
|
|
1290
|
-
*
|
|
1291
|
-
*
|
|
1292
|
-
* @
|
|
1293
|
-
* @returns The value to pass to `buildFlexStyles`.
|
|
1294
|
-
*/
|
|
1295
|
-
declare function resolveFlexInput(raw: string): string;
|
|
1296
|
-
declare class FxFlexDirective extends ResponsiveBaseDirective {
|
|
1297
|
-
/** Direct ancestor FxLayout (any level); matched to the direct parent in the effect. */
|
|
1298
|
-
private readonly parentLayout;
|
|
1299
|
-
readonly fxFlex: _angular_core.InputSignal<string>;
|
|
1300
|
-
readonly xs: _angular_core.InputSignal<string>;
|
|
1301
|
-
readonly sm: _angular_core.InputSignal<string>;
|
|
1302
|
-
readonly md: _angular_core.InputSignal<string>;
|
|
1303
|
-
readonly lg: _angular_core.InputSignal<string>;
|
|
1304
|
-
readonly xl: _angular_core.InputSignal<string>;
|
|
1305
|
-
readonly ltSm: _angular_core.InputSignal<string>;
|
|
1306
|
-
readonly ltMd: _angular_core.InputSignal<string>;
|
|
1307
|
-
readonly ltLg: _angular_core.InputSignal<string>;
|
|
1308
|
-
readonly ltXl: _angular_core.InputSignal<string>;
|
|
1309
|
-
readonly gtXs: _angular_core.InputSignal<string>;
|
|
1310
|
-
readonly gtSm: _angular_core.InputSignal<string>;
|
|
1311
|
-
readonly gtMd: _angular_core.InputSignal<string>;
|
|
1312
|
-
readonly gtLg: _angular_core.InputSignal<string>;
|
|
1313
|
-
private readonly _rawFlex;
|
|
1314
|
-
/** CSS properties applied on the last effect run (for stale cleanup). */
|
|
1315
|
-
private _applied;
|
|
1316
|
-
constructor();
|
|
1317
|
-
static ɵfac: _angular_core.ɵɵFactoryDeclaration<FxFlexDirective, never>;
|
|
1318
|
-
static ɵdir: _angular_core.ɵɵDirectiveDeclaration<FxFlexDirective, " [fxFlex], [fxFlex.xs], [fxFlex.sm], [fxFlex.md], [fxFlex.lg], [fxFlex.xl], [fxFlex.lt-sm], [fxFlex.lt-md], [fxFlex.lt-lg], [fxFlex.lt-xl], [fxFlex.gt-xs], [fxFlex.gt-sm], [fxFlex.gt-md], [fxFlex.gt-lg] ", never, { "fxFlex": { "alias": "fxFlex"; "required": false; "isSignal": true; }; "xs": { "alias": "fxFlex.xs"; "required": false; "isSignal": true; }; "sm": { "alias": "fxFlex.sm"; "required": false; "isSignal": true; }; "md": { "alias": "fxFlex.md"; "required": false; "isSignal": true; }; "lg": { "alias": "fxFlex.lg"; "required": false; "isSignal": true; }; "xl": { "alias": "fxFlex.xl"; "required": false; "isSignal": true; }; "ltSm": { "alias": "fxFlex.lt-sm"; "required": false; "isSignal": true; }; "ltMd": { "alias": "fxFlex.lt-md"; "required": false; "isSignal": true; }; "ltLg": { "alias": "fxFlex.lt-lg"; "required": false; "isSignal": true; }; "ltXl": { "alias": "fxFlex.lt-xl"; "required": false; "isSignal": true; }; "gtXs": { "alias": "fxFlex.gt-xs"; "required": false; "isSignal": true; }; "gtSm": { "alias": "fxFlex.gt-sm"; "required": false; "isSignal": true; }; "gtMd": { "alias": "fxFlex.gt-md"; "required": false; "isSignal": true; }; "gtLg": { "alias": "fxFlex.gt-lg"; "required": false; "isSignal": true; }; }, {}, never, never, true, never>;
|
|
1319
|
-
}
|
|
1320
|
-
|
|
1321
|
-
declare class FxGridDirective extends ResponsiveBaseDirective {
|
|
1322
|
-
readonly fxGrid: _angular_core.InputSignal<string>;
|
|
1323
|
-
readonly xs: _angular_core.InputSignal<string>;
|
|
1324
|
-
readonly sm: _angular_core.InputSignal<string>;
|
|
1325
|
-
readonly md: _angular_core.InputSignal<string>;
|
|
1326
|
-
readonly lg: _angular_core.InputSignal<string>;
|
|
1327
|
-
readonly xl: _angular_core.InputSignal<string>;
|
|
1328
|
-
readonly ltSm: _angular_core.InputSignal<string>;
|
|
1329
|
-
readonly ltMd: _angular_core.InputSignal<string>;
|
|
1330
|
-
readonly ltLg: _angular_core.InputSignal<string>;
|
|
1331
|
-
readonly ltXl: _angular_core.InputSignal<string>;
|
|
1332
|
-
readonly gtXs: _angular_core.InputSignal<string>;
|
|
1333
|
-
readonly gtSm: _angular_core.InputSignal<string>;
|
|
1334
|
-
readonly gtMd: _angular_core.InputSignal<string>;
|
|
1335
|
-
readonly gtLg: _angular_core.InputSignal<string>;
|
|
1336
|
-
readonly fxGridRows: _angular_core.InputSignal<string>;
|
|
1337
|
-
readonly rowsXs: _angular_core.InputSignal<string>;
|
|
1338
|
-
readonly rowsSm: _angular_core.InputSignal<string>;
|
|
1339
|
-
readonly rowsMd: _angular_core.InputSignal<string>;
|
|
1340
|
-
readonly rowsLg: _angular_core.InputSignal<string>;
|
|
1341
|
-
readonly rowsXl: _angular_core.InputSignal<string>;
|
|
1342
|
-
readonly rowsLtSm: _angular_core.InputSignal<string>;
|
|
1343
|
-
readonly rowsLtMd: _angular_core.InputSignal<string>;
|
|
1344
|
-
readonly rowsLtLg: _angular_core.InputSignal<string>;
|
|
1345
|
-
readonly rowsLtXl: _angular_core.InputSignal<string>;
|
|
1346
|
-
readonly rowsGtXs: _angular_core.InputSignal<string>;
|
|
1347
|
-
readonly rowsGtSm: _angular_core.InputSignal<string>;
|
|
1348
|
-
readonly rowsGtMd: _angular_core.InputSignal<string>;
|
|
1349
|
-
readonly rowsGtLg: _angular_core.InputSignal<string>;
|
|
1350
|
-
readonly fxGridGap: _angular_core.InputSignal<string>;
|
|
1351
|
-
readonly gapXs: _angular_core.InputSignal<string>;
|
|
1352
|
-
readonly gapSm: _angular_core.InputSignal<string>;
|
|
1353
|
-
readonly gapMd: _angular_core.InputSignal<string>;
|
|
1354
|
-
readonly gapLg: _angular_core.InputSignal<string>;
|
|
1355
|
-
readonly gapXl: _angular_core.InputSignal<string>;
|
|
1356
|
-
readonly gapLtSm: _angular_core.InputSignal<string>;
|
|
1357
|
-
readonly gapLtMd: _angular_core.InputSignal<string>;
|
|
1358
|
-
readonly gapLtLg: _angular_core.InputSignal<string>;
|
|
1359
|
-
readonly gapLtXl: _angular_core.InputSignal<string>;
|
|
1360
|
-
readonly gapGtXs: _angular_core.InputSignal<string>;
|
|
1361
|
-
readonly gapGtSm: _angular_core.InputSignal<string>;
|
|
1362
|
-
readonly gapGtMd: _angular_core.InputSignal<string>;
|
|
1363
|
-
readonly gapGtLg: _angular_core.InputSignal<string>;
|
|
1364
|
-
private readonly _cols;
|
|
1365
|
-
private readonly _rows;
|
|
1366
|
-
private readonly _gap;
|
|
1367
|
-
constructor();
|
|
1368
|
-
static ɵfac: _angular_core.ɵɵFactoryDeclaration<FxGridDirective, never>;
|
|
1369
|
-
static ɵdir: _angular_core.ɵɵDirectiveDeclaration<FxGridDirective, " [fxGrid], [fxGrid.xs], [fxGrid.sm], [fxGrid.md], [fxGrid.lg], [fxGrid.xl], [fxGrid.lt-sm], [fxGrid.lt-md], [fxGrid.lt-lg], [fxGrid.lt-xl], [fxGrid.gt-xs], [fxGrid.gt-sm], [fxGrid.gt-md], [fxGrid.gt-lg] ", never, { "fxGrid": { "alias": "fxGrid"; "required": false; "isSignal": true; }; "xs": { "alias": "fxGrid.xs"; "required": false; "isSignal": true; }; "sm": { "alias": "fxGrid.sm"; "required": false; "isSignal": true; }; "md": { "alias": "fxGrid.md"; "required": false; "isSignal": true; }; "lg": { "alias": "fxGrid.lg"; "required": false; "isSignal": true; }; "xl": { "alias": "fxGrid.xl"; "required": false; "isSignal": true; }; "ltSm": { "alias": "fxGrid.lt-sm"; "required": false; "isSignal": true; }; "ltMd": { "alias": "fxGrid.lt-md"; "required": false; "isSignal": true; }; "ltLg": { "alias": "fxGrid.lt-lg"; "required": false; "isSignal": true; }; "ltXl": { "alias": "fxGrid.lt-xl"; "required": false; "isSignal": true; }; "gtXs": { "alias": "fxGrid.gt-xs"; "required": false; "isSignal": true; }; "gtSm": { "alias": "fxGrid.gt-sm"; "required": false; "isSignal": true; }; "gtMd": { "alias": "fxGrid.gt-md"; "required": false; "isSignal": true; }; "gtLg": { "alias": "fxGrid.gt-lg"; "required": false; "isSignal": true; }; "fxGridRows": { "alias": "fxGridRows"; "required": false; "isSignal": true; }; "rowsXs": { "alias": "fxGridRows.xs"; "required": false; "isSignal": true; }; "rowsSm": { "alias": "fxGridRows.sm"; "required": false; "isSignal": true; }; "rowsMd": { "alias": "fxGridRows.md"; "required": false; "isSignal": true; }; "rowsLg": { "alias": "fxGridRows.lg"; "required": false; "isSignal": true; }; "rowsXl": { "alias": "fxGridRows.xl"; "required": false; "isSignal": true; }; "rowsLtSm": { "alias": "fxGridRows.lt-sm"; "required": false; "isSignal": true; }; "rowsLtMd": { "alias": "fxGridRows.lt-md"; "required": false; "isSignal": true; }; "rowsLtLg": { "alias": "fxGridRows.lt-lg"; "required": false; "isSignal": true; }; "rowsLtXl": { "alias": "fxGridRows.lt-xl"; "required": false; "isSignal": true; }; "rowsGtXs": { "alias": "fxGridRows.gt-xs"; "required": false; "isSignal": true; }; "rowsGtSm": { "alias": "fxGridRows.gt-sm"; "required": false; "isSignal": true; }; "rowsGtMd": { "alias": "fxGridRows.gt-md"; "required": false; "isSignal": true; }; "rowsGtLg": { "alias": "fxGridRows.gt-lg"; "required": false; "isSignal": true; }; "fxGridGap": { "alias": "fxGridGap"; "required": false; "isSignal": true; }; "gapXs": { "alias": "fxGridGap.xs"; "required": false; "isSignal": true; }; "gapSm": { "alias": "fxGridGap.sm"; "required": false; "isSignal": true; }; "gapMd": { "alias": "fxGridGap.md"; "required": false; "isSignal": true; }; "gapLg": { "alias": "fxGridGap.lg"; "required": false; "isSignal": true; }; "gapXl": { "alias": "fxGridGap.xl"; "required": false; "isSignal": true; }; "gapLtSm": { "alias": "fxGridGap.lt-sm"; "required": false; "isSignal": true; }; "gapLtMd": { "alias": "fxGridGap.lt-md"; "required": false; "isSignal": true; }; "gapLtLg": { "alias": "fxGridGap.lt-lg"; "required": false; "isSignal": true; }; "gapLtXl": { "alias": "fxGridGap.lt-xl"; "required": false; "isSignal": true; }; "gapGtXs": { "alias": "fxGridGap.gt-xs"; "required": false; "isSignal": true; }; "gapGtSm": { "alias": "fxGridGap.gt-sm"; "required": false; "isSignal": true; }; "gapGtMd": { "alias": "fxGridGap.gt-md"; "required": false; "isSignal": true; }; "gapGtLg": { "alias": "fxGridGap.gt-lg"; "required": false; "isSignal": true; }; }, {}, never, never, true, never>;
|
|
1370
|
-
}
|
|
1371
|
-
declare class FxGridColumnDirective extends ResponsiveBaseDirective {
|
|
1372
|
-
readonly fxGridColumn: _angular_core.InputSignal<string>;
|
|
1373
|
-
readonly xs: _angular_core.InputSignal<string>;
|
|
1374
|
-
readonly sm: _angular_core.InputSignal<string>;
|
|
1375
|
-
readonly md: _angular_core.InputSignal<string>;
|
|
1376
|
-
readonly lg: _angular_core.InputSignal<string>;
|
|
1377
|
-
readonly xl: _angular_core.InputSignal<string>;
|
|
1378
|
-
readonly ltSm: _angular_core.InputSignal<string>;
|
|
1379
|
-
readonly ltMd: _angular_core.InputSignal<string>;
|
|
1380
|
-
readonly ltLg: _angular_core.InputSignal<string>;
|
|
1381
|
-
readonly ltXl: _angular_core.InputSignal<string>;
|
|
1382
|
-
readonly gtXs: _angular_core.InputSignal<string>;
|
|
1383
|
-
readonly gtSm: _angular_core.InputSignal<string>;
|
|
1384
|
-
readonly gtMd: _angular_core.InputSignal<string>;
|
|
1385
|
-
readonly gtLg: _angular_core.InputSignal<string>;
|
|
1386
|
-
private readonly _resolved;
|
|
1387
|
-
constructor();
|
|
1388
|
-
static ɵfac: _angular_core.ɵɵFactoryDeclaration<FxGridColumnDirective, never>;
|
|
1389
|
-
static ɵdir: _angular_core.ɵɵDirectiveDeclaration<FxGridColumnDirective, " [fxGridColumn], [fxGridColumn.xs], [fxGridColumn.sm], [fxGridColumn.md], [fxGridColumn.lg], [fxGridColumn.xl], [fxGridColumn.lt-sm], [fxGridColumn.lt-md], [fxGridColumn.lt-lg], [fxGridColumn.lt-xl], [fxGridColumn.gt-xs], [fxGridColumn.gt-sm], [fxGridColumn.gt-md], [fxGridColumn.gt-lg] ", never, { "fxGridColumn": { "alias": "fxGridColumn"; "required": false; "isSignal": true; }; "xs": { "alias": "fxGridColumn.xs"; "required": false; "isSignal": true; }; "sm": { "alias": "fxGridColumn.sm"; "required": false; "isSignal": true; }; "md": { "alias": "fxGridColumn.md"; "required": false; "isSignal": true; }; "lg": { "alias": "fxGridColumn.lg"; "required": false; "isSignal": true; }; "xl": { "alias": "fxGridColumn.xl"; "required": false; "isSignal": true; }; "ltSm": { "alias": "fxGridColumn.lt-sm"; "required": false; "isSignal": true; }; "ltMd": { "alias": "fxGridColumn.lt-md"; "required": false; "isSignal": true; }; "ltLg": { "alias": "fxGridColumn.lt-lg"; "required": false; "isSignal": true; }; "ltXl": { "alias": "fxGridColumn.lt-xl"; "required": false; "isSignal": true; }; "gtXs": { "alias": "fxGridColumn.gt-xs"; "required": false; "isSignal": true; }; "gtSm": { "alias": "fxGridColumn.gt-sm"; "required": false; "isSignal": true; }; "gtMd": { "alias": "fxGridColumn.gt-md"; "required": false; "isSignal": true; }; "gtLg": { "alias": "fxGridColumn.gt-lg"; "required": false; "isSignal": true; }; }, {}, never, never, true, never>;
|
|
1390
|
-
}
|
|
1391
|
-
declare class FxGridAreaDirective extends ResponsiveBaseDirective {
|
|
1392
|
-
readonly fxGridArea: _angular_core.InputSignal<string>;
|
|
1393
|
-
readonly xs: _angular_core.InputSignal<string>;
|
|
1394
|
-
readonly sm: _angular_core.InputSignal<string>;
|
|
1395
|
-
readonly md: _angular_core.InputSignal<string>;
|
|
1396
|
-
readonly lg: _angular_core.InputSignal<string>;
|
|
1397
|
-
readonly xl: _angular_core.InputSignal<string>;
|
|
1398
|
-
readonly ltSm: _angular_core.InputSignal<string>;
|
|
1399
|
-
readonly ltMd: _angular_core.InputSignal<string>;
|
|
1400
|
-
readonly ltLg: _angular_core.InputSignal<string>;
|
|
1401
|
-
readonly ltXl: _angular_core.InputSignal<string>;
|
|
1402
|
-
readonly gtXs: _angular_core.InputSignal<string>;
|
|
1403
|
-
readonly gtSm: _angular_core.InputSignal<string>;
|
|
1404
|
-
readonly gtMd: _angular_core.InputSignal<string>;
|
|
1405
|
-
readonly gtLg: _angular_core.InputSignal<string>;
|
|
1406
|
-
private readonly _resolved;
|
|
1407
|
-
constructor();
|
|
1408
|
-
static ɵfac: _angular_core.ɵɵFactoryDeclaration<FxGridAreaDirective, never>;
|
|
1409
|
-
static ɵdir: _angular_core.ɵɵDirectiveDeclaration<FxGridAreaDirective, " [fxGridArea], [fxGridArea.xs], [fxGridArea.sm], [fxGridArea.md], [fxGridArea.lg], [fxGridArea.xl], [fxGridArea.lt-sm], [fxGridArea.lt-md], [fxGridArea.lt-lg], [fxGridArea.lt-xl], [fxGridArea.gt-xs], [fxGridArea.gt-sm], [fxGridArea.gt-md], [fxGridArea.gt-lg] ", never, { "fxGridArea": { "alias": "fxGridArea"; "required": false; "isSignal": true; }; "xs": { "alias": "fxGridArea.xs"; "required": false; "isSignal": true; }; "sm": { "alias": "fxGridArea.sm"; "required": false; "isSignal": true; }; "md": { "alias": "fxGridArea.md"; "required": false; "isSignal": true; }; "lg": { "alias": "fxGridArea.lg"; "required": false; "isSignal": true; }; "xl": { "alias": "fxGridArea.xl"; "required": false; "isSignal": true; }; "ltSm": { "alias": "fxGridArea.lt-sm"; "required": false; "isSignal": true; }; "ltMd": { "alias": "fxGridArea.lt-md"; "required": false; "isSignal": true; }; "ltLg": { "alias": "fxGridArea.lt-lg"; "required": false; "isSignal": true; }; "ltXl": { "alias": "fxGridArea.lt-xl"; "required": false; "isSignal": true; }; "gtXs": { "alias": "fxGridArea.gt-xs"; "required": false; "isSignal": true; }; "gtSm": { "alias": "fxGridArea.gt-sm"; "required": false; "isSignal": true; }; "gtMd": { "alias": "fxGridArea.gt-md"; "required": false; "isSignal": true; }; "gtLg": { "alias": "fxGridArea.gt-lg"; "required": false; "isSignal": true; }; }, {}, never, never, true, never>;
|
|
1410
|
-
}
|
|
1411
|
-
|
|
1412
|
-
/**
|
|
1413
|
-
* Port of ngx LayoutAlignStyleBuilder.buildStyles.
|
|
1414
|
-
* `null` values mean "remove the property".
|
|
1415
|
-
*/
|
|
1416
|
-
declare function buildAlignStyles(align: string, layoutDirection: string, inline: boolean): Record<string, string | null>;
|
|
1417
|
-
declare class FxLayoutAlignDirective extends ResponsiveBaseDirective {
|
|
1418
|
-
/** FxLayout on the same host (optional): direction/inline read reactively. */
|
|
1419
|
-
private readonly selfLayout;
|
|
1420
|
-
readonly fxLayoutAlign: _angular_core.InputSignal<string>;
|
|
1421
|
-
readonly xs: _angular_core.InputSignal<string>;
|
|
1422
|
-
readonly sm: _angular_core.InputSignal<string>;
|
|
1423
|
-
readonly md: _angular_core.InputSignal<string>;
|
|
1424
|
-
readonly lg: _angular_core.InputSignal<string>;
|
|
1425
|
-
readonly xl: _angular_core.InputSignal<string>;
|
|
1426
|
-
readonly ltSm: _angular_core.InputSignal<string>;
|
|
1427
|
-
readonly ltMd: _angular_core.InputSignal<string>;
|
|
1428
|
-
readonly ltLg: _angular_core.InputSignal<string>;
|
|
1429
|
-
readonly ltXl: _angular_core.InputSignal<string>;
|
|
1430
|
-
readonly gtXs: _angular_core.InputSignal<string>;
|
|
1431
|
-
readonly gtSm: _angular_core.InputSignal<string>;
|
|
1432
|
-
readonly gtMd: _angular_core.InputSignal<string>;
|
|
1433
|
-
readonly gtLg: _angular_core.InputSignal<string>;
|
|
1434
|
-
private readonly _align;
|
|
1435
|
-
constructor();
|
|
1436
|
-
static ɵfac: _angular_core.ɵɵFactoryDeclaration<FxLayoutAlignDirective, never>;
|
|
1437
|
-
static ɵdir: _angular_core.ɵɵDirectiveDeclaration<FxLayoutAlignDirective, " [fxLayoutAlign], [fxLayoutAlign.xs], [fxLayoutAlign.sm], [fxLayoutAlign.md], [fxLayoutAlign.lg], [fxLayoutAlign.xl], [fxLayoutAlign.lt-sm], [fxLayoutAlign.lt-md], [fxLayoutAlign.lt-lg], [fxLayoutAlign.lt-xl], [fxLayoutAlign.gt-xs], [fxLayoutAlign.gt-sm], [fxLayoutAlign.gt-md], [fxLayoutAlign.gt-lg] ", never, { "fxLayoutAlign": { "alias": "fxLayoutAlign"; "required": false; "isSignal": true; }; "xs": { "alias": "fxLayoutAlign.xs"; "required": false; "isSignal": true; }; "sm": { "alias": "fxLayoutAlign.sm"; "required": false; "isSignal": true; }; "md": { "alias": "fxLayoutAlign.md"; "required": false; "isSignal": true; }; "lg": { "alias": "fxLayoutAlign.lg"; "required": false; "isSignal": true; }; "xl": { "alias": "fxLayoutAlign.xl"; "required": false; "isSignal": true; }; "ltSm": { "alias": "fxLayoutAlign.lt-sm"; "required": false; "isSignal": true; }; "ltMd": { "alias": "fxLayoutAlign.lt-md"; "required": false; "isSignal": true; }; "ltLg": { "alias": "fxLayoutAlign.lt-lg"; "required": false; "isSignal": true; }; "ltXl": { "alias": "fxLayoutAlign.lt-xl"; "required": false; "isSignal": true; }; "gtXs": { "alias": "fxLayoutAlign.gt-xs"; "required": false; "isSignal": true; }; "gtSm": { "alias": "fxLayoutAlign.gt-sm"; "required": false; "isSignal": true; }; "gtMd": { "alias": "fxLayoutAlign.gt-md"; "required": false; "isSignal": true; }; "gtLg": { "alias": "fxLayoutAlign.gt-lg"; "required": false; "isSignal": true; }; }, {}, never, never, true, never>;
|
|
1438
|
-
}
|
|
1439
|
-
|
|
1440
|
-
declare class FxLayoutGapDirective extends ResponsiveBaseDirective {
|
|
1441
|
-
readonly fxLayoutGap: _angular_core.InputSignal<string>;
|
|
1442
|
-
readonly xs: _angular_core.InputSignal<string>;
|
|
1443
|
-
readonly sm: _angular_core.InputSignal<string>;
|
|
1444
|
-
readonly md: _angular_core.InputSignal<string>;
|
|
1445
|
-
readonly lg: _angular_core.InputSignal<string>;
|
|
1446
|
-
readonly xl: _angular_core.InputSignal<string>;
|
|
1447
|
-
readonly ltSm: _angular_core.InputSignal<string>;
|
|
1448
|
-
readonly ltMd: _angular_core.InputSignal<string>;
|
|
1449
|
-
readonly ltLg: _angular_core.InputSignal<string>;
|
|
1450
|
-
readonly ltXl: _angular_core.InputSignal<string>;
|
|
1451
|
-
readonly gtXs: _angular_core.InputSignal<string>;
|
|
1452
|
-
readonly gtSm: _angular_core.InputSignal<string>;
|
|
1453
|
-
readonly gtMd: _angular_core.InputSignal<string>;
|
|
1454
|
-
readonly gtLg: _angular_core.InputSignal<string>;
|
|
1455
|
-
private readonly _gap;
|
|
1456
|
-
constructor();
|
|
1457
|
-
static ɵfac: _angular_core.ɵɵFactoryDeclaration<FxLayoutGapDirective, never>;
|
|
1458
|
-
static ɵdir: _angular_core.ɵɵDirectiveDeclaration<FxLayoutGapDirective, " [fxLayoutGap], [fxLayoutGap.xs], [fxLayoutGap.sm], [fxLayoutGap.md], [fxLayoutGap.lg], [fxLayoutGap.xl], [fxLayoutGap.lt-sm], [fxLayoutGap.lt-md], [fxLayoutGap.lt-lg], [fxLayoutGap.lt-xl], [fxLayoutGap.gt-xs], [fxLayoutGap.gt-sm], [fxLayoutGap.gt-md], [fxLayoutGap.gt-lg] ", never, { "fxLayoutGap": { "alias": "fxLayoutGap"; "required": false; "isSignal": true; }; "xs": { "alias": "fxLayoutGap.xs"; "required": false; "isSignal": true; }; "sm": { "alias": "fxLayoutGap.sm"; "required": false; "isSignal": true; }; "md": { "alias": "fxLayoutGap.md"; "required": false; "isSignal": true; }; "lg": { "alias": "fxLayoutGap.lg"; "required": false; "isSignal": true; }; "xl": { "alias": "fxLayoutGap.xl"; "required": false; "isSignal": true; }; "ltSm": { "alias": "fxLayoutGap.lt-sm"; "required": false; "isSignal": true; }; "ltMd": { "alias": "fxLayoutGap.lt-md"; "required": false; "isSignal": true; }; "ltLg": { "alias": "fxLayoutGap.lt-lg"; "required": false; "isSignal": true; }; "ltXl": { "alias": "fxLayoutGap.lt-xl"; "required": false; "isSignal": true; }; "gtXs": { "alias": "fxLayoutGap.gt-xs"; "required": false; "isSignal": true; }; "gtSm": { "alias": "fxLayoutGap.gt-sm"; "required": false; "isSignal": true; }; "gtMd": { "alias": "fxLayoutGap.gt-md"; "required": false; "isSignal": true; }; "gtLg": { "alias": "fxLayoutGap.gt-lg"; "required": false; "isSignal": true; }; }, {}, never, never, true, never>;
|
|
1459
|
-
}
|
|
1460
|
-
|
|
1461
|
-
declare const LAYOUT_VALUES: readonly ["row", "column", "row-reverse", "column-reverse"];
|
|
1462
|
-
/** Port of ngx-layout validateWrapValue(). */
|
|
1463
|
-
declare function validateWrapValue(value: string): string;
|
|
1464
|
-
/** Port of ngx-layout validateValue(): [direction, wrap, inline]. */
|
|
1465
|
-
declare function validateLayoutValue(value: string): [string, string, boolean];
|
|
1466
|
-
/** Port of ngx-layout buildLayoutCSS(): null values mean "remove the property". */
|
|
1467
|
-
declare function buildLayoutCSS(value: string): Record<string, string | null>;
|
|
1468
|
-
/**
|
|
1469
|
-
* Resolves the flex flow of the parent container for a flex child.
|
|
1470
|
-
* Prefers the reactive FxLayoutDirective instance when it sits on the DIRECT
|
|
1471
|
-
* parent element (signal read → re-evaluates with the parent); falls back to
|
|
1472
|
-
* getComputedStyle for plain-CSS flex parents; SSR-safe defaults.
|
|
1473
|
-
*/
|
|
1474
|
-
declare function resolveParentFlow(host: HTMLElement, parentLayout: FxLayoutDirective | null, isBrowser: boolean): {
|
|
1475
|
-
direction: string;
|
|
1476
|
-
hasWrap: boolean;
|
|
1477
|
-
};
|
|
1478
|
-
declare class FxLayoutDirective extends ResponsiveBaseDirective {
|
|
1479
|
-
readonly fxLayout: _angular_core.InputSignal<string>;
|
|
1480
|
-
readonly xs: _angular_core.InputSignal<string>;
|
|
1481
|
-
readonly sm: _angular_core.InputSignal<string>;
|
|
1482
|
-
readonly md: _angular_core.InputSignal<string>;
|
|
1483
|
-
readonly lg: _angular_core.InputSignal<string>;
|
|
1484
|
-
readonly xl: _angular_core.InputSignal<string>;
|
|
1485
|
-
readonly ltSm: _angular_core.InputSignal<string>;
|
|
1486
|
-
readonly ltMd: _angular_core.InputSignal<string>;
|
|
1487
|
-
readonly ltLg: _angular_core.InputSignal<string>;
|
|
1488
|
-
readonly ltXl: _angular_core.InputSignal<string>;
|
|
1489
|
-
readonly gtXs: _angular_core.InputSignal<string>;
|
|
1490
|
-
readonly gtSm: _angular_core.InputSignal<string>;
|
|
1491
|
-
readonly gtMd: _angular_core.InputSignal<string>;
|
|
1492
|
-
readonly gtLg: _angular_core.InputSignal<string>;
|
|
1493
|
-
private readonly _parsed;
|
|
1494
|
-
/** Reactive layout parts — readable by FxFlex / FxLayoutAlign / FxFlexOffset. */
|
|
1495
|
-
readonly direction: _angular_core.Signal<string>;
|
|
1496
|
-
readonly wrap: _angular_core.Signal<string>;
|
|
1497
|
-
readonly inline: _angular_core.Signal<boolean>;
|
|
1498
|
-
/** Host element, exposed for direct-parent matching by child directives. */
|
|
1499
|
-
get hostElement(): HTMLElement;
|
|
1500
|
-
constructor();
|
|
1501
|
-
static ɵfac: _angular_core.ɵɵFactoryDeclaration<FxLayoutDirective, never>;
|
|
1502
|
-
static ɵdir: _angular_core.ɵɵDirectiveDeclaration<FxLayoutDirective, " [fxLayout], [fxLayout.xs], [fxLayout.sm], [fxLayout.md], [fxLayout.lg], [fxLayout.xl], [fxLayout.lt-sm], [fxLayout.lt-md], [fxLayout.lt-lg], [fxLayout.lt-xl], [fxLayout.gt-xs], [fxLayout.gt-sm], [fxLayout.gt-md], [fxLayout.gt-lg] ", never, { "fxLayout": { "alias": "fxLayout"; "required": false; "isSignal": true; }; "xs": { "alias": "fxLayout.xs"; "required": false; "isSignal": true; }; "sm": { "alias": "fxLayout.sm"; "required": false; "isSignal": true; }; "md": { "alias": "fxLayout.md"; "required": false; "isSignal": true; }; "lg": { "alias": "fxLayout.lg"; "required": false; "isSignal": true; }; "xl": { "alias": "fxLayout.xl"; "required": false; "isSignal": true; }; "ltSm": { "alias": "fxLayout.lt-sm"; "required": false; "isSignal": true; }; "ltMd": { "alias": "fxLayout.lt-md"; "required": false; "isSignal": true; }; "ltLg": { "alias": "fxLayout.lt-lg"; "required": false; "isSignal": true; }; "ltXl": { "alias": "fxLayout.lt-xl"; "required": false; "isSignal": true; }; "gtXs": { "alias": "fxLayout.gt-xs"; "required": false; "isSignal": true; }; "gtSm": { "alias": "fxLayout.gt-sm"; "required": false; "isSignal": true; }; "gtMd": { "alias": "fxLayout.gt-md"; "required": false; "isSignal": true; }; "gtLg": { "alias": "fxLayout.gt-lg"; "required": false; "isSignal": true; }; }, {}, never, never, true, never>;
|
|
1503
|
-
}
|
|
1504
|
-
declare class FxLayoutWrapDirective extends ResponsiveBaseDirective {
|
|
1505
|
-
readonly fxLayoutWrap: _angular_core.InputSignal<string>;
|
|
1506
|
-
readonly xs: _angular_core.InputSignal<string>;
|
|
1507
|
-
readonly sm: _angular_core.InputSignal<string>;
|
|
1508
|
-
readonly md: _angular_core.InputSignal<string>;
|
|
1509
|
-
readonly lg: _angular_core.InputSignal<string>;
|
|
1510
|
-
readonly xl: _angular_core.InputSignal<string>;
|
|
1511
|
-
readonly ltSm: _angular_core.InputSignal<string>;
|
|
1512
|
-
readonly ltMd: _angular_core.InputSignal<string>;
|
|
1513
|
-
readonly ltLg: _angular_core.InputSignal<string>;
|
|
1514
|
-
readonly ltXl: _angular_core.InputSignal<string>;
|
|
1515
|
-
readonly gtXs: _angular_core.InputSignal<string>;
|
|
1516
|
-
readonly gtSm: _angular_core.InputSignal<string>;
|
|
1517
|
-
readonly gtMd: _angular_core.InputSignal<string>;
|
|
1518
|
-
readonly gtLg: _angular_core.InputSignal<string>;
|
|
1519
|
-
private readonly _wrap;
|
|
1520
|
-
constructor();
|
|
1521
|
-
static ɵfac: _angular_core.ɵɵFactoryDeclaration<FxLayoutWrapDirective, never>;
|
|
1522
|
-
static ɵdir: _angular_core.ɵɵDirectiveDeclaration<FxLayoutWrapDirective, " [fxLayoutWrap], [fxLayoutWrap.xs], [fxLayoutWrap.sm], [fxLayoutWrap.md], [fxLayoutWrap.lg], [fxLayoutWrap.xl], [fxLayoutWrap.lt-sm], [fxLayoutWrap.lt-md], [fxLayoutWrap.lt-lg], [fxLayoutWrap.lt-xl], [fxLayoutWrap.gt-xs], [fxLayoutWrap.gt-sm], [fxLayoutWrap.gt-md], [fxLayoutWrap.gt-lg] ", never, { "fxLayoutWrap": { "alias": "fxLayoutWrap"; "required": false; "isSignal": true; }; "xs": { "alias": "fxLayoutWrap.xs"; "required": false; "isSignal": true; }; "sm": { "alias": "fxLayoutWrap.sm"; "required": false; "isSignal": true; }; "md": { "alias": "fxLayoutWrap.md"; "required": false; "isSignal": true; }; "lg": { "alias": "fxLayoutWrap.lg"; "required": false; "isSignal": true; }; "xl": { "alias": "fxLayoutWrap.xl"; "required": false; "isSignal": true; }; "ltSm": { "alias": "fxLayoutWrap.lt-sm"; "required": false; "isSignal": true; }; "ltMd": { "alias": "fxLayoutWrap.lt-md"; "required": false; "isSignal": true; }; "ltLg": { "alias": "fxLayoutWrap.lt-lg"; "required": false; "isSignal": true; }; "ltXl": { "alias": "fxLayoutWrap.lt-xl"; "required": false; "isSignal": true; }; "gtXs": { "alias": "fxLayoutWrap.gt-xs"; "required": false; "isSignal": true; }; "gtSm": { "alias": "fxLayoutWrap.gt-sm"; "required": false; "isSignal": true; }; "gtMd": { "alias": "fxLayoutWrap.gt-md"; "required": false; "isSignal": true; }; "gtLg": { "alias": "fxLayoutWrap.gt-lg"; "required": false; "isSignal": true; }; }, {}, never, never, true, never>;
|
|
1523
|
-
}
|
|
1524
|
-
|
|
1525
|
-
/**
|
|
1526
|
-
* Pure visibility transition (exported for tests).
|
|
1527
|
-
* Captures the inline display before hiding and restores it when shown again,
|
|
1528
|
-
* so display:flex|grid written by FxLayout/FxGrid effects is never lost.
|
|
1529
|
-
* @returns the new "previous display" state to carry to the next transition
|
|
1198
|
+
* Pure visibility transition (exported for tests).
|
|
1199
|
+
* Captures the inline display before hiding and restores it when shown again,
|
|
1200
|
+
* so display:flex|grid written by FxLayout/FxGrid effects is never lost.
|
|
1201
|
+
* @returns the new "previous display" state to carry to the next transition
|
|
1530
1202
|
*/
|
|
1531
1203
|
declare function applyVisibility(el: {
|
|
1532
1204
|
style: {
|
|
@@ -1623,5 +1295,647 @@ declare class FlexLayoutModule {
|
|
|
1623
1295
|
static ɵinj: _angular_core.ɵɵInjectorDeclaration<FlexLayoutModule>;
|
|
1624
1296
|
}
|
|
1625
1297
|
|
|
1626
|
-
|
|
1627
|
-
|
|
1298
|
+
/**
|
|
1299
|
+
* @file navigation.definitions.ts
|
|
1300
|
+
*
|
|
1301
|
+
* Data model shared by every variant of the Material Design 3 (Expressive)
|
|
1302
|
+
* navigation component: Navigation bar, Navigation rail (collapsed and
|
|
1303
|
+
* expanded) and Navigation drawer (standard and modal).
|
|
1304
|
+
*
|
|
1305
|
+
* Reference: https://m3.material.io/components/navigation-bar/specs
|
|
1306
|
+
* https://m3.material.io/components/navigation-rail/specs
|
|
1307
|
+
* https://m3.material.io/components/navigation-drawer/specs
|
|
1308
|
+
*/
|
|
1309
|
+
|
|
1310
|
+
/**
|
|
1311
|
+
* Rendering variants supported by the component.
|
|
1312
|
+
*
|
|
1313
|
+
* - `bar` — Navigation bar, horizontal, anchored to the bottom edge (compact windows).
|
|
1314
|
+
* - `rail` — Collapsed navigation rail, vertical, 96dp wide (medium / expanded windows).
|
|
1315
|
+
* - `rail-expanded` — Expanded navigation rail, 220dp+, labels beside icons, supports sections.
|
|
1316
|
+
* - `drawer` — Standard navigation drawer, 360dp, inline with the page content.
|
|
1317
|
+
* - `modal` — Modal navigation drawer: same as `drawer` but overlaid on a scrim.
|
|
1318
|
+
* - `auto` — Resolved at runtime from the active CDK breakpoint (see `autoVariants`).
|
|
1319
|
+
*/
|
|
1320
|
+
type NavigationVariant = 'auto' | 'bar' | 'rail' | 'rail-expanded' | 'drawer' | 'modal';
|
|
1321
|
+
/** Variants that can actually be rendered, i.e. every variant except `auto`. */
|
|
1322
|
+
type ResolvedNavigationVariant = Exclude<NavigationVariant, 'auto'>;
|
|
1323
|
+
/**
|
|
1324
|
+
* Label visibility policy, mirroring the four Material label visibility modes.
|
|
1325
|
+
*
|
|
1326
|
+
* - `auto` — Labels are always shown (current M3 guidance).
|
|
1327
|
+
* - `labeled` — Labels are always shown.
|
|
1328
|
+
* - `selected` — Only the active destination shows its label (legacy M3 "auto" behaviour).
|
|
1329
|
+
* - `unlabeled` — Icons only; the accessible name comes from `aria-label` / tooltip.
|
|
1330
|
+
*/
|
|
1331
|
+
type NavigationLabelVisibility = 'auto' | 'labeled' | 'selected' | 'unlabeled';
|
|
1332
|
+
/**
|
|
1333
|
+
* Item layout inside a destination.
|
|
1334
|
+
*
|
|
1335
|
+
* - `vertical` — Icon stacked above the label (M3 default for compact windows).
|
|
1336
|
+
* - `horizontal` — Icon at the start of the label (M3 Expressive, medium windows and above).
|
|
1337
|
+
* - `auto` — `vertical` on compact windows, `horizontal` from 600dp upwards; always
|
|
1338
|
+
* `horizontal` for the expanded rail and the drawer.
|
|
1339
|
+
*/
|
|
1340
|
+
type NavigationItemLayout = 'auto' | 'vertical' | 'horizontal';
|
|
1341
|
+
/** Vertical alignment of the destination list inside a rail. */
|
|
1342
|
+
type NavigationAlignment = 'top' | 'center' | 'bottom';
|
|
1343
|
+
/** Side the rail / drawer is anchored to. Automatically mirrored in RTL. */
|
|
1344
|
+
type NavigationPosition = 'start' | 'end';
|
|
1345
|
+
/**
|
|
1346
|
+
* Badge attached to a destination.
|
|
1347
|
+
* When `value` is `undefined` a small dot badge is rendered, otherwise a large
|
|
1348
|
+
* badge showing the value (clamped to `max`).
|
|
1349
|
+
*/
|
|
1350
|
+
interface NavigationBadge {
|
|
1351
|
+
/** Numeric or textual content of the badge. Leave `undefined` for a dot badge. */
|
|
1352
|
+
value?: number | string;
|
|
1353
|
+
/** Upper bound for numeric values; above it the badge renders `${max}+`. Defaults to 999. */
|
|
1354
|
+
max?: number;
|
|
1355
|
+
/** Accessible description announced together with the destination label. */
|
|
1356
|
+
ariaLabel?: string;
|
|
1357
|
+
/** Optional CSS colour override for this badge only. */
|
|
1358
|
+
color?: string;
|
|
1359
|
+
}
|
|
1360
|
+
/**
|
|
1361
|
+
* Frame indices of a sprite sheet, one per interaction state.
|
|
1362
|
+
*
|
|
1363
|
+
* The same shape describes the light set (declared inline on the sprite) and the
|
|
1364
|
+
* dark set (declared under `NavigationIconSprite.dark`), so a sheet holding both
|
|
1365
|
+
* themes needs no duplicated geometry.
|
|
1366
|
+
*/
|
|
1367
|
+
interface NavigationSpriteFrames {
|
|
1368
|
+
/** Zero-based frame index for the resting state. Defaults to 0. */
|
|
1369
|
+
normal?: number;
|
|
1370
|
+
/** Frame index used on hover and on keyboard focus. Defaults to `normal`. */
|
|
1371
|
+
hover?: number;
|
|
1372
|
+
/** Frame index used when the destination is selected. Defaults to `hover`. */
|
|
1373
|
+
active?: number;
|
|
1374
|
+
/** Frame index used when the destination is disabled. Defaults to `normal`. */
|
|
1375
|
+
disabled?: number;
|
|
1376
|
+
}
|
|
1377
|
+
/**
|
|
1378
|
+
* Sprite sheet descriptor: a single image holding every state frame of an icon,
|
|
1379
|
+
* revealed by shifting `background-position` — no extra request per state.
|
|
1380
|
+
*
|
|
1381
|
+
* Frames are assumed to be square and evenly spaced, laid out along a single
|
|
1382
|
+
* axis. Two geometries are described, and they are NOT the same thing:
|
|
1383
|
+
* - `size` is the side of a frame INSIDE the image file;
|
|
1384
|
+
* - `renderSize` is the side the icon is actually drawn at.
|
|
1385
|
+
* The component rescales the whole sheet through `background-size`, so a strip
|
|
1386
|
+
* of 26px frames can be drawn at the 24px of the surrounding Material icons
|
|
1387
|
+
* without the neighbouring frames bleeding in.
|
|
1388
|
+
*
|
|
1389
|
+
* The frame indices declared inline are the light-theme set; `dark` overrides
|
|
1390
|
+
* the ones that differ when the dark theme is active. A sheet that carries a
|
|
1391
|
+
* single set simply omits `dark`.
|
|
1392
|
+
*/
|
|
1393
|
+
interface NavigationIconSprite extends NavigationSpriteFrames {
|
|
1394
|
+
/** URL of the sprite sheet. */
|
|
1395
|
+
url: string;
|
|
1396
|
+
/** Side of a single frame inside the image file, in pixels. Defaults to 24. */
|
|
1397
|
+
size?: number;
|
|
1398
|
+
/** Side the icon is drawn at, in pixels. Defaults to `size`. */
|
|
1399
|
+
renderSize?: number;
|
|
1400
|
+
/**
|
|
1401
|
+
* Total number of frames in the sheet, needed to rescale it.
|
|
1402
|
+
* Defaults to the highest referenced frame index plus one, which is correct
|
|
1403
|
+
* for any sheet that has no trailing unused frame.
|
|
1404
|
+
*/
|
|
1405
|
+
frames?: number;
|
|
1406
|
+
/** Axis the frames are laid out along. Defaults to `vertical`. */
|
|
1407
|
+
direction?: 'vertical' | 'horizontal';
|
|
1408
|
+
/** Frame indices used when the dark theme is active. Defaults to the light ones. */
|
|
1409
|
+
dark?: NavigationSpriteFrames;
|
|
1410
|
+
}
|
|
1411
|
+
/** A single navigation destination. */
|
|
1412
|
+
interface NavigationItem {
|
|
1413
|
+
/** Stable unique identifier; used as the `@for` track key and as the selection value. */
|
|
1414
|
+
id: string;
|
|
1415
|
+
/** Visible label. Also used as the accessible name and as the tooltip fallback. */
|
|
1416
|
+
label: string;
|
|
1417
|
+
/** Material Symbols ligature rendered when the destination is NOT selected. */
|
|
1418
|
+
icon?: string;
|
|
1419
|
+
/** Material Symbols ligature rendered when the destination IS selected (usually the filled variant). */
|
|
1420
|
+
activeIcon?: string;
|
|
1421
|
+
/** Path of a raster / vector image rendered as the icon. Takes precedence over `icon`. */
|
|
1422
|
+
imageIcon?: string;
|
|
1423
|
+
/** Image used when the destination is selected. Takes precedence over `activeIcon`. */
|
|
1424
|
+
activeImageIcon?: string;
|
|
1425
|
+
/**
|
|
1426
|
+
* Sprite sheet holding every state frame of the icon. Takes precedence over
|
|
1427
|
+
* `imageIcon` and `icon`; state changes cost one `background-position` shift.
|
|
1428
|
+
*/
|
|
1429
|
+
sprite?: NavigationIconSprite;
|
|
1430
|
+
/** Name of an SVG icon registered in `MatIconRegistry`; takes precedence over `icon`. */
|
|
1431
|
+
svgIcon?: string;
|
|
1432
|
+
/** SVG icon used when the destination is selected; takes precedence over `activeIcon`. */
|
|
1433
|
+
activeSvgIcon?: string;
|
|
1434
|
+
/** Badge shown on top of the icon (collapsed variants) or at the trailing edge (expanded variants). */
|
|
1435
|
+
badge?: NavigationBadge;
|
|
1436
|
+
/** Short trailing text shown at the end of the row in the expanded rail and in the drawer. */
|
|
1437
|
+
trailing?: string;
|
|
1438
|
+
/** When `true` the destination is rendered dimmed and is not interactive. */
|
|
1439
|
+
disabled?: boolean;
|
|
1440
|
+
/**
|
|
1441
|
+
* When `true` the destination is not rendered inline in the compact variants:
|
|
1442
|
+
* it is moved into the overflow menu instead. Which variants count as compact
|
|
1443
|
+
* is decided by the component's `overflowMode` input.
|
|
1444
|
+
*/
|
|
1445
|
+
hideWhenCompact?: boolean;
|
|
1446
|
+
/** Tooltip text; defaults to `label` when the label is not visible. */
|
|
1447
|
+
tooltip?: string;
|
|
1448
|
+
/** Router commands used to build the destination URL. */
|
|
1449
|
+
route?: string | readonly unknown[];
|
|
1450
|
+
/** Query parameters appended to `route`. */
|
|
1451
|
+
queryParams?: Record<string, unknown>;
|
|
1452
|
+
/** Fragment appended to `route`. */
|
|
1453
|
+
fragment?: string;
|
|
1454
|
+
/** When `true` the route must match the whole URL to mark the destination active. Defaults to `false`. */
|
|
1455
|
+
exact?: boolean;
|
|
1456
|
+
/** External URL. Rendered as a plain anchor and never matched against the router. */
|
|
1457
|
+
href?: string;
|
|
1458
|
+
/** Anchor target used together with `href`. */
|
|
1459
|
+
target?: string;
|
|
1460
|
+
/** Explicit accessible name, when the visible label is not descriptive enough. */
|
|
1461
|
+
ariaLabel?: string;
|
|
1462
|
+
/**
|
|
1463
|
+
* Nested destinations. A destination with children never navigates on its own:
|
|
1464
|
+
* clicking it expands the group inline (expanded rail / drawer) or opens it in
|
|
1465
|
+
* a floating panel (bar / collapsed rail).
|
|
1466
|
+
*/
|
|
1467
|
+
children?: readonly NavigationItem[];
|
|
1468
|
+
/** Initial expansion state of a destination that has `children`. Defaults to `false`. */
|
|
1469
|
+
expanded?: boolean;
|
|
1470
|
+
/**
|
|
1471
|
+
* Edge the destination is pinned to inside a rail or a drawer.
|
|
1472
|
+
* `bottom` destinations are pushed to the end of the surface. Ignored by the
|
|
1473
|
+
* navigation bar, where every destination shares the same row.
|
|
1474
|
+
*/
|
|
1475
|
+
align?: 'top' | 'bottom';
|
|
1476
|
+
/** Arbitrary payload echoed back in `NavigationSelection`. */
|
|
1477
|
+
data?: unknown;
|
|
1478
|
+
}
|
|
1479
|
+
/**
|
|
1480
|
+
* A group of destinations. Section headlines and dividers are only rendered by
|
|
1481
|
+
* the expanded rail and by the drawer, exactly as described by the M3 specs.
|
|
1482
|
+
*/
|
|
1483
|
+
interface NavigationSection {
|
|
1484
|
+
/** Stable unique identifier; used as the `@for` track key. */
|
|
1485
|
+
id: string;
|
|
1486
|
+
/** Optional headline rendered above the group. */
|
|
1487
|
+
label?: string;
|
|
1488
|
+
/** Destinations belonging to the section. */
|
|
1489
|
+
items: readonly NavigationItem[];
|
|
1490
|
+
/** When `true` a divider is rendered after the section. */
|
|
1491
|
+
divider?: boolean;
|
|
1492
|
+
}
|
|
1493
|
+
/** Payload emitted when a destination is activated. */
|
|
1494
|
+
interface NavigationSelection {
|
|
1495
|
+
/** The activated destination. */
|
|
1496
|
+
item: NavigationItem;
|
|
1497
|
+
/** The section the destination belongs to, when sections are in use. */
|
|
1498
|
+
section?: NavigationSection;
|
|
1499
|
+
/** The parent destination, when a nested destination was activated. */
|
|
1500
|
+
parent?: NavigationItem;
|
|
1501
|
+
/** Zero-based index of the destination across the whole flattened list. */
|
|
1502
|
+
index: number;
|
|
1503
|
+
}
|
|
1504
|
+
/**
|
|
1505
|
+
* Policy deciding where `hideWhenCompact` destinations are collapsed into the
|
|
1506
|
+
* overflow menu.
|
|
1507
|
+
*
|
|
1508
|
+
* - `bar` — only in the navigation bar (default).
|
|
1509
|
+
* - `compact` — in the navigation bar and in the collapsed rail.
|
|
1510
|
+
* - `never` — `hideWhenCompact` is ignored and every destination stays inline.
|
|
1511
|
+
*/
|
|
1512
|
+
type NavigationOverflowMode = 'bar' | 'compact' | 'never';
|
|
1513
|
+
/**
|
|
1514
|
+
* Identifier of the synthesized overflow destination. Use it to recognise the
|
|
1515
|
+
* overflow entry inside `itemSelected`.
|
|
1516
|
+
*/
|
|
1517
|
+
declare const NAVIGATION_OVERFLOW_ID = "__overflow";
|
|
1518
|
+
/** Map of breakpoint alias to the variant used when `variant` is `auto`. */
|
|
1519
|
+
type NavigationAutoVariants = Partial<Record<BreakpointAlias, ResolvedNavigationVariant>>;
|
|
1520
|
+
/**
|
|
1521
|
+
* Default `auto` mapping, aligned with the Material 3 window size classes:
|
|
1522
|
+
* compact windows get the navigation bar, medium and expanded windows get the
|
|
1523
|
+
* collapsed rail, large and extra-large windows get the expanded rail.
|
|
1524
|
+
*/
|
|
1525
|
+
declare const DEFAULT_NAVIGATION_AUTO_VARIANTS: Required<NavigationAutoVariants>;
|
|
1526
|
+
/** Variants that render labels beside the icon and support sections and dividers. */
|
|
1527
|
+
declare const EXPANDED_NAVIGATION_VARIANTS: readonly ResolvedNavigationVariant[];
|
|
1528
|
+
|
|
1529
|
+
/** Internal, pre-computed render model for a single destination. */
|
|
1530
|
+
interface NavigationRenderItem {
|
|
1531
|
+
/** The source destination. */
|
|
1532
|
+
readonly item: NavigationItem;
|
|
1533
|
+
/** Owning section, when sections are in use. */
|
|
1534
|
+
readonly section?: NavigationSection;
|
|
1535
|
+
/** Parent destination, for nested destinations. */
|
|
1536
|
+
readonly parent?: NavigationItem;
|
|
1537
|
+
/** Zero-based index across the whole flattened destination list. */
|
|
1538
|
+
readonly index: number;
|
|
1539
|
+
/** Nesting level: `0` for a root destination. */
|
|
1540
|
+
readonly depth: number;
|
|
1541
|
+
/** Resolved URL, when the destination is routed or external. */
|
|
1542
|
+
readonly href?: string;
|
|
1543
|
+
/** `true` when the destination navigates through the Angular router. */
|
|
1544
|
+
readonly routed: boolean;
|
|
1545
|
+
/** Material Symbols ligature for the unselected state. */
|
|
1546
|
+
readonly iconOff?: string;
|
|
1547
|
+
/** Material Symbols ligature for the selected state. */
|
|
1548
|
+
readonly iconOn?: string;
|
|
1549
|
+
/** Registered SVG icon name for the unselected state. */
|
|
1550
|
+
readonly svgOff?: string;
|
|
1551
|
+
/** Registered SVG icon name for the selected state. */
|
|
1552
|
+
readonly svgOn?: string;
|
|
1553
|
+
/** Image URL for the unselected state. */
|
|
1554
|
+
readonly imageOff?: string;
|
|
1555
|
+
/** Image URL for the selected state. */
|
|
1556
|
+
readonly imageOn?: string;
|
|
1557
|
+
/** Inline custom properties driving a sprite-sheet icon, when one is used. */
|
|
1558
|
+
readonly spriteStyle?: Record<string, string>;
|
|
1559
|
+
/** Rendered badge text; empty string means "dot badge". */
|
|
1560
|
+
readonly badgeText: string;
|
|
1561
|
+
/** `true` when the destination carries a badge of any kind. */
|
|
1562
|
+
readonly hasBadge: boolean;
|
|
1563
|
+
/** `true` when the destination never renders its label, whatever the label policy. */
|
|
1564
|
+
readonly iconOnly: boolean;
|
|
1565
|
+
/** `true` when the destination owns nested destinations. */
|
|
1566
|
+
readonly hasChildren: boolean;
|
|
1567
|
+
/** Pre-computed render models of the nested destinations. */
|
|
1568
|
+
readonly children: readonly NavigationRenderItem[];
|
|
1569
|
+
/** Accessible name announced for the destination. */
|
|
1570
|
+
readonly ariaLabel: string;
|
|
1571
|
+
/** Tooltip text used when the label is not visible. */
|
|
1572
|
+
readonly tooltip: string;
|
|
1573
|
+
}
|
|
1574
|
+
/** Internal render model for a section and its destinations. */
|
|
1575
|
+
interface NavigationRenderSection {
|
|
1576
|
+
/** The source section. */
|
|
1577
|
+
readonly section: NavigationSection;
|
|
1578
|
+
/** Destinations of the section. */
|
|
1579
|
+
readonly items: readonly NavigationRenderItem[];
|
|
1580
|
+
}
|
|
1581
|
+
/** Internal render model for one row of the floating submenu panel. */
|
|
1582
|
+
interface NavigationPanelEntry {
|
|
1583
|
+
/** Stable `@for` track key. */
|
|
1584
|
+
readonly key: string;
|
|
1585
|
+
/** Heading text, when the row is a group heading. */
|
|
1586
|
+
readonly label?: string;
|
|
1587
|
+
/** Destination to render, when the row is an actual entry. */
|
|
1588
|
+
readonly render?: NavigationRenderItem;
|
|
1589
|
+
}
|
|
1590
|
+
/** Internal render model for one of the two anchoring groups of a surface. */
|
|
1591
|
+
interface NavigationRenderGroup {
|
|
1592
|
+
/** Edge the group is pinned to. */
|
|
1593
|
+
readonly align: 'top' | 'bottom';
|
|
1594
|
+
/** Sections belonging to the group. */
|
|
1595
|
+
readonly sections: readonly NavigationRenderSection[];
|
|
1596
|
+
}
|
|
1597
|
+
declare class NavigationBarComponent {
|
|
1598
|
+
private readonly media;
|
|
1599
|
+
private readonly themeService;
|
|
1600
|
+
private readonly router;
|
|
1601
|
+
private readonly directionality;
|
|
1602
|
+
private readonly hostRef;
|
|
1603
|
+
private readonly destroyRef;
|
|
1604
|
+
/** Flat list of destinations. Ignored when `sections` is provided. */
|
|
1605
|
+
readonly items: _angular_core.InputSignal<readonly NavigationItem[]>;
|
|
1606
|
+
/** Grouped destinations. Section headlines and dividers only render in the expanded variants. */
|
|
1607
|
+
readonly sections: _angular_core.InputSignal<readonly NavigationSection[]>;
|
|
1608
|
+
/** Rendering variant. `auto` resolves from the active breakpoint through `autoVariants`. */
|
|
1609
|
+
readonly variant: _angular_core.InputSignal<NavigationVariant>;
|
|
1610
|
+
/** Breakpoint → variant map used when `variant` is `auto`. Missing entries fall back to the M3 defaults. */
|
|
1611
|
+
readonly autoVariants: _angular_core.InputSignal<Partial<Record<"xs" | "sm" | "md" | "lg" | "xl", ResolvedNavigationVariant>>>;
|
|
1612
|
+
/** Two-way bound id of the selected destination. The router, when active, takes precedence. */
|
|
1613
|
+
readonly selectedId: _angular_core.ModelSignal<string>;
|
|
1614
|
+
/**
|
|
1615
|
+
* Two-way bound ids of the expanded parent destinations.
|
|
1616
|
+
* Leave unbound (`undefined`) to let the component manage the expansion state
|
|
1617
|
+
* on its own, seeding it from `NavigationItem.expanded` and auto-opening the
|
|
1618
|
+
* ancestors of the active destination.
|
|
1619
|
+
*/
|
|
1620
|
+
readonly expandedIds: _angular_core.ModelSignal<readonly string[]>;
|
|
1621
|
+
/** Two-way bound open state of the modal drawer. Ignored by the other variants. */
|
|
1622
|
+
readonly open: _angular_core.ModelSignal<boolean>;
|
|
1623
|
+
/** Label visibility policy. */
|
|
1624
|
+
readonly labelVisibility: _angular_core.InputSignal<NavigationLabelVisibility>;
|
|
1625
|
+
/** Icon / label arrangement inside a destination. */
|
|
1626
|
+
readonly itemLayout: _angular_core.InputSignal<NavigationItemLayout>;
|
|
1627
|
+
/** Vertical alignment of the `top` destination group inside a rail. */
|
|
1628
|
+
readonly alignment: _angular_core.InputSignal<NavigationAlignment>;
|
|
1629
|
+
/** Edge the rail / drawer is anchored to. Mirrored automatically in RTL. */
|
|
1630
|
+
readonly position: _angular_core.InputSignal<NavigationPosition>;
|
|
1631
|
+
/** Headline rendered above the destinations in the expanded rail and in the drawer. */
|
|
1632
|
+
readonly headline: _angular_core.InputSignal<string>;
|
|
1633
|
+
/** When `true` a leading menu button is rendered; it emits `menuClick`. */
|
|
1634
|
+
readonly showMenuButton: _angular_core.InputSignalWithTransform<boolean, unknown>;
|
|
1635
|
+
/** Material Symbols ligature used by the menu button. */
|
|
1636
|
+
readonly menuIcon: _angular_core.InputSignal<string>;
|
|
1637
|
+
/** Material Symbols ligature used by the expand / collapse chevron. */
|
|
1638
|
+
readonly expandIcon: _angular_core.InputSignal<string>;
|
|
1639
|
+
/** Where `hideWhenCompact` destinations are collapsed into the overflow menu. */
|
|
1640
|
+
readonly overflowMode: _angular_core.InputSignal<NavigationOverflowMode>;
|
|
1641
|
+
/** Material Symbols ligature of the overflow destination. */
|
|
1642
|
+
readonly overflowIcon: _angular_core.InputSignal<string>;
|
|
1643
|
+
/** Accessible name and tooltip of the overflow destination, which renders icon-only. */
|
|
1644
|
+
readonly overflowLabel: _angular_core.InputSignal<string>;
|
|
1645
|
+
/**
|
|
1646
|
+
* Hard cap on the destinations rendered inline in the compact variants,
|
|
1647
|
+
* applied per anchoring group. The overflow destination counts as one slot.
|
|
1648
|
+
* `0` disables the cap; the M3 specs recommend 3 to 5 for the navigation bar.
|
|
1649
|
+
*/
|
|
1650
|
+
readonly maxVisibleItems: _angular_core.InputSignalWithTransform<number, unknown>;
|
|
1651
|
+
/** Accessible name of the menu button. */
|
|
1652
|
+
readonly menuAriaLabel: _angular_core.InputSignal<string>;
|
|
1653
|
+
/** Accessible name of the navigation landmark. */
|
|
1654
|
+
readonly ariaLabel: _angular_core.InputSignal<string>;
|
|
1655
|
+
/** When `true` a scrim is rendered behind the modal drawer. */
|
|
1656
|
+
readonly scrim: _angular_core.InputSignalWithTransform<boolean, unknown>;
|
|
1657
|
+
/** When `true` the modal drawer closes as soon as a destination is activated. */
|
|
1658
|
+
readonly closeOnSelect: _angular_core.InputSignalWithTransform<boolean, unknown>;
|
|
1659
|
+
/** When `true` the surface gets the M3 elevation-3 shadow. */
|
|
1660
|
+
readonly elevated: _angular_core.InputSignalWithTransform<boolean, unknown>;
|
|
1661
|
+
/** When `true` a 1px divider separates the surface from the page content. */
|
|
1662
|
+
readonly bordered: _angular_core.InputSignalWithTransform<boolean, unknown>;
|
|
1663
|
+
/** When `true` tooltips are shown for destinations whose label is not visible. */
|
|
1664
|
+
readonly tooltips: _angular_core.InputSignalWithTransform<boolean, unknown>;
|
|
1665
|
+
/** When `true` the selection follows the current router URL. */
|
|
1666
|
+
readonly routerSync: _angular_core.InputSignalWithTransform<boolean, unknown>;
|
|
1667
|
+
/** Route used to resolve relative `route` commands. Absolute resolution when omitted. */
|
|
1668
|
+
readonly relativeTo: _angular_core.InputSignal<ActivatedRoute>;
|
|
1669
|
+
/** Explicit surface width in pixels for the rail / drawer variants. `0` keeps the spec default. */
|
|
1670
|
+
readonly width: _angular_core.InputSignalWithTransform<number, unknown>;
|
|
1671
|
+
/** When `true` the whole surface is hidden (animated off-screen) without being destroyed. */
|
|
1672
|
+
readonly hidden: _angular_core.InputSignalWithTransform<boolean, unknown>;
|
|
1673
|
+
/** Emitted when a destination is activated by the user. */
|
|
1674
|
+
readonly itemSelected: _angular_core.OutputEmitterRef<NavigationSelection>;
|
|
1675
|
+
/** Emitted when the leading menu button is pressed. */
|
|
1676
|
+
readonly menuClick: _angular_core.OutputEmitterRef<void>;
|
|
1677
|
+
/** Focusable destination elements, in DOM order; used for keyboard roving. */
|
|
1678
|
+
private readonly itemElements;
|
|
1679
|
+
/** Focusable entries of the floating submenu panel, in DOM order. */
|
|
1680
|
+
private readonly panelElements;
|
|
1681
|
+
/** Current router URL, kept in a signal so the template stays zoneless-friendly. */
|
|
1682
|
+
private readonly routerUrl;
|
|
1683
|
+
/**
|
|
1684
|
+
* Ticks whenever the application theme moves. The emitted value is ignored on
|
|
1685
|
+
* purpose: it is a change notification, not the answer.
|
|
1686
|
+
*
|
|
1687
|
+
* Reads `themeService`, so it MUST stay below the injected dependencies: moved
|
|
1688
|
+
* above them it would read `undefined`, `?? EMPTY` would swallow it and the
|
|
1689
|
+
* theme would silently stop propagating, with nothing to show for it at
|
|
1690
|
+
* compile time.
|
|
1691
|
+
*/
|
|
1692
|
+
private readonly themeChanged;
|
|
1693
|
+
/**
|
|
1694
|
+
* `true` when the dark theme is active; selects the dark frame set of a sprite.
|
|
1695
|
+
*
|
|
1696
|
+
* The answer comes from `getTheme()`, the only one that resolves `auto`
|
|
1697
|
+
* against the OS preference. `getTheme()` already reads a signal for the
|
|
1698
|
+
* explicit modes, so `themeChanged()` is read for the one case that is not
|
|
1699
|
+
* reactive on its own: mode `auto` plus a change of the OS colour scheme,
|
|
1700
|
+
* which leaves the stored mode on `auto` and only travels through `changed`.
|
|
1701
|
+
* Falls back to the light set when no `ThemeService` is provided.
|
|
1702
|
+
*/
|
|
1703
|
+
private readonly isDark;
|
|
1704
|
+
/** Id of the destination whose children are currently shown in the floating panel. */
|
|
1705
|
+
private readonly popupId;
|
|
1706
|
+
/**
|
|
1707
|
+
* Destination whose children are currently shown in the floating panel.
|
|
1708
|
+
*
|
|
1709
|
+
* Derived from the id and NOT stored as an object: the render model is rebuilt
|
|
1710
|
+
* whenever the destinations, the resolved URLs or the theme change, and a
|
|
1711
|
+
* stored object would keep the panel painting the sprite frames of the
|
|
1712
|
+
* previous theme until the panel is closed and reopened.
|
|
1713
|
+
*
|
|
1714
|
+
* The search is recursive because a panel entry can itself own children and
|
|
1715
|
+
* open a panel of its own, and those nested render models are not part of the
|
|
1716
|
+
* top level of `visibleGroups`.
|
|
1717
|
+
*
|
|
1718
|
+
* Reads `visibleGroups`, which is declared further down: safe because
|
|
1719
|
+
* `computed` is lazy and nothing reads this before the first render — the
|
|
1720
|
+
* opposite of `themeChanged` above, which reads its dependency immediately.
|
|
1721
|
+
*/
|
|
1722
|
+
protected readonly popupItem: _angular_core.Signal<NavigationRenderItem>;
|
|
1723
|
+
/** Element the floating panel is anchored to. */
|
|
1724
|
+
private readonly popupAnchor;
|
|
1725
|
+
constructor();
|
|
1726
|
+
/** Sections actually rendered: the `sections` input, or a single implicit section wrapping `items`. */
|
|
1727
|
+
private readonly resolvedSections;
|
|
1728
|
+
/** Every destination, nested ones included, in depth-first order. */
|
|
1729
|
+
private readonly allItems;
|
|
1730
|
+
/** Map of destination id to the id of its parent destination. */
|
|
1731
|
+
private readonly parentOf;
|
|
1732
|
+
/** The variant to render, resolving `auto` against the active CDK breakpoint. */
|
|
1733
|
+
protected readonly resolvedVariant: _angular_core.Signal<ResolvedNavigationVariant>;
|
|
1734
|
+
/** `true` for the variants that render labels beside icons and support sections. */
|
|
1735
|
+
protected readonly isExpanded: _angular_core.Signal<boolean>;
|
|
1736
|
+
/** `true` when the surface is the modal drawer. */
|
|
1737
|
+
protected readonly isModal: _angular_core.Signal<boolean>;
|
|
1738
|
+
/** `true` when the modal drawer is currently open. */
|
|
1739
|
+
protected readonly isOverlayOpen: _angular_core.Signal<boolean>;
|
|
1740
|
+
/** `true` when the surface must be visually hidden. */
|
|
1741
|
+
protected readonly isHidden: _angular_core.Signal<boolean>;
|
|
1742
|
+
/** Resolved icon / label arrangement. */
|
|
1743
|
+
protected readonly resolvedLayout: _angular_core.Signal<"vertical" | "horizontal">;
|
|
1744
|
+
/** Resolved label visibility; the expanded variants always show labels. */
|
|
1745
|
+
protected readonly resolvedLabelVisibility: _angular_core.Signal<"labeled" | "selected" | "unlabeled">;
|
|
1746
|
+
/** `true` when the headline row (menu button, headline text) is rendered. */
|
|
1747
|
+
protected readonly showsHeader: _angular_core.Signal<boolean>;
|
|
1748
|
+
/**
|
|
1749
|
+
* Geometry of the active indicator:
|
|
1750
|
+
* `compact` wraps the icon only (56x32 pill), `wide` wraps icon and label
|
|
1751
|
+
* together, exactly as described by the M3 Expressive specs.
|
|
1752
|
+
*/
|
|
1753
|
+
protected readonly indicatorMode: _angular_core.Signal<"compact" | "wide">;
|
|
1754
|
+
/** Tooltip placement derived from the variant and from the anchoring edge. */
|
|
1755
|
+
protected readonly tooltipPosition: _angular_core.Signal<TooltipPosition>;
|
|
1756
|
+
/** Inline width override for the rail / drawer, or `undefined` to keep the spec default. */
|
|
1757
|
+
protected readonly widthStyle: _angular_core.Signal<string>;
|
|
1758
|
+
/** Map of destination id to resolved URL. Recomputed only when the destinations change. */
|
|
1759
|
+
private readonly hrefs;
|
|
1760
|
+
/**
|
|
1761
|
+
* Static render model, rebuilt only when the destinations, the resolved URLs
|
|
1762
|
+
* or the theme change — never when the selection or the expansion state
|
|
1763
|
+
* changes. The theme is a dependency because sprite icons carry one frame set
|
|
1764
|
+
* per theme, and the frames are baked into the inline style of the icon.
|
|
1765
|
+
*/
|
|
1766
|
+
private readonly renderGroups;
|
|
1767
|
+
/** Id of the destination matching the current router URL, using longest-prefix matching. */
|
|
1768
|
+
private readonly routerActiveId;
|
|
1769
|
+
/** Id of the currently active destination: router URL first, explicit selection as fallback. */
|
|
1770
|
+
protected readonly activeId: _angular_core.Signal<string>;
|
|
1771
|
+
/**
|
|
1772
|
+
* Expansion state used when `expandedIds` is left unbound: the destinations
|
|
1773
|
+
* flagged `expanded`, plus every ancestor of the active destination.
|
|
1774
|
+
*/
|
|
1775
|
+
private readonly defaultExpandedIds;
|
|
1776
|
+
/** Ids of the parent destinations currently expanded. */
|
|
1777
|
+
protected readonly expandedSet: _angular_core.Signal<ReadonlySet<string>>;
|
|
1778
|
+
/** `true` when the current variant collapses `hideWhenCompact` destinations into the overflow menu. */
|
|
1779
|
+
protected readonly overflowApplies: _angular_core.Signal<boolean>;
|
|
1780
|
+
/**
|
|
1781
|
+
* Render model actually walked by the template: the static model with the
|
|
1782
|
+
* compact-only destinations moved into the overflow menu and the children of
|
|
1783
|
+
* the expanded parents spliced in.
|
|
1784
|
+
*/
|
|
1785
|
+
protected readonly visibleGroups: _angular_core.Signal<readonly NavigationRenderGroup[]>;
|
|
1786
|
+
/**
|
|
1787
|
+
* Ids rendered with the selected styling. It is the active destination when it
|
|
1788
|
+
* is on screen, otherwise every rendered parent hiding it — a collapsed branch
|
|
1789
|
+
* or the overflow entry — so the user still sees where they are.
|
|
1790
|
+
*/
|
|
1791
|
+
protected readonly highlightedIds: _angular_core.Signal<ReadonlySet<string>>;
|
|
1792
|
+
/**
|
|
1793
|
+
* Rows of the floating submenu panel. Nested destinations one level down are
|
|
1794
|
+
* flattened under a heading, so the overflow menu can hold parents too.
|
|
1795
|
+
*/
|
|
1796
|
+
protected readonly popupEntries: _angular_core.Signal<readonly NavigationPanelEntry[]>;
|
|
1797
|
+
/** `true` when the floating submenu panel must be shown. */
|
|
1798
|
+
protected readonly isPopupOpen: _angular_core.Signal<boolean>;
|
|
1799
|
+
/** Element the floating submenu panel is anchored to. */
|
|
1800
|
+
protected readonly popupOrigin: _angular_core.Signal<HTMLElement>;
|
|
1801
|
+
/** Connected positions of the floating submenu panel, derived from the variant. */
|
|
1802
|
+
protected readonly popupPositions: _angular_core.Signal<ConnectedPosition[]>;
|
|
1803
|
+
/** `true` when the layout runs right-to-left; used to mirror the arrow keys. */
|
|
1804
|
+
private readonly isRtl;
|
|
1805
|
+
/**
|
|
1806
|
+
* Activates a destination, or expands it when it owns nested destinations.
|
|
1807
|
+
* A parent never navigates: it toggles its group inline in the wide variants
|
|
1808
|
+
* and opens the floating panel in the compact ones.
|
|
1809
|
+
* @param render - The render model of the activated destination.
|
|
1810
|
+
* @param event - The originating mouse or keyboard event.
|
|
1811
|
+
*/
|
|
1812
|
+
protected select(render: NavigationRenderItem, event: Event): void;
|
|
1813
|
+
/**
|
|
1814
|
+
* Emits `menuClick` when the leading menu button is pressed.
|
|
1815
|
+
*/
|
|
1816
|
+
protected onMenuClick(): void;
|
|
1817
|
+
/**
|
|
1818
|
+
* Closes the modal drawer when the scrim is clicked.
|
|
1819
|
+
*/
|
|
1820
|
+
protected onScrimClick(): void;
|
|
1821
|
+
/**
|
|
1822
|
+
* Handles keyboard interaction: arrow keys move the focus between
|
|
1823
|
+
* destinations, `Home` / `End` jump to the first / last one and `Escape`
|
|
1824
|
+
* closes the floating submenu panel or the modal drawer.
|
|
1825
|
+
*
|
|
1826
|
+
* The same handler serves the surface and the floating panel, and it tells
|
|
1827
|
+
* them apart by `currentTarget`: roving inside an open `role="menu"` must stay
|
|
1828
|
+
* inside it, and a programmatic `focus()` is NOT stopped by the focus trap, so
|
|
1829
|
+
* sharing one element list would send the focus onto the surface behind the
|
|
1830
|
+
* overlay.
|
|
1831
|
+
*
|
|
1832
|
+
* @param event - The originating keyboard event.
|
|
1833
|
+
*/
|
|
1834
|
+
protected onKeydown(event: KeyboardEvent): void;
|
|
1835
|
+
/**
|
|
1836
|
+
* Expands or collapses the parent destination with the given id.
|
|
1837
|
+
* @param id - Identifier of the parent destination to toggle.
|
|
1838
|
+
*/
|
|
1839
|
+
toggleExpanded(id: string): void;
|
|
1840
|
+
/**
|
|
1841
|
+
* Opens the floating submenu panel of a parent destination.
|
|
1842
|
+
* @param render - The render model of the parent destination.
|
|
1843
|
+
* @param event - The originating event, used to anchor the panel.
|
|
1844
|
+
*/
|
|
1845
|
+
protected openPopup(render: NavigationRenderItem, event: Event): void;
|
|
1846
|
+
/**
|
|
1847
|
+
* Closes the floating submenu panel.
|
|
1848
|
+
*/
|
|
1849
|
+
closePopup(): void;
|
|
1850
|
+
/**
|
|
1851
|
+
* Opens the modal drawer. No-op for the other variants.
|
|
1852
|
+
*/
|
|
1853
|
+
openDrawer(): void;
|
|
1854
|
+
/**
|
|
1855
|
+
* Closes the modal drawer. No-op for the other variants.
|
|
1856
|
+
*/
|
|
1857
|
+
closeDrawer(): void;
|
|
1858
|
+
/**
|
|
1859
|
+
* Toggles the modal drawer. No-op for the other variants.
|
|
1860
|
+
*/
|
|
1861
|
+
toggleDrawer(): void;
|
|
1862
|
+
/**
|
|
1863
|
+
* Moves the browser focus to the destination with the given id.
|
|
1864
|
+
* @param id - Identifier of the destination to focus.
|
|
1865
|
+
* @returns `true` when a matching destination was found and focused.
|
|
1866
|
+
*/
|
|
1867
|
+
focusItem(id: string): boolean;
|
|
1868
|
+
/**
|
|
1869
|
+
* Moves the compact-only destinations of a group into a synthesized overflow
|
|
1870
|
+
* destination appended at the end of the group.
|
|
1871
|
+
* @param group - The group to process.
|
|
1872
|
+
* @param overflow - `true` when `hideWhenCompact` must be honoured.
|
|
1873
|
+
* @param max - Hard cap on the inline destinations; `0` disables it.
|
|
1874
|
+
* @returns The group with the overflow destination applied.
|
|
1875
|
+
*/
|
|
1876
|
+
private applyOverflow;
|
|
1877
|
+
/**
|
|
1878
|
+
* Builds the synthesized, icon-only overflow destination.
|
|
1879
|
+
* @param children - The destinations moved into the overflow menu.
|
|
1880
|
+
* @returns The render model of the overflow destination.
|
|
1881
|
+
*/
|
|
1882
|
+
private buildOverflowItem;
|
|
1883
|
+
/**
|
|
1884
|
+
* Merges the `top` and `bottom` groups into a single `top` group, combining
|
|
1885
|
+
* the sections that share an id so `@for` track keys stay unique.
|
|
1886
|
+
* @param groups - The groups to merge.
|
|
1887
|
+
* @returns A single-group array, or the input when there is nothing to merge.
|
|
1888
|
+
*/
|
|
1889
|
+
private static mergeGroups;
|
|
1890
|
+
/**
|
|
1891
|
+
* Builds the render model of a destination and, recursively, of its children.
|
|
1892
|
+
* @param item - The source destination.
|
|
1893
|
+
* @param section - The section the destination belongs to.
|
|
1894
|
+
* @param parent - The parent destination, for nested destinations.
|
|
1895
|
+
* @param depth - Nesting level of the destination.
|
|
1896
|
+
* @param counter - Shared counter producing the flat destination index.
|
|
1897
|
+
* @param hrefs - Map of destination id to resolved URL.
|
|
1898
|
+
* @param dark - `true` when the dark theme is active, selecting the dark sprite frames.
|
|
1899
|
+
* @returns The render model of the destination.
|
|
1900
|
+
*/
|
|
1901
|
+
private static buildRenderItem;
|
|
1902
|
+
/**
|
|
1903
|
+
* Translates a sprite descriptor into the inline custom properties the
|
|
1904
|
+
* stylesheet uses to size the icon and to shift `background-position` per
|
|
1905
|
+
* interaction state.
|
|
1906
|
+
*
|
|
1907
|
+
* The sheet is rescaled through `background-size` instead of being drawn at
|
|
1908
|
+
* its natural size: that is what lets a strip of 26px frames be painted at the
|
|
1909
|
+
* 24px of the surrounding Material icons without the neighbouring frames
|
|
1910
|
+
* bleeding into the box, and it makes the step between two frames exactly the
|
|
1911
|
+
* rendered side.
|
|
1912
|
+
*
|
|
1913
|
+
* @param item - The destination whose sprite must be translated.
|
|
1914
|
+
* @param dark - `true` when the dark theme is active, selecting the `dark` frame set.
|
|
1915
|
+
* @returns The inline style map, or `undefined` when the destination uses no sprite.
|
|
1916
|
+
*/
|
|
1917
|
+
private static buildSpriteStyle;
|
|
1918
|
+
/**
|
|
1919
|
+
* Number of frames a sprite sheet holds, needed to rescale it.
|
|
1920
|
+
* @param sprite - The sprite descriptor to measure.
|
|
1921
|
+
* @returns The declared frame count, or the highest referenced index plus one.
|
|
1922
|
+
*/
|
|
1923
|
+
private static spriteFrameCount;
|
|
1924
|
+
/**
|
|
1925
|
+
* Formats the badge content of a destination.
|
|
1926
|
+
* @param item - The destination whose badge must be formatted.
|
|
1927
|
+
* @returns The badge text, or an empty string for a dot badge / no badge.
|
|
1928
|
+
*/
|
|
1929
|
+
private static formatBadge;
|
|
1930
|
+
/**
|
|
1931
|
+
* Strips the query string and the fragment from a URL.
|
|
1932
|
+
* @param url - The URL to normalise.
|
|
1933
|
+
* @returns The path portion of the URL.
|
|
1934
|
+
*/
|
|
1935
|
+
private static pathOf;
|
|
1936
|
+
static ɵfac: _angular_core.ɵɵFactoryDeclaration<NavigationBarComponent, never>;
|
|
1937
|
+
static ɵcmp: _angular_core.ɵɵComponentDeclaration<NavigationBarComponent, "navigation-bar", never, { "items": { "alias": "items"; "required": false; "isSignal": true; }; "sections": { "alias": "sections"; "required": false; "isSignal": true; }; "variant": { "alias": "variant"; "required": false; "isSignal": true; }; "autoVariants": { "alias": "autoVariants"; "required": false; "isSignal": true; }; "selectedId": { "alias": "selectedId"; "required": false; "isSignal": true; }; "expandedIds": { "alias": "expandedIds"; "required": false; "isSignal": true; }; "open": { "alias": "open"; "required": false; "isSignal": true; }; "labelVisibility": { "alias": "labelVisibility"; "required": false; "isSignal": true; }; "itemLayout": { "alias": "itemLayout"; "required": false; "isSignal": true; }; "alignment": { "alias": "alignment"; "required": false; "isSignal": true; }; "position": { "alias": "position"; "required": false; "isSignal": true; }; "headline": { "alias": "headline"; "required": false; "isSignal": true; }; "showMenuButton": { "alias": "showMenuButton"; "required": false; "isSignal": true; }; "menuIcon": { "alias": "menuIcon"; "required": false; "isSignal": true; }; "expandIcon": { "alias": "expandIcon"; "required": false; "isSignal": true; }; "overflowMode": { "alias": "overflowMode"; "required": false; "isSignal": true; }; "overflowIcon": { "alias": "overflowIcon"; "required": false; "isSignal": true; }; "overflowLabel": { "alias": "overflowLabel"; "required": false; "isSignal": true; }; "maxVisibleItems": { "alias": "maxVisibleItems"; "required": false; "isSignal": true; }; "menuAriaLabel": { "alias": "menuAriaLabel"; "required": false; "isSignal": true; }; "ariaLabel": { "alias": "ariaLabel"; "required": false; "isSignal": true; }; "scrim": { "alias": "scrim"; "required": false; "isSignal": true; }; "closeOnSelect": { "alias": "closeOnSelect"; "required": false; "isSignal": true; }; "elevated": { "alias": "elevated"; "required": false; "isSignal": true; }; "bordered": { "alias": "bordered"; "required": false; "isSignal": true; }; "tooltips": { "alias": "tooltips"; "required": false; "isSignal": true; }; "routerSync": { "alias": "routerSync"; "required": false; "isSignal": true; }; "relativeTo": { "alias": "relativeTo"; "required": false; "isSignal": true; }; "width": { "alias": "width"; "required": false; "isSignal": true; }; "hidden": { "alias": "hidden"; "required": false; "isSignal": true; }; }, { "selectedId": "selectedIdChange"; "expandedIds": "expandedIdsChange"; "open": "openChange"; "itemSelected": "itemSelected"; "menuClick": "menuClick"; }, never, ["[navHeader]", "[navFab]", "[navFooter]"], true, never>;
|
|
1938
|
+
}
|
|
1939
|
+
|
|
1940
|
+
export { ALIAS_FAMILIES, BS5_BREAKPOINTS, BusyDialogComponent, BusyTimer, CANONICAL_ALIASES, ConfirmDialogComponent, CredentialsDialogComponent, DEFAULT_NAVIGATION_AUTO_VARIANTS, DeleteDialogComponent, DeleteDialogConfirmMode, DialogService, EXPANDED_NAVIGATION_VARIANTS, FlexLayoutModule, FxClassDirective, FxFlexAlignDirective, FxFlexDirective, FxFlexFillDirective, FxFlexOffsetDirective, FxFlexOrderDirective, FxGridAreaDirective, FxGridColumnDirective, FxGridDirective, FxLayoutAlignDirective, FxLayoutDirective, FxLayoutGapDirective, FxLayoutWrapDirective, FxShowHideDirective, FxStyleDirective, IfBpDirective, InfoDialogComponent, LAYOUT_BREAKPOINTS, LAYOUT_VALUES, MediaObserver, NAVIGATION_OVERFLOW_ID, NON_CANONICAL_PRIORITY, NavigationBarComponent, OtpInputComponent, PaginatorIntl, PasswordStrengthComponent, RecoverPasswordDialogComponent, ResetPasswordDialogComponent, ResponsiveBaseDirective, ToastComponent, UIService, applyVisibility, buildAlignStyles, buildFlexStyles, buildLayoutCSS, resolve, resolveAll, resolveFlexInput, resolveNonCanonical, resolveParentFlow, validateBasis, validateLayoutValue, validateWrapValue };
|
|
1941
|
+
export type { BpValues, BreakpointAlias, CanonicalKey, ConfirmDialogData, ConfirmDialogOption, CredentialsDialogData, CredentialsDialogResult, DeleteDialogData, DialogOption, DialogResult, IDialogService, InfoDialogData, NavigationAlignment, NavigationAutoVariants, NavigationBadge, NavigationIconSprite, NavigationItem, NavigationItemLayout, NavigationLabelVisibility, NavigationOverflowMode, NavigationPosition, NavigationSection, NavigationSelection, NavigationSpriteFrames, NavigationVariant, NcValues, NonCanonicalKey, RecoverPasswordDialogData, RecoverPasswordDialogResult, ResetPasswordDialogData, ResetPasswordDialogMode, ResetPasswordDialogResult, ResolvedNavigationVariant, ToastData };
|