Skip to content

Commit 5b2dea8

Browse files
authored
Zoneless (#136)
* feat: changeDetection onPush and zoneless support * feat: update angular schematics
1 parent 7429b73 commit 5b2dea8

File tree

8 files changed

+51
-9
lines changed

8 files changed

+51
-9
lines changed

angular.json

Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,13 @@
11
{
22
"$schema": "./node_modules/@angular/cli/lib/config/schema.json",
33
"version": 1,
4+
"schematics": {
5+
"@schematics/angular:component": {
6+
"changeDetection": "OnPush",
7+
"style": "scss",
8+
"type": "Component"
9+
}
10+
},
411
"newProjectRoot": "projects",
512
"projects": {
613
"lib": {

projects/wc/src/app/app.config.ts

Lines changed: 9 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,12 +1,19 @@
11
import { provideLuigiWebComponents } from './initializers/luigi-wc-initializer';
22
import { provideHttpClient } from '@angular/common/http';
3-
import { ApplicationConfig } from '@angular/core';
3+
import {
4+
ApplicationConfig,
5+
provideZonelessChangeDetection,
6+
} from '@angular/core';
47
import '@ui5/webcomponents-fiori/illustrations/NoData.js';
58
import '@ui5/webcomponents-icons/dist/delete.js';
69
import '@ui5/webcomponents-icons/dist/download-from-cloud.js';
710

811
document.body.classList.add('ui5-content-density-compact');
912

1013
export const appConfig: ApplicationConfig = {
11-
providers: [provideHttpClient(), provideLuigiWebComponents()],
14+
providers: [
15+
provideZonelessChangeDetection(),
16+
provideHttpClient(),
17+
provideLuigiWebComponents(),
18+
],
1219
};

projects/wc/src/app/components/dynamic-select/dynamic-select.component.ts

Lines changed: 13 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,13 @@
1-
import { Component, DestroyRef, effect, inject, input, output, signal } from '@angular/core';
1+
import {
2+
ChangeDetectionStrategy,
3+
Component,
4+
DestroyRef,
5+
effect,
6+
inject,
7+
input,
8+
output,
9+
signal,
10+
} from '@angular/core';
211
import { takeUntilDestroyed } from '@angular/core/rxjs-interop';
312
import { FieldDefinition } from '@platform-mesh/portal-ui-lib/models';
413
import {
@@ -9,15 +18,16 @@ import { getValueByPath } from '@platform-mesh/portal-ui-lib/utils';
918
import { OptionComponent, SelectComponent } from '@ui5/webcomponents-ngx';
1019
import { Observable, map } from 'rxjs';
1120

12-
1321
@Component({
1422
selector: 'dynamic-select',
1523
imports: [SelectComponent, OptionComponent],
1624
templateUrl: './dynamic-select.component.html',
1725
styleUrl: './dynamic-select.component.scss',
26+
changeDetection: ChangeDetectionStrategy.OnPush,
1827
})
1928
export class DynamicSelectComponent {
20-
dynamicValuesDefinition = input.required<NonNullable<FieldDefinition['dynamicValuesDefinition']>>();
29+
dynamicValuesDefinition =
30+
input.required<NonNullable<FieldDefinition['dynamicValuesDefinition']>>();
2131
context = input.required<ResourceNodeContext>();
2232

2333
value = input<string>('');

projects/wc/src/app/components/generic-ui/list-view/create-resource-modal/create-resource-modal.component.ts

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -3,6 +3,7 @@ import { k8sNameValidator } from '../../../../validators/k8s-name-validator';
33
import { DynamicSelectComponent } from '../../../dynamic-select/dynamic-select.component';
44
import { ResourceFieldNames } from './create-resource-modal.enums';
55
import {
6+
ChangeDetectionStrategy,
67
Component,
78
OnInit,
89
ViewEncapsulation,
@@ -55,6 +56,7 @@ import { set } from 'lodash';
5556
templateUrl: './create-resource-modal.component.html',
5657
styleUrl: './create-resource-modal.component.scss',
5758
encapsulation: ViewEncapsulation.ShadowDom,
59+
changeDetection: ChangeDetectionStrategy.OnPush,
5860
})
5961
export class CreateResourceModalComponent implements OnInit {
6062
fields = input<FieldDefinition[]>([]);

projects/wc/src/app/components/generic-ui/value-cell/boolean-value/boolean-value.component.ts

Lines changed: 7 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -4,7 +4,12 @@ import {
44
ICON_NAME_NEGATIVE,
55
ICON_NAME_POSITIVE,
66
} from './boolean-cell.constants';
7-
import { Component, computed, input } from '@angular/core';
7+
import {
8+
ChangeDetectionStrategy,
9+
Component,
10+
computed,
11+
input,
12+
} from '@angular/core';
813
import { IconComponent } from '@ui5/webcomponents-ngx';
914

1015
export type IconDesignType =
@@ -16,6 +21,7 @@ export type IconDesignType =
1621
imports: [IconComponent],
1722
templateUrl: './boolean-value.component.html',
1823
styleUrl: './boolean-value.component.scss',
24+
changeDetection: ChangeDetectionStrategy.OnPush,
1925
})
2026
export class BooleanValueComponent {
2127
boolValue = input.required<boolean>();

projects/wc/src/app/components/generic-ui/value-cell/link-value/link-value.component.ts

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,11 +1,12 @@
1-
import { Component, input } from '@angular/core';
1+
import { ChangeDetectionStrategy, Component, input } from '@angular/core';
22
import { LinkComponent } from '@ui5/webcomponents-ngx';
33

44
@Component({
55
selector: 'wc-link-value',
66
imports: [LinkComponent],
77
templateUrl: './link-value.component.html',
88
styleUrl: './link-value.component.scss',
9+
changeDetection: ChangeDetectionStrategy.OnPush,
910
})
1011
export class LinkValueComponent {
1112
urlValue = input.required<string>();

projects/wc/src/app/components/generic-ui/value-cell/secret-value/secret-value.component.ts

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,11 +1,12 @@
1-
import { Component, computed, input } from '@angular/core';
1+
import { ChangeDetectionStrategy, Component, computed, input } from '@angular/core';
22

33
@Component({
44
selector: 'wc-secret-value',
55
imports: [],
66
schemas: [],
77
templateUrl: './secret-value.component.html',
88
styleUrl: './secret-value.component.scss',
9+
changeDetection: ChangeDetectionStrategy.OnPush,
910
})
1011
export class SecretValueComponent {
1112
value = input.required<string>();

projects/wc/src/app/components/welcome/welcome.component.ts

Lines changed: 9 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,12 @@
11
import { OrganizationManagementComponent } from '../organization-management/organization-management.component';
2-
import { Component, OnInit, inject, input, signal } from '@angular/core';
2+
import {
3+
ChangeDetectionStrategy,
4+
Component,
5+
OnInit,
6+
inject,
7+
input,
8+
signal,
9+
} from '@angular/core';
310
import { LuigiClient } from '@luigi-project/client/luigi-element';
411
import { I18nService, LuigiCoreService } from '@openmfp/portal-ui-lib';
512
import { ResourceNodeContext } from '@platform-mesh/portal-ui-lib/services';
@@ -45,6 +52,7 @@ interface Header {
4552
}
4653
`,
4754
],
55+
changeDetection: ChangeDetectionStrategy.OnPush,
4856
})
4957
export class WelcomeComponent implements OnInit {
5058
private i18nService = inject(I18nService);

0 commit comments

Comments
 (0)