Skip to content

Commit f7d4b65

Browse files
refactor(google-maps): convert to standalone (#28153)
1 parent 9c06127 commit f7d4b65

39 files changed

+180
-96
lines changed

src/dev-app/google-map/google-map-demo.ts

Lines changed: 27 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -9,14 +9,22 @@
99
import {CommonModule} from '@angular/common';
1010
import {Component, ViewChild} from '@angular/core';
1111
import {
12-
GoogleMapsModule,
12+
GoogleMap,
13+
MapBicyclingLayer,
1314
MapCircle,
15+
MapDirectionsRenderer,
1416
MapDirectionsService,
17+
MapGroundOverlay,
18+
MapHeatmapLayer,
1519
MapInfoWindow,
20+
MapKmlLayer,
1621
MapMarker,
22+
MapMarkerClusterer,
1723
MapPolygon,
1824
MapPolyline,
1925
MapRectangle,
26+
MapTrafficLayer,
27+
MapTransitLayer,
2028
} from '@angular/google-maps';
2129

2230
const POLYLINE_PATH: google.maps.LatLngLiteral[] = [
@@ -52,7 +60,24 @@ let apiLoadingPromise: Promise<unknown> | null = null;
5260
templateUrl: 'google-map-demo.html',
5361
styleUrls: ['google-map-demo.css'],
5462
standalone: true,
55-
imports: [CommonModule, GoogleMapsModule],
63+
imports: [
64+
CommonModule,
65+
GoogleMap,
66+
MapBicyclingLayer,
67+
MapCircle,
68+
MapDirectionsRenderer,
69+
MapGroundOverlay,
70+
MapHeatmapLayer,
71+
MapInfoWindow,
72+
MapKmlLayer,
73+
MapMarker,
74+
MapMarkerClusterer,
75+
MapPolygon,
76+
MapPolyline,
77+
MapRectangle,
78+
MapTrafficLayer,
79+
MapTransitLayer,
80+
],
5681
})
5782
export class GoogleMapDemo {
5883
@ViewChild(MapInfoWindow) infoWindow: MapInfoWindow;

src/google-maps/README.md

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -21,7 +21,7 @@ method to make sure that the component doesn't load until after the API has load
2121
// google-maps-demo.module.ts
2222

2323
import { NgModule } from '@angular/core';
24-
import { GoogleMapsModule } from '@angular/google-maps';
24+
import { GoogleMap } from '@angular/google-maps';
2525
import { CommonModule } from '@angular/common';
2626
import { HttpClientModule, HttpClientJsonpModule } from '@angular/common/http';
2727

@@ -33,7 +33,7 @@ import { GoogleMapsDemoComponent } from './google-maps-demo.component';
3333
],
3434
imports: [
3535
CommonModule,
36-
GoogleMapsModule,
36+
GoogleMap,
3737
HttpClientModule,
3838
HttpClientJsonpModule,
3939
],

src/google-maps/google-map/README.md

