Browse Source

fix(admin-ui): Fix error on creating product with empty option values

Fixes #141
Michael Bromley 6 years ago
parent
commit
452f5a9962

+ 1 - 1
admin-ui/src/app/catalog/components/option-value-input/option-value-input.component.html

@@ -14,7 +14,7 @@
         #textArea
         (keyup)="handleKey($event)"
         (focus)="isFocussed = true"
-        (blur)="isFocussed = false"
+        (blur)="handleBlur()"
         [(ngModel)]="input"
         [disabled]="disabled"
     ></textarea>

+ 12 - 3
admin-ui/src/app/catalog/components/option-value-input/option-value-input.component.ts

@@ -67,9 +67,7 @@ export class OptionValueInputComponent implements ControlValueAccessor {
         switch (event.key) {
             case ',':
             case 'Enter':
-                this.options = unique([...this.options, ...this.parseInputIntoOptions(this.input)]);
-                this.input = '';
-                this.onChangeFn(this.options);
+                this.addOptionValue();
                 event.preventDefault();
                 break;
             case 'Backspace':
@@ -85,6 +83,17 @@ export class OptionValueInputComponent implements ControlValueAccessor {
         }
     }
 
+    handleBlur() {
+        this.isFocussed = false;
+        this.addOptionValue();
+    }
+
+    private addOptionValue() {
+        this.options = unique([...this.options, ...this.parseInputIntoOptions(this.input)]);
+        this.input = '';
+        this.onChangeFn(this.options);
+    }
+
     private parseInputIntoOptions(input: string): string[] {
         return input
             .split(/[,\n]/)

+ 2 - 1
admin-ui/src/app/catalog/providers/product-detail.service.ts

@@ -58,7 +58,8 @@ export class ProductDetailService {
     ) {
         const createProduct$ = this.dataService.product.createProduct(input);
 
-        const createOptionGroups$ = createVariantsConfig.groups.length
+        const nonEmptyOptionGroups = createVariantsConfig.groups.filter(g => 0 < g.values.length);
+        const createOptionGroups$ = nonEmptyOptionGroups.length
             ? forkJoin(
                   createVariantsConfig.groups.map(c => {
                       return this.dataService.product.createProductOptionGroups({