diff --git a/npm/ng-packs/packages/core/src/lib/tests/validators.spec.ts b/npm/ng-packs/packages/core/src/lib/tests/validators.spec.ts index 179bcccaaa..5d666a24c3 100644 --- a/npm/ng-packs/packages/core/src/lib/tests/validators.spec.ts +++ b/npm/ng-packs/packages/core/src/lib/tests/validators.spec.ts @@ -37,14 +37,6 @@ describe('Validators', () => { expect(control.errors).toEqual(expected); }); - - it('should return null when control is pristine', () => { - const invalidNumber = '5105105105105101'; - const control = new FormControl(invalidNumber, [validateCreditCard()]); - // control is not dirty - - expect(control.valid).toBe(true); - }); }); describe('Email Validator', () => { @@ -81,14 +73,6 @@ describe('Validators', () => { expect(control.errors).toEqual(expected); }, ); - - it('should return null when control is pristine', () => { - const invalidDate = ''; - const control = new FormControl(invalidDate, [validateMinAge({ age: Infinity })]); - // control is not dirty - - expect(control.valid).toBe(true); - }); }); describe('Range Validator', () => { @@ -115,14 +99,6 @@ describe('Validators', () => { expect(control.errors).toEqual(expected); }, ); - - it('should return null when control is pristine', () => { - const invalidUrl = ''; - const control = new FormControl(invalidUrl, [validateRange({ minimum: 3 })]); - // control is not dirty - - expect(control.valid).toBe(true); - }); }); describe('Required Validator', () => { @@ -148,14 +124,6 @@ describe('Validators', () => { expect(control.errors).toEqual(expected); }, ); - - it('should return null when control is pristine', () => { - const invalidUrl = ''; - const control = new FormControl(invalidUrl, [validateRequired()]); - // control is not dirty - - expect(control.valid).toBe(true); - }); }); describe('String Length Validator', () => { @@ -178,14 +146,6 @@ describe('Validators', () => { expect(control.errors).toEqual(expected); }, ); - - it('should return null when control is pristine', () => { - const invalidUrl = ''; - const control = new FormControl(invalidUrl, [validateStringLength({ minimumLength: 3 })]); - // control is not dirty - - expect(control.valid).toBe(true); - }); }); describe('Url Validator', () => { @@ -217,13 +177,5 @@ describe('Validators', () => { expect(control.errors).toEqual(expected); }); - - it('should return null when control is pristine', () => { - const invalidUrl = 'x'; - const control = new FormControl(invalidUrl, [validateUrl()]); - // control is not dirty - - expect(control.valid).toBe(true); - }); }); }); diff --git a/npm/ng-packs/packages/core/src/lib/validators/age.validator.ts b/npm/ng-packs/packages/core/src/lib/validators/age.validator.ts index a57c2ba38b..ee2e7f9fd3 100644 --- a/npm/ng-packs/packages/core/src/lib/validators/age.validator.ts +++ b/npm/ng-packs/packages/core/src/lib/validators/age.validator.ts @@ -12,8 +12,6 @@ export interface MinAgeOptions { export function validateMinAge({ age = 18 }: MinAgeOptions = {}): ValidatorFn { return (control: AbstractControl): MinAgeError | null => { - if (control.pristine) return null; - if (['', null, undefined].indexOf(control.value) > -1) return null; return isValidMinAge(control.value, age) ? null : { minAge: { age } }; diff --git a/npm/ng-packs/packages/core/src/lib/validators/credit-card.validator.ts b/npm/ng-packs/packages/core/src/lib/validators/credit-card.validator.ts index 70de5eca77..b4ca128ef5 100644 --- a/npm/ng-packs/packages/core/src/lib/validators/credit-card.validator.ts +++ b/npm/ng-packs/packages/core/src/lib/validators/credit-card.validator.ts @@ -6,8 +6,6 @@ export interface CreditCardError { export function validateCreditCard(): ValidatorFn { return (control: AbstractControl): CreditCardError | null => { - if (control.pristine) return null; - if (['', null, undefined].indexOf(control.value) > -1) return null; return isValidCreditCard(String(control.value)) ? null : { creditCard: true }; diff --git a/npm/ng-packs/packages/core/src/lib/validators/range.validator.ts b/npm/ng-packs/packages/core/src/lib/validators/range.validator.ts index c9e6edee6a..9497ed0407 100644 --- a/npm/ng-packs/packages/core/src/lib/validators/range.validator.ts +++ b/npm/ng-packs/packages/core/src/lib/validators/range.validator.ts @@ -14,8 +14,6 @@ export interface RangeOptions { export function validateRange({ maximum = Infinity, minimum = 0 }: RangeOptions = {}): ValidatorFn { return (control: AbstractControl): RangeError | null => { - if (control.pristine) return null; - if (['', null, undefined].indexOf(control.value) > -1) return null; const value = Number(control.value); diff --git a/npm/ng-packs/packages/core/src/lib/validators/required.validator.ts b/npm/ng-packs/packages/core/src/lib/validators/required.validator.ts index f8d27a3ffd..bf2a4b47ee 100644 --- a/npm/ng-packs/packages/core/src/lib/validators/required.validator.ts +++ b/npm/ng-packs/packages/core/src/lib/validators/required.validator.ts @@ -10,9 +10,7 @@ export interface RequiredOptions { export function validateRequired({ allowEmptyStrings }: RequiredOptions = {}): ValidatorFn { return (control: AbstractControl): RequiredError | null => { - return control.pristine || isValidRequired(control.value, allowEmptyStrings) - ? null - : { required: true }; + return isValidRequired(control.value, allowEmptyStrings) ? null : { required: true }; }; } diff --git a/npm/ng-packs/packages/core/src/lib/validators/string-length.validator.ts b/npm/ng-packs/packages/core/src/lib/validators/string-length.validator.ts index 167240cfa6..934188a4fb 100644 --- a/npm/ng-packs/packages/core/src/lib/validators/string-length.validator.ts +++ b/npm/ng-packs/packages/core/src/lib/validators/string-length.validator.ts @@ -19,8 +19,6 @@ export function validateStringLength({ minimumLength = 0, }: StringLengthOptions = {}): ValidatorFn { return (control: AbstractControl): StringLengthError | null => { - if (control.pristine) return null; - if (['', null, undefined].indexOf(control.value) > -1) return null; const value = String(control.value); diff --git a/npm/ng-packs/packages/core/src/lib/validators/url.validator.ts b/npm/ng-packs/packages/core/src/lib/validators/url.validator.ts index 6eb3169837..705d07e17a 100644 --- a/npm/ng-packs/packages/core/src/lib/validators/url.validator.ts +++ b/npm/ng-packs/packages/core/src/lib/validators/url.validator.ts @@ -6,8 +6,6 @@ export interface UrlError { export function validateUrl(): ValidatorFn { return (control: AbstractControl): UrlError | null => { - if (control.pristine) return null; - if (['', null, undefined].indexOf(control.value) > -1) return null; return isValidUrl(control.value) ? null : { url: true }; diff --git a/npm/ng-packs/packages/theme-shared/extensions/src/lib/components/extensible-form/extensible-form-prop.component.ts b/npm/ng-packs/packages/theme-shared/extensions/src/lib/components/extensible-form/extensible-form-prop.component.ts index 658845c045..a370edcbe2 100644 --- a/npm/ng-packs/packages/theme-shared/extensions/src/lib/components/extensible-form/extensible-form-prop.component.ts +++ b/npm/ng-packs/packages/theme-shared/extensions/src/lib/components/extensible-form/extensible-form-prop.component.ts @@ -65,10 +65,9 @@ export class ExtensibleFormPropComponent implements OnChanges { this.typeaheadModel = selectedOption || { key: null, value: null }; const { key, value } = this.typeaheadModel; const [keyControl, valueControl] = this.getTypeaheadControls(); + if (valueControl.value && !value) valueControl.markAsDirty(); keyControl.setValue(key); valueControl.setValue(value); - valueControl.markAsDirty(); - valueControl.markAsTouched(); } search = (text$: Observable) => @@ -106,7 +105,7 @@ export class ExtensibleFormPropComponent implements OnChanges { } private setAsterisk() { - this.asterisk = this.validators.some(v => v === Validators.required) ? '*' : ''; + this.asterisk = this.validators.some(isRequired) ? '*' : ''; } getComponent(prop: FormProp): string { @@ -167,3 +166,7 @@ export class ExtensibleFormPropComponent implements OnChanges { this.typeaheadModel = { key: keyControl.value, value: valueControl.value }; } } + +function isRequired(validator: ValidatorFn) { + return validator === Validators.required || validator.toString().includes('required'); +} diff --git a/npm/ng-packs/packages/theme-shared/extensions/src/lib/utils/case.util.ts b/npm/ng-packs/packages/theme-shared/extensions/src/lib/utils/case.util.ts deleted file mode 100644 index 5833b82de2..0000000000 --- a/npm/ng-packs/packages/theme-shared/extensions/src/lib/utils/case.util.ts +++ /dev/null @@ -1,37 +0,0 @@ -// https://github.com/JamesNK/Newtonsoft.Json/blob/master/Src/Newtonsoft.Json/Utilities/StringUtils.cs#L155 -export function jsonNetCamelCase(str: string) { - if (!str || !isUpperCase(str[0])) return str; - - const chars = str.split(''); - const { length } = chars; - - for (let i = 0; i < length; i++) { - if (i === 1 && !isUpperCase(chars[i])) break; - - const hasNext = i + 1 < length; - - if (i > 0 && hasNext && !isUpperCase(chars[i + 1])) { - if (isSeparator(chars[i + 1])) { - chars[i] = toLowerCase(chars[i]); - } - - break; - } - - chars[i] = toLowerCase(chars[i]); - } - - return chars.join(''); -} - -function isSeparator(str = '') { - return /[\s\u2000-\u206F\u2E00-\u2E7F\\'!"#$%&()*+,\-.\/:;<=>?@\[\]^_`{|}~]+/.test(str); -} - -function isUpperCase(str = '') { - return /[A-Z]+/.test(str); -} - -function toLowerCase(str = '') { - return str.toLowerCase(); -} diff --git a/npm/ng-packs/packages/theme-shared/extensions/src/lib/utils/state.util.ts b/npm/ng-packs/packages/theme-shared/extensions/src/lib/utils/state.util.ts index 938269e850..b8b2687232 100644 --- a/npm/ng-packs/packages/theme-shared/extensions/src/lib/utils/state.util.ts +++ b/npm/ng-packs/packages/theme-shared/extensions/src/lib/utils/state.util.ts @@ -11,7 +11,6 @@ import { EntityProp, EntityPropList } from '../models/entity-props'; import { FormProp, FormPropList } from '../models/form-props'; import { ObjectExtensions } from '../models/object-extensions'; import { PropCallback } from '../models/props'; -import { jsonNetCamelCase } from './case.util'; import { createEnum, createEnumOptions, createEnumValueResolver } from './enum.util'; import { createDisplayNameLocalizationPipeKeyGenerator } from './localization.util'; import { createExtraPropertyValueResolver } from './props.util'; @@ -122,7 +121,7 @@ function createPropertiesToContributorsMapper( Object.keys(properties).forEach((name: string) => { const property = properties[name]; - const propName = jsonNetCamelCase(name); + const propName = name; const lookup = property.ui.lookup || ({} as ExtensionPropertyUiLookupDto); const type = getTypeaheadType(lookup, name) || getTypeFromProperty(property); const displayName = generateDisplayName(property.displayName, { name, resource }); diff --git a/npm/ng-packs/packages/theme-shared/extensions/src/tests/case.util.spec.ts b/npm/ng-packs/packages/theme-shared/extensions/src/tests/case.util.spec.ts deleted file mode 100644 index db9f7b1de8..0000000000 --- a/npm/ng-packs/packages/theme-shared/extensions/src/tests/case.util.spec.ts +++ /dev/null @@ -1,18 +0,0 @@ -import { jsonNetCamelCase } from '../lib/utils/case.util'; - -describe('Case Utils', () => { - describe('#jsonNetCamelCase', () => { - test.each` - input | output - ${'Primary'} | ${'primary'} - ${'PrimaryRole'} | ${'primaryRole'} - ${'Primary Role'} | ${'primary Role'} - ${'PrimaryRole_Text'} | ${'primaryRole_Text'} - ${'ISBN'} | ${'isbn'} - ${''} | ${''} - ${'iMDB'} | ${'iMDB'} - `('should return $output when input is $input', ({ input, output }) => { - expect(jsonNetCamelCase(input)).toBe(output); - }); - }); -}); diff --git a/npm/ng-packs/packages/theme-shared/extensions/src/tests/state.util.spec.ts b/npm/ng-packs/packages/theme-shared/extensions/src/tests/state.util.spec.ts index 6f72a4a8b7..c0581aae45 100644 --- a/npm/ng-packs/packages/theme-shared/extensions/src/tests/state.util.spec.ts +++ b/npm/ng-packs/packages/theme-shared/extensions/src/tests/state.util.spec.ts @@ -51,28 +51,28 @@ describe('State Utils', () => { contributors.prop.Role.forEach(callback => callback(propList)); expect(propList.length).toBe(4); - expect(propList.head.value.name).toBe('title'); - expect(propList.head.next.value.name).toBe('isHero'); - expect(propList.head.next.next.value.name).toBe('myEnum'); - expect(propList.head.next.next.next.value.name).toBe('foo_Text'); + expect(propList.head.value.name).toBe('Title'); + expect(propList.head.next.value.name).toBe('IsHero'); + expect(propList.head.next.next.value.name).toBe('MyEnum'); + expect(propList.head.next.next.next.value.name).toBe('Foo_Text'); const createFormList = new FormPropList(); contributors.createForm.Role.forEach(callback => callback(createFormList)); expect(createFormList.length).toBe(4); - expect(createFormList.head.value.name).toBe('title'); - expect(createFormList.head.next.value.name).toBe('myEnum'); - expect(createFormList.head.next.next.value.name).toBe('foo'); - expect(createFormList.head.next.next.next.value.name).toBe('foo_Text'); + expect(createFormList.head.value.name).toBe('Title'); + expect(createFormList.head.next.value.name).toBe('MyEnum'); + expect(createFormList.head.next.next.value.name).toBe('Foo'); + expect(createFormList.head.next.next.next.value.name).toBe('Foo_Text'); const editFormList = new FormPropList(); contributors.editForm.Role.forEach(callback => callback(editFormList)); expect(editFormList.length).toBe(4); - expect(editFormList.head.value.name).toBe('title'); - expect(editFormList.head.next.value.name).toBe('isHero'); - expect(editFormList.head.next.next.value.name).toBe('foo'); - expect(editFormList.head.next.next.next.value.name).toBe('foo_Text'); + expect(editFormList.head.value.name).toBe('Title'); + expect(editFormList.head.next.value.name).toBe('IsHero'); + expect(editFormList.head.next.next.value.name).toBe('Foo'); + expect(editFormList.head.next.next.next.value.name).toBe('Foo_Text'); }); }); }); diff --git a/npm/ng-packs/yarn.lock b/npm/ng-packs/yarn.lock index f8d1dffb6b..de7fe96b12 100644 --- a/npm/ng-packs/yarn.lock +++ b/npm/ng-packs/yarn.lock @@ -2,12 +2,12 @@ # yarn lockfile v1 -"@abp/ng.core@~4.0.0-rc.4": - version "4.0.0-rc.4" - resolved "https://registry.yarnpkg.com/@abp/ng.core/-/ng.core-4.0.0-rc.4.tgz#f1cbb7d43662579a7977c9d98bf28f7a6726537f" - integrity sha512-EtvoUr52v4+DEn3j2mru4OiLJf9tcg5ptLRjwBg1psftz1t3atnmvP1F8+sIhOwnj/Zm5hlhqSqnedpTzdALPg== +"@abp/ng.core@~4.0.0-rc.5": + version "4.0.0-rc.5" + resolved "https://registry.yarnpkg.com/@abp/ng.core/-/ng.core-4.0.0-rc.5.tgz#30db71708801ea7f04307577d9482d0bb3b386b0" + integrity sha512-5l7KwxCw21rbYO1dWvpIrUU77EfM68XuNm2s+3bLpckUgsanf2zjdpYPbXgzpeAedsUtjrTjCZLqlRj9n4iwKQ== dependencies: - "@abp/utils" "^4.0.0-rc.3" + "@abp/utils" "^4.0.0-rc.4" "@angular/localize" "~10.0.10" "@ngxs/router-plugin" "^3.7.0" "@ngxs/store" "^3.7.0" @@ -18,29 +18,29 @@ ts-toolbelt "6.15.4" tslib "^2.0.0" -"@abp/ng.feature-management@~4.0.0-rc.4": - version "4.0.0-rc.4" - resolved "https://registry.yarnpkg.com/@abp/ng.feature-management/-/ng.feature-management-4.0.0-rc.4.tgz#ab740e4327b8fd10ba4567bfeb24debbd4ffe8a5" - integrity sha512-PlWxAA2wECRrBGwqWeaWi+f3YPayIaOJhW4INTvD5JUFMIRJsOJZlxpmcz8x2pU64bUO42/YM26+Xy2TyVKFNg== +"@abp/ng.feature-management@~4.0.0-rc.5": + version "4.0.0-rc.5" + resolved "https://registry.yarnpkg.com/@abp/ng.feature-management/-/ng.feature-management-4.0.0-rc.5.tgz#0755c8f0eb69c339cc511f2e599786c8fcb2d369" + integrity sha512-owYYnnNqQOCq9MepTVjn8lWTw1Uux+hj83QZ47Mfz3IKP/EuYz2cS3rkqIw5MQ4hPfQZxBwu5qM2vhbFLt0K4w== dependencies: - "@abp/ng.theme.shared" "~4.0.0-rc.4" + "@abp/ng.theme.shared" "~4.0.0-rc.5" tslib "^2.0.0" -"@abp/ng.identity@~4.0.0-rc.4": - version "4.0.0-rc.4" - resolved "https://registry.yarnpkg.com/@abp/ng.identity/-/ng.identity-4.0.0-rc.4.tgz#5b8694b1d1d6f1a039e1a445add14dcc5d6eb5ad" - integrity sha512-nqx3ofuTT5kOdJHWAyrZyEmGGp08DZNNC7IIY7L1/NueiAcfjghKrAiGkNnt5SApdk86OzdrLdIvpELnZVCMzg== +"@abp/ng.identity@~4.0.0-rc.5": + version "4.0.0-rc.5" + resolved "https://registry.yarnpkg.com/@abp/ng.identity/-/ng.identity-4.0.0-rc.5.tgz#f67fc5ed50be150e9229754b27506121817c03a7" + integrity sha512-NsJ5BJaqLuSt+tutN258FeBLFlfLQvoGI1etn8+1CoBd+uYGEcIYNVkJj/i+8q/ShMU7LoZ9Di/G4NjxU8WFig== dependencies: - "@abp/ng.permission-management" "~4.0.0-rc.4" - "@abp/ng.theme.shared" "~4.0.0-rc.4" + "@abp/ng.permission-management" "~4.0.0-rc.5" + "@abp/ng.theme.shared" "~4.0.0-rc.5" tslib "^2.0.0" -"@abp/ng.permission-management@~4.0.0-rc.4": - version "4.0.0-rc.4" - resolved "https://registry.yarnpkg.com/@abp/ng.permission-management/-/ng.permission-management-4.0.0-rc.4.tgz#3d838528549860e2a8b6aba2c5f35f6764089322" - integrity sha512-2o/1dtfNQOkqHWzdHyI8Ske5E5VseCM+N3erJu4NSLIWrj5G3CG9wwbJm3BqEjHG7hzbcvR6fYxKpDUmqvQR0A== +"@abp/ng.permission-management@~4.0.0-rc.5": + version "4.0.0-rc.5" + resolved "https://registry.yarnpkg.com/@abp/ng.permission-management/-/ng.permission-management-4.0.0-rc.5.tgz#04ea4199074ff2689d7a429ba482c8a7b37abb0a" + integrity sha512-T+iAhDFXaYW9/JRPPWXqm1lbHv5F0uTR/Ij5yiCpFgrbDu5bPVf/0WR7y8VyMn5lZ+1gWa+o9VievBnlKVRwHg== dependencies: - "@abp/ng.theme.shared" "~4.0.0-rc.4" + "@abp/ng.theme.shared" "~4.0.0-rc.5" tslib "^2.0.0" "@abp/ng.schematics@~3.3.1": @@ -54,52 +54,45 @@ jsonc-parser "^2.3.0" typescript "~3.9.2" -"@abp/ng.setting-management@~4.0.0-rc.4": - version "4.0.0-rc.4" - resolved "https://registry.yarnpkg.com/@abp/ng.setting-management/-/ng.setting-management-4.0.0-rc.4.tgz#45e7fe04a8069da19d644860617e5b5aeab39281" - integrity sha512-L7liYuB+DdWdcdJwG4OkQhBdb1bNqFO08TjfbRdkPARHje/tat+z8jtZ58yQVYOVCs9M2vJt3ydHnvZ+PQWpow== +"@abp/ng.setting-management@~4.0.0-rc.5": + version "4.0.0-rc.5" + resolved "https://registry.yarnpkg.com/@abp/ng.setting-management/-/ng.setting-management-4.0.0-rc.5.tgz#32837b5e0b49b1596dc9ebc708a14fb3250eda36" + integrity sha512-LSCoXvE22HbKrEAQ92rbvfotCL5pyZSG1wJImJg8zLOkw0i83mT7tycjDeBdixz4FkbYF4nhbuPwaz3GDbxL0Q== dependencies: - "@abp/ng.theme.shared" "~4.0.0-rc.4" + "@abp/ng.theme.shared" "~4.0.0-rc.5" tslib "^2.0.0" -"@abp/ng.tenant-management@~4.0.0-rc.4": - version "4.0.0-rc.4" - resolved "https://registry.yarnpkg.com/@abp/ng.tenant-management/-/ng.tenant-management-4.0.0-rc.4.tgz#0978a65423b9f56df1fd58eaaa01fd912b2875ab" - integrity sha512-K7BCZMTs/nPoPrDo/yGu3IWZjXktZHcq0qg2pvjVZRqlfbgk0m+mih01H6WC+/tjKYfdb4PtWQJ36mGR17zvuQ== +"@abp/ng.tenant-management@~4.0.0-rc.5": + version "4.0.0-rc.5" + resolved "https://registry.yarnpkg.com/@abp/ng.tenant-management/-/ng.tenant-management-4.0.0-rc.5.tgz#7090459579be7ec800990ed8e843e7a2258536d2" + integrity sha512-axBvi9XroErRTQEVvmkn3bTabH44yAqoFxuTaVjRADuBYO6DG/CREWlfDgeDtMLPQHFxCl705OMh0gU56+AFdw== dependencies: - "@abp/ng.feature-management" "~4.0.0-rc.4" - "@abp/ng.theme.shared" "~4.0.0-rc.4" + "@abp/ng.feature-management" "~4.0.0-rc.5" + "@abp/ng.theme.shared" "~4.0.0-rc.5" tslib "^2.0.0" -"@abp/ng.theme.basic@~4.0.0-rc.4": - version "4.0.0-rc.4" - resolved "https://registry.yarnpkg.com/@abp/ng.theme.basic/-/ng.theme.basic-4.0.0-rc.4.tgz#438d73fed9962dae3d92b0d1f87f36e3601ab720" - integrity sha512-Gunzo6N1YoGZ3crLCYqflmvnuayekyV5Aa63dwCikOTloEBmfQy4FylAcUvncNo841BwmWOk7oDGmxQmrx+5bw== +"@abp/ng.theme.basic@~4.0.0-rc.5": + version "4.0.0-rc.5" + resolved "https://registry.yarnpkg.com/@abp/ng.theme.basic/-/ng.theme.basic-4.0.0-rc.5.tgz#01e3dd7ec3d315004860e438bad7ac4459e66cb5" + integrity sha512-NHrTB5Ck7j5xeVfN3vNiom9HlcwzqF1mQc1bZUc73/wiN8LttrnnMdRuW5vclS6BbJP2p2Ziw/fq8d9hw7GJ1w== dependencies: - "@abp/ng.theme.shared" "~4.0.0-rc.4" + "@abp/ng.theme.shared" "~4.0.0-rc.5" tslib "^2.0.0" -"@abp/ng.theme.shared@~4.0.0-rc.4": - version "4.0.0-rc.4" - resolved "https://registry.yarnpkg.com/@abp/ng.theme.shared/-/ng.theme.shared-4.0.0-rc.4.tgz#6341acbb647c8606c1147cad4387334a42908a2c" - integrity sha512-r3V+PIJC9pCA1OD7xL6I+sJ0AFeF/wcjyUJvn7ZRvevK+eDkHf6AqTXRCNgd+VTfCqtjIpiU5oC7rSOB1gGwPw== +"@abp/ng.theme.shared@~4.0.0-rc.5": + version "4.0.0-rc.5" + resolved "https://registry.yarnpkg.com/@abp/ng.theme.shared/-/ng.theme.shared-4.0.0-rc.5.tgz#0493c98cfd378750b5a5ea8d0ea25da0fceec908" + integrity sha512-TmgKgt+yo6i3jiO05UlpIWt5nvv3pIsVHsLKaj7qXFWvQXKZxSeGiy1/9fhmdwFyV2Lq7c+FuoihDWCuGukDhw== dependencies: - "@abp/ng.core" "~4.0.0-rc.4" + "@abp/ng.core" "~4.0.0-rc.5" "@fortawesome/fontawesome-free" "^5.14.0" "@ng-bootstrap/ng-bootstrap" "^7.0.0" - "@ngx-validate/core" "^0.0.12" + "@ngx-validate/core" "^0.0.13" "@swimlane/ngx-datatable" "^17.1.0" bootstrap "^4.5.0" chart.js "^2.9.3" tslib "^2.0.0" -"@abp/utils@^4.0.0-rc.3": - version "4.0.0-rc.3" - resolved "https://registry.yarnpkg.com/@abp/utils/-/utils-4.0.0-rc.3.tgz#95a67fc0f7c929e0404d33ee2ab8571c30e7f28d" - integrity sha512-6KH7Tddx5vQQ8j3vhDlveAyDw8VSnLlTpEKaNtQmIyJ+yZ025Faa3m+MKb83jXxDE9hPi3v8QGagEOT5TQjNHg== - dependencies: - just-compare "^1.3.0" - "@abp/utils@^4.0.0-rc.4": version "4.0.0-rc.4" resolved "https://registry.yarnpkg.com/@abp/utils/-/utils-4.0.0-rc.4.tgz#99573069c7dac8751e3124e60511a11a169df565" @@ -107,6 +100,13 @@ dependencies: just-compare "^1.3.0" +"@abp/utils@^4.0.0-rc.5": + version "4.0.0-rc.5" + resolved "https://registry.yarnpkg.com/@abp/utils/-/utils-4.0.0-rc.5.tgz#45b55d6bbf69ad2a052bc2635c039d2cc4aac401" + integrity sha512-pRYUSh30VT4702lfnQCswIwLVqNC6ZFsmydXngwZASJEJVKj30XitSlixnKhocvozG/87H0sYVzvwmUyJiHHQw== + dependencies: + just-compare "^1.3.0" + "@angular-builders/jest@^10.0.0": version "10.0.1" resolved "https://registry.yarnpkg.com/@angular-builders/jest/-/jest-10.0.1.tgz#a1a6fb5d11b5d54c051bdaa2012b5f046371560c" @@ -2484,13 +2484,6 @@ enhanced-resolve "5.3.1" webpack-sources "2.0.1" -"@ngx-validate/core@^0.0.12": - version "0.0.12" - resolved "https://registry.yarnpkg.com/@ngx-validate/core/-/core-0.0.12.tgz#4924247c363e0e876e6d63794215914ac9232e8d" - integrity sha512-AhHfb44M2E2Wc37IX9DxAWjgSIZMNrzzpjnPL+VXMNJQj9GqynBjqw0zQtrGYANsAYeFPFhn7UuX6uqrkRvHtQ== - dependencies: - tslib "^1.9.0" - "@ngx-validate/core@^0.0.13": version "0.0.13" resolved "https://registry.yarnpkg.com/@ngx-validate/core/-/core-0.0.13.tgz#954c6d247df8107668f23a39db24ca45c274f3d9"