diff --git a/kibicara-frontend/src/app/platforms/email/email-dialog/email-dialog.component.html b/kibicara-frontend/src/app/platforms/email/email-dialog/email-dialog.component.html new file mode 100644 index 0000000..ff17739 --- /dev/null +++ b/kibicara-frontend/src/app/platforms/email/email-dialog/email-dialog.component.html @@ -0,0 +1,21 @@ +

Create new inbox

+ + +
+ + New inbox address + + Inbox address is required + +
+
+ + + + + diff --git a/kibicara-frontend/src/app/platforms/email/email-dialog/email-dialog.component.scss b/kibicara-frontend/src/app/platforms/email/email-dialog/email-dialog.component.scss new file mode 100644 index 0000000..e69de29 diff --git a/kibicara-frontend/src/app/platforms/email/email-dialog/email-dialog.component.spec.ts b/kibicara-frontend/src/app/platforms/email/email-dialog/email-dialog.component.spec.ts new file mode 100644 index 0000000..3b75ce8 --- /dev/null +++ b/kibicara-frontend/src/app/platforms/email/email-dialog/email-dialog.component.spec.ts @@ -0,0 +1,24 @@ +import { async, ComponentFixture, TestBed } from '@angular/core/testing'; + +import { EmailDialogComponent } from './email-dialog.component'; + +describe('EmailDialogComponent', () => { + let component: EmailDialogComponent; + let fixture: ComponentFixture; + + beforeEach(async(() => { + TestBed.configureTestingModule({ + declarations: [EmailDialogComponent], + }).compileComponents(); + })); + + beforeEach(() => { + fixture = TestBed.createComponent(EmailDialogComponent); + component = fixture.componentInstance; + fixture.detectChanges(); + }); + + it('should create', () => { + expect(component).toBeTruthy(); + }); +}); diff --git a/kibicara-frontend/src/app/platforms/email/email-dialog/email-dialog.component.ts b/kibicara-frontend/src/app/platforms/email/email-dialog/email-dialog.component.ts new file mode 100644 index 0000000..b1873fb --- /dev/null +++ b/kibicara-frontend/src/app/platforms/email/email-dialog/email-dialog.component.ts @@ -0,0 +1,54 @@ +import { Component, OnInit, Input } from '@angular/core'; +import { MatDialogRef } from '@angular/material/dialog'; +import { Validators, FormBuilder } from '@angular/forms'; +import { EmailService } from 'src/app/core/api'; +import { first } from 'rxjs/operators'; +import { MatSnackBar } from '@angular/material/snack-bar'; + +@Component({ + selector: 'app-email-dialog', + templateUrl: './email-dialog.component.html', + styleUrls: ['./email-dialog.component.scss'], +}) +export class EmailDialogComponent implements OnInit { + @Input() hoodId; + form; + + constructor( + public dialogRef: MatDialogRef, + private formBuilder: FormBuilder, + private emailService: EmailService, + private snackBar: MatSnackBar + ) {} + + ngOnInit(): void { + this.form = this.formBuilder.group({ + name: ['', Validators.required], + }); + } + + onCancel() { + this.dialogRef.close(); + } + + onSubmit() { + if (this.form.invalid) { + return; + } + this.emailService + .createEmail(this.hoodId, { + name: this.form.controls.name.value, + }) + .pipe(first()) + .subscribe( + () => { + this.dialogRef.close(); + }, + (error) => { + this.snackBar.open('Address already taken', 'Close', { + duration: 2000, + }); + } + ); + } +} diff --git a/kibicara-frontend/src/app/platforms/email/email-info-dialog/email-info-dialog.component.html b/kibicara-frontend/src/app/platforms/email/email-info-dialog/email-info-dialog.component.html new file mode 100644 index 0000000..87c143e --- /dev/null +++ b/kibicara-frontend/src/app/platforms/email/email-info-dialog/email-info-dialog.component.html @@ -0,0 +1 @@ +

email-info-dialog works!

