Skip to content

Commit 12f77bf

Browse files
committed
Adopt standard app.config.ts #11936
1 parent a85a56f commit 12f77bf

File tree

2 files changed

+121
-111
lines changed

2 files changed

+121
-111
lines changed

client/app/app.config.ts

Lines changed: 118 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,118 @@
1+
import {
2+
APP_ID,
3+
ApplicationConfig,
4+
inject,
5+
LOCALE_ID,
6+
provideAppInitializer,
7+
provideZoneChangeDetection,
8+
} from '@angular/core';
9+
import {routes} from './app.routes';
10+
import {Apollo} from 'apollo-angular';
11+
import {MAT_TOOLTIP_DEFAULT_OPTIONS, MatTooltipDefaultOptions} from '@angular/material/tooltip';
12+
import {apolloOptionsProvider} from './shared/config/apollo-options.provider';
13+
import {LocalizedPaginatorIntlService} from './shared/services/localized-paginator-intl.service';
14+
import {DATE_PIPE_DEFAULT_OPTIONS, DatePipeConfig, registerLocaleData} from '@angular/common';
15+
import {
16+
activityInterceptor,
17+
graphqlQuerySigner,
18+
naturalProviders,
19+
NaturalSwissParsingDateAdapter,
20+
provideErrorHandler,
21+
provideIcons,
22+
provideSeo,
23+
} from '@ecodev/natural';
24+
import {provideHttpClient, withInterceptors} from '@angular/common/http';
25+
import {MAT_PAGINATOR_DEFAULT_OPTIONS, MatPaginatorDefaultOptions, MatPaginatorIntl} from '@angular/material/paginator';
26+
import {
27+
DateAdapter,
28+
ErrorStateMatcher,
29+
provideNativeDateAdapter,
30+
ShowOnDirtyErrorStateMatcher,
31+
} from '@angular/material/core';
32+
import {LoggerExtraService} from './shared/services/logger-extra.service';
33+
import {localConfig} from './shared/generated-config';
34+
import localeFRCH from '@angular/common/locales/fr-CH';
35+
import {provideRouter, withInMemoryScrolling, withRouterConfig} from '@angular/router';
36+
import {MAT_TABS_CONFIG, MatTabsConfig} from '@angular/material/tabs';
37+
38+
registerLocaleData(localeFRCH);
39+
40+
const matTooltipCustomConfig: MatTooltipDefaultOptions = {
41+
showDelay: 5,
42+
hideDelay: 5,
43+
touchendHideDelay: 5,
44+
touchGestures: 'off',
45+
};
46+
47+
export const appConfig: ApplicationConfig = {
48+
providers: [
49+
provideZoneChangeDetection({eventCoalescing: true}),
50+
provideNativeDateAdapter(),
51+
Apollo,
52+
naturalProviders,
53+
provideErrorHandler(localConfig.log.url, LoggerExtraService),
54+
provideSeo({
55+
applicationName: 'Les artisans de la transition',
56+
defaultDescription: 'Comprendre l’urgence écologique, Des pistes pour y répondre',
57+
defaultRobots: 'all, index, follow',
58+
}),
59+
provideIcons({}),
60+
{provide: APP_ID, useValue: 'serverApp'},
61+
{
62+
provide: DateAdapter,
63+
useClass: NaturalSwissParsingDateAdapter,
64+
},
65+
{
66+
provide: DATE_PIPE_DEFAULT_OPTIONS,
67+
useValue: {dateFormat: 'dd.MM.y HH:mm'} satisfies DatePipeConfig,
68+
},
69+
{
70+
// Use OnDirty instead of default OnTouched, that allows to validate while editing. Touched is updated after blur.
71+
provide: ErrorStateMatcher,
72+
useClass: ShowOnDirtyErrorStateMatcher,
73+
},
74+
{
75+
// See https://github.com/angular/components/issues/26580
76+
provide: MAT_PAGINATOR_DEFAULT_OPTIONS,
77+
useValue: {
78+
formFieldAppearance: 'fill',
79+
} satisfies MatPaginatorDefaultOptions,
80+
},
81+
{
82+
provide: MAT_TABS_CONFIG,
83+
useValue: {
84+
stretchTabs: false,
85+
} satisfies MatTabsConfig,
86+
},
87+
{
88+
provide: LOCALE_ID,
89+
useValue: 'fr-CH',
90+
},
91+
{
92+
provide: DATE_PIPE_DEFAULT_OPTIONS,
93+
useValue: {
94+
timezone: 'fr-CH',
95+
} satisfies DatePipeConfig,
96+
},
97+
{
98+
provide: MatPaginatorIntl,
99+
useClass: LocalizedPaginatorIntlService,
100+
},
101+
apolloOptionsProvider,
102+
{provide: MAT_TOOLTIP_DEFAULT_OPTIONS, useValue: matTooltipCustomConfig},
103+
provideHttpClient(withInterceptors([activityInterceptor, graphqlQuerySigner(localConfig.signedQueries.key)])),
104+
provideRouter(
105+
routes,
106+
withRouterConfig({
107+
paramsInheritanceStrategy: 'always',
108+
}),
109+
withInMemoryScrolling({
110+
scrollPositionRestoration: 'top',
111+
}),
112+
),
113+
provideAppInitializer(() => {
114+
const dateAdapter = inject(DateAdapter);
115+
dateAdapter.setLocale('fr-ch');
116+
}),
117+
],
118+
};

client/main.ts

