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

100% Statements 15/15
100% Branches 0/0
100% Functions 6/6
100% Lines 12/12

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                1x   1x           1x   1x           1x 1x     1x           1x                               1x       1x                             6x                             2x                          
import { ModuleWithProviders, NgModule } from '@angular/core';
import { DynamicFormElement } from '../dynamic-form-element/dynamic-form-element';
import { dynamicFormLibrary } from '../dynamic-form-library/dynamic-form-library';
import { DynamicFormAction } from './dynamic-form-action';
import { DynamicFormActionHandler } from './dynamic-form-action-handler';
import { DYNAMIC_FORM_ACTION_HANDLER_CONFIG } from './dynamic-form-action-handler-config';
import { DynamicFormActionService } from './dynamic-form-action.service';
 
export const dynamicFormDialogOpen = (action: DynamicFormAction) => action.openDialog();
 
export const dynamicFormDialogOpenHandler: DynamicFormActionHandler<DynamicFormAction> = {
  type: 'openDialog',
  func: dynamicFormDialogOpen,
  libraryName: dynamicFormLibrary.name,
};
 
export const dynamicFormDialogClose = (action: DynamicFormAction) => action.closeDialog();
 
export const dynamicFormDialogCloseHandler: DynamicFormActionHandler<DynamicFormAction> = {
  type: 'closeDialog',
  func: dynamicFormDialogClose,
  libraryName: dynamicFormLibrary.name,
};
 
export const dynamicFormDialogToggle = (action: DynamicFormAction) => {
  action.toggleDialog();
};
 
export const dynamicFormDialogToggleHandler: DynamicFormActionHandler<DynamicFormAction> = {
  type: 'toggleDialog',
  func: dynamicFormDialogToggle,
  libraryName: dynamicFormLibrary.name,
};
 
export const dynamicFormDialogHandlers: DynamicFormActionHandler<DynamicFormAction>[] = [
  dynamicFormDialogOpenHandler,
  dynamicFormDialogCloseHandler,
  dynamicFormDialogToggleHandler,
];
 
@NgModule({
  providers: [
    {
      provide: DYNAMIC_FORM_ACTION_HANDLER_CONFIG,
      useValue: dynamicFormDialogHandlers,
      multi: true,
    },
    DynamicFormActionService,
  ],
})
export class DynamicFormActionModule {
  static withHandler<Element extends DynamicFormElement = DynamicFormElement>(
    handler: DynamicFormActionHandler<Element>,
  ): ModuleWithProviders<DynamicFormActionModule> {
    return {
      ngModule: DynamicFormActionModule,
      providers: [
        {
          provide: DYNAMIC_FORM_ACTION_HANDLER_CONFIG,
          useValue: handler,
          multi: true,
        },
      ],
    };
  }
 
  static withHandlers<Element extends DynamicFormElement = DynamicFormElement>(
    handlers: DynamicFormActionHandler<Element>[],
  ): ModuleWithProviders<DynamicFormActionModule> {
    return {
      ngModule: DynamicFormActionModule,
      providers: [
        {
          provide: DYNAMIC_FORM_ACTION_HANDLER_CONFIG,
          useValue: handlers,
          multi: true,
        },
      ],
    };
  }
 
  static withHandlerFactory<Element extends DynamicFormElement = DynamicFormElement>(
    handlerFactory: (...depTypes: any[]) => DynamicFormActionHandler<Element>, deps?: any[],
  ): ModuleWithProviders<DynamicFormActionModule> {
    return {
      ngModule: DynamicFormActionModule,
      providers: [
        {
          provide: DYNAMIC_FORM_ACTION_HANDLER_CONFIG,
          useFactory: handlerFactory,
          deps,
          multi: true,
        },
      ],
    };
  }
}