@arsedizioni/ars-utils 22.1.1 → 22.1.3

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.
Files changed (27) hide show
  1. package/fesm2022/arsedizioni-ars-utils-clipper.common.mjs +24 -24
  2. package/fesm2022/arsedizioni-ars-utils-clipper.common.mjs.map +1 -1
  3. package/fesm2022/arsedizioni-ars-utils-clipper.ui.mjs +48 -48
  4. package/fesm2022/arsedizioni-ars-utils-core.mjs +106 -100
  5. package/fesm2022/arsedizioni-ars-utils-core.mjs.map +1 -1
  6. package/fesm2022/arsedizioni-ars-utils-evolution.common.mjs +15 -15
  7. package/fesm2022/arsedizioni-ars-utils-evolution.common.mjs.map +1 -1
  8. package/fesm2022/arsedizioni-ars-utils-help.mjs +9 -9
  9. package/fesm2022/arsedizioni-ars-utils-support.common.mjs +9 -9
  10. package/fesm2022/arsedizioni-ars-utils-support.common.mjs.map +1 -1
  11. package/fesm2022/arsedizioni-ars-utils-support.ui.mjs +6 -6
  12. package/fesm2022/arsedizioni-ars-utils-tinymce.mjs +3 -3
  13. package/fesm2022/arsedizioni-ars-utils-ui.application.mjs +57 -57
  14. package/fesm2022/arsedizioni-ars-utils-ui.mjs +572 -101
  15. package/fesm2022/arsedizioni-ars-utils-ui.mjs.map +1 -1
  16. package/fesm2022/arsedizioni-ars-utils-ui.oauth.mjs +8 -15
  17. package/fesm2022/arsedizioni-ars-utils-ui.oauth.mjs.map +1 -1
  18. package/package.json +1 -1
  19. package/types/arsedizioni-ars-utils-clipper.common.d.ts +1 -2
  20. package/types/arsedizioni-ars-utils-clipper.ui.d.ts +1 -1
  21. package/types/arsedizioni-ars-utils-core.d.ts +11 -2
  22. package/types/arsedizioni-ars-utils-core.d.ts.map +1 -0
  23. package/types/arsedizioni-ars-utils-evolution.common.d.ts +1 -2
  24. package/types/arsedizioni-ars-utils-support.common.d.ts +1 -2
  25. package/types/arsedizioni-ars-utils-ui.application.d.ts +2 -2
  26. package/types/arsedizioni-ars-utils-ui.d.ts +354 -23
  27. package/types/arsedizioni-ars-utils-ui.oauth.d.ts +2 -13
@@ -1,6 +1,6 @@
1
1
  import { MatPaginatorIntl } from '@angular/material/paginator';
2
2
  import * as _angular_core from '@angular/core';
