@eo4geo/ngx-bok-utils 1.1.1 → 1.2.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
|
@@ -25,8 +25,8 @@ import * as i5 from 'primeng/iconfield';
|
|
|
25
25
|
import { IconFieldModule } from 'primeng/iconfield';
|
|
26
26
|
import { Message } from 'primeng/message';
|
|
27
27
|
import { Auth, authState, signInWithEmailAndPassword, createUserWithEmailAndPassword, signInWithPopup, GoogleAuthProvider, sendPasswordResetEmail, signOut, updateProfile } from '@angular/fire/auth';
|
|
28
|
-
import { Firestore, collection, doc, getDoc, setDoc, updateDoc, docData } from '@angular/fire/firestore';
|
|
29
|
-
import { BehaviorSubject, switchMap, of } from 'rxjs';
|
|
28
|
+
import { Firestore, collection, doc, getDoc, setDoc, updateDoc, docData, query, where, getDocs } from '@angular/fire/firestore';
|
|
29
|
+
import { BehaviorSubject, switchMap, of, Observable, from, take } from 'rxjs';
|
|
30
30
|
import * as i1$1 from '@angular/router';
|
|
31
31
|
import * as i9 from 'primeng/toast';
|
|
32
32
|
import { ToastModule } from 'primeng/toast';
|
|
@@ -177,6 +177,33 @@ class UserService {
|
|
|
177
177
|
return of(null);
|
|
178
178
|
}));
|
|
179
179
|
}
|
|
180
|
+
isCurrentUser(userId) {
|
|
181
|
+
return this.auth.currentUser?.uid == userId;
|
|
182
|
+
}
|
|
183
|
+
getUidWithEmail(email) {
|
|
184
|
+
return new Observable((observer) => {
|
|
185
|
+
if (!this.isValidEmail(email)) {
|
|
186
|
+
observer.error(new Error('Invalid email.'));
|
|
187
|
+
return;
|
|
188
|
+
}
|
|
189
|
+
const userQuery = query(this.userCollection, where('email', '==', email));
|
|
190
|
+
from(getDocs(userQuery)).pipe(take(1)).subscribe({
|
|
191
|
+
next: snapshot => {
|
|
192
|
+
if (snapshot.empty) {
|
|
193
|
+
observer.error(new Error('No user found with this email.'));
|
|
194
|
+
}
|
|
195
|
+
else {
|
|
196
|
+
const userData = snapshot.docs[0].data();
|
|
197
|
+
observer.next({ uid: userData['_id'], name: userData['name'] });
|
|
198
|
+
observer.complete();
|
|
199
|
+
}
|
|
200
|
+
},
|
|
201
|
+
error: err => {
|
|
202
|
+
observer.error(err);
|
|
203
|
+
}
|
|
204
|
+
});
|
|
205
|
+
});
|
|
206
|
+
}
|
|
180
207
|
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.0.5", ngImport: i0, type: UserService, deps: [], target: i0.ɵɵFactoryTarget.Injectable });
|
|
181
208
|
static ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "19.0.5", ngImport: i0, type: UserService, providedIn: 'root' });
|
|
182
209
|
}
|
|
@@ -356,11 +383,17 @@ class HeaderComponent {
|
|
|
356
383
|
userItems = [
|
|
357
384
|
{
|
|
358
385
|
label: 'Profile',
|
|
359
|
-
icon: 'pi pi-user'
|
|
386
|
+
icon: 'pi pi-user',
|
|
387
|
+
command: () => {
|
|
388
|
+
this.profileClick.emit();
|
|
389
|
+
}
|
|
360
390
|
},
|
|
361
391
|
{
|
|
362
392
|
label: 'Organization',
|
|
363
|
-
icon: 'pi pi-users'
|
|
393
|
+
icon: 'pi pi-users',
|
|
394
|
+
command: () => {
|
|
395
|
+
this.organizationClick.emit();
|
|
396
|
+
}
|
|
364
397
|
},
|
|
365
398
|
{
|
|
366
399
|
label: 'Logout',
|
|
@@ -372,6 +405,8 @@ class HeaderComponent {
|
|
|
372
405
|
];
|
|
373
406
|
toolName = "BoK Visualization & Search";
|
|
374
407
|
login = false;
|
|
408
|
+
profileClick = new EventEmitter();
|
|
409
|
+
organizationClick = new EventEmitter();
|
|
375
410
|
hideMenu = true;
|
|
376
411
|
logged = false;
|
|
377
412
|
nameInitial = 'A';
|
|
@@ -398,7 +433,7 @@ class HeaderComponent {
|
|
|
398
433
|
}
|
|
399
434
|
}
|
|
400
435
|
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.0.5", ngImport: i0, type: HeaderComponent, deps: [{ token: UserService }], target: i0.ɵɵFactoryTarget.Component });
|
|
401
|
-
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "19.0.5", type: HeaderComponent, isStandalone: true, selector: "header", inputs: { items: "items", toolName: "toolName", login: "login" }, host: { listeners: { "document:click": "clickout($event)" } }, ngImport: i0, template: "<div class=\"header\">\r\n <div class=\"flex align-content-center p-4 mx-4\">\r\n <a href=\"https://www.spacesuite-project.eu/\" target=\"_blank\" class=\"align-self-center\"><img class=\"logo flex align-items-center justify-content-center\" src=\"assets/images/SpaceSUITE_horizontal_color.png\" alt=\"LogoSpaceSUITE\"></a>\r\n <div class=\"hidden xl:flex align-self-center fixed-text\">\r\n <strong class=\"text-2xl overflow-hidden white-space-nowrap text-overflow-ellipsis\">\r\n {{toolName}}\r\n </strong>\r\n </div>\r\n <div class=\"flex gap-6 ml-auto\">\r\n <div class=\"justify-content-center hidden md:flex\" *ngFor=\"let item of items;\">\r\n <div class=\"flex align-items-center justify-content-center gap-2 text-xl font-bold header-option\" (click)=\"subMenu.toggle($event)\" *ngIf=\"item.label != 'Share'; else share\">\r\n <i [class]=\"item.icon\"></i>\r\n <div>{{item.label}}</div>\r\n <i *ngIf=\"item.items\" class=\"pi pi-angle-down\"></i>\r\n </div>\r\n <p-tieredmenu #subMenu [model]=\"item.items\" [breakpoint]=\"'767px'\" class=\"custom-p-tieredmenu\" [popup]=\"true\" />\r\n <ng-template #share>\r\n <div class=\"flex align-items-center justify-content-center gap-3\">\r\n <div *ngFor=\"let social of item.items;\">\r\n <a [href]=\"social.url\" target=\"_blank\" class=\"flex\">\r\n <i [class]=\"social.icon\" style=\"font-size: 1.25rem\"></i>\r\n </a>\r\n </div>\r\n </div>\r\n </ng-template>\r\n </div>\r\n <div *ngIf=\"login\" class=\"hidden md:flex align-items-center justify-content-center\">\r\n <p-avatar *ngIf=\"logged; else loginButton\" [label]=\"nameInitial\" class=\"custom-p-avatar\" shape=\"circle\" (click)=\"userMenu.toggle($event)\"></p-avatar>\r\n </div>\r\n <p-tieredmenu #userMenu [model]=\"userItems\" [breakpoint]=\"'767px'\" class=\"custom-p-tieredmenu\" [popup]=\"true\" />\r\n <ng-template #loginButton>\r\n <p-button class=\"custom-header-button\" size=\"small\" label=\"Login\" aria-label=\"Login\" (onClick)=\"showLoginModal = !showLoginModal\"></p-button>\r\n </ng-template>\r\n </div>\r\n \r\n <p-button #menuButton (click)=\"hideMenu = !hideMenu\" class=\"md:hidden flex align-items-center custom-header-button ml-auto\" icon=\"pi pi-bars\" aria-label=\"Menu\"></p-button>\r\n </div>\r\n <p-tieredmenu #menu [hidden]=\"hideMenu\" [model]=\"items\" class=\"md:hidden custom-p-tieredmenu\"/>\r\n</div>\r\n\r\n<sessionModal [(visible)]=\"showLoginModal\"></sessionModal>\r\n", styles: [".header{background-color:#fff;color:var(--primary-color);position:relative;top:0;left:0;width:100%}.header:after{content:\"\";position:absolute;bottom:0;left:2rem;right:2rem;height:1px;background-color:#0000001a}.header a{color:var(--primary-color);cursor:pointer;text-decoration:none}.header a:hover{color:var(--hover-color)}.logo{width:auto;height:50px}.custom-header-button{--p-button-primary-background: var(--secondary-color);--p-button-primary-border-color: var(--secondary-color);--p-button-primary-hover-background: var(--hover-color);--p-button-primary-hover-border-color: var(--hover-color);--p-button-primary-active-background: color-mix(in srgb, var(--hover-color) 80%, black 20%);--p-button-primary-active-border-color: color-mix(in srgb, var(--hover-color) 90%, black 10%)}.header-option:hover{color:var(--hover-color);cursor:pointer}.custom-p-tieredmenu{--p-tieredmenu-item-icon-color: var(--primary-color);--p-tieredmenu-item-icon-active-color: var(--hover-color);--p-tieredmenu-item-icon-focus-color: var(--hover-color);--p-tieredmenu-item-color: var(--primary-color);--p-tieredmenu-item-active-color: var(--hover-color);--p-tieredmenu-item-focus-color: var(--hover-color)}.custom-p-avatar{color:var(--primary-color);cursor:pointer}.custom-p-avatar:hover{color:var(--hover-color)}.fixed-text{position:absolute;left:50%;transform:translate(-50%);z-index:10;max-width:20%}\n"], dependencies: [{ kind: "ngmodule", type: ButtonModule }, { kind: "component", type: i2.Button, selector: "p-button", inputs: ["type", "iconPos", "icon", "badge", "label", "disabled", "loading", "loadingIcon", "raised", "rounded", "text", "plain", "severity", "outlined", "link", "tabindex", "size", "variant", "style", "styleClass", "badgeClass", "badgeSeverity", "ariaLabel", "autofocus", "fluid", "buttonProps"], outputs: ["onClick", "onFocus", "onBlur"] }, { kind: "ngmodule", type: TieredMenuModule }, { kind: "component", type: i3$1.TieredMenu, selector: "p-tieredMenu, p-tieredmenu, p-tiered-menu", inputs: ["model", "popup", "style", "styleClass", "appendTo", "breakpoint", "autoZIndex", "baseZIndex", "autoDisplay", "showTransitionOptions", "hideTransitionOptions", "id", "ariaLabel", "ariaLabelledBy", "disabled", "tabindex"], outputs: ["onShow", "onHide"] }, { kind: "ngmodule", type: CommonModule }, { kind: "directive", type: i4$1.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i4$1.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "ngmodule", type: AvatarModule }, { kind: "component", type: i5$1.Avatar, selector: "p-avatar", inputs: ["label", "icon", "image", "size", "shape", "style", "styleClass", "ariaLabel", "ariaLabelledBy"], outputs: ["onImageError"] }, { kind: "ngmodule", type: AvatarGroupModule }, { kind: "component", type: SessionModalComponent, selector: "sessionModal", inputs: ["visible"], outputs: ["visibleChange"] }] });
|
|
436
|
+
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "19.0.5", type: HeaderComponent, isStandalone: true, selector: "header", inputs: { items: "items", toolName: "toolName", login: "login" }, outputs: { profileClick: "profileClick", organizationClick: "organizationClick" }, host: { listeners: { "document:click": "clickout($event)" } }, ngImport: i0, template: "<div class=\"header\">\r\n <div class=\"flex align-content-center p-4 mx-4\">\r\n <a href=\"https://www.spacesuite-project.eu/\" target=\"_blank\" class=\"align-self-center\"><img class=\"logo flex align-items-center justify-content-center\" src=\"assets/images/SpaceSUITE_horizontal_color.png\" alt=\"LogoSpaceSUITE\"></a>\r\n <div class=\"hidden xl:flex align-self-center fixed-text\">\r\n <strong class=\"text-2xl overflow-hidden white-space-nowrap text-overflow-ellipsis\">\r\n {{toolName}}\r\n </strong>\r\n </div>\r\n <div class=\"flex gap-6 ml-auto\">\r\n <div class=\"justify-content-center hidden md:flex\" *ngFor=\"let item of items;\">\r\n <div class=\"flex align-items-center justify-content-center gap-2 text-xl font-bold header-option\" (click)=\"subMenu.toggle($event)\" *ngIf=\"item.label != 'Share'; else share\">\r\n <i [class]=\"item.icon\"></i>\r\n <div>{{item.label}}</div>\r\n <i *ngIf=\"item.items\" class=\"pi pi-angle-down\"></i>\r\n </div>\r\n <p-tieredmenu #subMenu [model]=\"item.items\" [breakpoint]=\"'767px'\" class=\"custom-p-tieredmenu\" [popup]=\"true\" />\r\n <ng-template #share>\r\n <div class=\"flex align-items-center justify-content-center gap-3\">\r\n <div *ngFor=\"let social of item.items;\">\r\n <a [href]=\"social.url\" target=\"_blank\" class=\"flex\">\r\n <i [class]=\"social.icon\" style=\"font-size: 1.25rem\"></i>\r\n </a>\r\n </div>\r\n </div>\r\n </ng-template>\r\n </div>\r\n <div *ngIf=\"login\" class=\"hidden md:flex align-items-center justify-content-center\">\r\n <p-avatar *ngIf=\"logged; else loginButton\" [label]=\"nameInitial\" class=\"custom-p-avatar\" shape=\"circle\" (click)=\"userMenu.toggle($event)\"></p-avatar>\r\n </div>\r\n <p-tieredmenu #userMenu [model]=\"userItems\" [breakpoint]=\"'767px'\" class=\"custom-p-tieredmenu\" [popup]=\"true\" />\r\n <ng-template #loginButton>\r\n <p-button class=\"custom-header-button\" size=\"small\" label=\"Login\" aria-label=\"Login\" (onClick)=\"showLoginModal = !showLoginModal\"></p-button>\r\n </ng-template>\r\n </div>\r\n \r\n <p-button #menuButton (click)=\"hideMenu = !hideMenu\" class=\"md:hidden flex align-items-center custom-header-button ml-auto\" icon=\"pi pi-bars\" aria-label=\"Menu\"></p-button>\r\n </div>\r\n <p-tieredmenu #menu [hidden]=\"hideMenu\" [model]=\"items\" class=\"md:hidden custom-p-tieredmenu\"/>\r\n</div>\r\n\r\n<sessionModal [(visible)]=\"showLoginModal\"></sessionModal>\r\n", styles: [".header{background-color:#fff;color:var(--primary-color);position:relative;top:0;left:0;width:100%}.header:after{content:\"\";position:absolute;bottom:0;left:2rem;right:2rem;height:1px;background-color:#0000001a}.header a{color:var(--primary-color);cursor:pointer;text-decoration:none}.header a:hover{color:var(--hover-color)}.logo{width:auto;height:50px}.custom-header-button{--p-button-primary-background: var(--secondary-color);--p-button-primary-border-color: var(--secondary-color);--p-button-primary-hover-background: var(--hover-color);--p-button-primary-hover-border-color: var(--hover-color);--p-button-primary-active-background: color-mix(in srgb, var(--hover-color) 80%, black 20%);--p-button-primary-active-border-color: color-mix(in srgb, var(--hover-color) 90%, black 10%)}.header-option:hover{color:var(--hover-color);cursor:pointer}.custom-p-tieredmenu{--p-tieredmenu-item-icon-color: var(--primary-color);--p-tieredmenu-item-icon-active-color: var(--hover-color);--p-tieredmenu-item-icon-focus-color: var(--hover-color);--p-tieredmenu-item-color: var(--primary-color);--p-tieredmenu-item-active-color: var(--hover-color);--p-tieredmenu-item-focus-color: var(--hover-color)}.custom-p-avatar{color:var(--primary-color);cursor:pointer}.custom-p-avatar:hover{color:var(--hover-color)}.fixed-text{position:absolute;left:50%;transform:translate(-50%);z-index:10;max-width:20%}\n"], dependencies: [{ kind: "ngmodule", type: ButtonModule }, { kind: "component", type: i2.Button, selector: "p-button", inputs: ["type", "iconPos", "icon", "badge", "label", "disabled", "loading", "loadingIcon", "raised", "rounded", "text", "plain", "severity", "outlined", "link", "tabindex", "size", "variant", "style", "styleClass", "badgeClass", "badgeSeverity", "ariaLabel", "autofocus", "fluid", "buttonProps"], outputs: ["onClick", "onFocus", "onBlur"] }, { kind: "ngmodule", type: TieredMenuModule }, { kind: "component", type: i3$1.TieredMenu, selector: "p-tieredMenu, p-tieredmenu, p-tiered-menu", inputs: ["model", "popup", "style", "styleClass", "appendTo", "breakpoint", "autoZIndex", "baseZIndex", "autoDisplay", "showTransitionOptions", "hideTransitionOptions", "id", "ariaLabel", "ariaLabelledBy", "disabled", "tabindex"], outputs: ["onShow", "onHide"] }, { kind: "ngmodule", type: CommonModule }, { kind: "directive", type: i4$1.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i4$1.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "ngmodule", type: AvatarModule }, { kind: "component", type: i5$1.Avatar, selector: "p-avatar", inputs: ["label", "icon", "image", "size", "shape", "style", "styleClass", "ariaLabel", "ariaLabelledBy"], outputs: ["onImageError"] }, { kind: "ngmodule", type: AvatarGroupModule }, { kind: "component", type: SessionModalComponent, selector: "sessionModal", inputs: ["visible"], outputs: ["visibleChange"] }] });
|
|
402
437
|
}
|
|
403
438
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.0.5", ngImport: i0, type: HeaderComponent, decorators: [{
|
|
404
439
|
type: Component,
|
|
@@ -409,6 +444,10 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.0.5", ngImpor
|
|
|
409
444
|
type: Input
|
|
410
445
|
}], login: [{
|
|
411
446
|
type: Input
|
|
447
|
+
}], profileClick: [{
|
|
448
|
+
type: Output
|
|
449
|
+
}], organizationClick: [{
|
|
450
|
+
type: Output
|
|
412
451
|
}], clickout: [{
|
|
413
452
|
type: HostListener,
|
|
414
453
|
args: ['document:click', ['$event']]
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"eo4geo-ngx-bok-utils.mjs","sources":["../../../../projects/eo4geo/ngx-bok-utils/src/lib/components/footer/footer.component.ts","../../../../projects/eo4geo/ngx-bok-utils/src/lib/components/footer/footer.component.html","../../../../projects/eo4geo/ngx-bok-utils/src/lib/services/user.service.ts","../../../../projects/eo4geo/ngx-bok-utils/src/lib/components/signInModal/sessionModal.component.ts","../../../../projects/eo4geo/ngx-bok-utils/src/lib/components/signInModal/sessionModal.component.html","../../../../projects/eo4geo/ngx-bok-utils/src/lib/components/header/header.component.ts","../../../../projects/eo4geo/ngx-bok-utils/src/lib/components/header/header.component.html","../../../../projects/eo4geo/ngx-bok-utils/src/lib/components/404/notFoundPage.component.ts","../../../../projects/eo4geo/ngx-bok-utils/src/lib/components/404/notFoundPage.component.html","../../../../projects/eo4geo/ngx-bok-utils/src/lib/components/userPage/userPage.component.ts","../../../../projects/eo4geo/ngx-bok-utils/src/lib/components/userPage/userPage.component.html","../../../../projects/eo4geo/ngx-bok-utils/src/public-api.ts","../../../../projects/eo4geo/ngx-bok-utils/src/eo4geo-ngx-bok-utils.ts"],"sourcesContent":["import {Component, EventEmitter, Output} from '@angular/core';\nimport { ToolbarModule } from 'primeng/toolbar';\n\n@Component({\n standalone: true,\n selector: 'footer',\n templateUrl: './footer.component.html',\n styleUrls: ['./footer.component.css'],\n imports: [ToolbarModule],\n})\nexport class FooterComponent {\n @Output() openReleaseNotes = new EventEmitter<void>();\n @Output() openUserManual = new EventEmitter<void>();\n\n\n clickReleaseNotes(): void {\n this.openReleaseNotes.emit();\n }\n\n clickUserManual(): void {\n this.openUserManual.emit();\n }\n}\n","<div class=\"footer\">\r\n <p-toolbar [style]=\"{'color': 'white', 'background': 'none', 'border': '0px', 'gap': '3rem'}\">\r\n <ng-template #start>\r\n <div class=\"flex flex-column align-items-center gap-1\">\r\n <div class=\"inline\">\r\n <a href=\"http://www.eo4geo.eu/\" target=\"_blank\"><img class=\"logo\" src=\"assets/images/EO4GEO_LOGO_WHITE.png\" alt=\"LogoEO4GEO\"></a>\r\n <a href=\"https://www.spacesuite-project.eu/\" target=\"_blank\"><img class=\"logo\" src=\"assets/images/SpaceSUITE_horizontal_white.png\" alt=\"LogoSpaceSUITE\"></a>\r\n </div>\r\n <span style=\"font-size: x-small;\">All tools were developed by <a href=\"https://geotec.uji.es/\" target=\"_blank\">GEOTEC</a></span>\r\n </div>\r\n </ng-template>\r\n <ng-template #center>\r\n <div style=\"font-size: smaller;\" class=\"flex flex-wrap gap-1\">\r\n <span>© 2025 spaceSUITE</span>\r\n <span class=\"link-separator\">\r\n | <a (click)=\"clickUserManual()\">User Manual</a>\r\n </span>\r\n <span class=\"link-separator\">\r\n | <a (click)=\"clickReleaseNotes()\">Release Notes</a>\r\n </span>\r\n <span class=\"link-separator\">\r\n | <a href=\"mailto:eo4geo@gmail.com?subject=EO4GEO%20Tools%20Contact\">Contact</a>\r\n </span>\r\n <span class=\"link-separator\">\r\n | <a href=\"https://www.spacesuite-project.eu/privacy-policy/\" target=\"_blank\">Privacy Policy</a>\r\n </span>\r\n </div>\r\n </ng-template>\r\n <ng-template #end>\r\n <div class=\"flex flex-column align-items-center gap-1 max-w-20rem\">\r\n <img class=\"logo\" src=\"assets/images/EU_Funding.png\" alt=\"LogoEU\">\r\n <span class=\"white-space-normal\" style=\"font-size: xx-small;\">Views and opinions expressed are however those of the author(s) only and do not necessarily reflect those of the European Union or the European Education and Culture Executive Agency (EACEA). Neither the European Union nor EACEA can be held responsible for them.</span>\r\n </div>\r\n </ng-template>\r\n </p-toolbar>\r\n</div>","import { inject, Injectable } from '@angular/core';\r\nimport { Auth, authState, createUserWithEmailAndPassword, GoogleAuthProvider, sendPasswordResetEmail, signInWithEmailAndPassword, signInWithPopup, signOut, updateProfile } from '@angular/fire/auth';\r\nimport { Firestore, collection, CollectionReference, doc, getDoc, setDoc, updateDoc, docData, DocumentReference } from '@angular/fire/firestore';\r\nimport { BehaviorSubject, Observable, of, switchMap } from 'rxjs';\r\n\r\n@Injectable({\r\n providedIn: 'root',\r\n})\r\nexport class UserService {\r\n private auth = inject(Auth);\r\n private db = inject(Firestore);\r\n\r\n private userCollection: CollectionReference;\r\n private errorMessages = new Map<string, string>([\r\n [\"auth/user-not-found\", \"Invalid email.\"],\r\n [\"auth/wrong-password\", \"Incorrect password.\"],\r\n [\"auth/missing-password\", \"Incorrect password.\"],\r\n [\"auth/invalid-email\", \"Invalid email.\"],\r\n [\"auth/email-already-in-use\", \"This email is already in use.\"],\r\n [\"auth/weak-password\", \"Weak password. Use at least 6 characters.\"],\r\n [\"auth/passwords-do-not-match\", \"Passwords do not match.\"],\r\n [\"auth/cancelled-popup-request\", \"The popup request was canceled.\"],\r\n [\"auth/network-request-failed\", \"Network error.\"],\r\n ]);\r\n\r\n private userStateSubject = new BehaviorSubject<{ logged: boolean; nameInitial: string }>({\r\n logged: false,\r\n nameInitial: 'A'\r\n });\r\n \r\n constructor() {\r\n this.userCollection = collection(this.db, 'Users');\r\n\r\n authState(this.auth).subscribe(user => {\r\n const logged = !!user;\r\n const nameInitial = user?.displayName ? user.displayName[0].toUpperCase() : 'A';\r\n this.userStateSubject.next({ logged, nameInitial });\r\n });\r\n }\r\n\r\n async loginWithEmailAndPassword(email: string, password: string): Promise<void> {\r\n try {\r\n if (!this.isValidEmail(email)) throw { code: \"auth/invalid-email\" };\r\n await signInWithEmailAndPassword(this.auth, email, password);\r\n } catch (error: any) {\r\n throw this.handleAuthError(error);\r\n }\r\n }\r\n\r\n async registerWithEmailAndPassword(email: string, password: string, repeatPassword: string): Promise<void> {\r\n try {\r\n if (!this.isValidEmail(email)) throw { code: \"auth/invalid-email\" };\r\n if (password.length < 6) throw { code: \"auth/weak-password\" };\r\n if (password !== repeatPassword) throw { code: \"auth/passwords-do-not-match\" };\r\n await createUserWithEmailAndPassword(this.auth, email, password);\r\n await this.checkUser();\r\n } catch (error: any) {\r\n throw this.handleAuthError(error);\r\n }\r\n }\r\n\r\n async loginWithGoogle(): Promise<void> {\r\n try {\r\n await signInWithPopup(this.auth, new GoogleAuthProvider());\r\n await this.checkUser();\r\n } catch (error: any) {\r\n throw this.handleAuthError(error);\r\n }\r\n }\r\n\r\n async recoverPassword(email: string): Promise<void> {\r\n try {\r\n if (!this.isValidEmail(email)) throw { code: \"auth/invalid-email\" };\r\n await sendPasswordResetEmail(this.auth, email);\r\n } catch (error: any) {\r\n throw this.handleAuthError(error);\r\n }\r\n }\r\n\r\n private async checkUser(): Promise<void> {\r\n if (!this.auth.currentUser) return;\r\n\r\n const userDocRef = doc(this.userCollection, this.auth.currentUser.uid);\r\n const userDocSnap = await getDoc(userDocRef);\r\n\r\n if (!userDocSnap.exists()) {\r\n await setDoc(userDocRef, {\r\n _id: this.auth.currentUser.uid,\r\n email: this.auth.currentUser.email,\r\n name: this.auth.currentUser.displayName || \"\",\r\n });\r\n }\r\n }\r\n\r\n private handleAuthError(error: any): string {\r\n if (error.code === \"auth/popup-closed-by-user\") return '';\r\n return this.errorMessages.get(error.code) || \"An error occurred. Please try again.\";\r\n }\r\n\r\n private isValidEmail(email: string): boolean {\r\n const emailRegex = /^[^\\s@]+@[^\\s@]+\\.[^\\s@]+$/;\r\n return emailRegex.test(email);\r\n }\r\n\r\n getUserState(): Observable<{ logged: boolean; nameInitial: string }> {\r\n return this.userStateSubject.asObservable();\r\n }\r\n\r\n async logout(): Promise<void> {\r\n await signOut(this.auth);\r\n }\r\n\r\n async updateUserName(newName: string): Promise<void> {\r\n const user = this.auth.currentUser;\r\n if (user) {\r\n try {\r\n const userDocRef = doc(this.userCollection, user.uid);\r\n await updateDoc(userDocRef, { name: newName });\r\n await updateProfile(user, { displayName: newName });\r\n this.userStateSubject.next({ logged: true, nameInitial: newName[0].toUpperCase() });\r\n } catch (error) {\r\n console.error('Error updating name:', error);\r\n throw error;\r\n }\r\n }\r\n }\r\n\r\n getNameAndEmail(): Observable<{ email: string; name: string } | null> {\r\n return authState(this.auth).pipe(\r\n switchMap(user => {\r\n if (user) {\r\n const userDocRef: DocumentReference = doc(this.userCollection, user.uid);\r\n return docData(userDocRef) as Observable<{ email: string; name: string }>;\r\n }\r\n return of(null);\r\n })\r\n );\r\n }\r\n}\r\n","import { Component, EventEmitter, Input, Output, SimpleChanges } from \"@angular/core\";\r\nimport { ButtonModule } from \"primeng/button\";\r\nimport { InputTextModule } from \"primeng/inputtext\";\r\nimport { DialogModule } from 'primeng/dialog';\r\nimport { FloatLabelModule } from \"primeng/floatlabel\";\r\nimport { FormsModule } from \"@angular/forms\";\r\nimport { InputIconModule } from 'primeng/inputicon';\r\nimport { IconFieldModule } from 'primeng/iconfield';\r\nimport { Message } from 'primeng/message';\r\nimport { CommonModule } from \"@angular/common\";\r\nimport { UserService } from \"../../services/user.service\";\r\n\r\n@Component({\r\n standalone: true,\r\n selector: 'sessionModal',\r\n templateUrl: './sessionModal.component.html',\r\n styleUrls: ['./sessionModal.component.css'],\r\n imports: [ButtonModule, DialogModule, InputIconModule, IconFieldModule, InputTextModule, FloatLabelModule, FormsModule, CommonModule, Message],\r\n})\r\nexport class SessionModalComponent {\r\n\r\n @Input() visible: boolean = false;\r\n @Output() visibleChange = new EventEmitter<boolean>();\r\n\r\n login: boolean = true;\r\n resetpassword: boolean = false;\r\n\r\n email: string = '';\r\n password: string = '';\r\n repeatPassword: string = '';\r\n\r\n error: string | null = null;\r\n\r\n constructor(private userService: UserService) {}\r\n\r\n ngOnChanges(changes: SimpleChanges) {\r\n this.login = changes['visible'].currentValue;\r\n this.resetpassword = !changes['visible'].currentValue;\r\n this.email = '';\r\n this.password = '';\r\n this.repeatPassword = '';\r\n this.error = null;\r\n }\r\n\r\n getHeader(): string {\r\n if (this.resetpassword) return 'Recover Password';\r\n if (this.login) return 'Login';\r\n return 'Register';\r\n }\r\n\r\n getSwitchLabel() {\r\n if (this.resetpassword) return 'Return';\r\n if (!this.login) return 'Login';\r\n return 'Register';\r\n }\r\n\r\n clickSwitchButton() {\r\n this.error = null;\r\n if (this.resetpassword) this.resetpassword = !this.resetpassword;\r\n else this.login = !this.login;\r\n }\r\n\r\n clickMainButton() {\r\n if (this.resetpassword) return this.recoverPassword();\r\n if (this.login) return this.loginWithEmailAndPassword();\r\n return this.registerWithEmailAndPassword();\r\n }\r\n\r\n async loginWithGoogle() {\r\n try {\r\n await this.userService.loginWithGoogle();\r\n this.visibleChange.emit(false);\r\n } catch (error: any) {\r\n this.error = error;\r\n }\r\n }\r\n\r\n async loginWithEmailAndPassword() {\r\n try {\r\n await this.userService.loginWithEmailAndPassword(this.email, this.password);\r\n this.visibleChange.emit(false);\r\n } catch (error: any) {\r\n this.error = error;\r\n }\r\n }\r\n\r\n async registerWithEmailAndPassword() {\r\n try {\r\n await this.userService.registerWithEmailAndPassword(this.email, this.password, this.repeatPassword);\r\n this.visibleChange.emit(false);\r\n } catch (error: any) {\r\n this.error = error;\r\n }\r\n }\r\n\r\n async recoverPassword() {\r\n try {\r\n await this.userService.recoverPassword(this.email);\r\n this.password = '';\r\n this.repeatPassword = '';\r\n this.resetpassword = !this.resetpassword;\r\n } catch (error: any) {\r\n this.error = error;\r\n }\r\n }\r\n}","<p-dialog [header]=\"getHeader()\" [modal]=\"true\" [visible]=\"visible\" resizable=\"false\" (visibleChange)=\"visibleChange.emit($event)\" [style]=\"{color: 'var(--primary-color)'}\">\r\n <p-message *ngIf=\"error\" severity=\"error\" variant=\"simple\" styleClass=\"mb-4 white-space-normal\" class=\"error-info\">{{error}}</p-message>\r\n <div class=\"flex items-center gap-4 mt-2 mb-1\">\r\n <p-floatlabel variant=\"on\" [class]=\"error ? 'custom-floatlabel error-floatlabel' : 'custom-floatlabel'\">\r\n <p-iconfield>\r\n <p-inputicon class=\"pi pi-user\" />\r\n <input pInputText id=\"email\" autocomplete=\"off\" [class]=\"error ? 'custom-input error-input' : 'custom-input'\" [(ngModel)]=\"email\"/>\r\n </p-iconfield>\r\n <label for=\"email\">Email</label>\r\n </p-floatlabel>\r\n </div>\r\n <div *ngIf=\"!resetpassword\" class=\"flex items-center gap-4 mt-4 mb-1\">\r\n <p-floatlabel variant=\"on\" [class]=\"error ? 'custom-floatlabel error-floatlabel' : 'custom-floatlabel'\">\r\n <p-iconfield>\r\n <p-inputicon class=\"pi pi-lock\" />\r\n <input pInputText id=\"password\" autocomplete=\"off\" [class]=\"error ? 'custom-input error-input' : 'custom-input'\" [(ngModel)]=\"password\"/>\r\n </p-iconfield>\r\n <label for=\"password\">Password</label>\r\n </p-floatlabel>\r\n </div>\r\n <div *ngIf=\"!login\" class=\"flex items-center gap-4 mt-4 mb-1\">\r\n <p-floatlabel variant=\"on\" [class]=\"error ? 'custom-floatlabel error-floatlabel' : 'custom-floatlabel'\">\r\n <p-iconfield>\r\n <p-inputicon class=\"pi pi-lock\" />\r\n <input pInputText id=\"rPassword\" autocomplete=\"off\" [class]=\"error ? 'custom-input error-input' : 'custom-input'\" [(ngModel)]=\"repeatPassword\"/>\r\n </p-iconfield>\r\n <label for=\"rPassword\">Repeat Password</label>\r\n </p-floatlabel>\r\n </div>\r\n <a *ngIf=\"login && !resetpassword\" class=\"inline-flex ml-2 text-sm\" (click)=\"resetpassword = !resetpassword; error = null;\">Forgot Password?</a>\r\n <div class=\"flex align-items-center justify-content-between gap-2 mt-4\">\r\n <div class=\"flex justify-end gap-2\">\r\n <p-button class=\"custom-button\" [label]=\"getHeader()\" (click)=\"clickMainButton()\" />\r\n <p-button severity=\"secondary\" class=\"custom-secondary-button\" [label]=\"getSwitchLabel()\" (click)=\"clickSwitchButton()\" />\r\n </div>\r\n <p-button *ngIf=\"!resetpassword\" class=\"custom-button\" icon=\"pi pi-google\" label=\"Google\" (click)=\"loginWithGoogle()\" />\r\n </div>\r\n</p-dialog>","import { CommonModule } from '@angular/common';\nimport {Component, HostListener, inject, Input} from '@angular/core';\nimport { MenuItem } from 'primeng/api';\nimport { ButtonModule } from 'primeng/button';\nimport { TieredMenuModule } from 'primeng/tieredmenu';\nimport { AvatarModule } from 'primeng/avatar';\nimport { AvatarGroupModule } from 'primeng/avatargroup';\nimport { Subscription } from 'rxjs';\nimport { SessionModalComponent } from \"../signInModal/sessionModal.component\";\nimport { UserService } from '../../services/user.service';\n\n@Component({\n standalone: true,\n selector: 'header',\n templateUrl: './header.component.html',\n styleUrls: ['./header.component.css'],\n imports: [ButtonModule, TieredMenuModule, CommonModule, AvatarModule, AvatarGroupModule, SessionModalComponent],\n})\nexport class HeaderComponent {\n @Input() items: MenuItem[] = [ \n {\n label: 'Tools',\n icon: 'pi pi-cog',\n items: [\n {\n label: 'BoK Visualization & Search',\n icon: 'pi pi-search',\n style: {'--p-tieredmenu-item-color': 'var(--hover-color)'},\n iconStyle: {'color': 'var(--hover-color)'}\n },\n {\n label: 'Occupational Profile Tool',\n icon: 'pi pi-users',\n url: 'https://eo4geo-opt.web.app',\n },\n {\n label: 'Job Offer Tool',\n icon: 'pi pi-book',\n url: 'https://eo4geo-jot.web.app',\n },\n {\n label: 'Curriculum Design Tool',\n icon: 'pi pi-graduation-cap',\n url: 'https://eo4geo-cdt.web.app',\n },\n {\n label: 'BoK Annotation Tool',\n icon: 'pi pi-pencil',\n url: 'https://eo4geo-bat.web.app',\n },\n {\n label: 'BoK Matching Tool',\n icon: 'pi pi-equals',\n url: 'https://eo4geo-bmt.web.app',\n }\n ]\n }, \n {\n label: 'Share',\n icon: 'pi pi-share-alt',\n items: [\n {\n label: 'X',\n icon: 'pi pi-twitter',\n url: 'https://twitter.com/SpaceSUITE_eu',\n },\n {\n label: 'Facebook',\n icon: 'pi pi-facebook',\n url: 'https://www.facebook.com/spacesuiteproject/',\n },\n {\n label: 'Youtube',\n icon: 'pi pi-youtube',\n url: 'https://www.youtube.com/@SpaceSUITE_eu',\n },\n {\n label: 'LinkedIn',\n icon: 'pi pi-linkedin',\n url: 'https://www.linkedin.com/showcase/spacesuite_eu/',\n }\n ]\n }\n ];\n\n userItems: MenuItem[] = [\n {\n label: 'Profile', \n icon: 'pi pi-user'\n },\n {\n label: 'Organization', \n icon: 'pi pi-users'\n }, \n {\n label: 'Logout', \n icon: 'pi pi-sign-out', \n command: () => {\n this.logout();\n }\n }\n ];\n\n @Input() toolName: string = \"BoK Visualization & Search\";\n @Input() login: boolean = false;\n \n hideMenu: boolean = true;\n logged: boolean = false;\n nameInitial: string = 'A';\n\n showLoginModal: boolean = false;\n\n private userStateSubscription!: Subscription;\n\n constructor(private userService: UserService) {}\n\n ngOnInit() {\n this.userStateSubscription = this.userService.getUserState().subscribe(({ logged, nameInitial }) => {\n this.logged = logged;\n this.nameInitial = nameInitial;\n });\n }\n\n ngOnDestroy() {\n this.userStateSubscription?.unsubscribe();\n }\n\n async logout() {\n await this.userService.logout();\n }\n\n @HostListener('document:click', ['$event'])\n clickout(event: { target: any }) {\n if (!event.target.closest(\"p-tieredmenu\") && !event.target.closest(\"p-button.custom-header-button\")) {\n this.hideMenu = true;\n }\n }\n}\n","<div class=\"header\">\r\n <div class=\"flex align-content-center p-4 mx-4\">\r\n <a href=\"https://www.spacesuite-project.eu/\" target=\"_blank\" class=\"align-self-center\"><img class=\"logo flex align-items-center justify-content-center\" src=\"assets/images/SpaceSUITE_horizontal_color.png\" alt=\"LogoSpaceSUITE\"></a>\r\n <div class=\"hidden xl:flex align-self-center fixed-text\">\r\n <strong class=\"text-2xl overflow-hidden white-space-nowrap text-overflow-ellipsis\">\r\n {{toolName}}\r\n </strong>\r\n </div>\r\n <div class=\"flex gap-6 ml-auto\">\r\n <div class=\"justify-content-center hidden md:flex\" *ngFor=\"let item of items;\">\r\n <div class=\"flex align-items-center justify-content-center gap-2 text-xl font-bold header-option\" (click)=\"subMenu.toggle($event)\" *ngIf=\"item.label != 'Share'; else share\">\r\n <i [class]=\"item.icon\"></i>\r\n <div>{{item.label}}</div>\r\n <i *ngIf=\"item.items\" class=\"pi pi-angle-down\"></i>\r\n </div>\r\n <p-tieredmenu #subMenu [model]=\"item.items\" [breakpoint]=\"'767px'\" class=\"custom-p-tieredmenu\" [popup]=\"true\" />\r\n <ng-template #share>\r\n <div class=\"flex align-items-center justify-content-center gap-3\">\r\n <div *ngFor=\"let social of item.items;\">\r\n <a [href]=\"social.url\" target=\"_blank\" class=\"flex\">\r\n <i [class]=\"social.icon\" style=\"font-size: 1.25rem\"></i>\r\n </a>\r\n </div>\r\n </div>\r\n </ng-template>\r\n </div>\r\n <div *ngIf=\"login\" class=\"hidden md:flex align-items-center justify-content-center\">\r\n <p-avatar *ngIf=\"logged; else loginButton\" [label]=\"nameInitial\" class=\"custom-p-avatar\" shape=\"circle\" (click)=\"userMenu.toggle($event)\"></p-avatar>\r\n </div>\r\n <p-tieredmenu #userMenu [model]=\"userItems\" [breakpoint]=\"'767px'\" class=\"custom-p-tieredmenu\" [popup]=\"true\" />\r\n <ng-template #loginButton>\r\n <p-button class=\"custom-header-button\" size=\"small\" label=\"Login\" aria-label=\"Login\" (onClick)=\"showLoginModal = !showLoginModal\"></p-button>\r\n </ng-template>\r\n </div>\r\n \r\n <p-button #menuButton (click)=\"hideMenu = !hideMenu\" class=\"md:hidden flex align-items-center custom-header-button ml-auto\" icon=\"pi pi-bars\" aria-label=\"Menu\"></p-button>\r\n </div>\r\n <p-tieredmenu #menu [hidden]=\"hideMenu\" [model]=\"items\" class=\"md:hidden custom-p-tieredmenu\"/>\r\n</div>\r\n\r\n<sessionModal [(visible)]=\"showLoginModal\"></sessionModal>\r\n","import { Component } from \"@angular/core\";\r\nimport { Router } from \"@angular/router\";\r\nimport { ButtonModule } from 'primeng/button';\r\n\r\n@Component({\r\n standalone: true,\r\n selector: 'not-found-page',\r\n templateUrl: './notFoundPage.component.html',\r\n styleUrls: ['./notFoundPage.component.css'],\r\n imports: [ButtonModule],\r\n})\r\nexport class NotFoundPageComponent {\r\n constructor(private router: Router) {}\r\n\r\n goToHomepage() {\r\n this.router.navigate([''], { replaceUrl: true });\r\n }\r\n}","<div class=\"flex flex-column justify-content-center align-items-center m-8\">\r\n <img src=\"assets/images/hosting-404-error-1.png\" alt=\"not Found\" class=\"w-4 m-4\">\r\n <h1>page not found</h1>\r\n <p-button label=\"Go To Homepage\" size=\"large\" class=\"custom-button\" (onClick)=\"goToHomepage()\"></p-button>\r\n</div>","import { Component} from \"@angular/core\";\r\nimport { ButtonModule } from \"primeng/button\";\r\nimport { InputTextModule } from \"primeng/inputtext\";\r\nimport { FloatLabelModule } from \"primeng/floatlabel\";\r\nimport { FormsModule } from \"@angular/forms\";\r\nimport { InputIconModule } from 'primeng/inputicon';\r\nimport { IconFieldModule } from 'primeng/iconfield';\r\nimport { CommonModule } from \"@angular/common\";\r\nimport { Subscription } from \"rxjs\";\r\nimport { UserService } from \"../../services/user.service\";\r\nimport { ToastModule } from 'primeng/toast';\r\nimport { MessageService } from \"primeng/api\";\r\n\r\n\r\n@Component({\r\n standalone: true,\r\n selector: 'user-page',\r\n templateUrl: './userPage.component.html',\r\n styleUrls: ['./userPage.component.css'],\r\n imports: [ButtonModule, InputIconModule, IconFieldModule, InputTextModule, FloatLabelModule, FormsModule, CommonModule, ToastModule],\r\n providers: [MessageService]\r\n})\r\nexport class UserPageComponent {\r\n userSubscription!: Subscription;\r\n\r\n\r\n email: string = \"\";\r\n name: string = \"\";\r\n newName: string = \"\";\r\n\r\n constructor(private userService: UserService, private messageService: MessageService) {}\r\n \r\n ngOnInit() {\r\n this.userSubscription = this.userService.getNameAndEmail().subscribe(userData => {\r\n this.email = userData?.email ?? '';\r\n this.name = userData?.name ?? '';\r\n this.newName = this.name;\r\n });\r\n }\r\n\r\n ngOnDestroy() {\r\n this.userSubscription?.unsubscribe();\r\n }\r\n\r\n async updateName() {\r\n try {\r\n await this.userService.updateUserName(this.newName);\r\n this.messageService.add({ \r\n severity: 'info', \r\n summary: 'Info', \r\n detail: `Name updated without problems.`,\r\n life: 3000, \r\n closable: true \r\n });\r\n } catch (error) {\r\n this.messageService.add({ \r\n severity: 'error', \r\n summary: 'Error', \r\n detail: 'Something went wrong. Try again later or contact the administrator.', \r\n life: 3000, \r\n closable: true \r\n });\r\n }\r\n }\r\n\r\n}","<p-toast class=\"custom-toast\" position=\"bottom-right\"/>\r\n<div class=\"flex flex-column align-items-center justify-content-center p-4\">\r\n <h2>User Profile</h2>\r\n <div class=\"flex gap-4\">\r\n <p-floatlabel variant=\"on\" class=\"custom-floatlabel\">\r\n <p-iconfield>\r\n <p-inputicon class=\"pi pi-envelope\" />\r\n <input pInputText id=\"email\" [disabled]=\"true\" autocomplete=\"off\" class=\"w-full max-w-25rem custom-input\" [(ngModel)]=\"email\"/>\r\n </p-iconfield>\r\n <label for=\"email\">Email</label>\r\n </p-floatlabel>\r\n </div>\r\n <div class=\"flex gap-4 mt-4 mb-4\">\r\n <p-floatlabel variant=\"on\" class=\"custom-floatlabel\">\r\n <p-iconfield>\r\n <p-inputicon class=\"pi pi-user\" />\r\n <input pInputText id=\"password\" [disabled]=\"email == ''\" autocomplete=\"off\" class=\"w-full max-w-25rem custom-input\" [(ngModel)]=\"newName\"/>\r\n </p-iconfield>\r\n <label for=\"password\">Name</label>\r\n </p-floatlabel>\r\n </div>\r\n <p-button class=\"custom-button\" label=\"Update Name\" [disabled]=\"(name == newName || email == '')\" (click)=\"updateName()\" />\r\n</div>","/*\r\n * Public API Surface of ngx-bok-utils\r\n */\r\n\r\nexport * from './lib/components/footer/footer.component';\r\nexport * from './lib/components/header/header.component';\r\nexport * from './lib/components/404/notFoundPage.component';\r\nexport * from './lib/components/userPage/userPage.component';","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public-api';\n"],"names":["i1.UserService","i3","i4","i5","i1","i2"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"eo4geo-ngx-bok-utils.mjs","sources":["../../../../projects/eo4geo/ngx-bok-utils/src/lib/components/footer/footer.component.ts","../../../../projects/eo4geo/ngx-bok-utils/src/lib/components/footer/footer.component.html","../../../../projects/eo4geo/ngx-bok-utils/src/lib/services/user.service.ts","../../../../projects/eo4geo/ngx-bok-utils/src/lib/components/signInModal/sessionModal.component.ts","../../../../projects/eo4geo/ngx-bok-utils/src/lib/components/signInModal/sessionModal.component.html","../../../../projects/eo4geo/ngx-bok-utils/src/lib/components/header/header.component.ts","../../../../projects/eo4geo/ngx-bok-utils/src/lib/components/header/header.component.html","../../../../projects/eo4geo/ngx-bok-utils/src/lib/components/404/notFoundPage.component.ts","../../../../projects/eo4geo/ngx-bok-utils/src/lib/components/404/notFoundPage.component.html","../../../../projects/eo4geo/ngx-bok-utils/src/lib/components/userPage/userPage.component.ts","../../../../projects/eo4geo/ngx-bok-utils/src/lib/components/userPage/userPage.component.html","../../../../projects/eo4geo/ngx-bok-utils/src/public-api.ts","../../../../projects/eo4geo/ngx-bok-utils/src/eo4geo-ngx-bok-utils.ts"],"sourcesContent":["import {Component, EventEmitter, Output} from '@angular/core';\nimport { ToolbarModule } from 'primeng/toolbar';\n\n@Component({\n standalone: true,\n selector: 'footer',\n templateUrl: './footer.component.html',\n styleUrls: ['./footer.component.css'],\n imports: [ToolbarModule],\n})\nexport class FooterComponent {\n @Output() openReleaseNotes = new EventEmitter<void>();\n @Output() openUserManual = new EventEmitter<void>();\n\n\n clickReleaseNotes(): void {\n this.openReleaseNotes.emit();\n }\n\n clickUserManual(): void {\n this.openUserManual.emit();\n }\n}\n","<div class=\"footer\">\r\n <p-toolbar [style]=\"{'color': 'white', 'background': 'none', 'border': '0px', 'gap': '3rem'}\">\r\n <ng-template #start>\r\n <div class=\"flex flex-column align-items-center gap-1\">\r\n <div class=\"inline\">\r\n <a href=\"http://www.eo4geo.eu/\" target=\"_blank\"><img class=\"logo\" src=\"assets/images/EO4GEO_LOGO_WHITE.png\" alt=\"LogoEO4GEO\"></a>\r\n <a href=\"https://www.spacesuite-project.eu/\" target=\"_blank\"><img class=\"logo\" src=\"assets/images/SpaceSUITE_horizontal_white.png\" alt=\"LogoSpaceSUITE\"></a>\r\n </div>\r\n <span style=\"font-size: x-small;\">All tools were developed by <a href=\"https://geotec.uji.es/\" target=\"_blank\">GEOTEC</a></span>\r\n </div>\r\n </ng-template>\r\n <ng-template #center>\r\n <div style=\"font-size: smaller;\" class=\"flex flex-wrap gap-1\">\r\n <span>© 2025 spaceSUITE</span>\r\n <span class=\"link-separator\">\r\n | <a (click)=\"clickUserManual()\">User Manual</a>\r\n </span>\r\n <span class=\"link-separator\">\r\n | <a (click)=\"clickReleaseNotes()\">Release Notes</a>\r\n </span>\r\n <span class=\"link-separator\">\r\n | <a href=\"mailto:eo4geo@gmail.com?subject=EO4GEO%20Tools%20Contact\">Contact</a>\r\n </span>\r\n <span class=\"link-separator\">\r\n | <a href=\"https://www.spacesuite-project.eu/privacy-policy/\" target=\"_blank\">Privacy Policy</a>\r\n </span>\r\n </div>\r\n </ng-template>\r\n <ng-template #end>\r\n <div class=\"flex flex-column align-items-center gap-1 max-w-20rem\">\r\n <img class=\"logo\" src=\"assets/images/EU_Funding.png\" alt=\"LogoEU\">\r\n <span class=\"white-space-normal\" style=\"font-size: xx-small;\">Views and opinions expressed are however those of the author(s) only and do not necessarily reflect those of the European Union or the European Education and Culture Executive Agency (EACEA). Neither the European Union nor EACEA can be held responsible for them.</span>\r\n </div>\r\n </ng-template>\r\n </p-toolbar>\r\n</div>","import { inject, Injectable } from '@angular/core';\r\nimport { Auth, authState, createUserWithEmailAndPassword, GoogleAuthProvider, sendPasswordResetEmail, signInWithEmailAndPassword, signInWithPopup, signOut, updateProfile } from '@angular/fire/auth';\r\nimport { Firestore, collection, CollectionReference, doc, getDoc, setDoc, updateDoc, docData, DocumentReference, query, where, getDocs } from '@angular/fire/firestore';\r\nimport { BehaviorSubject, from, Observable, of, switchMap, take } from 'rxjs';\r\n\r\n@Injectable({\r\n providedIn: 'root',\r\n})\r\nexport class UserService {\r\n private auth = inject(Auth);\r\n private db = inject(Firestore);\r\n\r\n private userCollection: CollectionReference;\r\n private errorMessages = new Map<string, string>([\r\n [\"auth/user-not-found\", \"Invalid email.\"],\r\n [\"auth/wrong-password\", \"Incorrect password.\"],\r\n [\"auth/missing-password\", \"Incorrect password.\"],\r\n [\"auth/invalid-email\", \"Invalid email.\"],\r\n [\"auth/email-already-in-use\", \"This email is already in use.\"],\r\n [\"auth/weak-password\", \"Weak password. Use at least 6 characters.\"],\r\n [\"auth/passwords-do-not-match\", \"Passwords do not match.\"],\r\n [\"auth/cancelled-popup-request\", \"The popup request was canceled.\"],\r\n [\"auth/network-request-failed\", \"Network error.\"],\r\n ]);\r\n\r\n private userStateSubject = new BehaviorSubject<{ logged: boolean; nameInitial: string }>({\r\n logged: false,\r\n nameInitial: 'A'\r\n });\r\n \r\n constructor() {\r\n this.userCollection = collection(this.db, 'Users');\r\n\r\n authState(this.auth).subscribe(user => {\r\n const logged = !!user;\r\n const nameInitial = user?.displayName ? user.displayName[0].toUpperCase() : 'A';\r\n this.userStateSubject.next({ logged, nameInitial });\r\n });\r\n }\r\n\r\n async loginWithEmailAndPassword(email: string, password: string): Promise<void> {\r\n try {\r\n if (!this.isValidEmail(email)) throw { code: \"auth/invalid-email\" };\r\n await signInWithEmailAndPassword(this.auth, email, password);\r\n } catch (error: any) {\r\n throw this.handleAuthError(error);\r\n }\r\n }\r\n\r\n async registerWithEmailAndPassword(email: string, password: string, repeatPassword: string): Promise<void> {\r\n try {\r\n if (!this.isValidEmail(email)) throw { code: \"auth/invalid-email\" };\r\n if (password.length < 6) throw { code: \"auth/weak-password\" };\r\n if (password !== repeatPassword) throw { code: \"auth/passwords-do-not-match\" };\r\n await createUserWithEmailAndPassword(this.auth, email, password);\r\n await this.checkUser();\r\n } catch (error: any) {\r\n throw this.handleAuthError(error);\r\n }\r\n }\r\n\r\n async loginWithGoogle(): Promise<void> {\r\n try {\r\n await signInWithPopup(this.auth, new GoogleAuthProvider());\r\n await this.checkUser();\r\n } catch (error: any) {\r\n throw this.handleAuthError(error);\r\n }\r\n }\r\n\r\n async recoverPassword(email: string): Promise<void> {\r\n try {\r\n if (!this.isValidEmail(email)) throw { code: \"auth/invalid-email\" };\r\n await sendPasswordResetEmail(this.auth, email);\r\n } catch (error: any) {\r\n throw this.handleAuthError(error);\r\n }\r\n }\r\n\r\n private async checkUser(): Promise<void> {\r\n if (!this.auth.currentUser) return;\r\n\r\n const userDocRef = doc(this.userCollection, this.auth.currentUser.uid);\r\n const userDocSnap = await getDoc(userDocRef);\r\n\r\n if (!userDocSnap.exists()) {\r\n await setDoc(userDocRef, {\r\n _id: this.auth.currentUser.uid,\r\n email: this.auth.currentUser.email,\r\n name: this.auth.currentUser.displayName || \"\",\r\n });\r\n }\r\n }\r\n\r\n private handleAuthError(error: any): string {\r\n if (error.code === \"auth/popup-closed-by-user\") return '';\r\n return this.errorMessages.get(error.code) || \"An error occurred. Please try again.\";\r\n }\r\n\r\n private isValidEmail(email: string): boolean {\r\n const emailRegex = /^[^\\s@]+@[^\\s@]+\\.[^\\s@]+$/;\r\n return emailRegex.test(email);\r\n }\r\n\r\n getUserState(): Observable<{ logged: boolean; nameInitial: string }> {\r\n return this.userStateSubject.asObservable();\r\n }\r\n\r\n async logout(): Promise<void> {\r\n await signOut(this.auth);\r\n }\r\n\r\n async updateUserName(newName: string): Promise<void> {\r\n const user = this.auth.currentUser;\r\n if (user) {\r\n try {\r\n const userDocRef = doc(this.userCollection, user.uid);\r\n await updateDoc(userDocRef, { name: newName });\r\n await updateProfile(user, { displayName: newName });\r\n this.userStateSubject.next({ logged: true, nameInitial: newName[0].toUpperCase() });\r\n } catch (error) {\r\n console.error('Error updating name:', error);\r\n throw error;\r\n }\r\n }\r\n }\r\n\r\n getNameAndEmail(): Observable<{ email: string; name: string } | null> {\r\n return authState(this.auth).pipe(\r\n switchMap(user => {\r\n if (user) {\r\n const userDocRef: DocumentReference = doc(this.userCollection, user.uid);\r\n return docData(userDocRef) as Observable<{ email: string; name: string }>;\r\n }\r\n return of(null);\r\n })\r\n );\r\n }\r\n\r\n isCurrentUser(userId: string): boolean {\r\n return this.auth.currentUser?.uid == userId;\r\n }\r\n\r\n getUidWithEmail(email: string): Observable<{uid: string, name: string}> {\r\n return new Observable<{uid: string, name: string}>((observer) => {\r\n if (!this.isValidEmail(email)) { \r\n observer.error(new Error('Invalid email.'));\r\n return;\r\n }\r\n const userQuery = query(this.userCollection, where('email', '==', email));\r\n from(getDocs(userQuery)).pipe(take(1)).subscribe({\r\n next: snapshot => {\r\n if (snapshot.empty) {\r\n observer.error(new Error('No user found with this email.'));\r\n } else {\r\n const userData = snapshot.docs[0].data();\r\n observer.next({ uid: userData['_id'], name: userData['name'] });\r\n observer.complete();\r\n }\r\n },\r\n error: err => {\r\n observer.error(err);\r\n }\r\n });\r\n });\r\n }\r\n}\r\n","import { Component, EventEmitter, Input, Output, SimpleChanges } from \"@angular/core\";\r\nimport { ButtonModule } from \"primeng/button\";\r\nimport { InputTextModule } from \"primeng/inputtext\";\r\nimport { DialogModule } from 'primeng/dialog';\r\nimport { FloatLabelModule } from \"primeng/floatlabel\";\r\nimport { FormsModule } from \"@angular/forms\";\r\nimport { InputIconModule } from 'primeng/inputicon';\r\nimport { IconFieldModule } from 'primeng/iconfield';\r\nimport { Message } from 'primeng/message';\r\nimport { CommonModule } from \"@angular/common\";\r\nimport { UserService } from \"../../services/user.service\";\r\n\r\n@Component({\r\n standalone: true,\r\n selector: 'sessionModal',\r\n templateUrl: './sessionModal.component.html',\r\n styleUrls: ['./sessionModal.component.css'],\r\n imports: [ButtonModule, DialogModule, InputIconModule, IconFieldModule, InputTextModule, FloatLabelModule, FormsModule, CommonModule, Message],\r\n})\r\nexport class SessionModalComponent {\r\n\r\n @Input() visible: boolean = false;\r\n @Output() visibleChange = new EventEmitter<boolean>();\r\n\r\n login: boolean = true;\r\n resetpassword: boolean = false;\r\n\r\n email: string = '';\r\n password: string = '';\r\n repeatPassword: string = '';\r\n\r\n error: string | null = null;\r\n\r\n constructor(private userService: UserService) {}\r\n\r\n ngOnChanges(changes: SimpleChanges) {\r\n this.login = changes['visible'].currentValue;\r\n this.resetpassword = !changes['visible'].currentValue;\r\n this.email = '';\r\n this.password = '';\r\n this.repeatPassword = '';\r\n this.error = null;\r\n }\r\n\r\n getHeader(): string {\r\n if (this.resetpassword) return 'Recover Password';\r\n if (this.login) return 'Login';\r\n return 'Register';\r\n }\r\n\r\n getSwitchLabel() {\r\n if (this.resetpassword) return 'Return';\r\n if (!this.login) return 'Login';\r\n return 'Register';\r\n }\r\n\r\n clickSwitchButton() {\r\n this.error = null;\r\n if (this.resetpassword) this.resetpassword = !this.resetpassword;\r\n else this.login = !this.login;\r\n }\r\n\r\n clickMainButton() {\r\n if (this.resetpassword) return this.recoverPassword();\r\n if (this.login) return this.loginWithEmailAndPassword();\r\n return this.registerWithEmailAndPassword();\r\n }\r\n\r\n async loginWithGoogle() {\r\n try {\r\n await this.userService.loginWithGoogle();\r\n this.visibleChange.emit(false);\r\n } catch (error: any) {\r\n this.error = error;\r\n }\r\n }\r\n\r\n async loginWithEmailAndPassword() {\r\n try {\r\n await this.userService.loginWithEmailAndPassword(this.email, this.password);\r\n this.visibleChange.emit(false);\r\n } catch (error: any) {\r\n this.error = error;\r\n }\r\n }\r\n\r\n async registerWithEmailAndPassword() {\r\n try {\r\n await this.userService.registerWithEmailAndPassword(this.email, this.password, this.repeatPassword);\r\n this.visibleChange.emit(false);\r\n } catch (error: any) {\r\n this.error = error;\r\n }\r\n }\r\n\r\n async recoverPassword() {\r\n try {\r\n await this.userService.recoverPassword(this.email);\r\n this.password = '';\r\n this.repeatPassword = '';\r\n this.resetpassword = !this.resetpassword;\r\n } catch (error: any) {\r\n this.error = error;\r\n }\r\n }\r\n}","<p-dialog [header]=\"getHeader()\" [modal]=\"true\" [visible]=\"visible\" resizable=\"false\" (visibleChange)=\"visibleChange.emit($event)\" [style]=\"{color: 'var(--primary-color)'}\">\r\n <p-message *ngIf=\"error\" severity=\"error\" variant=\"simple\" styleClass=\"mb-4 white-space-normal\" class=\"error-info\">{{error}}</p-message>\r\n <div class=\"flex items-center gap-4 mt-2 mb-1\">\r\n <p-floatlabel variant=\"on\" [class]=\"error ? 'custom-floatlabel error-floatlabel' : 'custom-floatlabel'\">\r\n <p-iconfield>\r\n <p-inputicon class=\"pi pi-user\" />\r\n <input pInputText id=\"email\" autocomplete=\"off\" [class]=\"error ? 'custom-input error-input' : 'custom-input'\" [(ngModel)]=\"email\"/>\r\n </p-iconfield>\r\n <label for=\"email\">Email</label>\r\n </p-floatlabel>\r\n </div>\r\n <div *ngIf=\"!resetpassword\" class=\"flex items-center gap-4 mt-4 mb-1\">\r\n <p-floatlabel variant=\"on\" [class]=\"error ? 'custom-floatlabel error-floatlabel' : 'custom-floatlabel'\">\r\n <p-iconfield>\r\n <p-inputicon class=\"pi pi-lock\" />\r\n <input pInputText id=\"password\" autocomplete=\"off\" [class]=\"error ? 'custom-input error-input' : 'custom-input'\" [(ngModel)]=\"password\"/>\r\n </p-iconfield>\r\n <label for=\"password\">Password</label>\r\n </p-floatlabel>\r\n </div>\r\n <div *ngIf=\"!login\" class=\"flex items-center gap-4 mt-4 mb-1\">\r\n <p-floatlabel variant=\"on\" [class]=\"error ? 'custom-floatlabel error-floatlabel' : 'custom-floatlabel'\">\r\n <p-iconfield>\r\n <p-inputicon class=\"pi pi-lock\" />\r\n <input pInputText id=\"rPassword\" autocomplete=\"off\" [class]=\"error ? 'custom-input error-input' : 'custom-input'\" [(ngModel)]=\"repeatPassword\"/>\r\n </p-iconfield>\r\n <label for=\"rPassword\">Repeat Password</label>\r\n </p-floatlabel>\r\n </div>\r\n <a *ngIf=\"login && !resetpassword\" class=\"inline-flex ml-2 text-sm\" (click)=\"resetpassword = !resetpassword; error = null;\">Forgot Password?</a>\r\n <div class=\"flex align-items-center justify-content-between gap-2 mt-4\">\r\n <div class=\"flex justify-end gap-2\">\r\n <p-button class=\"custom-button\" [label]=\"getHeader()\" (click)=\"clickMainButton()\" />\r\n <p-button severity=\"secondary\" class=\"custom-secondary-button\" [label]=\"getSwitchLabel()\" (click)=\"clickSwitchButton()\" />\r\n </div>\r\n <p-button *ngIf=\"!resetpassword\" class=\"custom-button\" icon=\"pi pi-google\" label=\"Google\" (click)=\"loginWithGoogle()\" />\r\n </div>\r\n</p-dialog>","import { CommonModule } from '@angular/common';\nimport {Component, EventEmitter, HostListener, inject, Input, Output} from '@angular/core';\nimport { MenuItem } from 'primeng/api';\nimport { ButtonModule } from 'primeng/button';\nimport { TieredMenuModule } from 'primeng/tieredmenu';\nimport { AvatarModule } from 'primeng/avatar';\nimport { AvatarGroupModule } from 'primeng/avatargroup';\nimport { Subscription } from 'rxjs';\nimport { SessionModalComponent } from \"../signInModal/sessionModal.component\";\nimport { UserService } from '../../services/user.service';\n\n@Component({\n standalone: true,\n selector: 'header',\n templateUrl: './header.component.html',\n styleUrls: ['./header.component.css'],\n imports: [ButtonModule, TieredMenuModule, CommonModule, AvatarModule, AvatarGroupModule, SessionModalComponent],\n})\nexport class HeaderComponent {\n @Input() items: MenuItem[] = [ \n {\n label: 'Tools',\n icon: 'pi pi-cog',\n items: [\n {\n label: 'BoK Visualization & Search',\n icon: 'pi pi-search',\n style: {'--p-tieredmenu-item-color': 'var(--hover-color)'},\n iconStyle: {'color': 'var(--hover-color)'}\n },\n {\n label: 'Occupational Profile Tool',\n icon: 'pi pi-users',\n url: 'https://eo4geo-opt.web.app',\n },\n {\n label: 'Job Offer Tool',\n icon: 'pi pi-book',\n url: 'https://eo4geo-jot.web.app',\n },\n {\n label: 'Curriculum Design Tool',\n icon: 'pi pi-graduation-cap',\n url: 'https://eo4geo-cdt.web.app',\n },\n {\n label: 'BoK Annotation Tool',\n icon: 'pi pi-pencil',\n url: 'https://eo4geo-bat.web.app',\n },\n {\n label: 'BoK Matching Tool',\n icon: 'pi pi-equals',\n url: 'https://eo4geo-bmt.web.app',\n }\n ]\n }, \n {\n label: 'Share',\n icon: 'pi pi-share-alt',\n items: [\n {\n label: 'X',\n icon: 'pi pi-twitter',\n url: 'https://twitter.com/SpaceSUITE_eu',\n },\n {\n label: 'Facebook',\n icon: 'pi pi-facebook',\n url: 'https://www.facebook.com/spacesuiteproject/',\n },\n {\n label: 'Youtube',\n icon: 'pi pi-youtube',\n url: 'https://www.youtube.com/@SpaceSUITE_eu',\n },\n {\n label: 'LinkedIn',\n icon: 'pi pi-linkedin',\n url: 'https://www.linkedin.com/showcase/spacesuite_eu/',\n }\n ]\n }\n ];\n\n userItems: MenuItem[] = [\n {\n label: 'Profile', \n icon: 'pi pi-user',\n command: () => {\n this.profileClick.emit();\n }\n },\n {\n label: 'Organization', \n icon: 'pi pi-users',\n command: () => {\n this.organizationClick.emit();\n }\n }, \n {\n label: 'Logout', \n icon: 'pi pi-sign-out', \n command: () => {\n this.logout();\n }\n }\n ];\n\n @Input() toolName: string = \"BoK Visualization & Search\";\n @Input() login: boolean = false;\n @Output() profileClick: EventEmitter<void> = new EventEmitter()\n @Output() organizationClick: EventEmitter<void> = new EventEmitter()\n \n hideMenu: boolean = true;\n logged: boolean = false;\n nameInitial: string = 'A';\n\n showLoginModal: boolean = false;\n\n private userStateSubscription!: Subscription;\n\n constructor(private userService: UserService) {}\n\n ngOnInit() {\n this.userStateSubscription = this.userService.getUserState().subscribe(({ logged, nameInitial }) => {\n this.logged = logged;\n this.nameInitial = nameInitial;\n });\n }\n\n ngOnDestroy() {\n this.userStateSubscription?.unsubscribe();\n }\n\n async logout() {\n await this.userService.logout();\n }\n\n @HostListener('document:click', ['$event'])\n clickout(event: { target: any }) {\n if (!event.target.closest(\"p-tieredmenu\") && !event.target.closest(\"p-button.custom-header-button\")) {\n this.hideMenu = true;\n }\n }\n}\n","<div class=\"header\">\r\n <div class=\"flex align-content-center p-4 mx-4\">\r\n <a href=\"https://www.spacesuite-project.eu/\" target=\"_blank\" class=\"align-self-center\"><img class=\"logo flex align-items-center justify-content-center\" src=\"assets/images/SpaceSUITE_horizontal_color.png\" alt=\"LogoSpaceSUITE\"></a>\r\n <div class=\"hidden xl:flex align-self-center fixed-text\">\r\n <strong class=\"text-2xl overflow-hidden white-space-nowrap text-overflow-ellipsis\">\r\n {{toolName}}\r\n </strong>\r\n </div>\r\n <div class=\"flex gap-6 ml-auto\">\r\n <div class=\"justify-content-center hidden md:flex\" *ngFor=\"let item of items;\">\r\n <div class=\"flex align-items-center justify-content-center gap-2 text-xl font-bold header-option\" (click)=\"subMenu.toggle($event)\" *ngIf=\"item.label != 'Share'; else share\">\r\n <i [class]=\"item.icon\"></i>\r\n <div>{{item.label}}</div>\r\n <i *ngIf=\"item.items\" class=\"pi pi-angle-down\"></i>\r\n </div>\r\n <p-tieredmenu #subMenu [model]=\"item.items\" [breakpoint]=\"'767px'\" class=\"custom-p-tieredmenu\" [popup]=\"true\" />\r\n <ng-template #share>\r\n <div class=\"flex align-items-center justify-content-center gap-3\">\r\n <div *ngFor=\"let social of item.items;\">\r\n <a [href]=\"social.url\" target=\"_blank\" class=\"flex\">\r\n <i [class]=\"social.icon\" style=\"font-size: 1.25rem\"></i>\r\n </a>\r\n </div>\r\n </div>\r\n </ng-template>\r\n </div>\r\n <div *ngIf=\"login\" class=\"hidden md:flex align-items-center justify-content-center\">\r\n <p-avatar *ngIf=\"logged; else loginButton\" [label]=\"nameInitial\" class=\"custom-p-avatar\" shape=\"circle\" (click)=\"userMenu.toggle($event)\"></p-avatar>\r\n </div>\r\n <p-tieredmenu #userMenu [model]=\"userItems\" [breakpoint]=\"'767px'\" class=\"custom-p-tieredmenu\" [popup]=\"true\" />\r\n <ng-template #loginButton>\r\n <p-button class=\"custom-header-button\" size=\"small\" label=\"Login\" aria-label=\"Login\" (onClick)=\"showLoginModal = !showLoginModal\"></p-button>\r\n </ng-template>\r\n </div>\r\n \r\n <p-button #menuButton (click)=\"hideMenu = !hideMenu\" class=\"md:hidden flex align-items-center custom-header-button ml-auto\" icon=\"pi pi-bars\" aria-label=\"Menu\"></p-button>\r\n </div>\r\n <p-tieredmenu #menu [hidden]=\"hideMenu\" [model]=\"items\" class=\"md:hidden custom-p-tieredmenu\"/>\r\n</div>\r\n\r\n<sessionModal [(visible)]=\"showLoginModal\"></sessionModal>\r\n","import { Component } from \"@angular/core\";\r\nimport { Router } from \"@angular/router\";\r\nimport { ButtonModule } from 'primeng/button';\r\n\r\n@Component({\r\n standalone: true,\r\n selector: 'not-found-page',\r\n templateUrl: './notFoundPage.component.html',\r\n styleUrls: ['./notFoundPage.component.css'],\r\n imports: [ButtonModule],\r\n})\r\nexport class NotFoundPageComponent {\r\n constructor(private router: Router) {}\r\n\r\n goToHomepage() {\r\n this.router.navigate([''], { replaceUrl: true });\r\n }\r\n}","<div class=\"flex flex-column justify-content-center align-items-center m-8\">\r\n <img src=\"assets/images/hosting-404-error-1.png\" alt=\"not Found\" class=\"w-4 m-4\">\r\n <h1>page not found</h1>\r\n <p-button label=\"Go To Homepage\" size=\"large\" class=\"custom-button\" (onClick)=\"goToHomepage()\"></p-button>\r\n</div>","import { Component} from \"@angular/core\";\r\nimport { ButtonModule } from \"primeng/button\";\r\nimport { InputTextModule } from \"primeng/inputtext\";\r\nimport { FloatLabelModule } from \"primeng/floatlabel\";\r\nimport { FormsModule } from \"@angular/forms\";\r\nimport { InputIconModule } from 'primeng/inputicon';\r\nimport { IconFieldModule } from 'primeng/iconfield';\r\nimport { CommonModule } from \"@angular/common\";\r\nimport { Subscription } from \"rxjs\";\r\nimport { UserService } from \"../../services/user.service\";\r\nimport { ToastModule } from 'primeng/toast';\r\nimport { MessageService } from \"primeng/api\";\r\n\r\n\r\n@Component({\r\n standalone: true,\r\n selector: 'user-page',\r\n templateUrl: './userPage.component.html',\r\n styleUrls: ['./userPage.component.css'],\r\n imports: [ButtonModule, InputIconModule, IconFieldModule, InputTextModule, FloatLabelModule, FormsModule, CommonModule, ToastModule],\r\n providers: [MessageService]\r\n})\r\nexport class UserPageComponent {\r\n userSubscription!: Subscription;\r\n\r\n\r\n email: string = \"\";\r\n name: string = \"\";\r\n newName: string = \"\";\r\n\r\n constructor(private userService: UserService, private messageService: MessageService) {}\r\n \r\n ngOnInit() {\r\n this.userSubscription = this.userService.getNameAndEmail().subscribe(userData => {\r\n this.email = userData?.email ?? '';\r\n this.name = userData?.name ?? '';\r\n this.newName = this.name;\r\n });\r\n }\r\n\r\n ngOnDestroy() {\r\n this.userSubscription?.unsubscribe();\r\n }\r\n\r\n async updateName() {\r\n try {\r\n await this.userService.updateUserName(this.newName);\r\n this.messageService.add({ \r\n severity: 'info', \r\n summary: 'Info', \r\n detail: `Name updated without problems.`,\r\n life: 3000, \r\n closable: true \r\n });\r\n } catch (error) {\r\n this.messageService.add({ \r\n severity: 'error', \r\n summary: 'Error', \r\n detail: 'Something went wrong. Try again later or contact the administrator.', \r\n life: 3000, \r\n closable: true \r\n });\r\n }\r\n }\r\n\r\n}","<p-toast class=\"custom-toast\" position=\"bottom-right\"/>\r\n<div class=\"flex flex-column align-items-center justify-content-center p-4\">\r\n <h2>User Profile</h2>\r\n <div class=\"flex gap-4\">\r\n <p-floatlabel variant=\"on\" class=\"custom-floatlabel\">\r\n <p-iconfield>\r\n <p-inputicon class=\"pi pi-envelope\" />\r\n <input pInputText id=\"email\" [disabled]=\"true\" autocomplete=\"off\" class=\"w-full max-w-25rem custom-input\" [(ngModel)]=\"email\"/>\r\n </p-iconfield>\r\n <label for=\"email\">Email</label>\r\n </p-floatlabel>\r\n </div>\r\n <div class=\"flex gap-4 mt-4 mb-4\">\r\n <p-floatlabel variant=\"on\" class=\"custom-floatlabel\">\r\n <p-iconfield>\r\n <p-inputicon class=\"pi pi-user\" />\r\n <input pInputText id=\"password\" [disabled]=\"email == ''\" autocomplete=\"off\" class=\"w-full max-w-25rem custom-input\" [(ngModel)]=\"newName\"/>\r\n </p-iconfield>\r\n <label for=\"password\">Name</label>\r\n </p-floatlabel>\r\n </div>\r\n <p-button class=\"custom-button\" label=\"Update Name\" [disabled]=\"(name == newName || email == '')\" (click)=\"updateName()\" />\r\n</div>","/*\r\n * Public API Surface of ngx-bok-utils\r\n */\r\n\r\nexport * from './lib/components/footer/footer.component';\r\nexport * from './lib/components/header/header.component';\r\nexport * from './lib/components/404/notFoundPage.component';\r\nexport * from './lib/components/userPage/userPage.component';","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public-api';\n"],"names":["i1.UserService","i3","i4","i5","i1","i2"],"mappings":"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"}
|
|
@@ -1,3 +1,4 @@
|
|
|
1
|
+
import { EventEmitter } from '@angular/core';
|
|
1
2
|
import { MenuItem } from 'primeng/api';
|
|
2
3
|
import { UserService } from '../../services/user.service';
|
|
3
4
|
import * as i0 from "@angular/core";
|
|
@@ -7,6 +8,8 @@ export declare class HeaderComponent {
|
|
|
7
8
|
userItems: MenuItem[];
|
|
8
9
|
toolName: string;
|
|
9
10
|
login: boolean;
|
|
11
|
+
profileClick: EventEmitter<void>;
|
|
12
|
+
organizationClick: EventEmitter<void>;
|
|
10
13
|
hideMenu: boolean;
|
|
11
14
|
logged: boolean;
|
|
12
15
|
nameInitial: string;
|
|
@@ -20,5 +23,5 @@ export declare class HeaderComponent {
|
|
|
20
23
|
target: any;
|
|
21
24
|
}): void;
|
|
22
25
|
static ɵfac: i0.ɵɵFactoryDeclaration<HeaderComponent, never>;
|
|
23
|
-
static ɵcmp: i0.ɵɵComponentDeclaration<HeaderComponent, "header", never, { "items": { "alias": "items"; "required": false; }; "toolName": { "alias": "toolName"; "required": false; }; "login": { "alias": "login"; "required": false; }; }, {}, never, never, true, never>;
|
|
26
|
+
static ɵcmp: i0.ɵɵComponentDeclaration<HeaderComponent, "header", never, { "items": { "alias": "items"; "required": false; }; "toolName": { "alias": "toolName"; "required": false; }; "login": { "alias": "login"; "required": false; }; }, { "profileClick": "profileClick"; "organizationClick": "organizationClick"; }, never, never, true, never>;
|
|
24
27
|
}
|
|
@@ -24,6 +24,11 @@ export declare class UserService {
|
|
|
24
24
|
email: string;
|
|
25
25
|
name: string;
|
|
26
26
|
} | null>;
|
|
27
|
+
isCurrentUser(userId: string): boolean;
|
|
28
|
+
getUidWithEmail(email: string): Observable<{
|
|
29
|
+
uid: string;
|
|
30
|
+
name: string;
|
|
31
|
+
}>;
|
|
27
32
|
static ɵfac: i0.ɵɵFactoryDeclaration<UserService, never>;
|
|
28
33
|
static ɵprov: i0.ɵɵInjectableDeclaration<UserService>;
|
|
29
34
|
}
|