dialogue for user name on the task board added

This commit is contained in:
Chneemann 2024-05-20 08:15:36 +02:00
parent f73ac268d6
commit 77d8b3289d
5 changed files with 74 additions and 25 deletions

View file

@ -331,15 +331,11 @@
[img]="'check'" [img]="'check'"
[imgFilter]="'none'" [imgFilter]="'none'"
[value]=" [value]="
(overlayData.toString() !== '' && ['none', 'todo', 'inprogress', 'awaitfeedback', 'done'].includes(
overlayData.toString() !== 'none' && overlayData.toString()
overlayData.toString() !== 'todo' && )
overlayData.toString() !== 'inprogress' && ? ('addTask.create' | translate)
overlayData.toString() !== 'awaitfeedback' && : ('addTask.update' | translate)
overlayData.toString() !== 'done'
? 'addTask.update'
: 'addTask.create'
) | translate
" "
[disabled]=" [disabled]="
title.invalid || title.invalid ||

View file

@ -44,12 +44,16 @@
<div class="footer-badge"> <div class="footer-badge">
<span <span
class="footer-badged" class="footer-badged"
(mousemove)="openDialog(task.creator, $event)"
(mouseleave)="closeDialog()"
[style.background-color]="userBadgedColor(task.creator)" [style.background-color]="userBadgedColor(task.creator)"
>{{ userBadged(task.creator) }}</span >{{ userBadged(task.creator) }}</span
> >
@for (assigned of task.assigned; track assigned) { @for (assigned of task.assigned; track assigned) {
<span <span
class="footer-badged" class="footer-badged"
(mousemove)="openDialog(assigned, $event)"
(mouseleave)="closeDialog()"
[style.background-color]="userBadgedColor(assigned)" [style.background-color]="userBadgedColor(assigned)"
>{{ userBadged(assigned) }}</span >{{ userBadged(assigned) }}</span
> >
@ -64,5 +68,12 @@
[taskId]="task.id" [taskId]="task.id"
[boardTaskStatus]="task.status" [boardTaskStatus]="task.status"
></app-task-menu> ></app-task-menu>
} @if (AssignedDialogId != '') {
<div class="dialog" [style.left.px]="dialogX" [style.top.px]="dialogY">
<p>
{{ firebaseService.getUserDetails(AssignedDialogId, "firstName") }},
{{ firebaseService.getUserDetails(AssignedDialogId, "lastName") }}
</p>
</div>
} } } }
</section> </section>

View file

@ -21,6 +21,21 @@ section {
} }
} }
.dialog {
position: fixed;
width: min-content;
height: fit-content;
padding: 10px 15px;
border-radius: 0px 20px 20px 20px;
border: 1px solid var(--black);
z-index: 2;
background-color: var(--white);
p {
font-size: 18px;
font-weight: 400;
}
}
.header { .header {
display: flex; display: flex;
align-items: center; align-items: center;

View file

@ -18,6 +18,9 @@ import { SharedService } from '../../../services/shared.service';
export class TaskComponent { export class TaskComponent {
@Input() task: Task = {} as Task; @Input() task: Task = {} as Task;
isMenuOpen: boolean = false; isMenuOpen: boolean = false;
AssignedDialogId: string = '';
dialogX: number = 0;
dialogY: number = 0;
categoryColors = new Map<string, string>([ categoryColors = new Map<string, string>([
['User Story', '#0038ff'], ['User Story', '#0038ff'],
@ -26,7 +29,7 @@ export class TaskComponent {
constructor( constructor(
public dragDropService: DragDropService, public dragDropService: DragDropService,
private firebaseService: FirebaseService, public firebaseService: FirebaseService,
public overlayService: OverlayService, public overlayService: OverlayService,
public sharedService: SharedService, public sharedService: SharedService,
private router: Router private router: Router
@ -57,15 +60,32 @@ export class TaskComponent {
@HostListener('document:click', ['$event']) @HostListener('document:click', ['$event'])
checkToggleTaskMenu(event: MouseEvent) { checkToggleTaskMenu(event: MouseEvent) {
const targetElement = event.target as HTMLElement; const targetElement = event.target as HTMLElement;
if ( const menuSelectors = ['.menu-btn', '.menu-img', 'app-task-menu'];
!targetElement.closest('.menu-btn') && const isMenuClicked = menuSelectors.some((selector) =>
!targetElement.closest('.menu-img') && targetElement.closest(selector)
!targetElement.closest('app-task-menu') );
) {
if (!isMenuClicked) {
this.isMenuOpen = false; this.isMenuOpen = false;
} }
} }
// Dialog
openDialog(userId: any, event: MouseEvent) {
this.AssignedDialogId = userId;
this.updateDialogPosition(event);
}
updateDialogPosition(event: MouseEvent) {
this.dialogX = event.clientX + 25;
this.dialogY = event.clientY + 10;
}
closeDialog() {
this.AssignedDialogId = '';
}
// Subtasks // Subtasks
completedSubtasks(): number { completedSubtasks(): number {

View file

@ -128,20 +128,27 @@ export class ContactDetailComponent {
@HostListener('document:click', ['$event']) @HostListener('document:click', ['$event'])
checkOpenContactEdit(event: MouseEvent) { checkOpenContactEdit(event: MouseEvent) {
const targetElement = event.target as HTMLElement; const targetElement = event.target as HTMLElement;
if (targetElement.closest('.btn-edit')) { if (targetElement.closest('.btn-edit')) {
this.sharedService.isAnyDialogOpen = true; this.setDialogStatus(true, true, false, false);
this.sharedService.isEditContactDialogOpen = true;
} else if (targetElement.closest('.btn-new')) { } else if (targetElement.closest('.btn-new')) {
this.sharedService.isAnyDialogOpen = true; this.setDialogStatus(true, false, true, false);
this.sharedService.isNewContactDialogOpen = true;
} else if (targetElement.closest('.btn-delete')) { } else if (targetElement.closest('.btn-delete')) {
this.sharedService.isAnyDialogOpen = true; this.setDialogStatus(true, false, false, true);
this.sharedService.isDeleteContactDialogOpen = true;
} else if (!targetElement.closest('.dialog')) { } else if (!targetElement.closest('.dialog')) {
this.sharedService.isAnyDialogOpen = false; this.setDialogStatus(false, false, false, false);
this.sharedService.isEditContactDialogOpen = false;
this.sharedService.isDeleteContactDialogOpen = false;
this.sharedService.isNewContactDialogOpen = false;
} }
} }
private setDialogStatus(
anyOpen: boolean,
editOpen: boolean,
newOpen: boolean,
deleteOpen: boolean
) {
this.sharedService.isAnyDialogOpen = anyOpen;
this.sharedService.isEditContactDialogOpen = editOpen;
this.sharedService.isNewContactDialogOpen = newOpen;
this.sharedService.isDeleteContactDialogOpen = deleteOpen;
}
} }