Skip to content

Commit 8785d72

Browse files
crisbetoandrewseguin
authored andcommitted
build: add API goldens for portal (#16708)
Adds API goldens for the portal package and fixes some compilation errors that showed up when I was trying to generate it. (cherry picked from commit 7c472f0)
1 parent 0ad0d7a commit 8785d72

File tree

7 files changed

+149
-17
lines changed

7 files changed

+149
-17
lines changed

src/cdk-experimental/dialog/dialog-container.ts

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -11,7 +11,7 @@ import {FocusTrapFactory} from '@angular/cdk/a11y';
1111
import {
1212
BasePortalOutlet,
1313
ComponentPortal,
14-
PortalHostDirective,
14+
CdkPortalOutlet,
1515
TemplatePortal
1616
} from '@angular/cdk/portal';
1717
import {DOCUMENT} from '@angular/common';
@@ -99,7 +99,7 @@ export class CdkDialogContainer extends BasePortalOutlet implements OnDestroy {
9999
// tslint:disable:no-host-decorator-in-concrete
100100

101101
/** The portal host inside of this container into which the dialog content will be loaded. */
102-
@ViewChild(PortalHostDirective, {static: true}) _portalHost: PortalHostDirective;
102+
@ViewChild(CdkPortalOutlet, {static: true}) _portalHost: CdkPortalOutlet;
103103

104104
/** A subject emitting before the dialog enters the view. */
105105
_beforeEnter: Subject<void> = new Subject();

src/cdk/portal/dom-portal-outlet.ts

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -108,3 +108,9 @@ export class DomPortalOutlet extends BasePortalOutlet {
108108
return (componentRef.hostView as EmbeddedViewRef<any>).rootNodes[0] as HTMLElement;
109109
}
110110
}
111+
112+
/**
113+
* @deprecated Use `DomPortalOutlet` instead.
114+
* @breaking-change 9.0.0
115+
*/
116+
export class DomPortalHost extends DomPortalOutlet {}

src/cdk/portal/portal-directives.ts

Lines changed: 34 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -27,7 +27,7 @@ import {BasePortalOutlet, ComponentPortal, Portal, TemplatePortal} from './porta
2727
* the directive instance itself can be attached to a host, enabling declarative use of portals.
2828
*/
2929
@Directive({
30-
selector: '[cdk-portal], [cdkPortal], [portal]',
30+
selector: '[cdkPortal]',
3131
exportAs: 'cdkPortal',
3232
})
3333
export class CdkPortal extends TemplatePortal {
@@ -36,6 +36,20 @@ export class CdkPortal extends TemplatePortal {
3636
}
3737
}
3838

39+
/**
40+
* @deprecated Use `CdkPortal` instead.
41+
* @breaking-change 9.0.0
42+
*/
43+
@Directive({
44+
selector: '[cdk-portal], [portal]',
45+
exportAs: 'cdkPortal',
46+
providers: [{
47+
provide: CdkPortal,
48+
useExisting: TemplatePortalDirective
49+
}]
50+
})
51+
export class TemplatePortalDirective extends CdkPortal {}
52+
3953
/**
4054
* Possible attached references to the CdkPortalOutlet.
4155
*/
@@ -50,8 +64,8 @@ export type CdkPortalOutletAttachedRef = ComponentRef<any> | EmbeddedViewRef<any
5064
* `<ng-template [cdkPortalOutlet]="greeting"></ng-template>`
5165
*/
5266
@Directive({
53-
selector: '[cdkPortalOutlet], [cdkPortalHost], [portalHost]',
54-
exportAs: 'cdkPortalOutlet, cdkPortalHost',
67+
selector: '[cdkPortalOutlet]',
68+
exportAs: 'cdkPortalOutlet',
5569
inputs: ['portal: cdkPortalOutlet']
5670
})
5771
export class CdkPortalOutlet extends BasePortalOutlet implements OnInit, OnDestroy {
@@ -158,9 +172,24 @@ export class CdkPortalOutlet extends BasePortalOutlet implements OnInit, OnDestr
158172
}
159173
}
160174

