Skip to content

Commit 425bad8

Browse files
authored
feat(material/snack-bar): convert to standalone (#27926)
Converts the snack bar module to standalone.
1 parent eed75dd commit 425bad8

File tree

7 files changed

+36
-29
lines changed

7 files changed

+36
-29
lines changed

src/dev-app/snack-bar/snack-bar-demo.ts

Lines changed: 4 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -13,7 +13,6 @@ import {
1313
MatSnackBarConfig,
1414
MatSnackBarHorizontalPosition,
1515
MatSnackBarVerticalPosition,
16-
MatSnackBarModule,
1716
} from '@angular/material/snack-bar';
1817
import {CommonModule} from '@angular/common';
1918
import {FormsModule} from '@angular/forms';
@@ -29,7 +28,6 @@ import {MatSelectModule} from '@angular/material/select';
2928
encapsulation: ViewEncapsulation.None,
3029
standalone: true,
3130
imports: [
32-
MatSnackBarModule,
3331
CommonModule,
3432
FormsModule,
3533
MatButtonModule,
@@ -49,7 +47,10 @@ export class SnackBarDemo {
4947
horizontalPosition: MatSnackBarHorizontalPosition = 'center';
5048
verticalPosition: MatSnackBarVerticalPosition = 'bottom';
5149

52-
constructor(public snackBar: MatSnackBar, private _dir: Directionality) {}
50+
constructor(
51+
public snackBar: MatSnackBar,
52+
private _dir: Directionality,
53+
) {}
5354

5455
open() {
5556
const config = this._createConfig();

src/material/snack-bar/module.ts

Lines changed: 10 additions & 13 deletions
Original file line numberDiff line numberDiff line change
@@ -8,30 +8,27 @@
88

99
import {OverlayModule} from '@angular/cdk/overlay';
1010
import {PortalModule} from '@angular/cdk/portal';
11-
import {CommonModule} from '@angular/common';
1211
import {NgModule} from '@angular/core';
1312
import {MatButtonModule} from '@angular/material/button';
1413
import {MatCommonModule} from '@angular/material/core';
1514

1615
import {SimpleSnackBar} from './simple-snack-bar';
1716
import {MatSnackBarContainer} from './snack-bar-container';
1817
import {MatSnackBarAction, MatSnackBarActions, MatSnackBarLabel} from './snack-bar-content';
18+
import {MatSnackBar} from './snack-bar';
19+
20+
const DIRECTIVES = [MatSnackBarContainer, MatSnackBarLabel, MatSnackBarActions, MatSnackBarAction];
1921

2022
@NgModule({
21-
imports: [OverlayModule, PortalModule, CommonModule, MatButtonModule, MatCommonModule],
22-
exports: [
23+
imports: [
24+
OverlayModule,
25+
PortalModule,
26+
MatButtonModule,
2327
MatCommonModule,
24-
MatSnackBarContainer,
25-
MatSnackBarLabel,
26-
MatSnackBarActions,
27-
MatSnackBarAction,
28-
],
29-
declarations: [
3028
SimpleSnackBar,
31-
MatSnackBarContainer,
32-
MatSnackBarLabel,
33-
MatSnackBarActions,
34-
MatSnackBarAction,
29+
...DIRECTIVES,
3530
],
31+
exports: [MatCommonModule, ...DIRECTIVES],
32+
providers: [MatSnackBar],
3633
})
3734
export class MatSnackBarModule {}

src/material/snack-bar/simple-snack-bar.ts

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -7,8 +7,11 @@
77
*/
88

99
import {ChangeDetectionStrategy, Component, Inject, ViewEncapsulation} from '@angular/core';
10+
import {CommonModule} from '@angular/common';
11+
import {MatButtonModule} from '@angular/material/button';
1012
import {MatSnackBarRef} from './snack-bar-ref';
1113
import {MAT_SNACK_BAR_DATA} from './snack-bar-config';
14+
import {MatSnackBarAction, MatSnackBarActions, MatSnackBarLabel} from './snack-bar-content';
1215

1316
/**
1417
* Interface for a simple snack bar component that has a message and a single action.
@@ -27,6 +30,8 @@ export interface TextOnlySnackBar {
2730
exportAs: 'matSnackBar',
2831
encapsulation: ViewEncapsulation.None,
2932
changeDetection: ChangeDetectionStrategy.OnPush,
33+
imports: [MatButtonModule, MatSnackBarLabel, MatSnackBarActions, MatSnackBarAction, CommonModule],
34+
standalone: true,
3035
host: {
3136
'class': 'mat-mdc-simple-snack-bar',
3237
},

src/material/snack-bar/snack-bar-container.ts

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -26,6 +26,7 @@ import {
2626
CdkPortalOutlet,
2727
ComponentPortal,
2828
DomPortal,
29+
PortalModule,
2930
TemplatePortal,
3031
} from '@angular/cdk/portal';
3132
import {Observable, Subject} from 'rxjs';
@@ -52,6 +53,8 @@ let uniqueId = 0;
5253
changeDetection: ChangeDetectionStrategy.Default,
5354
encapsulation: ViewEncapsulation.None,
5455
animations: [matSnackBarAnimations.snackBarState],
56+
standalone: true,
57+
imports: [PortalModule],
5558
host: {
5659
'class': 'mdc-snackbar mat-mdc-snack-bar-container mdc-snackbar--open',
5760
'[@state]': '_animationState',

src/material/snack-bar/snack-bar-content.ts

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -11,6 +11,7 @@ import {Directive} from '@angular/core';
1111
/** Directive that should be applied to the text element to be rendered in the snack bar. */
1212
@Directive({
1313
selector: `[matSnackBarLabel]`,
14+
standalone: true,
1415
host: {
1516
'class': 'mat-mdc-snack-bar-label mdc-snackbar__label',
1617
},
@@ -20,6 +21,7 @@ export class MatSnackBarLabel {}
2021
/** Directive that should be applied to the element containing the snack bar's action buttons. */
2122
@Directive({
2223
selector: `[matSnackBarActions]`,
24+
standalone: true,
2325
host: {
2426
'class': 'mat-mdc-snack-bar-actions mdc-snackbar__actions',
2527
},
@@ -29,6 +31,7 @@ export class MatSnackBarActions {}
2931
/** Directive that should be applied to each of the snack bar's action buttons. */
3032
@Directive({
3133
selector: `[matSnackBarAction]`,
34+
standalone: true,
3235
host: {
3336
'class': 'mat-mdc-snack-bar-action mdc-snackbar__action',
3437
},

src/material/snack-bar/snack-bar.ts

Lines changed: 1 addition & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -21,7 +21,6 @@ import {
2121
SkipSelf,
2222
TemplateRef,
2323
} from '@angular/core';
24-
import {MatSnackBarModule} from './module';
2524
import {SimpleSnackBar, TextOnlySnackBar} from './simple-snack-bar';
2625
import {MatSnackBarContainer} from './snack-bar-container';
2726
import {MAT_SNACK_BAR_DATA, MatSnackBarConfig} from './snack-bar-config';
@@ -46,7 +45,7 @@ export const MAT_SNACK_BAR_DEFAULT_OPTIONS = new InjectionToken<MatSnackBarConfi
4645
/**
4746
* Service to dispatch Material Design snack bar messages.
4847
*/
49-
@Injectable({providedIn: MatSnackBarModule})
48+
@Injectable({providedIn: 'root'})
5049
export class MatSnackBar implements OnDestroy {
5150
/**
5251
* Reference to the current snack bar in the view *at this level* (in the Angular injector tree).

tools/public_api_guard/material/snack-bar.md

Lines changed: 10 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -19,11 +19,10 @@ import { DomPortal } from '@angular/cdk/portal';
1919
import { ElementRef } from '@angular/core';
2020
import { EmbeddedViewRef } from '@angular/core';
2121
import * as i0 from '@angular/core';
22-
import * as i4 from '@angular/cdk/overlay';
23-
import * as i5 from '@angular/cdk/portal';
24-
import * as i6 from '@angular/common';
25-
import * as i7 from '@angular/material/button';
26-
import * as i8 from '@angular/material/core';
22+
import * as i1 from '@angular/cdk/overlay';
23+
import * as i2 from '@angular/cdk/portal';
24+
import * as i3 from '@angular/material/button';
25+
import * as i4 from '@angular/material/core';
2726
import { InjectionToken } from '@angular/core';
2827
import { Injector } from '@angular/core';
2928
import { LiveAnnouncer } from '@angular/cdk/a11y';
@@ -70,15 +69,15 @@ export class MatSnackBar implements OnDestroy {
7069
// @public
7170
export class MatSnackBarAction {
7271
// (undocumented)
73-
static ɵdir: i0.ɵɵDirectiveDeclaration<MatSnackBarAction, "[matSnackBarAction]", never, {}, {}, never, never, false, never>;
72+
static ɵdir: i0.ɵɵDirectiveDeclaration<MatSnackBarAction, "[matSnackBarAction]", never, {}, {}, never, never, true, never>;
7473
// (undocumented)
7574
static ɵfac: i0.ɵɵFactoryDeclaration<MatSnackBarAction, never>;
7675
}
7776

7877
// @public
7978
export class MatSnackBarActions {
8079
// (undocumented)
81-
static ɵdir: i0.ɵɵDirectiveDeclaration<MatSnackBarActions, "[matSnackBarActions]", never, {}, {}, never, never, false, never>;
80+
static ɵdir: i0.ɵɵDirectiveDeclaration<MatSnackBarActions, "[matSnackBarActions]", never, {}, {}, never, never, true, never>;
8281
// (undocumented)
8382
static ɵfac: i0.ɵɵFactoryDeclaration<MatSnackBarActions, never>;
8483
}
@@ -124,7 +123,7 @@ export class MatSnackBarContainer extends BasePortalOutlet implements OnDestroy
124123
_role?: 'status' | 'alert';
125124
snackBarConfig: MatSnackBarConfig;
126125
// (undocumented)
127-
static ɵcmp: i0.ɵɵComponentDeclaration<MatSnackBarContainer, "mat-snack-bar-container", never, {}, {}, never, never, false, never>;
126+
static ɵcmp: i0.ɵɵComponentDeclaration<MatSnackBarContainer, "mat-snack-bar-container", never, {}, {}, never, never, true, never>;
128127
// (undocumented)
129128
static ɵfac: i0.ɵɵFactoryDeclaration<MatSnackBarContainer, never>;
130129
}
@@ -140,7 +139,7 @@ export type MatSnackBarHorizontalPosition = 'start' | 'center' | 'end' | 'left'
140139
// @public
141140
export class MatSnackBarLabel {
142141
// (undocumented)
143-
static ɵdir: i0.ɵɵDirectiveDeclaration<MatSnackBarLabel, "[matSnackBarLabel]", never, {}, {}, never, never, false, never>;
142+
static ɵdir: i0.ɵɵDirectiveDeclaration<MatSnackBarLabel, "[matSnackBarLabel]", never, {}, {}, never, never, true, never>;
144143
// (undocumented)
145144
static ɵfac: i0.ɵɵFactoryDeclaration<MatSnackBarLabel, never>;
146145
}
@@ -152,7 +151,7 @@ export class MatSnackBarModule {
152151
// (undocumented)
153152
static ɵinj: i0.ɵɵInjectorDeclaration<MatSnackBarModule>;
154153
// (undocumented)
155-
static ɵmod: i0.ɵɵNgModuleDeclaration<MatSnackBarModule, [typeof i1.SimpleSnackBar, typeof i2.MatSnackBarContainer, typeof i3.MatSnackBarLabel, typeof i3.MatSnackBarActions, typeof i3.MatSnackBarAction], [typeof i4.OverlayModule, typeof i5.PortalModule, typeof i6.CommonModule, typeof i7.MatButtonModule, typeof i8.MatCommonModule], [typeof i8.MatCommonModule, typeof i2.MatSnackBarContainer, typeof i3.MatSnackBarLabel, typeof i3.MatSnackBarActions, typeof i3.MatSnackBarAction]>;
154+
static ɵmod: i0.ɵɵNgModuleDeclaration<MatSnackBarModule, never, [typeof i1.OverlayModule, typeof i2.PortalModule, typeof i3.MatButtonModule, typeof i4.MatCommonModule, typeof i5.SimpleSnackBar, typeof i6.MatSnackBarContainer, typeof i7.MatSnackBarLabel, typeof i7.MatSnackBarActions, typeof i7.MatSnackBarAction], [typeof i4.MatCommonModule, typeof i6.MatSnackBarContainer, typeof i7.MatSnackBarLabel, typeof i7.MatSnackBarActions, typeof i7.MatSnackBarAction]>;
156155
}
157156

158157
// @public
@@ -190,7 +189,7 @@ export class SimpleSnackBar implements TextOnlySnackBar {
190189
// (undocumented)
191190
snackBarRef: MatSnackBarRef<SimpleSnackBar>;
192191
// (undocumented)
193-
static ɵcmp: i0.ɵɵComponentDeclaration<SimpleSnackBar, "simple-snack-bar", ["matSnackBar"], {}, {}, never, never, false, never>;
192+
static ɵcmp: i0.ɵɵComponentDeclaration<SimpleSnackBar, "simple-snack-bar", ["matSnackBar"], {}, {}, never, never, true, never>;
194193
// (undocumented)
195194
static ɵfac: i0.ɵɵFactoryDeclaration<SimpleSnackBar, never>;
196195
}

0 commit comments

Comments
 (0)