Skip to content

Commit 2ec2120

Browse files
committed
feat: implement signal-based title management in RouteService and update components to utilize it
1 parent 40f12b3 commit 2ec2120

8 files changed

Lines changed: 18 additions & 16 deletions

File tree

src/app/_services/route.service.ts

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,8 +1,9 @@
1-
import { Component, Type } from '@angular/core';
1+
import { Component, signal, Type } from '@angular/core';
22
import { DefaultExport, Routes } from '@angular/router';
33
import { Observable } from 'rxjs';
44

55
export class RouteService {
6+
public static Title = signal<string>('Util Plex');
67
public static getRoutes() {
78
const routes: Routes = [];
89

src/app/app.component.html

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -4,8 +4,8 @@
44
<div class="back">
55
<div class="route-container">
66
<div class="top-bar">
7-
@if (title()) {
8-
<h1>{{ title() }}</h1>
7+
@if (RouterService.Title()) {
8+
<h1>{{ RouterService.Title() }}</h1>
99
}
1010
<a href="https://github.com/timothydodd/utilplex"><img alt="GitHub" src="assets/github-mark.svg" /> </a>
1111
</div>

src/app/app.component.ts

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,6 @@
1-
import { Component, inject, signal } from '@angular/core';
1+
import { Component, inject } from '@angular/core';
22
import { Router, RouterOutlet } from '@angular/router';
3+
import { RouteService } from './_services/route.service';
34
import { SideBarComponent } from './nav/side-bar/side-bar.component';
45
@Component({
56
selector: 'app-root',
@@ -9,5 +10,5 @@ import { SideBarComponent } from './nav/side-bar/side-bar.component';
910
})
1011
export class AppComponent {
1112
router = inject(Router);
12-
title = signal(null);
13+
RouterService = RouteService;
1314
}

src/app/converters/convert-view/convert-view.component.ts

Lines changed: 2 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -4,7 +4,7 @@ import { FormsModule } from '@angular/forms';
44
import { Meta, Title } from '@angular/platform-browser';
55
import { MonacoEditorModule, NGX_MONACO_EDITOR_CONFIG } from 'ngx-monaco-editor-v2';
66
import { from } from 'rxjs';
7-
import { getRouteData } from 'src/app/_services/route.service';
7+
import { getRouteData, RouteService } from 'src/app/_services/route.service';
88
import { MonacoEditorConfig } from 'src/app/monaco/monaco-global-config';
99
import { MonacoConfig } from 'src/app/monaco/ng-monaco-config';
1010
import { ConverterServiceBase } from '../_services/converter.service';
@@ -25,8 +25,6 @@ export class ConvertViewComponent {
2525
outputCode = signal<string>('');
2626
error = signal<string>('');
2727

28-
title = '';
29-
3028
private meta = inject(Meta);
3129
private titleService = inject(Title);
3230
constructor() {
@@ -36,7 +34,7 @@ export class ConvertViewComponent {
3634
}
3735
this.titleService.setTitle('UtilPlex |' + data.title);
3836
if (data.description) this.meta.updateTag({ name: 'description', content: data.description });
39-
this.title = this.convertService.title;
37+
RouteService.Title.set(this.convertService.title);
4038
this.inputOptions = {
4139
theme: 'dracula',
4240
language: this.convertService.languageFrom,

src/app/encoders/encoder-view/encoder-view.component.ts

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -6,7 +6,7 @@ import { from } from 'rxjs';
66

77
import { takeUntilDestroyed, toObservable } from '@angular/core/rxjs-interop';
88
import { Meta, Title } from '@angular/platform-browser';
9-
import { getRouteData } from 'src/app/_services/route.service';
9+
import { getRouteData, RouteService } from 'src/app/_services/route.service';
1010
import { MonacoEditorConfig } from 'src/app/monaco/monaco-global-config';
1111
import { MonacoConfig } from 'src/app/monaco/ng-monaco-config';
1212
import { SwitchComponent } from '../../components/switch/switch.component';
@@ -71,7 +71,6 @@ export class EncoderViewComponent {
7171
mode = signal<string>('encode');
7272
isEncode = signal<boolean>(true);
7373
modeLabel = computed(() => (this.isEncode() ? 'Encode' : 'Decode'));
74-
title = '';
7574
private meta = inject(Meta);
7675
private titleService = inject(Title);
7776
constructor() {
@@ -81,7 +80,8 @@ export class EncoderViewComponent {
8180
}
8281
this.titleService.setTitle('UtilPlex |' + data.title);
8382
if (data.description) this.meta.updateTag({ name: 'description', content: data.description });
84-
this.title = this.convertService.title;
83+
84+
RouteService.Title.set(this.convertService.title);
8585
toObservable(this.isEncode)
8686
.pipe(takeUntilDestroyed())
8787
.subscribe(() => {

src/app/formatters/format-view/format-view.component.ts

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -4,7 +4,7 @@ import { FormsModule } from '@angular/forms';
44
import { Meta, Title } from '@angular/platform-browser';
55
import { MonacoEditorModule, NGX_MONACO_EDITOR_CONFIG } from 'ngx-monaco-editor-v2';
66
import { from } from 'rxjs';
7-
import { getRouteData } from 'src/app/_services/route.service';
7+
import { getRouteData, RouteService } from 'src/app/_services/route.service';
88
import { MonacoEditorConfig } from 'src/app/monaco/monaco-global-config';
99
import { MonacoConfig } from '../../monaco/ng-monaco-config';
1010
import { FormatViewService } from '../_services/sql-format.service';
@@ -23,7 +23,7 @@ export class FormatViewComponent {
2323
inputCode = signal<string>('');
2424
outputCode = signal<string>('');
2525
error = signal<string>('');
26-
title = '';
26+
2727
private meta = inject(Meta);
2828
private titleService = inject(Title);
2929
constructor() {
@@ -33,7 +33,7 @@ export class FormatViewComponent {
3333
}
3434
this.titleService.setTitle('UtilPlex |' + data.title);
3535
if (data.description) this.meta.updateTag({ name: 'description', content: data.description });
36-
this.title = this.formatService.title;
36+
RouteService.Title.set(this.formatService.title);
3737

3838
this.inputOptions = {
3939
theme: 'dracula',

src/app/pages/welcome/welcome.component.ts

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -49,5 +49,6 @@ export class WelcomeComponent {
4949
}
5050
this.title.setTitle('UtilPlex |' + data.title);
5151
if (data.description) this.meta.updateTag({ name: 'description', content: data.description });
52+
RouteService.Title.set('Welcome to Util Plex');
5253
}
5354
}

src/app/time/time-zones/time-zones.component.ts

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -5,7 +5,7 @@ import { FormsModule } from '@angular/forms';
55
import { Meta, Title } from '@angular/platform-browser';
66
import { NgSelectModule } from '@ng-select/ng-select';
77
import { TimepickerModule } from 'ngx-bootstrap/timepicker';
8-
import { getRouteData } from 'src/app/_services/route.service';
8+
import { getRouteData, RouteService } from 'src/app/_services/route.service';
99
import { SwitchComponent } from 'src/app/components/switch/switch.component';
1010
@Component({
1111
selector: 'app-time-zones',
@@ -34,6 +34,7 @@ export class TimeZonesComponent {
3434
this.title.setTitle('UtilPlex |' + data.title);
3535
if (data.description) this.meta.updateTag({ name: 'description', content: data.description });
3636
this.loadData();
37+
RouteService.Title.set(data.title);
3738
}
3839
loadData() {
3940
this.httpClient.get<TimeZone[]>('./assets/json/timezones.json').subscribe((res) => {

0 commit comments

Comments
 (0)