fix : #27 gestion des typo
This commit is contained in:
@@ -65,7 +65,7 @@
|
|||||||
<div class="w-full h-full rounded-full overflow-hidden bg-white">
|
<div class="w-full h-full rounded-full overflow-hidden bg-white">
|
||||||
@if (user().avatar) {
|
@if (user().avatar) {
|
||||||
<img
|
<img
|
||||||
alt="{{ user().username }}"
|
alt="{{ user().name }}"
|
||||||
class="object-cover w-full h-full"
|
class="object-cover w-full h-full"
|
||||||
src="{{ environment.baseUrl }}/api/files/users/{{ user().id }}/{{
|
src="{{ environment.baseUrl }}/api/files/users/{{ user().id }}/{{
|
||||||
user().avatar
|
user().avatar
|
||||||
@@ -74,7 +74,7 @@
|
|||||||
/>
|
/>
|
||||||
} @else {
|
} @else {
|
||||||
<img
|
<img
|
||||||
alt="{{ user().username }}"
|
alt="{{ user().name }}"
|
||||||
class="object-cover w-full h-full"
|
class="object-cover w-full h-full"
|
||||||
src="https://api.dicebear.com/9.x/initials/svg?seed={{ user().name }}"
|
src="https://api.dicebear.com/9.x/initials/svg?seed={{ user().name }}"
|
||||||
loading="lazy"
|
loading="lazy"
|
||||||
@@ -96,10 +96,6 @@
|
|||||||
<h1 class="text-2xl md:text-3xl font-bold text-gray-900 dark:text-white mb-1">
|
<h1 class="text-2xl md:text-3xl font-bold text-gray-900 dark:text-white mb-1">
|
||||||
{{ user().name }}
|
{{ user().name }}
|
||||||
</h1>
|
</h1>
|
||||||
} @else if (user().username) {
|
|
||||||
<h1 class="text-2xl md:text-3xl font-bold text-gray-900 dark:text-white mb-1">
|
|
||||||
{{ user().username }}
|
|
||||||
</h1>
|
|
||||||
} @else {
|
} @else {
|
||||||
<h1 class="text-2xl md:text-3xl font-bold text-gray-900 dark:text-white mb-1">
|
<h1 class="text-2xl md:text-3xl font-bold text-gray-900 dark:text-white mb-1">
|
||||||
{{ user().email }}
|
{{ user().email }}
|
||||||
|
|||||||
@@ -134,7 +134,7 @@
|
|||||||
for="profession"
|
for="profession"
|
||||||
class="block text-sm font-medium text-gray-700 dark:text-gray-300 mb-2"
|
class="block text-sm font-medium text-gray-700 dark:text-gray-300 mb-2"
|
||||||
>
|
>
|
||||||
Profession
|
Profession<small class="text-sm font-medium text-red-500"> * </small>
|
||||||
</label>
|
</label>
|
||||||
<div class="relative">
|
<div class="relative">
|
||||||
<div class="absolute inset-y-0 left-0 pl-3 flex items-center pointer-events-none">
|
<div class="absolute inset-y-0 left-0 pl-3 flex items-center pointer-events-none">
|
||||||
@@ -170,7 +170,7 @@
|
|||||||
for="secteur"
|
for="secteur"
|
||||||
class="block text-sm font-medium text-gray-700 dark:text-gray-300 mb-2"
|
class="block text-sm font-medium text-gray-700 dark:text-gray-300 mb-2"
|
||||||
>
|
>
|
||||||
Secteur d'activité
|
Secteur d'activité<small class="text-sm font-medium text-red-500"> * </small>
|
||||||
</label>
|
</label>
|
||||||
<div class="relative">
|
<div class="relative">
|
||||||
<div class="absolute inset-y-0 left-0 pl-3 flex items-center pointer-events-none">
|
<div class="absolute inset-y-0 left-0 pl-3 flex items-center pointer-events-none">
|
||||||
|
|||||||
@@ -34,7 +34,7 @@
|
|||||||
<!-- Champ Nom -->
|
<!-- Champ Nom -->
|
||||||
<div class="space-y-2">
|
<div class="space-y-2">
|
||||||
<label for="name" class="block text-sm font-medium text-gray-700 dark:text-gray-300">
|
<label for="name" class="block text-sm font-medium text-gray-700 dark:text-gray-300">
|
||||||
Nom
|
Nom(s)<small class="text-sm font-medium text-red-500"> * </small>
|
||||||
</label>
|
</label>
|
||||||
<div class="relative">
|
<div class="relative">
|
||||||
<div class="absolute inset-y-0 left-0 pl-3 flex items-center pointer-events-none">
|
<div class="absolute inset-y-0 left-0 pl-3 flex items-center pointer-events-none">
|
||||||
@@ -64,7 +64,7 @@
|
|||||||
<!-- Champ Prénom -->
|
<!-- Champ Prénom -->
|
||||||
<div class="space-y-2">
|
<div class="space-y-2">
|
||||||
<label for="firstname" class="block text-sm font-medium text-gray-700 dark:text-gray-300">
|
<label for="firstname" class="block text-sm font-medium text-gray-700 dark:text-gray-300">
|
||||||
Prénom
|
Prénom(s)<small class="text-sm font-medium text-red-500"> * </small>
|
||||||
</label>
|
</label>
|
||||||
<div class="relative">
|
<div class="relative">
|
||||||
<div class="absolute inset-y-0 left-0 pl-3 flex items-center pointer-events-none">
|
<div class="absolute inset-y-0 left-0 pl-3 flex items-center pointer-events-none">
|
||||||
@@ -108,7 +108,11 @@
|
|||||||
d="M7.707 10.293a1 1 0 10-1.414 1.414l3 3a1 1 0 001.414 0l3-3a1 1 0 00-1.414-1.414L11 11.586V6h5a2 2 0 012 2v7a2 2 0 01-2 2H4a2 2 0 01-2-2V8a2 2 0 012-2h5v5.586l-1.293-1.293zM9 4a1 1 0 012 0v2H9V4z"
|
d="M7.707 10.293a1 1 0 10-1.414 1.414l3 3a1 1 0 001.414 0l3-3a1 1 0 00-1.414-1.414L11 11.586V6h5a2 2 0 012 2v7a2 2 0 01-2 2H4a2 2 0 01-2-2V8a2 2 0 012-2h5v5.586l-1.293-1.293zM9 4a1 1 0 012 0v2H9V4z"
|
||||||
/>
|
/>
|
||||||
</svg>
|
</svg>
|
||||||
|
@if (userForm.valid) {
|
||||||
|
Sauvegarder les modifications
|
||||||
|
} @else {
|
||||||
Modifier mon identité
|
Modifier mon identité
|
||||||
|
}
|
||||||
</span>
|
</span>
|
||||||
</button>
|
</button>
|
||||||
</form>
|
</form>
|
||||||
|
|||||||
@@ -1,9 +1,5 @@
|
|||||||
@if (user() !== undefined) {
|
@if (user() !== undefined) {
|
||||||
<a
|
<a [routerLink]="[user().slug]" [state]="{ user: user(), profile }" class="block group">
|
||||||
[routerLink]="[user().username ? user().username : user().id]"
|
|
||||||
[state]="{ user: user(), profile }"
|
|
||||||
class="block group"
|
|
||||||
>
|
|
||||||
<!-- Card du profil -->
|
<!-- Card du profil -->
|
||||||
<div
|
<div
|
||||||
class="relative bg-white dark:bg-gray-800 rounded-xl shadow-lg overflow-hidden transition-all duration-300 hover:shadow-2xl hover:-translate-y-2"
|
class="relative bg-white dark:bg-gray-800 rounded-xl shadow-lg overflow-hidden transition-all duration-300 hover:shadow-2xl hover:-translate-y-2"
|
||||||
@@ -56,7 +52,7 @@
|
|||||||
<h3
|
<h3
|
||||||
class="text-lg font-bold text-gray-900 dark:text-white mb-2 group-hover:text-indigo-600 dark:group-hover:text-indigo-400 transition-colors"
|
class="text-lg font-bold text-gray-900 dark:text-white mb-2 group-hover:text-indigo-600 dark:group-hover:text-indigo-400 transition-colors"
|
||||||
>
|
>
|
||||||
{{ user().name }}
|
{{ user().firstName }} {{ user().lastName }}
|
||||||
</h3>
|
</h3>
|
||||||
} @else if (user().username) {
|
} @else if (user().username) {
|
||||||
<h3
|
<h3
|
||||||
|
|||||||
@@ -18,7 +18,6 @@ export class VerticalProfileItemComponent implements OnInit {
|
|||||||
@Input({ required: true }) profile: ProfileViewModel = {} as ProfileViewModel;
|
@Input({ required: true }) profile: ProfileViewModel = {} as ProfileViewModel;
|
||||||
protected router = inject(Router);
|
protected router = inject(Router);
|
||||||
private readonly facade = inject(UserFacade);
|
private readonly facade = inject(UserFacade);
|
||||||
protected defaultImg = Math.floor(Math.random() * 10) + 1;
|
|
||||||
|
|
||||||
protected user = this.facade.user;
|
protected user = this.facade.user;
|
||||||
protected readonly loading = this.facade.loading;
|
protected readonly loading = this.facade.loading;
|
||||||
|
|||||||
@@ -6,4 +6,7 @@ export interface UserViewModel {
|
|||||||
email: string;
|
email: string;
|
||||||
name: string;
|
name: string;
|
||||||
avatar: string;
|
avatar: string;
|
||||||
|
firstName?: string;
|
||||||
|
lastName?: string;
|
||||||
|
slug?: string;
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -3,7 +3,11 @@ import { User } from '@app/domain/users/user.model';
|
|||||||
|
|
||||||
export class UserPresenter {
|
export class UserPresenter {
|
||||||
toViewModel(user: User): UserViewModel {
|
toViewModel(user: User): UserViewModel {
|
||||||
return {
|
const slug = user.name
|
||||||
|
? user.name.toLowerCase().replace(/\s/g, '-')
|
||||||
|
: user.email.split('@')[0].toLowerCase().trim();
|
||||||
|
|
||||||
|
let userViewModel: UserViewModel = {
|
||||||
id: user.id,
|
id: user.id,
|
||||||
username: user.username,
|
username: user.username,
|
||||||
verified: user.verified,
|
verified: user.verified,
|
||||||
@@ -11,7 +15,16 @@ export class UserPresenter {
|
|||||||
email: user.email,
|
email: user.email,
|
||||||
name: user.name,
|
name: user.name,
|
||||||
avatar: user.avatar,
|
avatar: user.avatar,
|
||||||
|
slug,
|
||||||
};
|
};
|
||||||
|
|
||||||
|
if (user.name) {
|
||||||
|
const firstName = user.name.split(' ').slice(0, -1).join(' ').toLowerCase().trim() ?? '';
|
||||||
|
const lastName = user.name.split(' ').slice(-1)[0].toUpperCase().trim() ?? '';
|
||||||
|
userViewModel = { ...userViewModel, firstName, lastName };
|
||||||
|
}
|
||||||
|
|
||||||
|
return userViewModel;
|
||||||
}
|
}
|
||||||
|
|
||||||
toViewModels(users: User[]): UserViewModel[] {
|
toViewModels(users: User[]): UserViewModel[] {
|
||||||
|
|||||||
Reference in New Issue
Block a user