All files / lib/dynamic-form-dictionary dynamic-form-dictionary.module.ts

100% Statements 26/26
100% Branches 12/12
100% Functions 5/5
100% Lines 24/24

Press n or j to go to the next uncovered block, b, p or k for the previous block.

1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107                                      1x             1x     8x 2x 2x 2x 2x 1x   2x   8x               1x 3x 3x 1x     2x 2x         1x 2x 2x 1x       1x             1x   1x                                                             1x  
import { CommonModule } from '@angular/common';
import { NgModule } from '@angular/core';
import { ReactiveFormsModule } from '@angular/forms';
import { DynamicFormAction } from '../dynamic-form-action/dynamic-form-action';
import { DynamicFormActionHandler } from '../dynamic-form-action/dynamic-form-action-handler';
import { DynamicFormActionModule } from '../dynamic-form-action/dynamic-form-action.module';
import { DynamicFormConfigModule } from '../dynamic-form-config/dynamic-form-config.module';
import { DynamicFormElementModule } from '../dynamic-form-element/dynamic-form-element.module';
import { DynamicFormField } from '../dynamic-form-field/dynamic-form-field';
import { DynamicFormFieldType } from '../dynamic-form-field/dynamic-form-field-type';
import { DynamicFormFieldModule } from '../dynamic-form-field/dynamic-form-field.module';
import { dynamicFormLibrary } from '../dynamic-form-library/dynamic-form-library';
import { DynamicFormValidationModule } from '../dynamic-form-validation/dynamic-form-validation.module';
import { DynamicFormBuilder } from '../dynamic-form/dynamic-form.builder';
import { DynamicFormDictionary } from './dynamic-form-dictionary';
import { dynamicFormDictionaryFactory } from './dynamic-form-dictionary-factory';
import { dynamicFormDictionaryValidatorTypes } from './dynamic-form-dictionary-validator-type';
import { DynamicFormDictionaryComponent } from './dynamic-form-dictionary.component';
 
export const dynamicFormDictionaryType: DynamicFormFieldType = {
  type: 'dictionary',
  factory: dynamicFormDictionaryFactory,
  component: DynamicFormDictionaryComponent,
  libraryName: dynamicFormLibrary.name,
};
 
export const dynamicFormDictionaryRegisterFieldHandlerFactory = (
  formBuilder: DynamicFormBuilder,
): DynamicFormActionHandler<DynamicFormDictionary> => {
  const func = (field: DynamicFormDictionary, action: DynamicFormAction) => {
    const parent = action.parent as DynamicFormAction;
    const key = parent.dialog ? parent.dialog.model.key : formBuilder.createId();
    const element = formBuilder.createFormDictionaryField(field, key);
    if (parent.dialog) {
      parent.closeDialog();
    }
    return field.registerField(element);
  };
  return {
    type: 'registerDictionaryField',
    elementFunc: getDynamicFormDictionary,
    func,
    libraryName: dynamicFormLibrary.name,
  };
};
 
export const getDynamicFormDictionary = (action: DynamicFormAction): DynamicFormDictionary => {
  const field = action.parent as DynamicFormField;
  if (field.fieldClassType === 'dictionary') {
    return field as DynamicFormDictionary;
  }
 
  const parentField = field.parent as DynamicFormField;
  return parentField && parentField.fieldClassType === 'dictionary'
    ? parentField as DynamicFormDictionary
    : undefined;
};
 
export const dynamicFormDictionaryRemoveField = (field: DynamicFormDictionary, action: DynamicFormAction): void => {
  const childField = action.parent as DynamicFormField;
  if (field && childField && childField.key) {
    field.removeField(childField.key);
  }
};
 
export const dynamicFormDictionaryRemoveFieldHandler: DynamicFormActionHandler<DynamicFormDictionary> = {
  type: 'removeDictionaryField',
  elementFunc: getDynamicFormDictionary,
  func: dynamicFormDictionaryRemoveField,
  libraryName: dynamicFormLibrary.name,
};
 
export const dynamicFormDictionaryClearFields = (field: DynamicFormDictionary): void => field.clearFields();
 
export const dynamicFormDictionaryClearFieldsHandler: DynamicFormActionHandler<DynamicFormDictionary> = {
  type: 'clearDictionaryFields',
  func: dynamicFormDictionaryClearFields,
  libraryName: dynamicFormLibrary.name,
};
 
@NgModule({
  imports: [
    CommonModule,
    ReactiveFormsModule,
    DynamicFormElementModule,
    DynamicFormFieldModule,
    DynamicFormConfigModule.withField(dynamicFormDictionaryType),
    DynamicFormValidationModule.withDictionaryValidators(dynamicFormDictionaryValidatorTypes),
    DynamicFormActionModule.withHandlers([
      dynamicFormDictionaryRemoveFieldHandler,
      dynamicFormDictionaryClearFieldsHandler,
    ]),
    DynamicFormActionModule.withHandlerFactory(dynamicFormDictionaryRegisterFieldHandlerFactory, [
      DynamicFormBuilder,
    ]),
  ],
  declarations: [
    DynamicFormDictionaryComponent,
  ],
  exports: [
    DynamicFormConfigModule,
    DynamicFormActionModule,
    DynamicFormDictionaryComponent,
  ],
})
export class DynamicFormDictionaryModule {}