]> git.immae.eu Git - github/Chocobozzz/PeerTube.git/blobdiff - client/src/app/core/confirm/confirm.component.ts
remove unused imports
[github/Chocobozzz/PeerTube.git] / client / src / app / core / confirm / confirm.component.ts
index 14b4ef324d113bce81b51cb5806a33170f8da844..5138b78483e4a204971bc22a243fec3425d8ebe8 100644 (file)
@@ -1,61 +1,68 @@
-import { Component, HostListener, OnInit, ViewChild } from '@angular/core';
-
-import { ModalDirective } from 'ng2-bootstrap/modal';
-
-import { ConfirmService } from './confirm.service';
-
-export interface ConfigChangedEvent {
-  columns: { [id: string]: { isDisplayed: boolean }; };
-  config: { resultsPerPage: number };
-}
+import { Component, ElementRef, HostListener, OnInit, ViewChild } from '@angular/core'
+import { ConfirmService } from './confirm.service'
+import { I18n } from '@ngx-translate/i18n-polyfill'
+import { NgbModal } from '@ng-bootstrap/ng-bootstrap'
+import { NgbModalRef } from '@ng-bootstrap/ng-bootstrap/modal/modal-ref'
 
 @Component({
   selector: 'my-confirm',
-  templateUrl: './confirm.component.html'
+  templateUrl: './confirm.component.html',
+  styleUrls: [ './confirm.component.scss' ]
 })
 export class ConfirmComponent implements OnInit {
-  @ViewChild('confirmModal') confirmModal: ModalDirective;
+  @ViewChild('confirmModal') confirmModal: ElementRef
 
-  title = '';
-  message = '';
+  title = ''
+  message = ''
+  expectedInputValue = ''
+  inputLabel = ''
 
-  constructor (private confirmService: ConfirmService) {
-    // Empty
-  }
+  inputValue = ''
+  confirmButtonText = ''
+
+  private openedModal: NgbModalRef
 
-  ngOnInit() {
-    this.confirmModal.config = {
-      backdrop: 'static',
-      keyboard: false
-    };
+  constructor (
+    private modalService: NgbModal,
+    private confirmService: ConfirmService,
+    private i18n: I18n
+  ) { }
 
+  ngOnInit () {
     this.confirmService.showConfirm.subscribe(
-      ({ title, message }) => {
-        this.title = title;
-        this.message = message;
+      ({ title, message, expectedInputValue, inputLabel, confirmButtonText }) => {
+        this.title = title
+        this.message = message
 
-        this.showModal();
+        this.inputLabel = inputLabel
+        this.expectedInputValue = expectedInputValue
+
+        this.confirmButtonText = confirmButtonText || this.i18n('Confirm')
+
+        this.showModal()
       }
-    );
+    )
   }
 
-  @HostListener('keydown.enter')
-  confirm() {
-    this.confirmService.confirmResponse.next(true);
-    this.hideModal();
+  @HostListener('document:keydown.enter')
+  confirm () {
+    if (this.openedModal) this.openedModal.close()
   }
 
-  @HostListener('keydown.esc')
-  abort() {
-    this.confirmService.confirmResponse.next(false);
-    this.hideModal();
-  }
+  isConfirmationDisabled () {
+    // No input validation
+    if (!this.inputLabel || !this.expectedInputValue) return false
 
-  showModal() {
-    this.confirmModal.show();
+    return this.expectedInputValue !== this.inputValue
   }
 
-  hideModal() {
-    this.confirmModal.hide();
+  showModal () {
+    this.inputValue = ''
+
+    this.openedModal = this.modalService.open(this.confirmModal)
+
+    this.openedModal.result
+        .then(() => this.confirmService.confirmResponse.next(true))
+        .catch(() => this.confirmService.confirmResponse.next(false))
   }
 }