Skip to content

Commit 41719c3

Browse files
committed
fix(cdk/overlay): make it easier to set default for overlay directive
Adds the `CDK_CONNECTED_OVERLAY_DEFAULT_CONFIG` injection token to make it easier to configure the `CdkConnectedOverlay` directive.
1 parent bd52245 commit 41719c3

File tree

3 files changed

+18
-0
lines changed

3 files changed

+18
-0
lines changed

goldens/cdk/overlay/index.api.md

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -12,6 +12,7 @@ import { EmbeddedViewRef } from '@angular/core';
1212
import { EnvironmentInjector } from '@angular/core';
1313
import { EventEmitter } from '@angular/core';
1414
import * as i0 from '@angular/core';
15+
import { InjectionToken } from '@angular/core';
1516
import { Injector } from '@angular/core';
1617
import { Location as Location_2 } from '@angular/common';
1718
import { NgIterable } from '@angular/core';
@@ -37,6 +38,9 @@ export class BlockScrollStrategy implements ScrollStrategy {
3738
enable(): void;
3839
}
3940

41+
// @public
42+
export const CDK_CONNECTED_OVERLAY_DEFAULT_CONFIG: InjectionToken<CdkConnectedOverlayConfig>;
43+
4044
// @public
4145
export class CdkConnectedOverlay implements OnDestroy, OnChanges {
4246
constructor(...args: unknown[]);

src/cdk/overlay/overlay-directives.ts

Lines changed: 13 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -96,6 +96,14 @@ export class CdkOverlayOrigin {
9696
constructor() {}
9797
}
9898

99+
/**
100+
* Injection token that can be used to configure the
101+
* default options for the `CdkConnectedOverlay` directive.
102+
*/
103+
export const CDK_CONNECTED_OVERLAY_DEFAULT_CONFIG = new InjectionToken<CdkConnectedOverlayConfig>(
104+
'cdk-connected-overlay-default-config',
105+
);
106+
99107
/** Object used to configure the `CdkConnectedOverlay` directive. */
100108
export interface CdkConnectedOverlayConfig {
101109
origin?: CdkOverlayOrigin | FlexibleConnectedPositionStrategyOrigin;
@@ -283,9 +291,14 @@ export class CdkConnectedOverlay implements OnDestroy, OnChanges {
283291
constructor() {
284292
const templateRef = inject<TemplateRef<any>>(TemplateRef);
285293
const viewContainerRef = inject(ViewContainerRef);
294+
const defaultConfig = inject(CDK_CONNECTED_OVERLAY_DEFAULT_CONFIG, {optional: true});
286295

287296
this._templatePortal = new TemplatePortal(templateRef, viewContainerRef);
288297
this.scrollStrategy = this._scrollStrategyFactory();
298+
299+
if (defaultConfig) {
300+
this._assignConfig(defaultConfig);
301+
}
289302
}
290303

291304
/** The associated overlay reference. */

src/cdk/overlay/public-api.ts

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -17,6 +17,7 @@ export {
1717
CdkOverlayOrigin,
1818
CdkConnectedOverlay,
1919
CdkConnectedOverlayConfig,
20+
CDK_CONNECTED_OVERLAY_DEFAULT_CONFIG,
2021
} from './overlay-directives';
2122
export {FullscreenOverlayContainer} from './fullscreen-overlay-container';
2223
export {OverlayRef, OverlaySizeConfig} from './overlay-ref';

0 commit comments

Comments
 (0)