Skip to content

Commit

Permalink
fix: Add use standalone lodash.clonedeep and lodash.mergewith in lib
Browse files Browse the repository at this point in the history
  • Loading branch information
EndyKaufman committed May 4, 2019
1 parent df54a55 commit d38198d
Show file tree
Hide file tree
Showing 7 changed files with 55 additions and 56 deletions.
4 changes: 2 additions & 2 deletions angular.json
Original file line number Diff line number Diff line change
Expand Up @@ -49,15 +49,15 @@
"with": "apps/demo/src/environments/environment.prod.ts"
}
],
"optimization": true,
"optimization": false,
"outputHashing": "all",
"sourceMap": false,
"extractCss": true,
"namedChunks": false,
"aot": true,
"extractLicenses": true,
"vendorChunk": false,
"buildOptimizer": true,
"buildOptimizer": false,
"serviceWorker": true
}
}
Expand Down
8 changes: 5 additions & 3 deletions libs/ngx-dynamic-form-builder/package.json
Original file line number Diff line number Diff line change
Expand Up @@ -49,11 +49,13 @@
"@angular/core": "^7.2.14",
"class-transformer": "^0.2.0",
"class-validator": "^0.9.1",
"@types/lodash-es": "^4.17.3",
"lodash-es": "^4.17.11"
"lodash.clonedeep": "^4.5.0",
"lodash.mergewith": "^4.6.1"
},
"dependencies": {
"class-transformer": "^0.2.0",
"class-validator": "^0.9.1"
"class-validator": "^0.9.1",
"lodash.clonedeep": "^4.5.0",
"lodash.mergewith": "^4.6.1"
}
}
58 changes: 21 additions & 37 deletions libs/ngx-dynamic-form-builder/src/lib/utils/dynamic-form-group.ts
Original file line number Diff line number Diff line change
@@ -1,34 +1,18 @@
import {
AbstractControl,
AbstractControlOptions,
AsyncValidatorFn,
FormArray,
FormBuilder,
FormControl,
FormGroup,
ValidatorFn
} from '@angular/forms';
import { AbstractControl, AbstractControlOptions, AsyncValidatorFn, FormArray, FormBuilder, FormControl, FormGroup, ValidatorFn } from '@angular/forms';
import { classToClass, plainToClass } from 'class-transformer';
import { ClassType } from 'class-transformer/ClassTransformer';
import {
getFromContainer,
MetadataStorage,
validate,
validateSync,
ValidationError,
ValidationTypes,
Validator,
ValidatorOptions
} from 'class-validator';
import { getFromContainer, MetadataStorage, validate, validateSync, ValidationError, ValidationTypes, Validator, ValidatorOptions } from 'class-validator';
import { ValidationMetadata } from 'class-validator/metadata/ValidationMetadata';
import cloneDeep from 'lodash-es/cloneDeep';
import mergeWith from 'lodash-es/mergeWith';
import 'reflect-metadata';
import { BehaviorSubject, Subject } from 'rxjs';
import { Dictionary, DynamicFormGroupField, ShortValidationErrors } from '../models';
import { foreverInvalid, FOREVER_INVALID_NAME } from '../validators/forever-invalid.validator';
import { DynamicFormControl } from './dynamic-form-control';

const cloneDeep = require('lodash.clonedeep');
const mergeWith = require('lodash.mergewith');


// Enforces the properties of the object, if supplied, to be of the original type or DynamicFormGroup or, FormArray
export type FormModel<T> = { [P in keyof T]?: T[P] | DynamicFormGroup<any> | FormArray };