Lines changed: 2 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -8,14 +8,12 @@ The `GoogleMap` component wraps the [`google.maps.Map` class](https://developers
88
// google-maps-demo.module.ts
99

1010
import {NgModule} from '@angular/core';
11-
import {GoogleMapsModule} from '@angular/google-maps';
11+
import {GoogleMap} from '@angular/google-maps';
1212

1313
import {GoogleMapDemo} from './google-map-demo';
1414

1515
@NgModule({
16-
imports: [
17-
GoogleMapsModule,
18-
],
16+
imports: [GoogleMap],
1917
declarations: [GoogleMapDemo],
2018
})
2119
export class GoogleMapDemoModule {

src/google-maps/google-map/google-map.spec.ts

Lines changed: 1 addition & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -2,7 +2,6 @@ import {Component, ViewChild} from '@angular/core';
22
import {waitForAsync, TestBed} from '@angular/core/testing';
33
import {By} from '@angular/platform-browser';
44

5-
import {GoogleMapsModule} from '../google-maps-module';
65
import {createMapConstructorSpy, createMapSpy} from '../testing/fake-google-map-utils';
76
import {DEFAULT_HEIGHT, DEFAULT_OPTIONS, DEFAULT_WIDTH, GoogleMap} from './google-map';
87

@@ -26,7 +25,7 @@ describe('GoogleMap', () => {
2625

2726
beforeEach(waitForAsync(() => {
2827
TestBed.configureTestingModule({
29-
imports: [GoogleMapsModule],
28+
imports: [GoogleMap],
3029
declarations: [TestApp],
3130
});
3231
}));

src/google-maps/google-map/google-map.ts

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -56,6 +56,7 @@ export const DEFAULT_WIDTH = '500px';
5656
@Component({
5757
selector: 'google-map',
5858
exportAs: 'googleMap',
59+
standalone: true,
5960
changeDetection: ChangeDetectionStrategy.OnPush,
6061
template: '<div class="map-container"></div><ng-content></ng-content>',
6162
encapsulation: ViewEncapsulation.None,

src/google-maps/google-maps-module.ts

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -32,6 +32,7 @@ const COMPONENTS = [
3232
MapCircle,
3333
MapDirectionsRenderer,
3434
MapGroundOverlay,
35+
MapHeatmapLayer,
3536
MapInfoWindow,
3637
MapKmlLayer,
3738
MapMarker,
@@ -41,11 +42,10 @@ const COMPONENTS = [
4142
MapRectangle,
4243
MapTrafficLayer,
4344
MapTransitLayer,
44-
MapHeatmapLayer,
4545
];
4646

4747
@NgModule({
48-
declarations: COMPONENTS,
48+
imports: COMPONENTS,
4949
exports: COMPONENTS,
5050
})
5151
export class GoogleMapsModule {}

src/google-maps/map-base-layer.ts

Lines changed: 5 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -16,9 +16,13 @@ import {GoogleMap} from './google-map/google-map';
1616
@Directive({
1717
selector: 'map-base-layer',
1818
exportAs: 'mapBaseLayer',
19+
standalone: true,
1920
})
2021
export class MapBaseLayer implements OnInit, OnDestroy {
21-
constructor(protected readonly _map: GoogleMap, protected readonly _ngZone: NgZone) {}
22+
constructor(
23+
protected readonly _map: GoogleMap,
24+
protected readonly _ngZone: NgZone,
25+
) {}
2226

2327
ngOnInit() {
2428
if (this._map._isBrowser) {

src/google-maps/map-bicycling-layer/map-bicycling-layer.spec.ts

Lines changed: 4 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1,21 +1,22 @@
11
import {Component} from '@angular/core';
22
import {waitForAsync, TestBed} from '@angular/core/testing';
33

4-
import {DEFAULT_OPTIONS} from '../google-map/google-map';
5-
import {GoogleMapsModule} from '../google-maps-module';
4+
import {DEFAULT_OPTIONS, GoogleMap} from '../google-map/google-map';
65
import {
76
createBicyclingLayerConstructorSpy,
87
createBicyclingLayerSpy,
98
createMapConstructorSpy,
109
createMapSpy,
1110
} from '../testing/fake-google-map-utils';
1211

12+
import {MapBicyclingLayer} from './map-bicycling-layer';
13+
1314
describe('MapBicyclingLayer', () => {
1415
let mapSpy: jasmine.SpyObj<google.maps.Map>;
1516

1617
beforeEach(waitForAsync(() => {
1718
TestBed.configureTestingModule({
18-
imports: [GoogleMapsModule],
19+
imports: [GoogleMap, MapBicyclingLayer],
1920
declarations: [TestApp],
2021
});
2122
}));

src/google-maps/map-bicycling-layer/map-bicycling-layer.ts

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -21,6 +21,7 @@ import {MapBaseLayer} from '../map-base-layer';
2121
@Directive({
2222
selector: 'map-bicycling-layer',
2323
exportAs: 'mapBicyclingLayer',
24+
standalone: true,
2425
})
2526
export class MapBicyclingLayer extends MapBaseLayer {
2627
/**

src/google-maps/map-circle/map-circle.spec.ts

Lines changed: 2 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -2,8 +2,7 @@ import {Component, ViewChild} from '@angular/core';
22
import {waitForAsync, TestBed} from '@angular/core/testing';
33
import {By} from '@angular/platform-browser';
44

5-
import {DEFAULT_OPTIONS} from '../google-map/google-map';
6-
import {GoogleMapsModule} from '../google-maps-module';
5+
import {DEFAULT_OPTIONS, GoogleMap} from '../google-map/google-map';
76
import {
87
createCircleConstructorSpy,
98
createCircleSpy,
@@ -29,7 +28,7 @@ describe('MapCircle', () => {
2928
strokeOpacity: 0.8,
3029
};
3130
TestBed.configureTestingModule({
32-
imports: [GoogleMapsModule],
31+
imports: [GoogleMap, MapCircle],
3332
declarations: [TestApp],
3433
});
3534
}));

src/google-maps/map-circle/map-circle.ts

Lines changed: 5 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -23,6 +23,7 @@ import {MapEventManager} from '../map-event-manager';
2323
@Directive({
2424
selector: 'map-circle',
2525
exportAs: 'mapCircle',
26+
standalone: true,
2627
})
2728
export class MapCircle implements OnInit, OnDestroy {
2829
private _eventManager = new MapEventManager(inject(NgZone));
@@ -147,7 +148,10 @@ export class MapCircle implements OnInit, OnDestroy {
147148
@Output() readonly circleRightclick: Observable<google.maps.MapMouseEvent> =
148149
this._eventManager.getLazyEmitter<google.maps.MapMouseEvent>('rightclick');
149150

150-
constructor(private readonly _map: GoogleMap, private readonly _ngZone: NgZone) {}
151+
constructor(
152+
private readonly _map: GoogleMap,
153+
private readonly _ngZone: NgZone,
154+
) {}
151155

152156
ngOnInit() {
153157
if (this._map._isBrowser) {

src/google-maps/map-directions-renderer/map-directions-renderer.spec.ts

Lines changed: 2 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -2,8 +2,7 @@ import {Component, ViewChild} from '@angular/core';
22
import {TestBed, waitForAsync} from '@angular/core/testing';
33
import {By} from '@angular/platform-browser';
44
import {MapDirectionsRenderer} from './map-directions-renderer';
5-
import {DEFAULT_OPTIONS} from '../google-map/google-map';
6-
import {GoogleMapsModule} from '../google-maps-module';
5+
import {DEFAULT_OPTIONS, GoogleMap} from '../google-map/google-map';
76
import {
87
createDirectionsRendererConstructorSpy,
98
createDirectionsRendererSpy,
@@ -21,7 +20,7 @@ describe('MapDirectionsRenderer', () => {
2120

2221
beforeEach(waitForAsync(() => {
2322
TestBed.configureTestingModule({
24-
imports: [GoogleMapsModule],
23+
imports: [GoogleMap, MapDirectionsRenderer],
2524
declarations: [TestApp],
2625
});
2726
}));

src/google-maps/map-directions-renderer/map-directions-renderer.ts

Lines changed: 5 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -33,6 +33,7 @@ import {MapEventManager} from '../map-event-manager';
3333
@Directive({
3434
selector: 'map-directions-renderer',
3535
exportAs: 'mapDirectionsRenderer',
36+
standalone: true,
3637
})
3738
export class MapDirectionsRenderer implements OnInit, OnChanges, OnDestroy {
3839
private _eventManager = new MapEventManager(inject(NgZone));
@@ -68,7 +69,10 @@ export class MapDirectionsRenderer implements OnInit, OnChanges, OnDestroy {
6869
/** The underlying google.maps.DirectionsRenderer object. */
6970
directionsRenderer?: google.maps.DirectionsRenderer;
7071

71-
constructor(private readonly _googleMap: GoogleMap, private _ngZone: NgZone) {}
72+
constructor(
73+
private readonly _googleMap: GoogleMap,
74+
private _ngZone: NgZone,
75+
) {}
7276

7377
ngOnInit() {
7478
if (this._googleMap._isBrowser) {

src/google-maps/map-directions-renderer/map-directions-service.spec.ts

Lines changed: 0 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,5 @@
11
import {TestBed} from '@angular/core/testing';
22
import {MapDirectionsResponse, MapDirectionsService} from './map-directions-service';
3-
import {GoogleMapsModule} from '../google-maps-module';
43
import {
54
createDirectionsServiceConstructorSpy,
65
createDirectionsServiceSpy,
@@ -12,10 +11,6 @@ describe('MapDirectionsService', () => {
1211
let directionsServiceSpy: jasmine.SpyObj<google.maps.DirectionsService>;
1312

1413
beforeEach(() => {
15-
TestBed.configureTestingModule({
16-
imports: [GoogleMapsModule],
17-
});
18-
1914
directionsServiceSpy = createDirectionsServiceSpy();
2015
directionsServiceConstructorSpy =
2116
createDirectionsServiceConstructorSpy(directionsServiceSpy).and.callThrough();

src/google-maps/map-geocoder/map-geocoder.spec.ts

Lines changed: 0 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,5 @@
11
import {TestBed} from '@angular/core/testing';
22
import {MapGeocoderResponse, MapGeocoder} from './map-geocoder';
3-
import {GoogleMapsModule} from '../google-maps-module';
43
import {createGeocoderConstructorSpy, createGeocoderSpy} from '../testing/fake-google-map-utils';
54

65
describe('MapGeocoder', () => {
@@ -9,10 +8,6 @@ describe('MapGeocoder', () => {
98
let geocoderSpy: jasmine.SpyObj<google.maps.Geocoder>;
109

1110
beforeEach(() => {
12-
TestBed.configureTestingModule({
13-
imports: [GoogleMapsModule],
14-
});
15-
1611
geocoderSpy = createGeocoderSpy();
1712
geocoderConstructorSpy = createGeocoderConstructorSpy(geocoderSpy).and.callThrough();
1813
geocoder = TestBed.inject(MapGeocoder);

src/google-maps/map-ground-overlay/map-ground-overlay.spec.ts

Lines changed: 2 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -2,8 +2,7 @@ import {Component, ViewChild} from '@angular/core';
22
import {waitForAsync, TestBed} from '@angular/core/testing';
33
import {By} from '@angular/platform-browser';
44

5-
import {DEFAULT_OPTIONS} from '../google-map/google-map';
6-
import {GoogleMapsModule} from '../google-maps-module';
5+
import {DEFAULT_OPTIONS, GoogleMap} from '../google-map/google-map';
76
import {
87
createGroundOverlayConstructorSpy,
98
createGroundOverlaySpy,
@@ -23,7 +22,7 @@ describe('MapGroundOverlay', () => {
2322

2423
beforeEach(waitForAsync(() => {
2524
TestBed.configureTestingModule({
26-
imports: [GoogleMapsModule],
25+
imports: [GoogleMap, MapGroundOverlay],
2726
declarations: [TestApp],
2827
});
2928
}));

src/google-maps/map-ground-overlay/map-ground-overlay.ts

Lines changed: 5 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -24,6 +24,7 @@ import {MapEventManager} from '../map-event-manager';
2424
@Directive({
2525
selector: 'map-ground-overlay',
2626
exportAs: 'mapGroundOverlay',
27+
standalone: true,
2728
})
2829
export class MapGroundOverlay implements OnInit, OnDestroy {
2930
private _eventManager = new MapEventManager(inject(NgZone));
@@ -81,7 +82,10 @@ export class MapGroundOverlay implements OnInit, OnDestroy {
8182
@Output() readonly mapDblclick: Observable<google.maps.MapMouseEvent> =
8283
this._eventManager.getLazyEmitter<google.maps.MapMouseEvent>('dblclick');
8384

84-
constructor(private readonly _map: GoogleMap, private readonly _ngZone: NgZone) {}
85+
constructor(
86+
private readonly _map: GoogleMap,
87+
private readonly _ngZone: NgZone,
88+
) {}
8589

8690
ngOnInit() {
8791
if (this._map._isBrowser) {

src/google-maps/map-heatmap-layer/map-heatmap-layer.spec.ts

Lines changed: 2 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1,9 +1,8 @@
11
import {Component, ViewChild} from '@angular/core';
22
import {waitForAsync, TestBed} from '@angular/core/testing';
33

4-
import {DEFAULT_OPTIONS} from '../google-map/google-map';
4+
import {DEFAULT_OPTIONS, GoogleMap} from '../google-map/google-map';
55

6-
import {GoogleMapsModule} from '../google-maps-module';
76
import {
87
createMapConstructorSpy,
98
createMapSpy,
@@ -20,7 +19,7 @@ describe('MapHeatmapLayer', () => {
2019

2120
beforeEach(waitForAsync(() => {
2221
TestBed.configureTestingModule({
23-
imports: [GoogleMapsModule],
22+
imports: [GoogleMap, MapHeatmapLayer],
2423
declarations: [TestApp],
2524
});
2625
}));

src/google-maps/map-heatmap-layer/map-heatmap-layer.ts

Lines changed: 5 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -28,6 +28,7 @@ export type HeatmapData =
2828
@Directive({
2929
selector: 'map-heatmap-layer',
3030
exportAs: 'mapHeatmapLayer',
31+
standalone: true,
3132
})
3233
export class MapHeatmapLayer implements OnInit, OnChanges, OnDestroy {
3334
/**
@@ -57,7 +58,10 @@ export class MapHeatmapLayer implements OnInit, OnChanges, OnDestroy {
5758
*/
5859
heatmap?: google.maps.visualization.HeatmapLayer;
5960

60-
constructor(private readonly _googleMap: GoogleMap, private _ngZone: NgZone) {}
61+
constructor(
62+
private readonly _googleMap: GoogleMap,
63+
private _ngZone: NgZone,
64+
) {}
6165

6266
ngOnInit() {
6367
if (this._googleMap._isBrowser) {

src/google-maps/map-info-window/map-info-window.spec.ts

Lines changed: 2 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -2,9 +2,8 @@ import {Component, ViewChild} from '@angular/core';
22
import {waitForAsync, TestBed} from '@angular/core/testing';
33
import {By} from '@angular/platform-browser';
44

5-
import {DEFAULT_OPTIONS} from '../google-map/google-map';
5+
import {DEFAULT_OPTIONS, GoogleMap} from '../google-map/google-map';
66

7-
import {GoogleMapsModule} from '../google-maps-module';
87
import {MapMarker} from '../map-marker/map-marker';
98
import {
109
createInfoWindowConstructorSpy,
@@ -19,7 +18,7 @@ describe('MapInfoWindow', () => {
1918

2019
beforeEach(waitForAsync(() => {
2120
TestBed.configureTestingModule({
22-
imports: [GoogleMapsModule],
21+
imports: [GoogleMap, MapInfoWindow],
2322
declarations: [TestApp],
2423
});
2524
}));

0 commit comments

Comments
 (0)