File

feature-libs/organization/administration/components/user/form/user-form.service.ts

Extends

FormService

Index

Properties
Methods

Methods

Protected build
build()
Inherited from FormService
Defined in FormService:11
Returns : void
Protected patchData
patchData(item: B2BUser)
Inherited from FormService
Defined in FormService:45
Parameters :
Name Type Optional
item B2BUser No
Returns : void
getForm
getForm(item?: T)
Inherited from FormService
Defined in FormService:14
Parameters :
Name Type Optional
item T Yes
Returns : FormGroup
Private toggleFreeze
toggleFreeze(item?: T)
Inherited from FormService
Defined in FormService:38
Parameters :
Name Type Optional
item T Yes
Returns : void

Properties

Protected form
Type : FormGroup
Inherited from FormService
Defined in FormService:7
import { Injectable } from '@angular/core';
import { FormArray, FormControl, FormGroup, Validators } from '@angular/forms';
import { B2BUser, B2BUserRole } from '@spartacus/core';
import { CustomFormValidators } from '@spartacus/storefront';
import { FormService } from '../../shared/form/form.service';

@Injectable({
  providedIn: 'root',
})
export class UserFormService extends FormService<B2BUser> {
  protected build() {
    const form = new FormGroup({});
    form.setControl('customerId', new FormControl(''));
    form.setControl('titleCode', new FormControl(''));
    form.setControl('firstName', new FormControl('', Validators.required));
    form.setControl('lastName', new FormControl('', Validators.required));
    form.setControl(
      'email',
      new FormControl('', [
        Validators.required,
        CustomFormValidators.emailValidator,
      ])
    );
    form.setControl(
      'orgUnit',
      new FormGroup({
        uid: new FormControl(undefined, Validators.required),
      })
    );
    form.setControl('roles', new FormArray([]));
    form.setControl('isAssignedToApprovers', new FormControl(false));

    form.get('roles').valueChanges.subscribe((roles: string[]) => {
      if (roles.includes(B2BUserRole.APPROVER)) {
        form.get('isAssignedToApprovers').enable();
      } else {
        form.get('isAssignedToApprovers').disable();
        form.get('isAssignedToApprovers').reset();
      }
    });

    this.form = form;
  }

  protected patchData(item: B2BUser) {
    super.patchData(item);
    if (item) {
      const roles = this.form.get('roles') as FormArray;
      item.roles?.forEach((role) => {
        if (!(roles.value as string[]).includes(role)) {
          roles.push(new FormControl(role));
        }
      });
    }
  }
}

result-matching ""

    No results matching ""