5 Commits

Author SHA1 Message Date
1237ee4439 Style updates 2024-03-10 14:36:37 +03:00
935d1f5dd9 Modal window btns cursor fix 2024-03-10 13:56:25 +03:00
2a31e85e50 Hide lang modal on click 2024-03-10 13:56:09 +03:00
c4665737dc Lang save 2024-03-10 13:53:57 +03:00
e3dac5bc83 Merge pull request 'Modal window and translations' (#3) from dev into master
Reviewed-on: #3
2024-03-10 00:20:08 +03:00
6 changed files with 24 additions and 9 deletions

View File

@@ -1,17 +1,15 @@
import { APP_INITIALIZER, ApplicationConfig } from "@angular/core";
import { provideRouter } from "@angular/router";
import { provideHttpClient } from "@angular/common/http";
import { routes } from "./app.routes";
import { TranslateService } from "./services/translate.service";
export function setupTranslateServiceFactory(service: TranslateService) {
return () => service.use("en");
const lang = localStorage.getItem("lang") ?? "en";
return () => service.use(lang);
}
export const appConfig: ApplicationConfig = {
providers: [
provideRouter(routes),
provideHttpClient(),
TranslateService,
{

View File

@@ -10,7 +10,7 @@ a {
flex-direction: column;
justify-content: center;
gap: 0;
transition: 0.3s ease-in-out;
transition: 0.5s ease-in-out;
span {
opacity: 0;
visibility: hidden;
@@ -21,7 +21,7 @@ a {
font-size: 0.8rem;
height: 0;
font-weight: 600;
transition: opacity 0.3s ease-in-out;
transition: all 0.6s ease-in-out;
}
&:hover {
transform: translateY(-1rem);

View File

@@ -57,6 +57,8 @@
align-items: center;
span {
font-weight: 600;
user-select: none;
-webkit-user-select: none;
}
fa-icon {
font-size: 1.2rem;

View File

@@ -53,6 +53,18 @@ export class PanelComponent {
this.langModal.nativeElement.style.left = `calc(${x}px - 3.5rem)`;
}
@HostListener("window:click", ["$event"])
private closeLangModal(event: MouseEvent) {
if (
this.langModal &&
this.langBtn &&
!this.langModal.nativeElement.contains(event.target as Node) &&
!this.langBtn.nativeElement.contains(event.target as Node)
) {
this.langModal.nativeElement.classList.remove("active");
}
}
toggleModal() {
if (this.langModal) {
this.langModal.nativeElement.classList.toggle("active");
@@ -63,6 +75,7 @@ export class PanelComponent {
}
useLang(lang: string) {
this.langModal && this.langModal.nativeElement.classList.remove("active");
this.translateService.use(lang);
}

View File

@@ -5,12 +5,13 @@ import { Injectable } from "@angular/core";
export class TranslateService {
// eslint-disable-next-line @typescript-eslint/no-explicit-any
data: Record<string, any> = {};
lang = "en";
lang: string | null = null;
constructor(private http: HttpClient) {}
use(lang: string): Promise<object> {
this.lang = lang ?? "en";
localStorage.setItem("lang", this.lang);
return new Promise<object>((resolve) => {
const langPath = `assets/i18n/${lang ?? "en"}.json`;
const langPath = `assets/i18n/${this.lang}.json`;
this.http.get(langPath).subscribe({
next: (response) => {
this.data = response ?? {};

View File

@@ -47,7 +47,8 @@ ngneat-dialog {
}
.btns {
fa-icon {
cursor: pointer;
z-index: 999;
cursor: not-allowed;
}
}
.ngneat-drag-marker {