diff --git a/kibicara-frontend/src/app/platforms/email/email-info-dialog/email-info-dialog.component.scss b/kibicara-frontend/src/app/platforms/email/email-info-dialog/email-info-dialog.component.scss new file mode 100644 index 0000000..e69de29 diff --git a/kibicara-frontend/src/app/platforms/email/email-info-dialog/email-info-dialog.component.spec.ts b/kibicara-frontend/src/app/platforms/email/email-info-dialog/email-info-dialog.component.spec.ts new file mode 100644 index 0000000..de6271f --- /dev/null +++ b/kibicara-frontend/src/app/platforms/email/email-info-dialog/email-info-dialog.component.spec.ts @@ -0,0 +1,24 @@ +import { async, ComponentFixture, TestBed } from '@angular/core/testing'; + +import { EmailInfoDialogComponent } from './email-info-dialog.component'; + +describe('EmailInfoDialogComponent', () => { + let component: EmailInfoDialogComponent; + let fixture: ComponentFixture; + + beforeEach(async(() => { + TestBed.configureTestingModule({ + declarations: [EmailInfoDialogComponent], + }).compileComponents(); + })); + + beforeEach(() => { + fixture = TestBed.createComponent(EmailInfoDialogComponent); + component = fixture.componentInstance; + fixture.detectChanges(); + }); + + it('should create', () => { + expect(component).toBeTruthy(); + }); +}); diff --git a/kibicara-frontend/src/app/platforms/email/email-info-dialog/email-info-dialog.component.ts b/kibicara-frontend/src/app/platforms/email/email-info-dialog/email-info-dialog.component.ts new file mode 100644 index 0000000..5944b08 --- /dev/null +++ b/kibicara-frontend/src/app/platforms/email/email-info-dialog/email-info-dialog.component.ts @@ -0,0 +1,12 @@ +import { Component, OnInit } from '@angular/core'; + +@Component({ + selector: 'app-email-info-dialog', + templateUrl: './email-info-dialog.component.html', + styleUrls: ['./email-info-dialog.component.scss'], +}) +export class EmailInfoDialogComponent implements OnInit { + constructor() {} + + ngOnInit(): void {} +} diff --git a/kibicara-frontend/src/app/platforms/email/email-settings/email-settings.component.html b/kibicara-frontend/src/app/platforms/email/email-settings/email-settings.component.html index d439400..cc0495a 100644 --- a/kibicara-frontend/src/app/platforms/email/email-settings/email-settings.component.html +++ b/kibicara-frontend/src/app/platforms/email/email-settings/email-settings.component.html @@ -1,20 +1,34 @@ - E-Mails + +
+ E-Mails +
+ +
- - + + +
+ +
+ +
+
- Telegramdummy - + {{ email.name }}
+ + + +
- - - -
diff --git a/kibicara-frontend/src/app/platforms/email/email-settings/email-settings.component.scss b/kibicara-frontend/src/app/platforms/email/email-settings/email-settings.component.scss index b76aeea..a08e4c4 100644 --- a/kibicara-frontend/src/app/platforms/email/email-settings/email-settings.component.scss +++ b/kibicara-frontend/src/app/platforms/email/email-settings/email-settings.component.scss @@ -1,6 +1,29 @@ .entry { display: grid; - grid-template-columns: 4fr 40px 20px; + grid-template-columns: 4fr 20px; width: 100%; align-items: center; } + +.platform-title { + display: grid; + grid-template-columns: 1fr 40px; + width: 100%; + align-items: center; +} + +.platform-heading { + align-self: flex-end; +} + +.toggle-container { + display: grid; + grid-template-columns: 4fr 30px; + width: 100%; + align-items: center; +} + +.toggle { + grid-column-start: 2; + align-self: flex-start; +} diff --git a/kibicara-frontend/src/app/platforms/email/email-settings/email-settings.component.ts b/kibicara-frontend/src/app/platforms/email/email-settings/email-settings.component.ts index 78cb972..1df4ae3 100644 --- a/kibicara-frontend/src/app/platforms/email/email-settings/email-settings.component.ts +++ b/kibicara-frontend/src/app/platforms/email/email-settings/email-settings.component.ts @@ -1,6 +1,9 @@ import { Component, OnInit, Input } from '@angular/core'; import { Observable } from 'rxjs/internal/Observable'; import { EmailService } from 'src/app/core/api'; +import { MatDialog } from '@angular/material/dialog'; +import { Router } from '@angular/router'; +import { EmailDialogComponent } from '../email-dialog/email-dialog.component'; @Component({ selector: 'app-email-settings', @@ -11,9 +14,33 @@ export class EmailSettingsComponent implements OnInit { @Input() hoodId; emails$: Observable>; - constructor(private emailService: EmailService) {} + constructor( + private emailService: EmailService, + public dialog: MatDialog, + private router: Router + ) {} ngOnInit(): void { + this.reload(); + } + + private reload() { this.emails$ = this.emailService.getEmails(this.hoodId); } + + onDelete(emailId) { + this.emailService.deleteEmail(emailId, this.hoodId).subscribe(() => { + this.reload(); + }); + } + + onCreate() { + const dialogRef = this.dialog.open(EmailDialogComponent); + + dialogRef.afterClosed().subscribe((hood) => { + // if (hood && hood.id) { + // this.router.navigate(['/dashboard/hoods', hood.id]); + // } + }); + } } diff --git a/kibicara-frontend/src/styles.scss b/kibicara-frontend/src/styles.scss index 5cf94e0..56ad8fa 100644 --- a/kibicara-frontend/src/styles.scss +++ b/kibicara-frontend/src/styles.scss @@ -12,3 +12,7 @@ body { .mat-tab-body-content { overflow: hidden !important; } + +.info-button { + color: #9e9e9e; +}