Browse Source

fix(admin-ui): Fix product multi select form input

Relates to #2249
Michael Bromley 2 years ago
parent
commit
b5947ec3ca

+ 2 - 2
packages/admin-ui/src/lib/core/src/data/utils/transform-relation-custom-field-inputs.ts

@@ -8,7 +8,7 @@ import { CustomFieldConfig } from '../../common/generated-types';
  * as expected by the server.
  */
 export function transformRelationCustomFieldInputs<
-    T extends { input?: Record<string, any> | Array<Record<string, any>> } & Record<string, any> = any
+    T extends { input?: Record<string, any> | Array<Record<string, any>> } & Record<string, any> = any,
 >(variables: T, customFieldConfig: CustomFieldConfig[]): T {
     if (variables.input) {
         if (Array.isArray(variables.input)) {
@@ -36,7 +36,7 @@ function transformRelations<T>(input: T, customFieldConfig: CustomFieldConfig[])
                     delete input.customFields[field.name];
                     input.customFields[getGraphQlInputName(field)] =
                         field.list && Array.isArray(entityValue)
-                            ? entityValue.map(v => v?.id)
+                            ? entityValue.map(v => (typeof v === 'string' ? v : v?.id))
                             : entityValue === null
                             ? null
                             : entityValue?.id;

+ 4 - 1
packages/admin-ui/src/lib/core/src/shared/dynamic-form-inputs/product-multi-selector-form-input/product-multi-selector-form-input.component.ts

@@ -37,7 +37,9 @@ export class ProductMultiSelectorFormInputComponent implements OnInit, FormInput
                 size: 'xl',
                 locals: {
                     mode: this.mode,
-                    initialSelectionIds: this.formControl.value,
+                    initialSelectionIds: this.formControl.value.map(item =>
+                        typeof item === 'string' ? item : item.id,
+                    ),
                 },
             })
             .subscribe(selection => {
@@ -47,6 +49,7 @@ export class ProductMultiSelectorFormInputComponent implements OnInit, FormInput
                             this.mode === 'product' ? item.productId : item.productVariantId,
                         ),
                     );
+                    this.formControl.markAsDirty();
                     this.changeDetector.markForCheck();
                 }
             });