Expand Down Expand Up @@ -98,7 +82,7 @@ export class DynamicFormGroup<TModel> extends FormGroup {
// Public API
validate(externalErrors?: ShortValidationErrors, validatorOptions?: ValidatorOptions) {
this.validateAsync(externalErrors, validatorOptions).then(
() => {},
() => { },
error => {
throw error;
}
Expand Down Expand Up @@ -199,7 +183,7 @@ export class DynamicFormGroup<TModel> extends FormGroup {

setExternalErrors(externalErrors: ShortValidationErrors) {
this.setExternalErrorsAsync(externalErrors).then(
() => {},
() => { },
error => {
throw error;
}
Expand Down Expand Up @@ -228,7 +212,7 @@ export class DynamicFormGroup<TModel> extends FormGroup {

setValidatorOptions(validatorOptions: ValidatorOptions) {
this.setValidatorOptionsAsync(validatorOptions).then(
() => {},
() => { },
error => {
throw error;
}
Expand Down Expand Up @@ -362,8 +346,8 @@ export class DynamicFormGroup<TModel> extends FormGroup {
const object = this._object
? this.classToClass(this._object)
: this.factoryModel
? new this.factoryModel()
: undefined;
? new this.factoryModel()
: undefined;

if (object !== undefined) {
// Recursively get the value of all fields
Expand Down Expand Up @@ -600,7 +584,7 @@ export function getClassValidators<TModel>(
//

function createNestedValidate(objectToValidate: any, validationMetadata: ValidationMetadata) {
return function(control: FormControl) {
return function (control: FormControl) {
const isValid =
getValidateErrors(control, objectToValidate !== undefined ? objectToValidate : control.value, validatorOptions)
.length === 0;
Expand All @@ -613,7 +597,7 @@ export function getClassValidators<TModel>(
conditionalValidations: ValidationMetadata[],
fieldName: string
) {
return function(control: FormControl) {
return function (control: FormControl) {
if (!control) {
return null;
}
Expand All @@ -633,7 +617,7 @@ export function getClassValidators<TModel>(
}

function createCustomValidation(fieldName: string, validationMetadata: ValidationMetadata) {
return function(control: FormControl) {
return function (control: FormControl) {
const validateErrors: ValidationError[] = setObjectValueAndGetValidationErrors(
control,
fieldName,
Expand Down Expand Up @@ -728,8 +712,8 @@ function setObjectValueAndGetValidationErrors(control: FormControl, key: string,
control.parent instanceof DynamicFormGroup
? (control.parent as DynamicFormGroup<any>).object
: control.parent
? control.parent.value
: {};
? control.parent.value
: {};

if (object) {
object[key] = control.value;
Expand All @@ -748,11 +732,11 @@ function getIsValidResult(isValid: boolean, validationMetadata: ValidationMetada
return isValid
? null
: {
[errorType]: {
valid: false,
type: validationMetadata.type
}
};
[errorType]: {
valid: false,
type: validationMetadata.type
}
};
}

type ErrorPropertyName = 'nestedValidate' | 'customValidation' | 'dynamicValidate';
Expand Down
3 changes: 2 additions & 1 deletion libs/ngx-dynamic-form-builder/tsconfig.lib.json
Original file line number Diff line number Diff line change
Expand Up @@ -10,6 +10,7 @@
"inlineSources": true,
"emitDecoratorMetadata": true,
"experimentalDecorators": true,
"esModuleInterop": true,
"importHelpers": true,
"types": [],
"lib": [
Expand All @@ -30,4 +31,4 @@
"src/test.ts",
"**/*.spec.ts"
]
}
}
28 changes: 18 additions & 10 deletions package-lock.json

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

5 changes: 4 additions & 1 deletion package.json
Original file line number Diff line number Diff line change
Expand Up @@ -81,12 +81,13 @@
"@angular/router": "^7.2.14",
"@angular/service-worker": "^7.2.14",
"@ngx-prism/core": "^2.0.1",
"@types/lodash-es": "^4.17.3",
"@types/prismjs": "^1.16.0",
"class-transformer": "^0.2.0",
"class-validator": "^0.9.1",
"core-js": "^2.6.2",
"lodash-es": "^4.17.11",
"lodash.clonedeep": "^4.5.0",
"lodash.mergewith": "^4.6.1",
"ngx-markdown": "^7.1.5",
"prismjs": "^1.16.0",
"rxjs": "^6.5.1",
Expand All @@ -101,6 +102,8 @@
"@rucken/cli": "^4.1.3",
"@types/jasmine": "~3.3.12",
"@types/jasminewd2": "~2.0.6",
"@types/lodash.clonedeep": "^4.5.6",
"@types/lodash.mergewith": "^4.6.6",
"@types/node": "~11.13.9",
"codelyzer": "~5.0.1",
"conventional-changelog-cli": "^2.0.17",
Expand Down
5 changes: 3 additions & 2 deletions tsconfig.json
Original file line number Diff line number Diff line change
Expand Up @@ -8,6 +8,7 @@
"moduleResolution": "node",
"emitDecoratorMetadata": true,
"experimentalDecorators": true,
"esModuleInterop": true,
"target": "es5",
"typeRoots": [
"node_modules/@types"
Expand All @@ -18,10 +19,10 @@
],
"paths": {
"ngx-dynamic-form-builder": [
"dist/ngx-dynamic-form-builder"
"libs/ngx-dynamic-form-builder/src"
],
"ngx-dynamic-form-builder/*": [
"dist/ngx-dynamic-form-builder/*"
"libs/ngx-dynamic-form-builder/src/*"
]
}
}
Expand Down

0 comments on commit d38198d

Please sign in to comment.