Skip to content

Commit 82c0682

Browse files
committed
refactor(cdk/overlay): add popover flag to directive
Updates the connected position directive to allow opting into using a popover.
1 parent cbf5bcb commit 82c0682

File tree

2 files changed

+10
-2
lines changed

2 files changed

+10
-2
lines changed

goldens/cdk/overlay/index.api.md

Lines changed: 4 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -40,6 +40,7 @@ export class BlockScrollStrategy implements ScrollStrategy {
4040
// @public
4141
export class CdkConnectedOverlay implements OnDestroy, OnChanges {
4242
constructor(...args: unknown[]);
43+
asPopover: boolean;
4344
readonly attach: EventEmitter<void>;
4445
attachOverlay(): void;
4546
backdropClass: string | string[];
@@ -58,6 +59,8 @@ export class CdkConnectedOverlay implements OnDestroy, OnChanges {
5859
minHeight: number | string;
5960
minWidth: number | string;
6061
// (undocumented)
62+
static ngAcceptInputType_asPopover: unknown;
63+
// (undocumented)
6164
static ngAcceptInputType_disposeOnNavigation: unknown;
6265
// (undocumented)
6366
static ngAcceptInputType_flexibleDimensions: unknown;
@@ -92,7 +95,7 @@ export class CdkConnectedOverlay implements OnDestroy, OnChanges {
9295
viewportMargin: ViewportMargin;
9396
width: number | string;
9497
// (undocumented)
95-
static ɵdir: i0.ɵɵDirectiveDeclaration<CdkConnectedOverlay, "[cdk-connected-overlay], [connected-overlay], [cdkConnectedOverlay]", ["cdkConnectedOverlay"], { "origin": { "alias": "cdkConnectedOverlayOrigin"; "required": false; }; "positions": { "alias": "cdkConnectedOverlayPositions"; "required": false; }; "positionStrategy": { "alias": "cdkConnectedOverlayPositionStrategy"; "required": false; }; "offsetX": { "alias": "cdkConnectedOverlayOffsetX"; "required": false; }; "offsetY": { "alias": "cdkConnectedOverlayOffsetY"; "required": false; }; "width": { "alias": "cdkConnectedOverlayWidth"; "required": false; }; "height": { "alias": "cdkConnectedOverlayHeight"; "required": false; }; "minWidth": { "alias": "cdkConnectedOverlayMinWidth"; "required": false; }; "minHeight": { "alias": "cdkConnectedOverlayMinHeight"; "required": false; }; "backdropClass": { "alias": "cdkConnectedOverlayBackdropClass"; "required": false; }; "panelClass": { "alias": "cdkConnectedOverlayPanelClass"; "required": false; }; "viewportMargin": { "alias": "cdkConnectedOverlayViewportMargin"; "required": false; }; "scrollStrategy": { "alias": "cdkConnectedOverlayScrollStrategy"; "required": false; }; "open": { "alias": "cdkConnectedOverlayOpen"; "required": false; }; "disableClose": { "alias": "cdkConnectedOverlayDisableClose"; "required": false; }; "transformOriginSelector": { "alias": "cdkConnectedOverlayTransformOriginOn"; "required": false; }; "hasBackdrop": { "alias": "cdkConnectedOverlayHasBackdrop"; "required": false; }; "lockPosition": { "alias": "cdkConnectedOverlayLockPosition"; "required": false; }; "flexibleDimensions": { "alias": "cdkConnectedOverlayFlexibleDimensions"; "required": false; }; "growAfterOpen": { "alias": "cdkConnectedOverlayGrowAfterOpen"; "required": false; }; "push": { "alias": "cdkConnectedOverlayPush"; "required": false; }; "disposeOnNavigation": { "alias": "cdkConnectedOverlayDisposeOnNavigation"; "required": false; }; }, { "backdropClick": "backdropClick"; "positionChange": "positionChange"; "attach": "attach"; "detach": "detach"; "overlayKeydown": "overlayKeydown"; "overlayOutsideClick": "overlayOutsideClick"; }, never, never, true, never>;
98+
static ɵdir: i0.ɵɵDirectiveDeclaration<CdkConnectedOverlay, "[cdk-connected-overlay], [connected-overlay], [cdkConnectedOverlay]", ["cdkConnectedOverlay"], { "origin": { "alias": "cdkConnectedOverlayOrigin"; "required": false; }; "positions": { "alias": "cdkConnectedOverlayPositions"; "required": false; }; "positionStrategy": { "alias": "cdkConnectedOverlayPositionStrategy"; "required": false; }; "offsetX": { "alias": "cdkConnectedOverlayOffsetX"; "required": false; }; "offsetY": { "alias": "cdkConnectedOverlayOffsetY"; "required": false; }; "width": { "alias": "cdkConnectedOverlayWidth"; "required": false; }; "height": { "alias": "cdkConnectedOverlayHeight"; "required": false; }; "minWidth": { "alias": "cdkConnectedOverlayMinWidth"; "required": false; }; "minHeight": { "alias": "cdkConnectedOverlayMinHeight"; "required": false; }; "backdropClass": { "alias": "cdkConnectedOverlayBackdropClass"; "required": false; }; "panelClass": { "alias": "cdkConnectedOverlayPanelClass"; "required": false; }; "viewportMargin": { "alias": "cdkConnectedOverlayViewportMargin"; "required": false; }; "scrollStrategy": { "alias": "cdkConnectedOverlayScrollStrategy"; "required": false; }; "open": { "alias": "cdkConnectedOverlayOpen"; "required": false; }; "disableClose": { "alias": "cdkConnectedOverlayDisableClose"; "required": false; }; "transformOriginSelector": { "alias": "cdkConnectedOverlayTransformOriginOn"; "required": false; }; "hasBackdrop": { "alias": "cdkConnectedOverlayHasBackdrop"; "required": false; }; "lockPosition": { "alias": "cdkConnectedOverlayLockPosition"; "required": false; }; "flexibleDimensions": { "alias": "cdkConnectedOverlayFlexibleDimensions"; "required": false; }; "growAfterOpen": { "alias": "cdkConnectedOverlayGrowAfterOpen"; "required": false; }; "push": { "alias": "cdkConnectedOverlayPush"; "required": false; }; "disposeOnNavigation": { "alias": "cdkConnectedOverlayDisposeOnNavigation"; "required": false; }; "asPopover": { "alias": "cdkConnectedOverlayAsPopover"; "required": false; }; }, { "backdropClick": "backdropClick"; "positionChange": "positionChange"; "attach": "attach"; "detach": "detach"; "overlayKeydown": "overlayKeydown"; "overlayOutsideClick": "overlayOutsideClick"; }, never, never, true, never>;
9699
// (undocumented)
97100
static ɵfac: i0.ɵɵFactoryDeclaration<CdkConnectedOverlay, never>;
98101
}

src/cdk/overlay/overlay-directives.ts

Lines changed: 6 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -221,6 +221,10 @@ export class CdkConnectedOverlay implements OnDestroy, OnChanges {
221221
this._disposeOnNavigation = value;
222222
}
223223

224+
/** Whether the connected overlay should be rendered inside a popover element or the overlay container. */
225+
@Input({alias: 'cdkConnectedOverlayAsPopover', transform: booleanAttribute})
226+
asPopover: boolean = false;
227+
224228
/** Event emitted when the backdrop is clicked. */
225229
@Output() readonly backdropClick = new EventEmitter<MouseEvent>();
226230

@@ -376,7 +380,8 @@ export class CdkConnectedOverlay implements OnDestroy, OnChanges {
376380
.withGrowAfterOpen(this.growAfterOpen)
377381
.withViewportMargin(this.viewportMargin)
378382
.withLockedPosition(this.lockPosition)
379-
.withTransformOriginOn(this.transformOriginSelector);
383+
.withTransformOriginOn(this.transformOriginSelector)
384+
.asPopover(this.asPopover);
380385
}
381386

382387
/** Returns the position strategy of the overlay to be set on the overlay config */

0 commit comments

Comments
 (0)