175+
/**
176+
* @deprecated Use `CdkPortalOutlet` instead.
177+
* @breaking-change 9.0.0
178+
*/
179+
@Directive({
180+
selector: '[cdkPortalHost], [portalHost]',
181+
exportAs: 'cdkPortalHost',
182+
inputs: ['portal: cdkPortalHost'],
183+
providers: [{
184+
provide: CdkPortalOutlet,
185+
useExisting: PortalHostDirective
186+
}]
187+
})
188+
export class PortalHostDirective extends CdkPortalOutlet {}
189+
161190

162191
@NgModule({
163-
exports: [CdkPortal, CdkPortalOutlet],
164-
declarations: [CdkPortal, CdkPortalOutlet],
192+
exports: [CdkPortal, CdkPortalOutlet, TemplatePortalDirective, PortalHostDirective],
193+
declarations: [CdkPortal, CdkPortalOutlet, TemplatePortalDirective, PortalHostDirective],
165194
})
166195
export class PortalModule {}

src/cdk/portal/portal.ts

Lines changed: 11 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -169,6 +169,11 @@ export interface PortalOutlet {
169169
hasAttached(): boolean;
170170
}
171171

172+
/**
173+
* @deprecated Use `PortalOutlet` instead.
174+
* @breaking-change 9.0.0
175+
*/
176+
export type PortalHost = PortalOutlet;
172177

173178
/**
174179
* Partial implementation of PortalOutlet that handles attaching
@@ -254,3 +259,9 @@ export abstract class BasePortalOutlet implements PortalOutlet {
254259
}
255260
}
256261
}
262+
263+
/**
264+
* @deprecated Use `BasePortalOutlet` instead.
265+
* @breaking-change 9.0.0
266+
*/
267+
export abstract class BasePortalHost extends BasePortalOutlet {}

src/cdk/portal/public-api.ts

Lines changed: 0 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -10,10 +10,3 @@ export * from './portal';
1010
export * from './dom-portal-outlet';
1111
export * from './portal-directives';
1212
export * from './portal-injector';
13-
14-
export {DomPortalOutlet as DomPortalHost} from './dom-portal-outlet';
15-
export {
16-
CdkPortalOutlet as PortalHostDirective,
17-
CdkPortal as TemplatePortalDirective,
18-
} from './portal-directives';
19-
export {PortalOutlet as PortalHost, BasePortalOutlet as BasePortalHost} from './portal';

tools/public_api_guard/BUILD.bazel

Lines changed: 0 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -2,8 +2,5 @@ package(default_visibility = ["//visibility:public"])
22

33
load(":generate-guard-tests.bzl", "generate_test_targets")
44

