]> git-server-git.apps.pok.os.sepia.ceph.com Git - ceph.git/commitdiff
mgr/dashboard: Support for template forms on 'cd-submit-button'
authorRicardo Marques <rimarques@suse.com>
Thu, 19 Apr 2018 14:19:14 +0000 (15:19 +0100)
committerRicardo Marques <rimarques@suse.com>
Tue, 24 Apr 2018 13:02:41 +0000 (14:02 +0100)
If 'formDir' is provided, 'cd-submit-button' will mark
it as submitted after submission.

Signed-off-by: Ricardo Marques <rimarques@suse.com>
src/pybind/mgr/dashboard/frontend/src/app/shared/components/submit-button/submit-button.component.html
src/pybind/mgr/dashboard/frontend/src/app/shared/components/submit-button/submit-button.component.ts

index d4a3451ca1c9202fb071ce5fe9e43196a73d277a..8bb2a449c6f52a5ca43b7e75c8a83c701cdcf521 100644 (file)
@@ -1,7 +1,7 @@
 <button [type]="type"
         class="btn btn-sm btn-primary tc_submitButton"
         [disabled]="loading"
-        (click)="submit()">
+        (click)="submit($event)">
   <ng-content></ng-content>
   <span *ngIf="loading">
     <i class="fa fa-spinner fa-spin fa-fw"></i>
index f0d11d152d7a2f53dd0d3bddbbd82f888ce4ca1c..10112b9b1acd2ab0e6c9bca76491219a733aad43 100644 (file)
@@ -1,5 +1,5 @@
 import { Component, ElementRef, EventEmitter, Input, OnInit, Output } from '@angular/core';
-import { FormGroup } from '@angular/forms';
+import { AbstractControl, FormGroup, FormGroupDirective, NgForm } from '@angular/forms';
 
 import * as _ from 'lodash';
 
@@ -27,7 +27,7 @@ import * as _ from 'lodash';
   styleUrls: ['./submit-button.component.scss']
 })
 export class SubmitButtonComponent implements OnInit {
-  @Input() form: FormGroup;
+  @Input() form: FormGroup | NgForm;
   @Input() type = 'submit';
   @Output() submitAction = new EventEmitter();
 
@@ -40,14 +40,22 @@ export class SubmitButtonComponent implements OnInit {
       if (_.has(this.form.errors, 'cdSubmitButton')) {
         this.loading = false;
         _.unset(this.form.errors, 'cdSubmitButton');
-        this.form.updateValueAndValidity();
+         // Handle Reactive forms.
+        if (this.form instanceof AbstractControl) {
+          (<AbstractControl>this.form).updateValueAndValidity();
+        }
       }
     });
   }
 
-  submit() {
+  submit($event) {
     this.focusButton();
 
+    // Special handling for Template driven forms.
+    if (this.form instanceof FormGroupDirective) {
+      (<FormGroupDirective>this.form).onSubmit($event);
+    }
+
     if (this.form.invalid) {
       this.focusInvalid();
       return;