diff --git a/front/app/src/app/app.component.html b/front/app/src/app/app.component.html
index 1cc19ffa..85c4857e 100644
--- a/front/app/src/app/app.component.html
+++ b/front/app/src/app/app.component.html
@@ -7,9 +7,9 @@
+
-
diff --git a/front/app/src/app/app.module.ts b/front/app/src/app/app.module.ts
index ba4cc180..b1fae44e 100644
--- a/front/app/src/app/app.module.ts
+++ b/front/app/src/app/app.module.ts
@@ -7,11 +7,14 @@ import { AppRoutingModule } from './app-routing.module';
import { AppComponent } from './app.component';
import { SidenavComponent } from "./layout/sidenav/sidenav.component";
+import { FlashmessagesComponent } from "./layout/flashmessages/flashmessages.component";
+import { FlashmessagesService } from "./layout/flashmessages/flashmessages.service";
@NgModule({
declarations: [
AppComponent,
- SidenavComponent
+ SidenavComponent,
+ FlashmessagesComponent
],
imports: [
BrowserModule,
@@ -19,7 +22,7 @@ import { SidenavComponent } from "./layout/sidenav/sidenav.component";
NgbModule,
NgxBootstrapIconsModule.pick(allIcons),
],
- providers: [],
+ providers: [FlashmessagesService],
bootstrap: [AppComponent]
})
export class AppModule { }
diff --git a/front/app/src/app/layout/flashmessages/flashmessages.component.css b/front/app/src/app/layout/flashmessages/flashmessages.component.css
new file mode 100644
index 00000000..66a3f8d5
--- /dev/null
+++ b/front/app/src/app/layout/flashmessages/flashmessages.component.css
@@ -0,0 +1,7 @@
+:host {
+ position: fixed;
+ top: 0;
+ right: 0;
+ margin: 0.5em;
+ z-index: 1200;
+}
\ No newline at end of file
diff --git a/front/app/src/app/layout/flashmessages/flashmessages.component.html b/front/app/src/app/layout/flashmessages/flashmessages.component.html
new file mode 100644
index 00000000..a2f7f2f7
--- /dev/null
+++ b/front/app/src/app/layout/flashmessages/flashmessages.component.html
@@ -0,0 +1,5 @@
+{{flashmessage.body}}
diff --git a/front/app/src/app/layout/flashmessages/flashmessages.component.ts b/front/app/src/app/layout/flashmessages/flashmessages.component.ts
new file mode 100644
index 00000000..866c195b
--- /dev/null
+++ b/front/app/src/app/layout/flashmessages/flashmessages.component.ts
@@ -0,0 +1,11 @@
+import { Component } from "@angular/core";
+import { FlashmessagesService } from "./flashmessages.service";
+
+@Component({
+ selector: "flashmessages",
+ templateUrl: "./flashmessages.component.html",
+ styleUrls: ["./flashmessages.component.css"]
+})
+export class FlashmessagesComponent {
+ constructor(public flashmessagesService: FlashmessagesService) {}
+}
diff --git a/front/app/src/app/layout/flashmessages/flashmessages.service.ts b/front/app/src/app/layout/flashmessages/flashmessages.service.ts
new file mode 100644
index 00000000..59d50c42
--- /dev/null
+++ b/front/app/src/app/layout/flashmessages/flashmessages.service.ts
@@ -0,0 +1,20 @@
+import {Injectable} from "@angular/core";
+
+export interface Flashmessage {
+ header: string;
+ body: string;
+ delay?: number;
+}
+
+@Injectable({ providedIn: 'root' })
+export class FlashmessagesService {
+ toasts: Flashmessage[] = [];
+
+ show(header: string, body: string) {
+ this.toasts.push({ header, body });
+ }
+
+ remove(toast: Flashmessage) {
+ this.toasts = this.toasts.filter(t => t != toast);
+ }
+}
\ No newline at end of file