5-
# TODO(devversion): All entry-points except the CDK portal are currently validated. This is
6-
# because aliases are not supported by ts-api-guardian. Re-add once we found a solution for that.
7-
85
# Generate the API guard test targets for each golden file in the current package.
96
generate_test_targets(glob(["**/*.d.ts"]))
Lines changed: 96 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,96 @@
1+
export declare abstract class BasePortalHost extends BasePortalOutlet {
2+
}
3+
4+
export declare abstract class BasePortalOutlet implements PortalOutlet {
5+
protected _attachedPortal: Portal<any> | null;
6+
attach<T>(portal: ComponentPortal<T>): ComponentRef<T>;
7+
attach<T>(portal: TemplatePortal<T>): EmbeddedViewRef<T>;
8+
attach(portal: any): any;
9+
abstract attachComponentPortal<T>(portal: ComponentPortal<T>): ComponentRef<T>;
10+
abstract attachTemplatePortal<C>(portal: TemplatePortal<C>): EmbeddedViewRef<C>;
11+
detach(): void;
12+
dispose(): void;
13+
hasAttached(): boolean;
14+
setDisposeFn(fn: () => void): void;
15+
}
16+
17+
export declare class CdkPortal extends TemplatePortal {
18+
constructor(templateRef: TemplateRef<any>, viewContainerRef: ViewContainerRef);
19+
}
20+
21+
export declare class CdkPortalOutlet extends BasePortalOutlet implements OnInit, OnDestroy {
22+
attached: EventEmitter<CdkPortalOutletAttachedRef>;
23+
readonly attachedRef: CdkPortalOutletAttachedRef;
24+
portal: Portal<any> | null;
25+
constructor(_componentFactoryResolver: ComponentFactoryResolver, _viewContainerRef: ViewContainerRef);
26+
attachComponentPortal<T>(portal: ComponentPortal<T>): ComponentRef<T>;
27+
attachTemplatePortal<C>(portal: TemplatePortal<C>): EmbeddedViewRef<C>;
28+
ngOnDestroy(): void;
29+
ngOnInit(): void;
30+
}
31+
32+
export declare type CdkPortalOutletAttachedRef = ComponentRef<any> | EmbeddedViewRef<any> | null;
33+
34+
export declare class ComponentPortal<T> extends Portal<ComponentRef<T>> {
35+
component: ComponentType<T>;
36+
componentFactoryResolver?: ComponentFactoryResolver | null;
37+
injector?: Injector | null;
38+
viewContainerRef?: ViewContainerRef | null;
39+
constructor(component: ComponentType<T>, viewContainerRef?: ViewContainerRef | null, injector?: Injector | null, componentFactoryResolver?: ComponentFactoryResolver | null);
40+
}
41+
42+
export interface ComponentType<T> {
43+
new (...args: any[]): T;
44+
}
45+
46+
export declare class DomPortalHost extends DomPortalOutlet {
47+
}
48+
49+
export declare class DomPortalOutlet extends BasePortalOutlet {
50+
outletElement: Element;
51+
constructor(
52+
outletElement: Element, _componentFactoryResolver: ComponentFactoryResolver, _appRef: ApplicationRef, _defaultInjector: Injector);
53+
attachComponentPortal<T>(portal: ComponentPortal<T>): ComponentRef<T>;
54+
attachTemplatePortal<C>(portal: TemplatePortal<C>): EmbeddedViewRef<C>;
55+
dispose(): void;
56+
}
57+
58+
export declare abstract class Portal<T> {
59+
readonly isAttached: boolean;
60+
attach(host: PortalOutlet): T;
61+
detach(): void;
62+
setAttachedHost(host: PortalOutlet | null): void;
63+
}
64+
65+
export declare type PortalHost = PortalOutlet;
66+
67+
export declare class PortalHostDirective extends CdkPortalOutlet {
68+
}
69+
70+
export declare class PortalInjector implements Injector {
71+
constructor(_parentInjector: Injector, _customTokens: WeakMap<any, any>);
72+
get(token: any, notFoundValue?: any): any;
73+
}
74+
75+
export declare class PortalModule {
76+
}
77+
78+
export interface PortalOutlet {
79+
attach(portal: Portal<any>): any;
80+
detach(): any;
81+
dispose(): void;
82+
hasAttached(): boolean;
83+
}
84+
85+
export declare class TemplatePortal<C = any> extends Portal<EmbeddedViewRef<C>> {
86+
context: C | undefined;
87+
readonly origin: ElementRef;
88+
templateRef: TemplateRef<C>;
89+
viewContainerRef: ViewContainerRef;
90+
constructor(template: TemplateRef<C>, viewContainerRef: ViewContainerRef, context?: C);
91+
attach(host: PortalOutlet, context?: C | undefined): EmbeddedViewRef<C>;
92+
detach(): void;
93+
}
94+
95+
export declare class TemplatePortalDirective extends CdkPortal {
96+
}

0 commit comments

Comments
 (0)