Skip to content

Commit 987c254

Browse files
committed
Migrate to Angular standalone components
1 parent d807b97 commit 987c254

File tree

10 files changed

+88
-114
lines changed

10 files changed

+88
-114
lines changed

packages/kubernetes-client-angular/projects/kubernetes-client-angular/README.md

Lines changed: 19 additions & 22 deletions
Original file line numberDiff line numberDiff line change
@@ -35,49 +35,45 @@ Install the dependencies
3535
npm install @ccremer/kubernetes-client @ccremer/kubernetes-client-angular
3636
```
3737

38-
Setup the module with `@ngrx/data` in `app.module.ts`:
38+
Setup the module with `@ngrx/data` in `main.ts`:
3939
```typescript
40-
import { NgModule } from '@angular/core'
41-
import { BrowserModule } from '@angular/platform-browser'
42-
40+
import { bootstrapApplication, BrowserModule } from '@angular/platform-browser'
41+
import { AppComponent } from './app.component'
42+
import { importProvidersFrom } from '@angular/core'
43+
import { StoreModule } from '@ngrx/store'
44+
import { EffectsModule } from '@ngrx/effects'
4345
import { DefaultDataServiceFactory, EntityDataModule } from '@ngrx/data'
44-
import { HTTP_INTERCEPTORS, HttpClientModule } from '@angular/common/http'
4546
import {
4647
DefaultEntityMetadataMap,
4748
KubernetesAuthorizerInterceptor,
4849
KubernetesDataServiceFactory,
4950
KubernetesDataServiceFactoryConfig,
5051
} from '@ccremer/kubernetes-client-angular'
51-
import { StoreModule } from '@ngrx/store'
52-
import { EffectsModule } from '@ngrx/effects'
53-
import { AppComponent } from './app.component'
52+
import { HTTP_INTERCEPTORS, provideHttpClient, withInterceptorsFromDi } from '@angular/common/http'
5453

55-
@NgModule({
56-
declarations: [AppComponent],
57-
imports: [
58-
BrowserModule,
59-
HttpClientModule,
60-
StoreModule.forRoot(),
61-
EffectsModule.forRoot(),
62-
EntityDataModule.forRoot({
63-
entityMetadata: DefaultEntityMetadataMap,
64-
}),
65-
],
54+
bootstrapApplication(AppComponent, {
6655
providers: [
56+
importProvidersFrom(
57+
BrowserModule,
58+
StoreModule.forRoot(),
59+
EffectsModule.forRoot(),
60+
EntityDataModule.forRoot({
61+
entityMetadata: DefaultEntityMetadataMap,
62+
})
63+
),
64+
provideHttpClient(withInterceptorsFromDi()),
6765
{ provide: DefaultDataServiceFactory, useClass: KubernetesDataServiceFactory },
6866
{ provide: HTTP_INTERCEPTORS, useClass: KubernetesAuthorizerInterceptor, multi: true },
6967
{
7068
provide: KubernetesDataServiceFactoryConfig,
7169
useValue: {
7270
default: {
7371
usePatchInUpsert: true,
74-
usePatchInUpdate: false,
7572
},
7673
} satisfies KubernetesDataServiceFactoryConfig,
7774
},
7875
],
79-
})
80-
export class AppModule {}
76+
}).catch((err) => console.error(err))
8177
```
8278

8379
Optional but highly recommended: Create an extendable Service for each entity, for example in `config-map.service.ts`:
@@ -107,6 +103,7 @@ import { KubernetesAuthorizerService } from '@ccremer/kubernetes-client-angular'
107103
selector: 'app-root',
108104
template: '<p>Kubernetes Client for Angular in Action</p>',
109105
styles: [],
106+
standalone: true,
110107
})
111108
export class AppComponent implements OnInit {
112109
constructor(private configMapService: ConfigMapService, authorizer: KubernetesAuthorizerService) {

packages/kubernetes-client-angular/projects/kubernetes-client-angular/README.md.njk

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -35,9 +35,9 @@ Install the dependencies
3535
npm install @ccremer/kubernetes-client @ccremer/kubernetes-client-angular
3636
```
3737

38-
Setup the module with `@ngrx/data` in `app.module.ts`:
38+
Setup the module with `@ngrx/data` in `main.ts`:
3939
```typescript
40-
{% include "projects/kubernetes-client-angular/examples/app.module.ts" -%}
40+
{% include "projects/kubernetes-client-angular/examples/main.ts" -%}
4141
```
4242