Lines changed: 3 additions & 111 deletions
Original file line numberDiff line numberDiff line change
@@ -1,115 +1,7 @@
1-
import {APP_ID, inject, LOCALE_ID, provideAppInitializer, provideZoneChangeDetection} from '@angular/core';
2-
import {AppComponent} from './app/app.component';
3-
import {routes} from './app/app.routes';
41
import {bootstrapApplication} from '@angular/platform-browser';
5-
import {Apollo} from 'apollo-angular';
6-
import {MAT_TOOLTIP_DEFAULT_OPTIONS, MatTooltipDefaultOptions} from '@angular/material/tooltip';
7-
import {apolloOptionsProvider} from './app/shared/config/apollo-options.provider';
8-
import {LocalizedPaginatorIntlService} from './app/shared/services/localized-paginator-intl.service';
9-
import {DATE_PIPE_DEFAULT_OPTIONS, DatePipeConfig, registerLocaleData} from '@angular/common';
10-
import {
11-
activityInterceptor,
12-
graphqlQuerySigner,
13-
naturalProviders,
14-
NaturalSwissParsingDateAdapter,
15-
provideErrorHandler,
16-
provideIcons,
17-
provideSeo,
18-
} from '@ecodev/natural';
19-
import {provideHttpClient, withInterceptors} from '@angular/common/http';
20-
import {MAT_PAGINATOR_DEFAULT_OPTIONS, MatPaginatorDefaultOptions, MatPaginatorIntl} from '@angular/material/paginator';
21-
import {
22-
DateAdapter,
23-
ErrorStateMatcher,
24-
provideNativeDateAdapter,
25-
ShowOnDirtyErrorStateMatcher,
26-
} from '@angular/material/core';
27-
import {LoggerExtraService} from './app/shared/services/logger-extra.service';
28-
import {localConfig} from './app/shared/generated-config';
29-
import localeFRCH from '@angular/common/locales/fr-CH';
30-
import {provideRouter, withInMemoryScrolling, withRouterConfig} from '@angular/router';
31-
import {MAT_TABS_CONFIG, MatTabsConfig} from '@angular/material/tabs';
32-
33-
registerLocaleData(localeFRCH);
34-
35-
const matTooltipCustomConfig: MatTooltipDefaultOptions = {
36-
showDelay: 5,
37-
hideDelay: 5,
38-
touchendHideDelay: 5,
39-
touchGestures: 'off',
40-
};
2+
import {appConfig} from './app/app.config';
3+
import {AppComponent} from './app/app.component';
414

42-
bootstrapApplication(AppComponent, {
43-
providers: [
44-
provideZoneChangeDetection({eventCoalescing: true}),
45-
provideNativeDateAdapter(),
46-
Apollo,
47-
naturalProviders,
48-
provideErrorHandler(localConfig.log.url, LoggerExtraService),
49-
provideSeo({
50-
applicationName: 'Les artisans de la transition',
51-
defaultDescription: 'Comprendre l’urgence écologique, Des pistes pour y répondre',
52-
defaultRobots: 'all, index, follow',
53-
}),
54-
provideIcons({}),
55-
{provide: APP_ID, useValue: 'serverApp'},
56-
{
57-
provide: DateAdapter,
58-
useClass: NaturalSwissParsingDateAdapter,
59-
},
60-
{
61-
provide: DATE_PIPE_DEFAULT_OPTIONS,
62-
useValue: {dateFormat: 'dd.MM.y HH:mm'} satisfies DatePipeConfig,
63-
},
64-
{
65-
// Use OnDirty instead of default OnTouched, that allows to validate while editing. Touched is updated after blur.
66-
provide: ErrorStateMatcher,
67-
useClass: ShowOnDirtyErrorStateMatcher,
68-
},
69-
{
70-
// See https://github.com/angular/components/issues/26580
71-
provide: MAT_PAGINATOR_DEFAULT_OPTIONS,
72-
useValue: {
73-
formFieldAppearance: 'fill',
74-
} satisfies MatPaginatorDefaultOptions,
75-
},
76-
{
77-
provide: MAT_TABS_CONFIG,
78-
useValue: {
79-
stretchTabs: false,
80-
} satisfies MatTabsConfig,
81-
},
82-
{
83-
provide: LOCALE_ID,
84-
useValue: 'fr-CH',
85-
},
86-
{
87-
provide: DATE_PIPE_DEFAULT_OPTIONS,
88-
useValue: {
89-
timezone: 'fr-CH',
90-
} satisfies DatePipeConfig,
91-
},
92-
{
93-
provide: MatPaginatorIntl,
94-
useClass: LocalizedPaginatorIntlService,
95-
},
96-
apolloOptionsProvider,
97-
{provide: MAT_TOOLTIP_DEFAULT_OPTIONS, useValue: matTooltipCustomConfig},
98-
provideHttpClient(withInterceptors([activityInterceptor, graphqlQuerySigner(localConfig.signedQueries.key)])),
99-
provideRouter(
100-
routes,
101-
withRouterConfig({
102-
paramsInheritanceStrategy: 'always',
103-
}),
104-
withInMemoryScrolling({
105-
scrollPositionRestoration: 'top',
106-
}),
107-
),
108-
provideAppInitializer(() => {
109-
const dateAdapter = inject(DateAdapter);
110-
dateAdapter.setLocale('fr-ch');
111-
}),
112-
],
113-
}).catch((err: unknown) => {
5+
bootstrapApplication(AppComponent, appConfig).catch((err: unknown) => {
1146
console.error(err);
1157
});

0 commit comments

Comments
 (0)