@almoamendev/ngx-md3 0.5.5 → 0.7.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/package.json
CHANGED
package/src/lib/styles/md3.scss
CHANGED
|
@@ -510,6 +510,14 @@ md3-badge {
|
|
|
510
510
|
height: 100%;
|
|
511
511
|
overflow-x: hidden;
|
|
512
512
|
overflow-y: auto;
|
|
513
|
+
|
|
514
|
+
// A floating toolbar in a scaffold bar covers content that it does not reserve. The
|
|
515
|
+
// scaffold publishes how much, and the fallback is 0, so a layout without one is
|
|
516
|
+
// unchanged. Set these to 0 on a page that needs full-bleed content.
|
|
517
|
+
padding-block-start: var(--md-scaffold-floating-inset-block-start, 0em);
|
|
518
|
+
padding-block-end: var(--md-scaffold-floating-inset-block-end, 0em);
|
|
519
|
+
scroll-padding-block-start: var(--md-scaffold-floating-inset-block-start, 0em);
|
|
520
|
+
scroll-padding-block-end: var(--md-scaffold-floating-inset-block-end, 0em);
|
|
513
521
|
}
|
|
514
522
|
}
|
|
515
523
|
|
|
@@ -53,6 +53,62 @@ type ListLeadingSize = 'image' | 'small-video' | 'large-video';
|
|
|
53
53
|
*/
|
|
54
54
|
type CarouselLayout = 'multi-browse';
|
|
55
55
|
|
|
56
|
+
/**
|
|
57
|
+
* The toolbar container style.
|
|
58
|
+
*
|
|
59
|
+
* `floating` draws a rounded, elevated container with an outside margin. In a scaffold bar
|
|
60
|
+
* region it leaves the layout flow, so the content passes behind it. In a scaffold rail
|
|
61
|
+
* region it stays in the flow and reserves its own space.
|
|
62
|
+
*
|
|
63
|
+
* `docked` fills its region, has square corners and no elevation. The Material 3
|
|
64
|
+
* specification allows it in a bar region only, because it spans the full window width.
|
|
65
|
+
*/
|
|
66
|
+
type ToolbarType = 'floating' | 'docked';
|
|
67
|
+
|
|
68
|
+
/**
|
|
69
|
+
* The toolbar color configuration.
|
|
70
|
+
*
|
|
71
|
+
* `standard` uses a surface container. `vibrant` uses a primary container, and remaps the
|
|
72
|
+
* colors of the buttons inside it, as the Material 3 specification describes.
|
|
73
|
+
*/
|
|
74
|
+
type ToolbarColor = 'standard' | 'vibrant';
|
|
75
|
+
|
|
76
|
+
/**
|
|
77
|
+
* The axis the toolbar items follow.
|
|
78
|
+
*
|
|
79
|
+
* The value is optional on the component. When it is not set, a toolbar in a scaffold rail
|
|
80
|
+
* region becomes `vertical`, and every other toolbar becomes `horizontal`.
|
|
81
|
+
*/
|
|
82
|
+
type ToolbarOrientation = 'horizontal' | 'vertical';
|
|
83
|
+
|
|
84
|
+
/**
|
|
85
|
+
* Where the toolbar sits along its main axis.
|
|
86
|
+
*
|
|
87
|
+
* A docked toolbar fills its region, so the value moves the item row inside the container. A
|
|
88
|
+
* floating toolbar is as wide as its content, so the value moves the container itself, and the
|
|
89
|
+
* FAB with it, inside the region.
|
|
90
|
+
*/
|
|
91
|
+
type ToolbarAlignment = 'start' | 'center' | 'end';
|
|
92
|
+
|
|
93
|
+
/**
|
|
94
|
+
* What the toolbar does when the scaffold main pane scrolls down.
|
|
95
|
+
*
|
|
96
|
+
* `none` does nothing. `hide` moves the toolbar out of the region. `collapse` hides every
|
|
97
|
+
* item that does not carry the `md3-toolbar-persistent` attribute, and keeps the FAB.
|
|
98
|
+
*
|
|
99
|
+
* A vertical toolbar ignores this input.
|
|
100
|
+
*/
|
|
101
|
+
type ToolbarScrollAction = 'none' | 'hide' | 'collapse';
|
|
102
|
+
|
|
103
|
+
/**
|
|
104
|
+
* The scaffold region a toolbar sits in, named by its logical side.
|
|
105
|
+
*
|
|
106
|
+
* `blockStart` and `blockEnd` are the top and bottom scaffold bars. `inlineStart` and
|
|
107
|
+
* `inlineEnd` are the leading and trailing scaffold rails. The names are logical, so they
|
|
108
|
+
* follow the document direction.
|
|
109
|
+
*/
|
|
110
|
+
type ToolbarRegion = 'blockStart' | 'blockEnd' | 'inlineStart' | 'inlineEnd';
|
|
111
|
+
|
|
56
112
|
/**
|
|
57
113
|
* Where the focal (large) items sit within the carousel container.
|
|
58
114
|
*/
|
|
@@ -569,26 +625,107 @@ type ViewportWidth = 'compact' | 'medium' | 'expanded' | 'large' | 'extra-large'
|
|
|
569
625
|
type ViewportHeight = 'compact' | 'medium' | 'expanded';
|
|
570
626
|
|
|
571
627
|
type Md3NavigationMode = 'none' | 'navigation-bar' | 'navigation-rail' | 'standard-drawer' | 'modal-drawer';
|
|
572
|
-
|
|
628
|
+
/**
|
|
629
|
+
* The state of the window and of the document, for the whole application.
|
|
630
|
+
*
|
|
631
|
+
* This service is a singleton on purpose. A layout region can appear more than once — a page
|
|
632
|
+
* scaffold, and a contained layout inside a full screen dialog — and each one keeps its own
|
|
633
|
+
* scroll and inset state in its own {@link LayoutService}. The window size, the breakpoints,
|
|
634
|
+
* the reading direction and the color scheme belong to the document, so they live here and
|
|
635
|
+
* every layout reads the same values.
|
|
636
|
+
*/
|
|
637
|
+
declare class ViewportService {
|
|
573
638
|
private readonly document;
|
|
574
639
|
private readonly breakpointObserver;
|
|
575
|
-
private readonly router;
|
|
576
640
|
private readonly widthQueries;
|
|
577
641
|
private readonly heightQueries;
|
|
642
|
+
readonly viewport: _angular_core.Signal<{
|
|
643
|
+
width: number;
|
|
644
|
+
height: number;
|
|
645
|
+
} | {
|
|
646
|
+
readonly width: number;
|
|
647
|
+
readonly height: number;
|
|
648
|
+
}>;
|
|
649
|
+
readonly widthClass: _angular_core.Signal<ViewportWidth>;
|
|
650
|
+
readonly heightClass: _angular_core.Signal<ViewportHeight>;
|
|
651
|
+
readonly direction: _angular_core.WritableSignal<"ltr" | "rtl">;
|
|
652
|
+
readonly isCompact: _angular_core.Signal<boolean>;
|
|
653
|
+
readonly isMedium: _angular_core.Signal<boolean>;
|
|
654
|
+
readonly isExpanded: _angular_core.Signal<boolean>;
|
|
655
|
+
readonly isLarge: _angular_core.Signal<boolean>;
|
|
656
|
+
readonly isExtraLarge: _angular_core.Signal<boolean>;
|
|
657
|
+
readonly isPortrait: _angular_core.Signal<boolean>;
|
|
658
|
+
readonly isLandscape: _angular_core.Signal<boolean>;
|
|
659
|
+
readonly preferredNavigationMode: _angular_core.Signal<"navigation-bar" | "navigation-rail" | "standard-drawer">;
|
|
660
|
+
darkMode: _angular_core.WritableSignal<boolean>;
|
|
661
|
+
constructor();
|
|
662
|
+
setDirection(direction: 'ltr' | 'rtl'): void;
|
|
663
|
+
static ɵfac: _angular_core.ɵɵFactoryDeclaration<ViewportService, never>;
|
|
664
|
+
static ɵprov: _angular_core.ɵɵInjectableDeclaration<ViewportService>;
|
|
665
|
+
}
|
|
666
|
+
|
|
667
|
+
type FloatingBarSide = 'blockStart' | 'blockEnd';
|
|
668
|
+
interface FloatingInset {
|
|
669
|
+
blockStart: number;
|
|
670
|
+
blockEnd: number;
|
|
671
|
+
}
|
|
672
|
+
|
|
673
|
+
/**
|
|
674
|
+
* The state of one layout container: what its main pane scrolls, and what its floating bars
|
|
675
|
+
* cover.
|
|
676
|
+
*
|
|
677
|
+
* The service is provided at the root, and the page scaffold uses that root instance. A
|
|
678
|
+
* contained layout — `md3-layout`, the one a full screen dialog holds — provides its own
|
|
679
|
+
* instance instead, so a toolbar inside it reads the scroll and the insets of that layout and
|
|
680
|
+
* never of the page behind it.
|
|
681
|
+
*
|
|
682
|
+
* The window size, the breakpoints, the reading direction and the color scheme belong to the
|
|
683
|
+
* document, not to a container. They live in {@link ViewportService}, and every instance of
|
|
684
|
+
* this service exposes the same signals, so an instance stays a complete view of the layout.
|
|
685
|
+
*/
|
|
686
|
+
declare class LayoutService {
|
|
687
|
+
private readonly viewportService;
|
|
688
|
+
private readonly router;
|
|
578
689
|
private mainPaneSub?;
|
|
579
690
|
private mainPaneEl?;
|
|
580
691
|
private panesContainerResizeObserver?;
|
|
581
692
|
private panesContainerResizeListener?;
|
|
693
|
+
/** Floating bars currently registered, keyed by the measured element. */
|
|
694
|
+
private readonly floatingBars;
|
|
695
|
+
/** How far the main pane must move before the scroll direction flips. Stops jitter. */
|
|
696
|
+
private static readonly scrollDirectionThreshold;
|
|
697
|
+
private scrollPosition;
|
|
582
698
|
readonly mainScrollTop: _angular_core.WritableSignal<number>;
|
|
583
699
|
readonly mainIsScrolled: _angular_core.Signal<boolean>;
|
|
584
700
|
/**
|
|
585
|
-
*
|
|
586
|
-
*
|
|
587
|
-
*
|
|
588
|
-
|
|
589
|
-
|
|
701
|
+
* True while the main pane moves down, false while it moves up. A small threshold keeps
|
|
702
|
+
* a jitter from flipping the value. Components that react to scrolling — the app bar and
|
|
703
|
+
* the toolbar — read this, so they can never disagree.
|
|
704
|
+
*/
|
|
705
|
+
readonly isScrollingDown: _angular_core.WritableSignal<boolean>;
|
|
706
|
+
/**
|
|
707
|
+
* Distance, in pixels, between the bottom of the container and the bottom edge of
|
|
708
|
+
* the .md3-panes-container — i.e. whatever the bottom bar currently reserves, or 0 when
|
|
709
|
+
* there is none. Overlay-based components anchored to the bottom (like Snackbar) read
|
|
710
|
+
* this so they never render lower than the panes container.
|
|
590
711
|
*/
|
|
591
712
|
readonly bottomInset: _angular_core.WritableSignal<number>;
|
|
713
|
+
/**
|
|
714
|
+
* Space a floating bar covers but does not reserve, per logical block side.
|
|
715
|
+
*
|
|
716
|
+
* A floating toolbar in a bar region leaves the layout flow, so its grid track collapses
|
|
717
|
+
* and the content flows under it. This signal reports what it covers, so the layout can
|
|
718
|
+
* pad the main pane and overlays can stay clear of it.
|
|
719
|
+
*
|
|
720
|
+
* A floating toolbar in a *rail* region stays in the flow and reserves its own space, so
|
|
721
|
+
* it never appears here.
|
|
722
|
+
*/
|
|
723
|
+
readonly floatingInset: _angular_core.WritableSignal<FloatingInset>;
|
|
724
|
+
/**
|
|
725
|
+
* The distance from the bottom that an anchored overlay must keep clear. It covers both
|
|
726
|
+
* the reserved bottom bar and any floating bottom bar over it.
|
|
727
|
+
*/
|
|
728
|
+
readonly bottomSafeInset: _angular_core.Signal<number>;
|
|
592
729
|
readonly viewport: _angular_core.Signal<{
|
|
593
730
|
width: number;
|
|
594
731
|
height: number;
|
|
@@ -613,7 +750,24 @@ declare class LayoutService {
|
|
|
613
750
|
private scrollMainPaneToTop;
|
|
614
751
|
registerMainPane(element: HTMLElement): void;
|
|
615
752
|
unregisterMainPane(element: HTMLElement): void;
|
|
753
|
+
private resetScrollDirection;
|
|
754
|
+
private updateScrollDirection;
|
|
616
755
|
registerPanesContainer(element: HTMLElement): void;
|
|
756
|
+
/**
|
|
757
|
+
* Register a floating bar so the layout and the overlays know what it covers.
|
|
758
|
+
*
|
|
759
|
+
* Call this for a floating toolbar in a *bar* region only. A rail region keeps the toolbar
|
|
760
|
+
* in the layout flow, so it reserves its space and needs no inset.
|
|
761
|
+
*/
|
|
762
|
+
registerFloatingBar(element: HTMLElement, side: FloatingBarSide): void;
|
|
763
|
+
unregisterFloatingBar(element: HTMLElement): void;
|
|
764
|
+
private measureFloatingBars;
|
|
765
|
+
/**
|
|
766
|
+
* `offsetHeight` ignores transforms. So a toolbar that scrolling has hidden or collapsed
|
|
767
|
+
* still reports its expanded size, and the content padding never moves while the user
|
|
768
|
+
* scrolls.
|
|
769
|
+
*/
|
|
770
|
+
private measureBlockSize;
|
|
617
771
|
unregisterPanesContainer(): void;
|
|
618
772
|
static ɵfac: _angular_core.ɵɵFactoryDeclaration<LayoutService, never>;
|
|
619
773
|
static ɵprov: _angular_core.ɵɵInjectableDeclaration<LayoutService>;
|
|
@@ -627,12 +781,43 @@ declare class Scaffold implements AfterViewInit, OnDestroy {
|
|
|
627
781
|
private sheets;
|
|
628
782
|
private bottomSheets;
|
|
629
783
|
private layout;
|
|
784
|
+
private el;
|
|
785
|
+
constructor();
|
|
630
786
|
ngAfterViewInit(): void;
|
|
631
787
|
ngOnDestroy(): void;
|
|
632
788
|
static ɵfac: _angular_core.ɵɵFactoryDeclaration<Scaffold, never>;
|
|
633
789
|
static ɵcmp: _angular_core.ɵɵComponentDeclaration<Scaffold, "md3-scaffold", never, {}, {}, never, ["[md3-scaffold-bar=top]", "[md3-scaffold-rail=leading]", "[md3-scaffold-pane=start]", "[md3-scaffold-pane=main]", "[md3-scaffold-pane=end]", "[md3-scaffold-rail=trailing]", "[md3-scaffold-bar=bottom]"], true, never>;
|
|
634
790
|
}
|
|
635
791
|
|
|
792
|
+
/**
|
|
793
|
+
* A layout region shell that fills its parent instead of the window.
|
|
794
|
+
*
|
|
795
|
+
* It places the same regions as `md3-scaffold` — the bar rows, the rail columns and the three
|
|
796
|
+
* panes — so the same region attributes work inside it:
|
|
797
|
+
*
|
|
798
|
+
* ```html
|
|
799
|
+
* <md3-layout>
|
|
800
|
+
* <md3-toolbar md3-scaffold-bar="bottom" toolbar-type="floating">...</md3-toolbar>
|
|
801
|
+
*
|
|
802
|
+
* <div md3-scaffold-pane="main">...</div>
|
|
803
|
+
* </md3-layout>
|
|
804
|
+
* ```
|
|
805
|
+
*
|
|
806
|
+
* Use it wherever a page-sized scaffold does not fit: the content of a full screen dialog, a
|
|
807
|
+
* card, a preview pane. A full screen dialog is the common one, because a toolbar needs a bar
|
|
808
|
+
* or a rail region and the dialog shell has none of its own.
|
|
809
|
+
*
|
|
810
|
+
* The layout provides its own {@link LayoutService}, so everything inside it reads the scroll
|
|
811
|
+
* position and the floating insets of *this* container. A floating toolbar therefore pads the
|
|
812
|
+
* main pane of the layout, and `scroll-action` follows the pane of the layout — never the page
|
|
813
|
+
* behind it. The window size, the breakpoints, the reading direction and the color scheme stay
|
|
814
|
+
* shared with the rest of the application.
|
|
815
|
+
*/
|
|
816
|
+
declare class Layout extends Scaffold {
|
|
817
|
+
static ɵfac: _angular_core.ɵɵFactoryDeclaration<Layout, never>;
|
|
818
|
+
static ɵcmp: _angular_core.ɵɵComponentDeclaration<Layout, "md3-layout", never, {}, {}, never, ["[md3-scaffold-bar=top]", "[md3-scaffold-rail=leading]", "[md3-scaffold-pane=start]", "[md3-scaffold-pane=main]", "[md3-scaffold-pane=end]", "[md3-scaffold-rail=trailing]", "[md3-scaffold-bar=bottom]"], true, never>;
|
|
819
|
+
}
|
|
820
|
+
|
|
636
821
|
declare class ScaffoldBar {
|
|
637
822
|
region: _angular_core.InputSignal<"top" | "bottom">;
|
|
638
823
|
static ɵfac: _angular_core.ɵɵFactoryDeclaration<ScaffoldBar, never>;
|
|
@@ -1343,6 +1528,16 @@ type AppBarScrollingStyle = 'none' | 'transparent' | 'elevate';
|
|
|
1343
1528
|
declare class AppBar implements ButtonContext {
|
|
1344
1529
|
private el;
|
|
1345
1530
|
private layoutService;
|
|
1531
|
+
private readonly inDialog;
|
|
1532
|
+
/**
|
|
1533
|
+
* The landmark role of the bar.
|
|
1534
|
+
*
|
|
1535
|
+
* A page has one banner, and the app bar of the page is it. A bar inside a dialog is not
|
|
1536
|
+
* the banner of the document — a banner nested in a dialog misleads a screen reader — so a
|
|
1537
|
+
* bar that finds itself in one carries no role. Set this input to force either value.
|
|
1538
|
+
*/
|
|
1539
|
+
barRole: _angular_core.InputSignal<"none" | "banner" | null>;
|
|
1540
|
+
protected readonly resolvedRole: Signal<string | null>;
|
|
1346
1541
|
title: _angular_core.InputSignal<string | null>;
|
|
1347
1542
|
subtitle: _angular_core.InputSignal<string | null>;
|
|
1348
1543
|
appBarType: _angular_core.InputSignal<AppBarType>;
|
|
@@ -1354,8 +1549,7 @@ declare class AppBar implements ButtonContext {
|
|
|
1354
1549
|
hasLogo: Signal<boolean>;
|
|
1355
1550
|
hasAvatar: Signal<boolean>;
|
|
1356
1551
|
mainIsScrolled: Signal<boolean>;
|
|
1357
|
-
isScrollingDown:
|
|
1358
|
-
private scrollPosition;
|
|
1552
|
+
isScrollingDown: Signal<boolean>;
|
|
1359
1553
|
private bottomExpandedHeight;
|
|
1360
1554
|
private bottomCollapse;
|
|
1361
1555
|
buttonContextSize: Signal<ButtonSize>;
|
|
@@ -1363,11 +1557,10 @@ declare class AppBar implements ButtonContext {
|
|
|
1363
1557
|
get element(): HTMLElement;
|
|
1364
1558
|
private getBottomOpacity;
|
|
1365
1559
|
private isBottomCollapsed;
|
|
1366
|
-
private updateScrollDirection;
|
|
1367
1560
|
private hasCollapsibleBottom;
|
|
1368
1561
|
private getHostFontSize;
|
|
1369
1562
|
static ɵfac: _angular_core.ɵɵFactoryDeclaration<AppBar, never>;
|
|
1370
|
-
static ɵcmp: _angular_core.ɵɵComponentDeclaration<AppBar, "md3-app-bar", never, { "title": { "alias": "bar-title"; "required": false; "isSignal": true; }; "subtitle": { "alias": "bar-subtitle"; "required": false; "isSignal": true; }; "appBarType": { "alias": "bar-type"; "required": false; "isSignal": true; }; "appBarScrollingStyle": { "alias": "scroll-style"; "required": false; "isSignal": true; }; "autoHide": { "alias": "auto-hide"; "required": false; "isSignal": true; }; "centerAligned": { "alias": "center-aligned"; "required": false; "isSignal": true; }; }, {}, ["logo", "avatar"], ["[md3-app-bar-leading]", "[md3-search-leading]", "[md3-input-element]", "[md3-search-trailing]", "[md3-app-bar-logo]", "[md3-app-bar-trailing]", "[md3-avatar]"], true, never>;
|
|
1563
|
+
static ɵcmp: _angular_core.ɵɵComponentDeclaration<AppBar, "md3-app-bar", never, { "barRole": { "alias": "bar-role"; "required": false; "isSignal": true; }; "title": { "alias": "bar-title"; "required": false; "isSignal": true; }; "subtitle": { "alias": "bar-subtitle"; "required": false; "isSignal": true; }; "appBarType": { "alias": "bar-type"; "required": false; "isSignal": true; }; "appBarScrollingStyle": { "alias": "scroll-style"; "required": false; "isSignal": true; }; "autoHide": { "alias": "auto-hide"; "required": false; "isSignal": true; }; "centerAligned": { "alias": "center-aligned"; "required": false; "isSignal": true; }; }, {}, ["logo", "avatar"], ["[md3-app-bar-leading]", "[md3-search-leading]", "[md3-input-element]", "[md3-search-trailing]", "[md3-app-bar-logo]", "[md3-app-bar-trailing]", "[md3-avatar]"], true, never>;
|
|
1371
1564
|
}
|
|
1372
1565
|
|
|
1373
1566
|
declare class AppBarLogo {
|
|
@@ -1375,6 +1568,119 @@ declare class AppBarLogo {
|
|
|
1375
1568
|
static ɵdir: _angular_core.ɵɵDirectiveDeclaration<AppBarLogo, "[md3-app-bar-logo]", never, {}, {}, never, never, true, never>;
|
|
1376
1569
|
}
|
|
1377
1570
|
|
|
1571
|
+
/**
|
|
1572
|
+
* Material 3 toolbar.
|
|
1573
|
+
*
|
|
1574
|
+
* The toolbar holds the actions of the current page. Put it in a scaffold region, and the
|
|
1575
|
+
* region decides where it goes:
|
|
1576
|
+
*
|
|
1577
|
+
* ```html
|
|
1578
|
+
* <md3-toolbar md3-scaffold-bar="bottom" toolbar-type="floating" scroll-action="collapse">
|
|
1579
|
+
* <md3-toolbar-item><button md3-icon-button>...</button></md3-toolbar-item>
|
|
1580
|
+
* <md3-toolbar-item md3-toolbar-persistent><button md3-icon-button>...</button></md3-toolbar-item>
|
|
1581
|
+
* <button md3-fab>...</button>
|
|
1582
|
+
* </md3-toolbar>
|
|
1583
|
+
* ```
|
|
1584
|
+
*
|
|
1585
|
+
* Every action goes inside an `md3-toolbar-item`. The toolbar projects that element only. A FAB is
|
|
1586
|
+
* the one exception: it sits beside the container, and a floating toolbar takes it.
|
|
1587
|
+
*
|
|
1588
|
+
* A **floating** toolbar in a *bar* region leaves the layout flow, so the content passes
|
|
1589
|
+
* behind it. The scaffold pads the main pane by the height it covers. In a *rail* region it
|
|
1590
|
+
* stays in the flow and reserves its own space, so no padding is necessary.
|
|
1591
|
+
*
|
|
1592
|
+
* A **docked** toolbar fills its region. The specification allows it in a bar region only.
|
|
1593
|
+
*
|
|
1594
|
+
* Group actions with `md3-button-group`. The toolbar has one slots region, and it keeps the
|
|
1595
|
+
* authored order. The space between the items follows the free space of the container, between
|
|
1596
|
+
* `--md-toolbar-gap-min` and `--md-toolbar-gap-max`.
|
|
1597
|
+
*/
|
|
1598
|
+
declare class Toolbar implements ButtonContext, OnDestroy {
|
|
1599
|
+
private readonly el;
|
|
1600
|
+
private readonly layout;
|
|
1601
|
+
private readonly scaffoldBar;
|
|
1602
|
+
private readonly scaffoldRail;
|
|
1603
|
+
toolbarType: _angular_core.InputSignal<ToolbarType>;
|
|
1604
|
+
toolbarColor: _angular_core.InputSignal<ToolbarColor>;
|
|
1605
|
+
/**
|
|
1606
|
+
* Leave this unset to follow the region. A rail region gives `vertical`, and every other
|
|
1607
|
+
* placement gives `horizontal`. Read `effectiveOrientation` for the resolved value.
|
|
1608
|
+
*/
|
|
1609
|
+
orientation: _angular_core.InputSignal<ToolbarOrientation | null>;
|
|
1610
|
+
alignment: _angular_core.InputSignal<ToolbarAlignment>;
|
|
1611
|
+
scrollAction: _angular_core.InputSignal<ToolbarScrollAction>;
|
|
1612
|
+
fabPosition: _angular_core.InputSignal<"start" | "end">;
|
|
1613
|
+
/** The collapse state. Scrolling writes to it, and you can read or set it yourself. */
|
|
1614
|
+
expanded: _angular_core.ModelSignal<boolean>;
|
|
1615
|
+
private readonly layoutElement;
|
|
1616
|
+
private readonly containerElement;
|
|
1617
|
+
private readonly slotsElement;
|
|
1618
|
+
private readonly fab;
|
|
1619
|
+
/** Set from the DOM, because `md3-toolbar-persistent` is a plain attribute, not a directive. */
|
|
1620
|
+
private readonly hasPersistentItem;
|
|
1621
|
+
private readonly hasFocusWithin;
|
|
1622
|
+
private persistentObserver?;
|
|
1623
|
+
private readonly isBrowser;
|
|
1624
|
+
/** The last published free space, to keep an unchanged measurement from writing to the DOM. */
|
|
1625
|
+
private lastGap;
|
|
1626
|
+
readonly isFloating: Signal<boolean>;
|
|
1627
|
+
readonly effectiveOrientation: Signal<ToolbarOrientation>;
|
|
1628
|
+
/** The logical side of the scaffold region, or null outside a scaffold. */
|
|
1629
|
+
readonly region: Signal<ToolbarRegion | null>;
|
|
1630
|
+
protected readonly isBarRegion: Signal<boolean>;
|
|
1631
|
+
protected readonly isRailRegion: Signal<boolean>;
|
|
1632
|
+
/** A floating toolbar inside a scaffold region needs the region to stop clipping it. */
|
|
1633
|
+
protected readonly isFloatingRegion: Signal<boolean>;
|
|
1634
|
+
/** Only a floating bar covers content it does not reserve. Everything else reserves its space. */
|
|
1635
|
+
private readonly coversContent;
|
|
1636
|
+
/** Something must survive a collapse, or a collapse is just a hide. */
|
|
1637
|
+
private readonly canCollapse;
|
|
1638
|
+
/** With a FAB and no marked item, a collapse takes the container away and the FAB stays alone. */
|
|
1639
|
+
protected readonly collapsesToFab: Signal<boolean>;
|
|
1640
|
+
/** A vertical toolbar never reacts to scrolling, and a docked one never collapses. */
|
|
1641
|
+
readonly resolvedScrollAction: Signal<ToolbarScrollAction>;
|
|
1642
|
+
readonly isHidden: _angular_core.WritableSignal<boolean>;
|
|
1643
|
+
readonly isCollapsed: Signal<boolean>;
|
|
1644
|
+
/**
|
|
1645
|
+
* The collapsed state in which the FAB stays alone.
|
|
1646
|
+
*
|
|
1647
|
+
* This is the state, not the capability. A FAB by itself must never take the container
|
|
1648
|
+
* away, because a toolbar that does not collapse keeps its items at all times.
|
|
1649
|
+
*/
|
|
1650
|
+
protected readonly isCollapsedToFab: Signal<boolean>;
|
|
1651
|
+
buttonContextSize: Signal<ButtonSize>;
|
|
1652
|
+
constructor();
|
|
1653
|
+
ngOnDestroy(): void;
|
|
1654
|
+
get element(): HTMLElement;
|
|
1655
|
+
protected onFocusIn(): void;
|
|
1656
|
+
protected onFocusOut(event: FocusEvent): void;
|
|
1657
|
+
private updateScrollState;
|
|
1658
|
+
/**
|
|
1659
|
+
* Divide the free space of the container between the gaps.
|
|
1660
|
+
*
|
|
1661
|
+
* The measurement starts from the host, because the host holds the space the region gives
|
|
1662
|
+
* the toolbar. A floating container is only as wide as its content, so reading the container
|
|
1663
|
+
* itself would feed the gap back into the measurement and the value would never settle.
|
|
1664
|
+
*/
|
|
1665
|
+
private measureGap;
|
|
1666
|
+
private publishGap;
|
|
1667
|
+
private extent;
|
|
1668
|
+
private contentExtent;
|
|
1669
|
+
private paddingExtent;
|
|
1670
|
+
/** What the other children of the layout take, the flex gap that separates them included. */
|
|
1671
|
+
private siblingExtent;
|
|
1672
|
+
private watchPersistentItems;
|
|
1673
|
+
private checkConfiguration;
|
|
1674
|
+
private warn;
|
|
1675
|
+
static ɵfac: _angular_core.ɵɵFactoryDeclaration<Toolbar, never>;
|
|
1676
|
+
static ɵcmp: _angular_core.ɵɵComponentDeclaration<Toolbar, "md3-toolbar", never, { "toolbarType": { "alias": "toolbar-type"; "required": false; "isSignal": true; }; "toolbarColor": { "alias": "toolbar-color"; "required": false; "isSignal": true; }; "orientation": { "alias": "orientation"; "required": false; "isSignal": true; }; "alignment": { "alias": "alignment"; "required": false; "isSignal": true; }; "scrollAction": { "alias": "scroll-action"; "required": false; "isSignal": true; }; "fabPosition": { "alias": "fab-position"; "required": false; "isSignal": true; }; "expanded": { "alias": "expanded"; "required": false; "isSignal": true; }; }, { "expanded": "expandedChange"; }, ["fab"], ["[md3-fab]", "md3-toolbar-item"], true, never>;
|
|
1677
|
+
}
|
|
1678
|
+
|
|
1679
|
+
declare class ToolbarItem {
|
|
1680
|
+
static ɵfac: _angular_core.ɵɵFactoryDeclaration<ToolbarItem, never>;
|
|
1681
|
+
static ɵdir: _angular_core.ɵɵDirectiveDeclaration<ToolbarItem, "md3-toolbar-item", never, {}, {}, never, never, true, never>;
|
|
1682
|
+
}
|
|
1683
|
+
|
|
1378
1684
|
declare class NavigationItem {
|
|
1379
1685
|
private readonly el;
|
|
1380
1686
|
private routerLinkActive;
|
|
@@ -1680,21 +1986,35 @@ declare class DialogActions {
|
|
|
1680
1986
|
}
|
|
1681
1987
|
|
|
1682
1988
|
/**
|
|
1683
|
-
* Material 3 full screen dialog shell. It covers the viewport and
|
|
1684
|
-
*
|
|
1685
|
-
*
|
|
1686
|
-
*
|
|
1989
|
+
* Material 3 full screen dialog shell. It covers the viewport and holds the content.
|
|
1990
|
+
*
|
|
1991
|
+
* The content is an `md3-layout`. The layout places the regions — the bar rows for an app bar
|
|
1992
|
+
* or a toolbar, the rail columns, and the panes where side sheets open — so the dialog itself
|
|
1993
|
+
* places nothing but the content. A content root that is not a layout gets a warning in
|
|
1994
|
+
* development mode, and the shell falls back to panes of its own, so a side sheet never opens
|
|
1995
|
+
* behind the dialog where nobody can see it.
|
|
1687
1996
|
*/
|
|
1688
1997
|
declare class FullScreenDialog extends CdkDialogContainer implements DialogContainer, AfterViewInit {
|
|
1689
1998
|
private readonly surface;
|
|
1999
|
+
private readonly mainPane;
|
|
1690
2000
|
private readonly startOutlet;
|
|
1691
2001
|
private readonly endOutlet;
|
|
1692
2002
|
private readonly sheets;
|
|
2003
|
+
/** True while the shell holds the side sheet outlets, which happens without a layout only. */
|
|
2004
|
+
private ownsSideSheetOutlets;
|
|
1693
2005
|
isActive: _angular_core.WritableSignal<boolean>;
|
|
1694
2006
|
protected readonly config: DialogConfig<unknown>;
|
|
1695
2007
|
get surfaceElement(): HTMLElement | null;
|
|
1696
2008
|
ngAfterViewInit(): void;
|
|
1697
2009
|
ngOnDestroy(): void;
|
|
2010
|
+
/**
|
|
2011
|
+
* The layout at the root of the content, if the content brought one.
|
|
2012
|
+
*
|
|
2013
|
+
* The root is either the layout itself, or the component that holds it — a dialog is
|
|
2014
|
+
* normally opened with a component whose own template starts with `md3-layout`.
|
|
2015
|
+
*/
|
|
2016
|
+
private findContentLayout;
|
|
2017
|
+
private checkContentLayout;
|
|
1698
2018
|
startEnterAnimation(): void;
|
|
1699
2019
|
setActive(value: boolean): void;
|
|
1700
2020
|
recaptureFocus(): void;
|
|
@@ -1702,18 +2022,6 @@ declare class FullScreenDialog extends CdkDialogContainer implements DialogConta
|
|
|
1702
2022
|
static ɵcmp: _angular_core.ɵɵComponentDeclaration<FullScreenDialog, "md3-fullscreen-dialog", never, {}, {}, never, never, true, never>;
|
|
1703
2023
|
}
|
|
1704
2024
|
|
|
1705
|
-
/**
|
|
1706
|
-
* Header of a full screen dialog: a leading icon button to leave the dialog,
|
|
1707
|
-
* the headline, and a trailing action. It sticks to the top of the dialog while
|
|
1708
|
-
* the content scrolls underneath.
|
|
1709
|
-
*/
|
|
1710
|
-
declare class FullScreenDialogHeader implements ButtonContext {
|
|
1711
|
-
buttonContextSize: Signal<ButtonSize>;
|
|
1712
|
-
buttonContextWidth: Signal<IconButtonWidth>;
|
|
1713
|
-
static ɵfac: _angular_core.ɵɵFactoryDeclaration<FullScreenDialogHeader, never>;
|
|
1714
|
-
static ɵcmp: _angular_core.ɵɵComponentDeclaration<FullScreenDialogHeader, "md3-fullscreen-dialog-header", never, {}, {}, never, ["[md3-icon-button][md3-header-leading]", "*", "[md3-header-trailing]"], true, never>;
|
|
1715
|
-
}
|
|
1716
|
-
|
|
1717
2025
|
declare class Menu implements AfterContentInit {
|
|
1718
2026
|
private el;
|
|
1719
2027
|
private readonly portalOutlet;
|
|
@@ -2148,5 +2456,5 @@ declare class SnackbarService {
|
|
|
2148
2456
|
static ɵprov: _angular_core.ɵɵInjectableDeclaration<SnackbarService>;
|
|
2149
2457
|
}
|
|
2150
2458
|
|
|
2151
|
-
export { AppBar, AppBarLogo, Avatar, BOTTOM_SHEET_COMPONENT, BOTTOM_SHEET_CONFIG, BOTTOM_SHEET_DATA, Badge, BottomSheetRef, BottomSheetService, Button, ButtonGroup, CAROUSEL_STRATEGIES, Card, Carousel, CarouselItem, Checkbox, ChipAvatar, Chips, CircularProgressIndicator, DIALOG_COMPONENT, DIALOG_CONFIG, DIALOG_DATA, Dialog, DialogActions, DialogBody, DialogHeader, DialogRef, DialogService, Divider, FloatingActionButton, FullScreenDialog,
|
|
2152
|
-
export type { AppBarScrollingStyle, AppBarType, BottomSheetConfig, BottomSheetContainer, BottomSheetState, BottomSheetSurfaceHost, BottomSheetType, ButtonGroupSelection, ButtonGroupType, ButtonSize, ButtonType, CardType, CarouselAlignment, CarouselArrangement, CarouselGeometry, CarouselItemGeometry, CarouselItemSize, CarouselKeyline, CarouselKeylineState, CarouselLayout, CarouselOrientation, CarouselStrategy, CarouselStrategyContext, ChipStyle, ChipType, DialogConfig, DialogContainer, DialogRole, FabSize, FabType, FullScreenDialogConfig, IconButtonType, IconButtonWidth, ListLeadingSize, ListLeadingType, Md3NavigationMode, MenuConfig, MenuPositionOrigin, MenuPositionX, MenuPositionY, MenuScrollStrategy, PreviousDialog, SideSheetConfig, SideSheetContainer, SideSheetSide, SideSheetType, SliderSize, SnackbarConfig, SnackbarDismiss, SnackbarDismissReason, SnackbarPoliteness, SplitButtonType, StandardBottomSheetHost, TextColor, TextSize };
|
|
2459
|
+
export { AppBar, AppBarLogo, Avatar, BOTTOM_SHEET_COMPONENT, BOTTOM_SHEET_CONFIG, BOTTOM_SHEET_DATA, Badge, BottomSheetRef, BottomSheetService, Button, ButtonGroup, CAROUSEL_STRATEGIES, Card, Carousel, CarouselItem, Checkbox, ChipAvatar, Chips, CircularProgressIndicator, DIALOG_COMPONENT, DIALOG_CONFIG, DIALOG_DATA, Dialog, DialogActions, DialogBody, DialogHeader, DialogRef, DialogService, Divider, FloatingActionButton, FullScreenDialog, Grid, GridItem, IconButton, IconElement, InputElement, Layout, LayoutService, LinearProgressIndicator, List, ListItem, ListItemPrimaryAction, ListLeading, ListSlot, LoadingIndicator, MENU_COMPONENT, MENU_CONFIG, MENU_DATA, MaterialIcon, Menu, MenuGroup, MenuItem, MenuRef, MenuService, ModalBottomSheetRef, NavigationBar, NavigationGroup, NavigationItem, NavigationRail, RadioButton, SIDE_SHEET_COMPONENT, SIDE_SHEET_CONFIG, SIDE_SHEET_DATA, SNACKBAR_ACTION_LABEL, SNACKBAR_CONFIG, SNACKBAR_MESSAGE, Scaffold, ScaffoldBar, ScaffoldPane, ScaffoldRail, SheetsService, SideSheetActions, SideSheetBody, SideSheetHeader, SideSheetRef, Slider, Snackbar, SnackbarRef, SnackbarService, SplitButton, StandardBottomSheetRef, StateComponent, SupportingText, Switch, TextField, Toolbar, ToolbarItem, TypeBody, TypeDisplay, TypeHeadline, TypeLabel, TypeTitle, ViewportService, buildGeometry, clampIndex, indexForScrollOffset, multiBrowseStrategy, parseCarouselAspectRatio, resolveItemGeometry, resolveState, scrollOffsetForIndex, sizeBandFor };
|
|
2460
|
+
export type { AppBarScrollingStyle, AppBarType, BottomSheetConfig, BottomSheetContainer, BottomSheetState, BottomSheetSurfaceHost, BottomSheetType, ButtonGroupSelection, ButtonGroupType, ButtonSize, ButtonType, CardType, CarouselAlignment, CarouselArrangement, CarouselGeometry, CarouselItemGeometry, CarouselItemSize, CarouselKeyline, CarouselKeylineState, CarouselLayout, CarouselOrientation, CarouselStrategy, CarouselStrategyContext, ChipStyle, ChipType, DialogConfig, DialogContainer, DialogRole, FabSize, FabType, FloatingBarSide, FloatingInset, FullScreenDialogConfig, IconButtonType, IconButtonWidth, ListLeadingSize, ListLeadingType, Md3NavigationMode, MenuConfig, MenuPositionOrigin, MenuPositionX, MenuPositionY, MenuScrollStrategy, PreviousDialog, SideSheetConfig, SideSheetContainer, SideSheetSide, SideSheetType, SliderSize, SnackbarConfig, SnackbarDismiss, SnackbarDismissReason, SnackbarPoliteness, SplitButtonType, StandardBottomSheetHost, TextColor, TextSize, ToolbarAlignment, ToolbarColor, ToolbarOrientation, ToolbarRegion, ToolbarScrollAction, ToolbarType };
|