4343
Optional but highly recommended: Create an extendable Service for each entity, for example in `config-map.service.ts`:

packages/kubernetes-client-angular/projects/kubernetes-client-angular/examples/app.component.ts

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -6,6 +6,7 @@ import { KubernetesAuthorizerService } from '@ccremer/kubernetes-client-angular'
66
selector: 'app-root',
77
template: '<p>Kubernetes Client for Angular in Action</p>',
88
styles: [],
9+
standalone: true,
910
})
1011
export class AppComponent implements OnInit {
1112
constructor(private configMapService: ConfigMapService, authorizer: KubernetesAuthorizerService) {
Lines changed: 17 additions & 21 deletions
Original file line numberDiff line numberDiff line change
@@ -1,41 +1,37 @@
1-
import { NgModule } from '@angular/core'
2-
import { BrowserModule } from '@angular/platform-browser'
3-
1+
import { bootstrapApplication, BrowserModule } from '@angular/platform-browser'
2+
import { AppComponent } from './app.component'
3+
import { importProvidersFrom } from '@angular/core'
4+
import { StoreModule } from '@ngrx/store'
5+
import { EffectsModule } from '@ngrx/effects'
46
import { DefaultDataServiceFactory, EntityDataModule } from '@ngrx/data'
5-
import { HTTP_INTERCEPTORS, HttpClientModule } from '@angular/common/http'
67
import {
78
DefaultEntityMetadataMap,
89
KubernetesAuthorizerInterceptor,
910
KubernetesDataServiceFactory,
1011
KubernetesDataServiceFactoryConfig,
1112
} from '@ccremer/kubernetes-client-angular'
12-
import { StoreModule } from '@ngrx/store'
13-
import { EffectsModule } from '@ngrx/effects'
14-
import { AppComponent } from './app.component'
13+
import { HTTP_INTERCEPTORS, provideHttpClient, withInterceptorsFromDi } from '@angular/common/http'
1514

16-
@NgModule({
17-
declarations: [AppComponent],
18-
imports: [
19-
BrowserModule,
20-
HttpClientModule,
21-
StoreModule.forRoot(),
22-
EffectsModule.forRoot(),
23-
EntityDataModule.forRoot({
24-
entityMetadata: DefaultEntityMetadataMap,
25-
}),
26-
],
15+
bootstrapApplication(AppComponent, {
2716
providers: [
17+
importProvidersFrom(
18+
BrowserModule,
19+
StoreModule.forRoot(),
20+
EffectsModule.forRoot(),
21+
EntityDataModule.forRoot({
22+
entityMetadata: DefaultEntityMetadataMap,
23+
})
24+
),
25+
provideHttpClient(withInterceptorsFromDi()),
2826
{ provide: DefaultDataServiceFactory, useClass: KubernetesDataServiceFactory },
2927
{ provide: HTTP_INTERCEPTORS, useClass: KubernetesAuthorizerInterceptor, multi: true },
3028
{
3129
provide: KubernetesDataServiceFactoryConfig,
3230
useValue: {
3331
default: {
3432
usePatchInUpsert: true,
35-
usePatchInUpdate: false,
3633
},
3734
} satisfies KubernetesDataServiceFactoryConfig,
3835
},
3936
],
40-
})
41-
export class AppModule {}
37+
}).catch((err) => console.error(err))

packages/kubernetes-client-angular/projects/kubernetes-client-example-angular/src/app/app.component.ts

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,11 +1,13 @@
11
import { Component, OnInit } from '@angular/core'
2-
import { Router } from '@angular/router'
2+
import { Router, RouterOutlet } from '@angular/router'
33
import { KubernetesAuthorizerService } from 'kubernetes-client-angular'
44

55
@Component({
66
selector: 'app-root',
77
templateUrl: './app.component.html',
88
styleUrls: ['./app.component.scss'],
9+
standalone: true,
10+
imports: [RouterOutlet],
911
})
1012
export class AppComponent implements OnInit {
1113
constructor(private router: Router, private authorizer: KubernetesAuthorizerService) {}

packages/kubernetes-client-angular/projects/kubernetes-client-example-angular/src/app/app.module.ts

Lines changed: 0 additions & 49 deletions
This file was deleted.

packages/kubernetes-client-angular/projects/kubernetes-client-example-angular/src/app/client/client.component.ts

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
import { Component, OnInit } from '@angular/core'
22
import { FormBuilder, FormControl, FormGroup, ReactiveFormsModule, Validators } from '@angular/forms'
3-
import { CommonModule } from '@angular/common'
3+
import { CommonModule, NgFor } from '@angular/common'
44
import { SecretService } from '../store/secret.service'
55
import { ConfigMapService } from '../store/config-map.service'
66
import { KubeObject } from '@ccremer/kubernetes-client/types/core'
@@ -11,7 +11,7 @@ import { ListOptions } from '@ccremer/kubernetes-client/api'
1111

1212
@Component({
1313
standalone: true,
14-
imports: [ReactiveFormsModule, CommonModule],
14+
imports: [ReactiveFormsModule, CommonModule, NgFor],
1515
selector: 'app-client',
1616
templateUrl: './client.component.html',
1717
styleUrls: ['./client.component.scss'],

packages/kubernetes-client-angular/projects/kubernetes-client-example-angular/src/app/login/login.component.ts

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -2,11 +2,15 @@ import { Component } from '@angular/core'
22
import { SelfSubjectRulesReviewService } from '../store/self-subject-rules-review.service'
33
import { Router } from '@angular/router'
44
import { KubernetesAuthorizerService } from 'kubernetes-client-angular'
5+
import { TokenInputComponent } from './token-input/token-input.component'
6+
import { NgFor } from '@angular/common'
57

68
@Component({
79
selector: 'app-page',
810
templateUrl: './login.component.html',
911
styleUrls: ['./login.component.scss'],
12+
standalone: true,
13+
imports: [NgFor, TokenInputComponent],
1014
})
1115
export class LoginComponent {
1216
initialValue: string

packages/kubernetes-client-angular/projects/kubernetes-client-example-angular/src/app/login/login.module.ts

Lines changed: 0 additions & 11 deletions
This file was deleted.
Lines changed: 40 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,41 @@
1-
import { platformBrowserDynamic } from '@angular/platform-browser-dynamic'
1+
import { importProvidersFrom } from '@angular/core'
2+
import { AppComponent } from './app/app.component'
3+
import { StoreDevtoolsModule } from '@ngrx/store-devtools'
4+
import { EffectsModule } from '@ngrx/effects'
5+
import { StoreModule } from '@ngrx/store'
6+
import { AppRoutingModule } from './app/app-routing.module'
7+
import { bootstrapApplication, BrowserModule } from '@angular/platform-browser'
8+
import { HTTP_INTERCEPTORS, provideHttpClient, withInterceptorsFromDi } from '@angular/common/http'
9+
import {
10+
DefaultEntityMetadataMap,
11+
KubernetesAuthorizerInterceptor,
12+
KubernetesDataServiceFactory,
13+
KubernetesDataServiceFactoryConfig,
14+
} from 'kubernetes-client-angular'
15+
import { DefaultDataServiceFactory, EntityDataModule } from '@ngrx/data'
216

3-
import { AppModule } from './app/app.module'
4-
5-
platformBrowserDynamic()
6-
.bootstrapModule(AppModule)
7-
.catch((err) => console.error(err))
17+
bootstrapApplication(AppComponent, {
18+
providers: [
19+
importProvidersFrom(
20+
BrowserModule,
21+
AppRoutingModule,
22+
StoreModule.forRoot(),
23+
EffectsModule.forRoot(),
24+
EntityDataModule.forRoot({
25+
entityMetadata: DefaultEntityMetadataMap,
26+
}),
27+
StoreDevtoolsModule.instrument()
28+
),
29+
provideHttpClient(withInterceptorsFromDi()),
30+
{ provide: DefaultDataServiceFactory, useClass: KubernetesDataServiceFactory },
31+
{ provide: HTTP_INTERCEPTORS, useClass: KubernetesAuthorizerInterceptor, multi: true },
32+
{
33+
provide: KubernetesDataServiceFactoryConfig,
34+
useValue: {
35+
default: {
36+
usePatchInUpsert: true,
37+
},
38+
} satisfies KubernetesDataServiceFactoryConfig,
39+
},
40+
],
41+
}).catch((err) => console.error(err))

0 commit comments

Comments
 (0)