first commit

This commit is contained in:
Mateusz Gruszczyński
2026-04-05 13:40:27 +02:00
commit 9a6e77a5fc
89 changed files with 18276 additions and 0 deletions
@@ -0,0 +1,43 @@
import { CommonModule } from '@angular/common';
import { Component, inject } from '@angular/core';
import { ToastItem, ToastService } from '../../core/services/toast.service';
@Component({
selector: 'app-toast-outlet',
standalone: true,
imports: [CommonModule],
template: `
<div class="toast-host position-fixed top-0 end-0 p-3">
@for (item of toast.items(); track item.id) {
<div class="toast show ec-toast"
role="alert"
aria-live="assertive"
aria-atomic="true"
[class.ec-toast-success]="item.tone === 'success'"
[class.ec-toast-danger]="item.tone === 'danger'"
[class.ec-toast-warning]="item.tone === 'warning'"
[class.ec-toast-info]="item.tone === 'info'">
<div class="toast-header">
<span class="ec-toast-dot me-2" [ngClass]="toneDotClass(item)"></span>
<strong class="me-auto">{{ item.title }}</strong>
<button type="button" class="btn-close" aria-label="Close" (click)="toast.dismiss(item.id)"></button>
</div>
<div class="toast-body">{{ item.message }}</div>
</div>
}
</div>
`
})
export class ToastOutletComponent {
readonly toast = inject(ToastService);
toneDotClass(item: ToastItem) {
return item.tone === 'success'
? 'bg-success'
: item.tone === 'danger'
? 'bg-danger'
: item.tone === 'warning'
? 'bg-warning'
: 'bg-info';
}
}