Skip to content
Permalink
main
Switch branches/tags

Name already in use

A tag already exists with the provided branch name. Many Git commands accept both tag and branch names, so creating this branch may cause unexpected behavior. Are you sure you want to create this branch?
Go to file
 
 
Cannot retrieve contributors at this time
/**
* @license
* Copyright Google LLC All Rights Reserved.
*
* Use of this source code is governed by an MIT-style license that can be
* found in the LICENSE file at https://angular.io/license
*/
import {PositionStrategy} from './position/position-strategy';
import {Direction, Directionality} from '@angular/cdk/bidi';
import {ScrollStrategy, NoopScrollStrategy} from './scroll/index';
/** Initial configuration used when creating an overlay. */
export class OverlayConfig {
/** Strategy with which to position the overlay. */
positionStrategy?: PositionStrategy;
/** Strategy to be used when handling scroll events while the overlay is open. */
scrollStrategy?: ScrollStrategy = new NoopScrollStrategy();
/** Custom class to add to the overlay pane. */
panelClass?: string | string[] = '';
/** Whether the overlay has a backdrop. */
hasBackdrop?: boolean = false;
/** Custom class to add to the backdrop */
backdropClass?: string | string[] = 'cdk-overlay-dark-backdrop';
/** The width of the overlay panel. If a number is provided, pixel units are assumed. */
width?: number | string;
/** The height of the overlay panel. If a number is provided, pixel units are assumed. */
height?: number | string;
/** The min-width of the overlay panel. If a number is provided, pixel units are assumed. */
minWidth?: number | string;
/** The min-height of the overlay panel. If a number is provided, pixel units are assumed. */
minHeight?: number | string;
/** The max-width of the overlay panel. If a number is provided, pixel units are assumed. */
maxWidth?: number | string;
/** The max-height of the overlay panel. If a number is provided, pixel units are assumed. */
maxHeight?: number | string;
/**
* Direction of the text in the overlay panel. If a `Directionality` instance
* is passed in, the overlay will handle changes to its value automatically.
*/
direction?: Direction | Directionality;
/**
* Whether the overlay should be disposed of when the user goes backwards/forwards in history.
* Note that this usually doesn't include clicking on links (unless the user is using
* the `HashLocationStrategy`).
*/
disposeOnNavigation?: boolean = false;
constructor(config?: OverlayConfig) {
if (config) {
// Use `Iterable` instead of `Array` because TypeScript, as of 3.6.3,
// loses the array generic type in the `for of`. But we *also* have to use `Array` because
// typescript won't iterate over an `Iterable` unless you compile with `--downlevelIteration`
const configKeys = Object.keys(config) as Iterable<keyof OverlayConfig> &
(keyof OverlayConfig)[];
for (const key of configKeys) {
if (config[key] !== undefined) {
// TypeScript, as of version 3.5, sees the left-hand-side of this expression
// as "I don't know *which* key this is, so the only valid value is the intersection
// of all the possible values." In this case, that happens to be `undefined`. TypeScript
// is not smart enough to see that the right-hand-side is actually an access of the same
// exact type with the same exact key, meaning that the value type must be identical.
// So we use `any` to work around this.
this[key] = config[key] as any;
}
}
}
}
}