3
- import { ElementRef, TemplateRef, InjectionToken, Signal, Renderer2 } from '@angular/core';
3
+ import { ElementRef, InjectionToken, TemplateRef, 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,8 @@ 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 { TooltipPosition } from '@angular/material/tooltip';
12
+ import { ActivatedRoute } from '@angular/router';
11
13
 
12
14
  interface DialogResult {
13
15
  result?: 'ok' | 'cancel' | 'other';
@@ -410,7 +412,7 @@ declare class BusyDialogComponent {
410
412
  /** Current progress value (0–100). Used when `progressMode` is `'determinate'`. */
411
413
  readonly progress: _angular_core.WritableSignal<number>;
412
414
  /** Progress mode passed to the Material progress components. */
413
- readonly progressMode: _angular_core.WritableSignal<"determinate" | "indeterminate">;
415
+ readonly progressMode: _angular_core.WritableSignal<"indeterminate" | "determinate">;
414
416
  /** Message displayed above the progress indicator. */
415
417
  readonly message: _angular_core.WritableSignal<string>;
416
418
  /**
@@ -626,25 +628,6 @@ declare class PasswordStrengthComponent {
626
628
  static ɵcmp: _angular_core.ɵɵComponentDeclaration<PasswordStrengthComponent, "password-strength", never, { "password": { "alias": "password"; "required": false; "isSignal": true; }; }, {}, never, never, true, never>;
627
629
  }
628
630
 
629
- declare class IfBpDirective {
630
- private readonly tpl;
631
- private readonly vcr;
632
- private readonly media;
633
- /** Space-separated list of breakpoint aliases, e.g. `'lg gt-lg handset'` */
634
- readonly ifBp: _angular_core.InputSignal<string>;
635
- /** Optional else-template shown when no alias is active */
636
- readonly ifBpElse: _angular_core.InputSignal<TemplateRef<unknown>>;
637
- private readonly _aliases;
638
- private readonly _isActive;
639
- /** Which template is currently rendered. `undefined` = nothing decided yet. */
640
- private _rendered;
641
- /** The TemplateRef instance currently rendered (detects [ifBpElse] swaps). */
642
- private _renderedTpl;
643
- constructor();
644
- static ɵfac: _angular_core.ɵɵFactoryDeclaration<IfBpDirective, never>;
645
- 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>;
646
- }
647
-
648
631
  /**
649
632
  * @file breakpoints.ts
650
633
  * Angular CDK (v22) breakpoint definitions.
@@ -699,6 +682,354 @@ declare const ALIAS_FAMILIES: {
699
682
  readonly lt: readonly ["lt-sm", "lt-md", "lt-lg", "lt-xl"];
700
683
  };
701
684
 
685
+ /**
686
+ * @file navigation.definitions.ts
687
+ *
688
+ * Data model shared by every variant of the Material Design 3 (Expressive)
689
+ * navigation component: Navigation bar, Navigation rail (collapsed and
690
+ * expanded) and Navigation drawer (standard and modal).
691
+ *
692
+ * Reference: https://m3.material.io/components/navigation-bar/specs
693
+ * https://m3.material.io/components/navigation-rail/specs
694
+ * https://m3.material.io/components/navigation-drawer/specs
695
+ */
696
+
697
+ /**
698
+ * Rendering variants supported by the component.
699
+ *
700
+ * - `bar` — Navigation bar, horizontal, anchored to the bottom edge (compact windows).
701
+ * - `rail` — Collapsed navigation rail, vertical, 96dp wide (medium / expanded windows).
702
+ * - `rail-expanded` — Expanded navigation rail, 220dp+, labels beside icons, supports sections.
703
+ * - `drawer` — Standard navigation drawer, 360dp, inline with the page content.
704
+ * - `modal` — Modal navigation drawer: same as `drawer` but overlaid on a scrim.
705
+ * - `auto` — Resolved at runtime from the active CDK breakpoint (see `autoVariants`).
706
+ */
707
+ type NavigationVariant = 'auto' | 'bar' | 'rail' | 'rail-expanded' | 'drawer' | 'modal';
708
+ /** Variants that can actually be rendered, i.e. every variant except `auto`. */
709
+ type ResolvedNavigationVariant = Exclude<NavigationVariant, 'auto'>;
710
+ /**
711
+ * Label visibility policy, mirroring the four Material label visibility modes.
712
+ *
713
+ * - `auto` — Labels are always shown (current M3 guidance).
714
+ * - `labeled` — Labels are always shown.
715
+ * - `selected` — Only the active destination shows its label (legacy M3 "auto" behaviour).
716
+ * - `unlabeled` — Icons only; the accessible name comes from `aria-label` / tooltip.
717
+ */
718
+ type NavigationLabelVisibility = 'auto' | 'labeled' | 'selected' | 'unlabeled';
719
+ /**
720
+ * Item layout inside a destination.
721
+ *
722
+ * - `vertical` — Icon stacked above the label (M3 default for compact windows).
723
+ * - `horizontal` — Icon at the start of the label (M3 Expressive, medium windows and above).
724
+ * - `auto` — `vertical` on compact windows, `horizontal` from 600dp upwards; always
725
+ * `horizontal` for the expanded rail and the drawer.
726
+ */
727
+ type NavigationItemLayout = 'auto' | 'vertical' | 'horizontal';
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';
732
+ /**
733
+ * Badge attached to a destination.
734
+ * When `value` is `undefined` a small dot badge is rendered, otherwise a large
735
+ * badge showing the value (clamped to `max`).
736
+ */
737
+ interface NavigationBadge {
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
+ }
786
+ /**
787
+ * A group of destinations. Section headlines and dividers are only rendered by
788
+ * the expanded rail and by the drawer, exactly as described by the M3 specs.
789
+ */
790
+ interface NavigationSection {
791
+ /** Stable unique identifier; used as the `@for` track key. */
792
+ id: string;
793
+ /** Optional headline rendered above the group. */
794
+ label?: string;
795
+ /** Destinations belonging to the section. */
796
+ items: readonly NavigationItem[];
797
+ /** When `true` a divider is rendered after the section. */
798
+ divider?: boolean;
799
+ }
800
+ /** Payload emitted when a destination is activated. */
801
+ interface NavigationSelection {
802
+ /** The activated destination. */
803
+ item: NavigationItem;
804
+ /** The section the destination belongs to, when sections are in use. */
805
+ section?: NavigationSection;
806
+ /** Zero-based index of the destination across the whole flattened list. */
807
+ index: number;
808
+ }
809
+ /** Map of breakpoint alias to the variant used when `variant` is `auto`. */
810
+ type NavigationAutoVariants = Partial<Record<BreakpointAlias, ResolvedNavigationVariant>>;
811
+ /**
812
+ * Default `auto` mapping, aligned with the Material 3 window size classes:
813
+ * compact windows get the navigation bar, medium and expanded windows get the
814
+ * collapsed rail, large and extra-large windows get the expanded rail.
815
+ */
816
+ declare const DEFAULT_NAVIGATION_AUTO_VARIANTS: Required<NavigationAutoVariants>;
817
+ /** Variants that render labels beside the icon and support sections and dividers. */
818
+ declare const EXPANDED_NAVIGATION_VARIANTS: readonly ResolvedNavigationVariant[];
819
+
820
+ /** Internal, pre-computed render model for a single destination. */
821
+ interface NavigationRenderItem {
822
+ /** The source destination. */
823
+ readonly item: NavigationItem;
824
+ /** Owning section, when sections are in use. */
825
+ readonly section?: NavigationSection;
826
+ /** Zero-based index across the whole flattened destination list. */
827
+ readonly index: number;
828
+ /** Resolved URL, when the destination is routed or external. */
829
+ readonly href?: string;
830
+ /** `true` when the destination navigates through the Angular router. */
831
+ readonly routed: boolean;
832
+ /** Material Symbols ligature for the unselected state. */
833
+ readonly iconOff?: string;
834
+ /** Material Symbols ligature for the selected state. */
835
+ readonly iconOn?: string;
836
+ /** Registered SVG icon name for the unselected state. */
837
+ readonly svgOff?: string;
838
+ /** Registered SVG icon name for the selected state. */
839
+ readonly svgOn?: string;
840
+ /** Rendered badge text; empty string means "dot badge". */
841
+ readonly badgeText: string;
842
+ /** `true` when the destination carries a badge of any kind. */
843
+ readonly hasBadge: boolean;
844
+ /** Accessible name announced for the destination. */
845
+ readonly ariaLabel: string;
846
+ /** Tooltip text used when the label is not visible. */
847
+ readonly tooltip: string;
848
+ }
849
+ /** Internal render model for a section and its destinations. */
850
+ interface NavigationRenderSection {
851
+ /** The source section. */
852
+ readonly section: NavigationSection;
853
+ /** Pre-computed destinations of the section. */
854
+ readonly items: readonly NavigationRenderItem[];
855
+ }
856
+ declare class NavigationBarComponent {
857
+ private readonly media;
858
+ private readonly router;
859
+ private readonly directionality;
860
+ private readonly destroyRef;
861
+ /** Flat list of destinations. Ignored when `sections` is provided. */
862
+ readonly items: _angular_core.InputSignal<readonly NavigationItem[]>;
863
+ /** Grouped destinations. Section headlines and dividers only render in the expanded variants. */
864
+ readonly sections: _angular_core.InputSignal<readonly NavigationSection[]>;
865
+ /** Rendering variant. `auto` resolves from the active breakpoint through `autoVariants`. */
866
+ readonly variant: _angular_core.InputSignal<NavigationVariant>;
867
+ /** Breakpoint → variant map used when `variant` is `auto`. Missing entries fall back to the M3 defaults. */
868
+ readonly autoVariants: _angular_core.InputSignal<Partial<Record<"xs" | "sm" | "md" | "lg" | "xl", ResolvedNavigationVariant>>>;
869
+ /** Two-way bound id of the selected destination. The router, when active, takes precedence. */
870
+ readonly selectedId: _angular_core.ModelSignal<string>;
871
+ /** Two-way bound open state of the modal drawer. Ignored by the other variants. */
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;
917
+ constructor();
918
+ /** Sections actually rendered: the `sections` input, or a single implicit section wrapping `items`. */
919
+ private readonly resolvedSections;
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>;
1012
+ }
1013
+
1014
+ declare class IfBpDirective {
1015
+ private readonly tpl;
1016
+ private readonly vcr;
1017
+ private readonly media;
1018
+ /** Space-separated list of breakpoint aliases, e.g. `'lg gt-lg handset'` */
1019
+ readonly ifBp: _angular_core.InputSignal<string>;
1020
+ /** Optional else-template shown when no alias is active */
1021
+ readonly ifBpElse: _angular_core.InputSignal<TemplateRef<unknown>>;
1022
+ private readonly _aliases;
1023
+ private readonly _isActive;
1024
+ /** Which template is currently rendered. `undefined` = nothing decided yet. */
1025
+ private _rendered;
1026
+ /** The TemplateRef instance currently rendered (detects [ifBpElse] swaps). */
1027
+ private _renderedTpl;
1028
+ constructor();
1029
+ static ɵfac: _angular_core.ɵɵFactoryDeclaration<IfBpDirective, never>;
1030
+ 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>;
1031
+ }
1032
+
702
1033
  /**
703
1034
  * @file media-observer.service.ts (v2 — optimized)
704
1035
  *
@@ -1292,5 +1623,5 @@ declare class FlexLayoutModule {
1292
1623
  static ɵinj: _angular_core.ɵɵInjectorDeclaration<FlexLayoutModule>;
1293
1624
  }
1294
1625
 
1295
- export { ALIAS_FAMILIES, BS5_BREAKPOINTS, BusyDialogComponent, BusyTimer, CANONICAL_ALIASES, ConfirmDialogComponent, CredentialsDialogComponent, DeleteDialogComponent, DeleteDialogConfirmMode, DialogService, FlexLayoutModule, FxClassDirective, FxFlexAlignDirective, FxFlexDirective, FxFlexFillDirective, FxFlexOffsetDirective, FxFlexOrderDirective, FxGridAreaDirective, FxGridColumnDirective, FxGridDirective, FxLayoutAlignDirective, FxLayoutDirective, FxLayoutGapDirective, FxLayoutWrapDirective, FxShowHideDirective, FxStyleDirective, IfBpDirective, InfoDialogComponent, LAYOUT_BREAKPOINTS, LAYOUT_VALUES, MediaObserver, NON_CANONICAL_PRIORITY, OtpInputComponent, PaginatorIntl, PasswordStrengthComponent, RecoverPasswordDialogComponent, ResetPasswordDialogComponent, ResponsiveBaseDirective, ToastComponent, UIService, applyVisibility, buildAlignStyles, buildFlexStyles, buildLayoutCSS, resolve, resolveAll, resolveFlexInput, resolveNonCanonical, resolveParentFlow, validateBasis, validateLayoutValue, validateWrapValue };
1296
- export type { BpValues, BreakpointAlias, CanonicalKey, ConfirmDialogData, ConfirmDialogOption, CredentialsDialogData, CredentialsDialogResult, DeleteDialogData, DialogOption, DialogResult, IDialogService, InfoDialogData, NcValues, NonCanonicalKey, RecoverPasswordDialogData, RecoverPasswordDialogResult, ResetPasswordDialogData, ResetPasswordDialogMode, ResetPasswordDialogResult, ToastData };
1626
+ 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, NON_CANONICAL_PRIORITY, NavigationBarComponent, OtpInputComponent, PaginatorIntl, PasswordStrengthComponent, RecoverPasswordDialogComponent, ResetPasswordDialogComponent, ResponsiveBaseDirective, ToastComponent, UIService, applyVisibility, buildAlignStyles, buildFlexStyles, buildLayoutCSS, resolve, resolveAll, resolveFlexInput, resolveNonCanonical, resolveParentFlow, validateBasis, validateLayoutValue, validateWrapValue };
1627
+ export type { BpValues, BreakpointAlias, CanonicalKey, ConfirmDialogData, ConfirmDialogOption, CredentialsDialogData, CredentialsDialogResult, DeleteDialogData, DialogOption, DialogResult, IDialogService, InfoDialogData, NavigationAlignment, NavigationAutoVariants, NavigationBadge, NavigationItem, NavigationItemLayout, NavigationLabelVisibility, NavigationPosition, NavigationSection, NavigationSelection, NavigationVariant, NcValues, NonCanonicalKey, RecoverPasswordDialogData, RecoverPasswordDialogResult, ResetPasswordDialogData, ResetPasswordDialogMode, ResetPasswordDialogResult, ResolvedNavigationVariant, ToastData };
@@ -1,18 +1,8 @@
1
1
  import * as _angular_core from '@angular/core';
2
- import { EnvironmentService } from '@arsedizioni/ars-utils/core';
2
+ import { LoginOAuthResult, EnvironmentService } from '@arsedizioni/ars-utils/core';
3
3
  import { MsalGuardConfiguration, MsalInterceptorConfiguration } from '@azure/msal-angular';
4
4
  import { IPublicClientApplication } from '@azure/msal-browser';
5
5
 
6
- declare enum LoginOAuthType {
7
- None = 0,
8
- Microsoft = 1,
9
- Google = 2
10
- }
11
- interface LoginOAuthResult {
12
- type: LoginOAuthType;
13
- token: string;
14
- }
15
-
16
6
  declare function MSALInstanceFactory(environment: EnvironmentService): IPublicClientApplication;
17
7
  declare function MSALInterceptorConfigFactory(environment: EnvironmentService): MsalInterceptorConfiguration;
18
8
  declare function MSALGuardConfigFactory(): MsalGuardConfiguration;
@@ -70,5 +60,4 @@ declare class LoginOAuthOkMSComponent {
70
60
  static ɵcmp: _angular_core.ɵɵComponentDeclaration<LoginOAuthOkMSComponent, "app-login-oauth-ok-ms", never, { "message": { "alias": "message"; "required": false; "isSignal": true; }; }, {}, never, never, true, never>;
71
61
  }
72
62
 
73
- export { LoginOAuthComponent, LoginOAuthOkMSComponent, LoginOAuthType, MSALGuardConfigFactory, MSALInstanceFactory, MSALInterceptorConfigFactory };
74
- export type { LoginOAuthResult };
63
+ export { LoginOAuthComponent, LoginOAuthOkMSComponent, MSALGuardConfigFactory, MSALInstanceFactory, MSALInterceptorConfigFactory };