Skip to content

Commit 3980c63

Browse files
committed
feat(refactor): for root removed
1 parent 8cb87af commit 3980c63

11 files changed

+118
-130
lines changed

projects/demo/src/app/app.component.spec.ts

+14-3
Original file line numberDiff line numberDiff line change
@@ -1,15 +1,26 @@
11
import { ComponentFixture, TestBed, waitForAsync } from '@angular/core/testing';
2+
import { provideRouter, withViewTransitions } from '@angular/router';
3+
import { provideTranslateVersion } from 'projects/ngx-translate-version/src/public-api';
4+
import { VERSION } from '../environments/version';
25
import { AppComponent } from './app.component';
6+
import { routes } from './app.routes';
37

48
describe('AppComponent', () => {
59
let fixture: ComponentFixture<AppComponent>;
610
let component: AppComponent;
711

812
beforeEach(waitForAsync(() => {
913
TestBed.configureTestingModule({
10-
declarations: [
11-
AppComponent
12-
],
14+
imports: [AppComponent],
15+
providers: [
16+
provideRouter(routes, withViewTransitions()),
17+
provideTranslateVersion(routes, {
18+
defaultLanguage: 'en',
19+
version: VERSION.TAG,
20+
pathLocales: 'assets/locales.json',
21+
pathI18n: (lang) => `assets/i18n/${lang}.json`
22+
})
23+
]
1324
}).compileComponents();
1425

1526
fixture = TestBed.createComponent(AppComponent);

projects/demo/src/app/app.component.ts

+5-1
Original file line numberDiff line numberDiff line change
@@ -1,10 +1,14 @@
11
import { Component } from '@angular/core';
2+
import { RouterLink, RouterOutlet } from '@angular/router';
3+
import { LocalizeRouterModule } from '@gilsdav/ngx-translate-router';
24
import { VERSION } from '../environments/version';
35

46
@Component({
57
selector: 'app-root',
68
templateUrl: './app.component.html',
7-
styleUrl: './app.component.scss'
9+
styleUrl: './app.component.scss',
10+
standalone: true,
11+
imports: [RouterOutlet, RouterLink, LocalizeRouterModule]
812
})
913
export class AppComponent {
1014
public title = 'ngx-translate-version';

projects/demo/src/app/app.config.ts

+17
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,17 @@
1+
import { ApplicationConfig } from '@angular/core';
2+
import { provideRouter, withViewTransitions } from '@angular/router';
3+
import { provideTranslateVersion } from 'projects/ngx-translate-version/src/lib/ngx-translate-version.provider';
4+
import { VERSION } from '../environments/version';
5+
import { routes } from './app.routes';
6+
7+
export const appConfig: ApplicationConfig = {
8+
providers: [
9+
provideRouter(routes, withViewTransitions()),
10+
provideTranslateVersion(routes, {
11+
defaultLanguage: 'en',
12+
version: VERSION.TAG,
13+
pathLocales: 'assets/locales.json',
14+
pathI18n: (lang) => `assets/i18n/${lang}.json`
15+
})
16+
]
17+
};

projects/demo/src/app/app.module.ts

-23
This file was deleted.
Original file line numberDiff line numberDiff line change
@@ -1,9 +1,9 @@
1-
import { NgModule } from '@angular/core';
2-
import { RouterModule, Routes } from '@angular/router';
1+
import { Routes } from '@angular/router';
32

43
export const routes: Routes = [
54
{
65
path: '',
6+
pathMatch: 'full',
77
loadChildren: () => import('./homepage/homepage.module').then((m) => m.HomepageModule)
88
},
99
{
@@ -13,16 +13,9 @@ export const routes: Routes = [
1313
{
1414
path: 'page-two',
1515
loadChildren: () => import('./page-two/page-two.module').then((m) => m.PageTwoModule)
16+
},
17+
{
18+
path: '**',
19+
redirectTo: ''
1620
}
1721
];
18-
19-
@NgModule({
20-
imports: [
21-
RouterModule.forRoot(routes, {
22-
scrollOffset: [0, 20],
23-
scrollPositionRestoration: 'enabled'
24-
})
25-
],
26-
exports: [RouterModule]
27-
})
28-
export class AppRoutingModule {}

projects/demo/src/main.ts

+4-6
Original file line numberDiff line numberDiff line change
@@ -1,13 +1,11 @@
11
import { enableProdMode } from '@angular/core';
2-
import { platformBrowserDynamic } from '@angular/platform-browser-dynamic';
3-
4-
import { AppModule } from './app/app.module';
2+
import { bootstrapApplication } from '@angular/platform-browser';
3+
import { AppComponent } from './app/app.component';
4+
import { appConfig } from './app/app.config';
55
import { environment } from './environments/environment';
66

77
if (environment.production) {
88
enableProdMode();
99
}
1010

11-
platformBrowserDynamic()
12-
.bootstrapModule(AppModule)
13-
.catch((err) => console.error(err));
11+
bootstrapApplication(AppComponent, appConfig).catch((err) => console.error(err));
Original file line numberDiff line numberDiff line change
@@ -1,2 +1,2 @@
1-
export * from './ngx-translate-version.module';
1+
export * from './ngx-translate-version.provider';
22
export * from './ngx-translate-version.utils';

projects/ngx-translate-version/src/lib/ngx-translate-version.module.ts

-78
This file was deleted.
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,60 @@
1+
import { APP_BASE_HREF, Location, PlatformLocation } from '@angular/common';
2+
import { HttpClient, HttpClientModule } from '@angular/common/http';
3+
import { EnvironmentProviders, importProvidersFrom, makeEnvironmentProviders } from '@angular/core';
4+
import { Route } from '@angular/router';
5+
import { LocalizeParser, LocalizeRouterModule, LocalizeRouterSettings } from '@gilsdav/ngx-translate-router';
6+
import { TranslateLoader, TranslateModule, TranslateService } from '@ngx-translate/core';
7+
import {
8+
NGX_TRANSLATE_VERSION_CONFIG_TOKEN,
9+
NGX_TRANSLATE_VERSION_ROUTES_TOKEN,
10+
NgxTranslateVersionConfig,
11+
defaultNgxTranslateVersionConfig,
12+
localizeLoaderFactory,
13+
translateLoaderFactory
14+
} from './ngx-translate-version.utils';
15+
16+
export const provideTranslateVersion = (
17+
routes: Route[],
18+
config: Partial<NgxTranslateVersionConfig>
19+
): EnvironmentProviders => {
20+
return makeEnvironmentProviders([
21+
importProvidersFrom(
22+
HttpClientModule,
23+
TranslateModule.forRoot({
24+
loader: {
25+
provide: TranslateLoader,
26+
useFactory: translateLoaderFactory,
27+
deps: [HttpClient, NGX_TRANSLATE_VERSION_CONFIG_TOKEN, APP_BASE_HREF]
28+
}
29+
}),
30+
LocalizeRouterModule.forRoot(routes, {
31+
parser: {
32+
provide: LocalizeParser,
33+
useFactory: localizeLoaderFactory,
34+
deps: [
35+
TranslateService,
36+
Location,
37+
LocalizeRouterSettings,
38+
HttpClient,
39+
APP_BASE_HREF,
40+
NGX_TRANSLATE_VERSION_CONFIG_TOKEN,
41+
NGX_TRANSLATE_VERSION_ROUTES_TOKEN
42+
]
43+
}
44+
})
45+
),
46+
{
47+
provide: APP_BASE_HREF,
48+
useFactory: (platformLocation: PlatformLocation): string => platformLocation.getBaseHrefFromDOM(),
49+
deps: [PlatformLocation]
50+
},
51+
{
52+
provide: NGX_TRANSLATE_VERSION_CONFIG_TOKEN,
53+
useValue: { ...defaultNgxTranslateVersionConfig, ...config }
54+
},
55+
{
56+
provide: NGX_TRANSLATE_VERSION_ROUTES_TOKEN,
57+
useValue: routes
58+
}
59+
]);
60+
};

projects/ngx-translate-version/src/lib/ngx-translate-version.utils.ts

+10-4
Original file line numberDiff line numberDiff line change
@@ -27,7 +27,11 @@ export const NGX_TRANSLATE_VERSION_CONFIG_TOKEN = new InjectionToken<NgxTranslat
2727
export const NGX_TRANSLATE_VERSION_ROUTES_TOKEN = new InjectionToken<Routes>('ngx-translate-version-routes');
2828

2929
export class TranslateCustomLoader implements TranslateLoader {
30-
constructor(private http: HttpClient, private config: NgxTranslateVersionConfig, private baseHref: string) {}
30+
constructor(
31+
private http: HttpClient,
32+
private config: NgxTranslateVersionConfig,
33+
private baseHref: string
34+
) {}
3135

3236
public getTranslation(lang: string): Observable<any> {
3337
return this.http.get<any>(`${this.baseHref}${this.config.pathI18n(lang)}?v=${this.config.version}`);
@@ -55,11 +59,13 @@ export class LocalizeCustomLoader extends LocalizeParser {
5559
super(translate, location, settings);
5660
}
5761

58-
public load(routes: Routes): Promise<any> {
62+
public load(_: Routes): Promise<any> {
5963
return new Promise((resolve: any) => {
6064
this.http
61-
.get<any>(`${this.baseHref}${this.config.pathLocales}?v=${this.config.version}`)
62-
.subscribe((data: any) => {
65+
.get<{ locales: string[]; prefix: string }>(
66+
`${this.baseHref}${this.config.pathLocales}?v=${this.config.version}`
67+
)
68+
.subscribe((data) => {
6369
this.locales = data.locales;
6470
this.prefix = data.prefix;
6571
this.init(this.routesFromToken).then(resolve);
Original file line numberDiff line numberDiff line change
@@ -1,2 +1,2 @@
1-
export * from './lib/ngx-translate-version.module';
1+
export * from './lib/ngx-translate-version.provider';
22
export * from './lib/ngx-translate-version.utils';

0 commit comments

Comments
 (0)