]> git.proxmox.com Git - ceph.git/blob - ceph/src/pybind/mgr/dashboard/frontend/src/app/app.module.ts
1f8e9bf5b16209d34d9157fd0f90afc118dbfca1
[ceph.git] / ceph / src / pybind / mgr / dashboard / frontend / src / app / app.module.ts
1 import { HttpClientModule, HTTP_INTERCEPTORS } from '@angular/common/http';
2 import {
3 ErrorHandler,
4 LOCALE_ID,
5 NgModule,
6 TRANSLATIONS,
7 TRANSLATIONS_FORMAT
8 } from '@angular/core';
9 import { BrowserModule } from '@angular/platform-browser';
10 import { BrowserAnimationsModule } from '@angular/platform-browser/animations';
11
12 import { I18n } from '@ngx-translate/i18n-polyfill';
13 import { NgBootstrapFormValidationModule } from 'ng-bootstrap-form-validation';
14
15 import { AccordionModule } from 'ngx-bootstrap/accordion';
16 import { BsDropdownModule } from 'ngx-bootstrap/dropdown';
17 import { TabsModule } from 'ngx-bootstrap/tabs';
18 import { ToastrModule } from 'ngx-toastr';
19
20 import { AppRoutingModule } from './app-routing.module';
21 import { AppComponent } from './app.component';
22 import { CephModule } from './ceph/ceph.module';
23 import { CoreModule } from './core/core.module';
24 import { ApiInterceptorService } from './shared/services/api-interceptor.service';
25 import { JsErrorHandler } from './shared/services/js-error-handler.service';
26 import { SharedModule } from './shared/shared.module';
27
28 import { environment } from '../environments/environment';
29
30 @NgModule({
31 declarations: [AppComponent],
32 imports: [
33 HttpClientModule,
34 BrowserModule,
35 BrowserAnimationsModule,
36 ToastrModule.forRoot({
37 positionClass: 'toast-top-right',
38 preventDuplicates: true,
39 enableHtml: true
40 }),
41 AppRoutingModule,
42 CoreModule,
43 SharedModule,
44 CephModule,
45 AccordionModule.forRoot(),
46 BsDropdownModule.forRoot(),
47 TabsModule.forRoot(),
48 NgBootstrapFormValidationModule.forRoot()
49 ],
50 exports: [SharedModule],
51 providers: [
52 {
53 provide: ErrorHandler,
54 useClass: JsErrorHandler
55 },
56 {
57 provide: HTTP_INTERCEPTORS,
58 useClass: ApiInterceptorService,
59 multi: true
60 },
61 {
62 provide: TRANSLATIONS,
63 useFactory: (locale: string) => {
64 locale = locale || environment.default_lang;
65 try {
66 return require(`raw-loader!locale/messages.${locale}.xlf`).default;
67 } catch (error) {
68 return [];
69 }
70 },
71 deps: [LOCALE_ID]
72 },
73 { provide: TRANSLATIONS_FORMAT, useValue: 'xlf' },
74 I18n
75 ],
76 bootstrap: [AppComponent]
77 })
78 export class AppModule {}