@mediusinc/mng-commons 0.9.3 → 0.9.7

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (36) hide show
  1. package/README.md +3 -1
  2. package/dev-scripts/version-info.js +7 -2
  3. package/esm2020/lib/components/form/autocomplete/autocomplete.component.mjs +17 -10
  4. package/esm2020/lib/components/form/dropdown/dropdown.component.mjs +18 -11
  5. package/esm2020/lib/components/form/formly/fields/formly-field-autocomplete/formly-field-autocomplete.component.mjs +2 -1
  6. package/esm2020/lib/components/form/formly/fields/formly-field-dropdown/formly-field-dropdown.component.mjs +2 -1
  7. package/esm2020/lib/components/form/formly/fields/formly-field-input/formly-field-input.component.mjs +2 -1
  8. package/esm2020/lib/components/form/formly/fields/formly-field-lookup-dialog/formly-field-lookup-dialog.component.mjs +2 -1
  9. package/esm2020/lib/components/form/formly/fields/formly-field-table-dialog-form/formly-field-table-dialog-form.component.mjs +3 -2
  10. package/esm2020/lib/components/form/formly/fields/formly-field-table-dialog-multiselect/formly-field-table-dialog-multiselect.component.mjs +5 -4
  11. package/esm2020/lib/components/tableview/table/table.component.mjs +117 -52
  12. package/esm2020/lib/descriptors/column.descriptor.mjs +1 -1
  13. package/esm2020/lib/descriptors/field-validation.descriptor.mjs +1 -1
  14. package/esm2020/lib/descriptors/field.descriptor.mjs +10 -1
  15. package/esm2020/lib/models/version.model.mjs +1 -1
  16. package/esm2020/lib/types/type.model.mjs +1 -1
  17. package/esm2020/lib/utils/editor-formly.util.mjs +30 -1
  18. package/fesm2015/mediusinc-mng-commons.mjs +234 -105
  19. package/fesm2015/mediusinc-mng-commons.mjs.map +1 -1
  20. package/fesm2020/mediusinc-mng-commons.mjs +218 -98
  21. package/fesm2020/mediusinc-mng-commons.mjs.map +1 -1
  22. package/lib/components/form/autocomplete/autocomplete.component.d.ts +5 -2
  23. package/lib/components/form/dropdown/dropdown.component.d.ts +5 -2
  24. package/lib/components/tableview/table/table.component.d.ts +6 -3
  25. package/lib/descriptors/column.descriptor.d.ts +2 -2
  26. package/lib/descriptors/field-validation.descriptor.d.ts +3 -3
  27. package/lib/descriptors/field.descriptor.d.ts +4 -1
  28. package/lib/models/version.model.d.ts +1 -1
  29. package/lib/types/type.model.d.ts +3 -0
  30. package/lib/utils/editor-formly.util.d.ts +1 -0
  31. package/package.json +2 -3
  32. package/scss/mng-overrides/_mixins.scss +2 -0
  33. package/scss/{theme/default/_mng-variables.scss → mng-overrides/_variables.scss} +0 -0
  34. package/scss/theme/default/_mng-variables-theme-dark.scss +1 -1
  35. package/scss/theme/default/_mng-variables-theme-light.scss +1 -1
  36. package/version-info.json +5 -5
@@ -4,11 +4,13 @@ import { TranslateService } from '@ngx-translate/core';
4
4
  import { AutoComplete } from 'primeng/autocomplete';
5
5
  import { Observable } from 'rxjs';
6
6
  import { ILookupDataProvider } from '../../../data-providers';
7
+ import { MngFormlyFieldWrapperComponent } from '../formly/wrappers';
7
8
  import * as i0 from "@angular/core";
8
9
  export declare const MNG_AUTOCOMPLETE_VALUE_ACCESSOR: ExistingProvider;
9
10
  export declare class MngAutocompleteComponent implements OnInit, OnDestroy, ControlValueAccessor {
10
11
  private injector;
11
12
  private translate;
13
+ private formlyWrapper;
12
14
  dataProvider?: ILookupDataProvider<any, any>;
13
15
  dataKeyProperty?: string;
14
16
  itemsValuePropertyInit?: string;
@@ -32,12 +34,13 @@ export declare class MngAutocompleteComponent implements OnInit, OnDestroy, Cont
32
34
  itemsValueProperty?: string;
33
35
  autocompleteFormControl: FormControl;
34
36
  suggestions$: Observable<Array<any>>;
35
- constructor(injector: Injector, translate: TranslateService);
37
+ constructor(injector: Injector, translate: TranslateService, formlyWrapper: MngFormlyFieldWrapperComponent);
36
38
  ngOnInit(): void;
37
39
  ngOnDestroy(): void;
38
40
  onSearch(event: any): void;
39
41
  onSelect(value: any): void;
40
42
  onFocus(event: Event): void;
43
+ onBlur($event: any): void;
41
44
  registerOnChange(fn: any): void;
42
45
  registerOnTouched(fn: any): void;
43
46
  setDisabledState(isDisabled: boolean): void;
@@ -48,6 +51,6 @@ export declare class MngAutocompleteComponent implements OnInit, OnDestroy, Cont
48
51
  private i18nGetItemsKeys;
49
52
  private i18nPopulateItems;
50
53
  private setSuggestionsFromItems;
51
- static ɵfac: i0.ɵɵFactoryDeclaration<MngAutocompleteComponent, never>;
54
+ static ɵfac: i0.ɵɵFactoryDeclaration<MngAutocompleteComponent, [null, null, { optional: true; }]>;
52
55
  static ɵcmp: i0.ɵɵComponentDeclaration<MngAutocompleteComponent, "mng-autocomplete", never, { "dataProvider": "dataProvider"; "dataKeyProperty": "dataKeyProperty"; "itemsValuePropertyInit": "itemsValueProperty"; "itemsLabelPropertyInit": "itemsLabelProperty"; "itemsLabelTranslate": "itemsLabelTranslate"; "inlineSearch": "inlineSearch"; "openOnFocus": "openOnFocus"; "multiselect": "multiselect"; "placeholder": "placeholder"; "className": "className"; "dropdownClassName": "dropdownClassName"; }, { "valueChangeEventEmitter": "valueChange"; }, never, never>;
53
56
  }
@@ -4,11 +4,13 @@ import { TranslateService } from '@ngx-translate/core';
4
4
  import { Dropdown } from 'primeng/dropdown';
5
5
  import { Observable } from 'rxjs';
6
6
  import { ILookupDataProvider } from '../../../data-providers';
7
+ import { MngFormlyFieldWrapperComponent } from '../formly/wrappers';
7
8
  import * as i0 from "@angular/core";
8
9
  export declare const MNG_DROPDOWN_VALUE_ACCESSOR: ExistingProvider;
9
10
  export declare class MngDropdownComponent implements OnInit, OnDestroy, ControlValueAccessor {
10
11
  private injector;
11
12
  private translate;
13
+ private formlyWrapper;
12
14
  dataProvider?: ILookupDataProvider<any, any>;
13
15
  dataKeyProperty?: string;
14
16
  itemsLabelPropertyInit?: string;
@@ -32,13 +34,14 @@ export declare class MngDropdownComponent implements OnInit, OnDestroy, ControlV
32
34
  dropdownFormControl: FormControl;
33
35
  items$: Observable<Array<any>>;
34
36
  private itemsSubscription?;
35
- constructor(injector: Injector, translate: TranslateService);
37
+ constructor(injector: Injector, translate: TranslateService, formlyWrapper: MngFormlyFieldWrapperComponent);
36
38
  ngOnInit(): void;
37
39
  ngOnDestroy(): void;
38
40
  registerOnChange(fn: any): void;
39
41
  registerOnTouched(fn: any): void;
40
42
  setDisabledState(isDisabled: boolean): void;
41
43
  writeValue(obj: any): void;
42
- static ɵfac: i0.ɵɵFactoryDeclaration<MngDropdownComponent, never>;
44
+ onBlur($event: any): void;
45
+ static ɵfac: i0.ɵɵFactoryDeclaration<MngDropdownComponent, [null, null, { optional: true; }]>;
43
46
  static ɵcmp: i0.ɵɵComponentDeclaration<MngDropdownComponent, "mng-dropdown", never, { "dataProvider": "dataProvider"; "dataKeyProperty": "dataKeyProperty"; "itemsLabelPropertyInit": "itemsLabelProperty"; "itemsLabelTranslate": "itemsLabelTranslate"; "itemsValuePropertyInit": "itemsValueProperty"; "itemsDisabledProperty": "itemsDisabledProperty"; "multiselect": "multiselect"; "placeholder": "placeholder"; "showClear": "showClear"; "selectFirstItem": "selectFirstItem"; "className": "className"; "dropdownClassName": "dropdownClassName"; }, { "valueChangeEventEmitter": "valueChange"; }, never, never>;
44
47
  }
@@ -48,7 +48,8 @@ export declare class MngTableComponent<T, S> implements OnInit, OnChanges, After
48
48
  captionTemplate?: TemplateRef<any>;
49
49
  columnActionTemplate?: TemplateRef<any>;
50
50
  useDataProvider: boolean;
51
- useQueryParamsInitialized: boolean;
51
+ private useQueryParamsInitializedSubejct;
52
+ useQueryParamsInitialized$: Observable<boolean>;
52
53
  queryResult$?: Observable<MediusQueryResult<T>>;
53
54
  loading$?: Observable<boolean>;
54
55
  dataProviderInfiniteScrollItems: Array<T>;
@@ -58,7 +59,7 @@ export declare class MngTableComponent<T, S> implements OnInit, OnChanges, After
58
59
  offset: number;
59
60
  multiSortMeta: SortMeta[] | null;
60
61
  filterMetadata: {
61
- [s: string]: FilterMetadata | FilterMetadata[];
62
+ [s: string]: FilterMetadata;
62
63
  };
63
64
  infiniteScroll: boolean;
64
65
  scrollHeight: 'flex' | null;
@@ -99,7 +100,9 @@ export declare class MngTableComponent<T, S> implements OnInit, OnChanges, After
99
100
  private loadTableWithDataProvider;
100
101
  private loadTableFromRouteUpdate;
101
102
  private updatePrimeSortAndFilter;
102
- private getDefaultSortMeta;
103
+ private createFilterMeta;
104
+ private createSortMeta;
105
+ private initializeDataLoadingTriggers;
103
106
  static ɵfac: i0.ɵɵFactoryDeclaration<MngTableComponent<any, any>, [null, null, null, null, null, { optional: true; }]>;
104
107
  static ɵcmp: i0.ɵɵComponentDeclaration<MngTableComponent<any, any>, "mng-table", never, { "descriptor": "descriptor"; "items": "items"; "queryResult": "queryResult"; "loading": "loading"; "dataProvider": "dataProvider"; "useQueryParams": "useQueryParams"; "selectionMode": "selectionMode"; "selectionEnabled": "selectionEnabled"; "actions": "actions"; "isColumnClickable": "isColumnClickable"; "viewContainerInit": "viewContainer"; "captionComponent": "captionComponent"; "columnActionComponent": "columnActionComponent"; "columnActionMinWidth": "columnActionMinWidth"; }, { "loadEventEmitter": "tableLoad"; "cellClickEventEmitter": "cellClick"; "selectionChangeEventEmitter": "selectionChange"; "captionCmpInstEventEmitter": "captionComponentInstance"; "columnActionCmpInstEventEmitter": "columnActionComponentInstance"; }, ["templates"], never>;
105
108
  }
@@ -52,7 +52,7 @@ export declare class ColumnDescriptor<T, TT> {
52
52
  get booleanAsIcon(): boolean;
53
53
  get booleanYes(): string | undefined;
54
54
  get booleanNo(): string | undefined;
55
- get objectModelType(): ClassType<any> | undefined;
55
+ get objectModelType(): ClassType<unknown> | undefined;
56
56
  get objectTitleProperty(): string | undefined;
57
57
  get customComponentType(): Type<IColumnValueComponent<TT>> | undefined;
58
58
  get locale(): string | undefined;
@@ -73,7 +73,7 @@ export declare class ColumnDescriptor<T, TT> {
73
73
  withTitle(title: string): this;
74
74
  withJsonPath(path: string): this;
75
75
  withFilter(forceSimple?: boolean): FilterDescriptor<T>;
76
- withFilterLookup(): FilterLookupDescriptor<T>;
76
+ withFilterLookup(): FilterLookupDescriptor<unknown>;
77
77
  withFilterLookupEnum(options?: Array<EnumConstantType>): FilterLookupEnumDescriptor;
78
78
  withSort(isEnabled?: boolean): this;
79
79
  withDefaultSort(asc?: boolean): this;
@@ -1,16 +1,16 @@
1
1
  import { FormlyFieldConfig } from '@ngx-formly/core';
2
2
  import { Observable } from 'rxjs';
3
- import { MngFieldValidationMessage, MngFieldValidator } from '../types';
3
+ import { MngFieldAsyncValidator, MngFieldValidationMessage, MngFieldValidator } from '../types';
4
4
  export declare class FieldValidationDescriptor {
5
5
  private readonly _name;
6
6
  private readonly _validator?;
7
7
  private readonly _message?;
8
8
  private readonly _options?;
9
- constructor(name: string, validator?: MngFieldValidator, message?: string | ((error: any, field: FormlyFieldConfig) => string | Observable<string>), options?: {
9
+ constructor(name: string, validator?: MngFieldValidator | MngFieldAsyncValidator, message?: string | ((error: any, field: FormlyFieldConfig) => string | Observable<string>), options?: {
10
10
  errorPath: string;
11
11
  });
12
12
  get name(): string;
13
- get validator(): MngFieldValidator | undefined;
13
+ get validator(): MngFieldValidator | MngFieldAsyncValidator | undefined;
14
14
  get message(): MngFieldValidationMessage | undefined;
15
15
  get options(): {
16
16
  errorPath: string;
@@ -6,7 +6,7 @@ import { MediusQueryParam, MediusQueryResult } from '../api/models';
6
6
  import { MngFormFieldEvent, MngFormFieldEventData, MngFormFieldEventTypeEnum } from '../components/form/models';
7
7
  import { ILookupDataProvider, ITableDataProvider } from '../data-providers';
8
8
  import { EnumValue } from '../models';
9
- import { ClassType, EnumConstantType, EnumType, MngFieldValidationMessage, MngFieldValidator } from '../types';
9
+ import { ClassType, EnumConstantType, EnumType, MngFieldAsyncValidator, MngFieldValidationMessage, MngFieldValidator } from '../types';
10
10
  import { ActionDescriptor, EditorDescriptor, FieldValidationDescriptor, TableDescriptor, TableviewDescriptor } from './';
11
11
  import { FieldConfig, FieldLookupConfig, ILookupDescriptor } from './interfaces';
12
12
  import { FieldGroupTypeEnum, FieldInputTypeEnum, FieldLookupTypeEnum, FieldManyEditorActionEnum, FieldManyEditorTypeEnum, FieldManyToManyEditorActionEnum, FieldManyToManyEditorTypeEnum, FieldSizeEnum } from './types';
@@ -30,6 +30,7 @@ export declare abstract class AFieldDescriptor<T, ET> extends AGenericFieldDescr
30
30
  protected _getter?: (item: ET) => T;
31
31
  protected _setter?: (item: ET, value: T) => void;
32
32
  protected _validations: Array<FieldValidationDescriptor>;
33
+ protected _asyncValidations: Array<FieldValidationDescriptor>;
33
34
  protected _requiredExpression?: string | ((model: any, formState?: any, field?: FormlyFieldConfig) => boolean) | Observable<boolean>;
34
35
  protected _disabledExpression?: string | ((model: any, formState?: any, field?: FormlyFieldConfig) => boolean) | Observable<boolean>;
35
36
  protected _hiddenExpression?: string | ((model: any, formState?: any, field?: FormlyFieldConfig) => boolean) | Observable<boolean>;
@@ -51,6 +52,7 @@ export declare abstract class AFieldDescriptor<T, ET> extends AGenericFieldDescr
51
52
  get getter(): ((item: ET) => T) | undefined;
52
53
  get setter(): ((item: ET, value: T) => void) | undefined;
53
54
  get validations(): FieldValidationDescriptor[];
55
+ get asyncValidations(): FieldValidationDescriptor[];
54
56
  get requiredExpression(): string | Observable<boolean> | ((model: any, formState?: any, field?: FormlyFieldConfig | undefined) => boolean) | undefined;
55
57
  get disabledExpression(): string | Observable<boolean> | ((model: any, formState?: any, field?: FormlyFieldConfig | undefined) => boolean) | undefined;
56
58
  get hiddenExpression(): string | Observable<boolean> | ((model: any, formState?: any, field?: FormlyFieldConfig | undefined) => boolean) | undefined;
@@ -72,6 +74,7 @@ export declare abstract class AFieldDescriptor<T, ET> extends AGenericFieldDescr
72
74
  withGetter(getter: (item: ET) => T): this;
73
75
  withSetter(setter: (item: ET, value: T) => void): this;
74
76
  withValidation(name: string, validator?: MngFieldValidator, message?: MngFieldValidationMessage): this;
77
+ withAsyncValidation(name: string, asyncValidator?: MngFieldAsyncValidator, message?: MngFieldValidationMessage): this;
75
78
  withClassName(className: string, labelClassName?: string, inputClassName?: string, fieldClassName?: string): this;
76
79
  withSize(size?: FieldSizeEnum): this;
77
80
  nextEvent(type: MngFormFieldEventTypeEnum, cmpType: Type<any>, cmpInstance: any, data?: MngFormFieldEventData<T, ET>): void;
@@ -8,7 +8,7 @@ export interface VersionConfig {
8
8
  }
9
9
  export interface VersionInfo {
10
10
  name: string;
11
- version: string;
11
+ version: string | null;
12
12
  tag: string | null;
13
13
  distance: number | null;
14
14
  hash: string | null;
@@ -16,5 +16,8 @@ export declare type PropertyType = PrimitiveType | Date | EnumType;
16
16
  export declare type MngFieldValidator = (control: AbstractControl, field: FormlyFieldConfig, options?: {
17
17
  [id: string]: any;
18
18
  }) => ValidationErrors | boolean | null;
19
+ export declare type MngFieldAsyncValidator = (control: AbstractControl, field: FormlyFieldConfig, options?: {
20
+ [id: string]: any;
21
+ }) => Observable<ValidationErrors | boolean | null>;
19
22
  export declare type MngFieldValidationMessage = string | ((error: any, field: FormlyFieldConfig) => string | Observable<string>);
20
23
  export declare type MatchModeMapType = [string, string, MediusFilterMatchType, FilterTypeEnum | null];
@@ -7,4 +7,5 @@ export declare class EditorFormlyUtil {
7
7
  static createFormlyFields(descriptor: FieldGroupDescriptor<any>): FormlyFieldConfig[];
8
8
  static createFormlyField(descriptor: AFieldDescriptor<any, any>): FormlyFieldConfig;
9
9
  static addValidationsToFormlyField(config: FormlyFieldConfig, validations: Array<FieldValidationDescriptor>): void;
10
+ static addAsyncValidationsToFormlyField(config: FormlyFieldConfig, asyncValidations: Array<FieldValidationDescriptor>): void;
10
11
  }
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@mediusinc/mng-commons",
3
- "version": "0.9.3",
3
+ "version": "0.9.7",
4
4
  "peerDependencies": {
5
5
  "@angular/common": "^13.2.0",
6
6
  "@angular/core": "^13.2.0",
@@ -34,6 +34,5 @@
34
34
  "default": "./fesm2020/mediusinc-mng-commons.mjs"
35
35
  }
36
36
  },
37
- "sideEffects": false,
38
- "readme": "# Angular Commons\n\nCommons knjižnica za izgradnjo uporabniškega vmesnika na ogrodju Angular.\n\n## Predhodne zahteve\n\n- Node.js (LTS v14) in npm\n- pnpm package manager (https://pnpm.io/), ki optimizira delovanje privzetega npm.\n- Zahtevane skupne odvisnosti (peer dependencies)\n - Angular (moduli `@angular/core`, `@angular/common`, `@angular/forms`, `@angular/router`) verzije `^13.1.0`\n - Ngx Formly (modul `@ngx-formly/core`) verzije `^6.0.0-next.6`\n - Ngx Translate (module `@ngx-translate/core`) verzije `^14.0.0`\n - PrimeNG (modul `primeng`) verzije `^13.0.0`\n\n## Namestitev\n\n```bash\npnpm i @mediusinc/mng-commons\n```\n\n## Lokalizacija (i18n)\n\nModul `ngx-translate` se konfigurira na končnem projektu in je na končnem projektu potrebno določiti način za load prevodov.\nPrimer konfiguracije za multi-module HTTP loader:\n\n- HTTP loader factory:\n```ts\nexport function i18nHttpLoaderFactory(http: HttpClient) {\n return new MultiTranslateHttpLoader(http, [\n {prefix: './assets/i18n/mng/', suffix: '.json'},\n {prefix: './assets/i18n/', suffix: '.json'}\n ]);\n}\n```\n\n- Konfiguracija v `AppModule`:\n```ts\nTranslateModule.forRoot({\n loader: {\n provide: TranslateLoader,\n useFactory: i18nHttpLoaderFactory,\n deps: [HttpClient]\n }\n})\n```\n\n- Definicijo jezikov podamo preko konfiguracije `MngCommonsModule`:\n```ts\nMngCommonsModule.forRoot({\n languages: ['en', 'sl']\n})\n```\n\nKnjižnica pakira tudi osnovne prevode, ki so del modula. Za vključitev na zgornji način je potrebno dodati naslednjo konfiguracijo v `angular.json` med `assets` nastavitve:\n```json\n{\n \"glob\": \"**/*\",\n \"input\": \"./node_modules/@mediusinc/mng-commons/assets/i18n\",\n \"output\": \"/assets/i18n/mng\"\n}\n```\n\n## Tema\n\nOpcijsko se vključi tudi tema MNG Commons, ki ima dve svetlo in temno varianto.\nZa vključitev se v stile na končnem projektu doda import v `style.scss`:\n\n```scss\n# Za svetlo temo:\n@import '~../node_modules/@mediusinc/mng-commons/scss/mng-commons-light';\n\n# Za temno temo:\n@import '~../node_modules/@mediusinc/mng-commons/scss/mng-commons-dark';\n```\n\n~~~~\nPrimarno se uporablja svetla tema!\n~~~~\n\nPri uporabi temne teme je potrebno dodatno nastaviti tudi `colorMode` v modulu:\n```ts\nMngCommonsModule.forRoot({\n app: {\n colorScheme: 'dark'\n }\n});\n```\n\nTema za svoje delovanje uporablja primeNG stile (za posamezne komponente) in PrimeFlex kot pomožno CSS knjižnico.\nDodatno se lahko na končnem projektu lahko uporabi še ikone PrimeIcons.\nGlede ne preference se opcijsko dodajo naslednji importi (**pred importom MNG commons teme!**):\n\n```scss\n@import '~../node_modules/primeng/resources/primeng.min.css';\n@import '~../node_modules/primeflex/primeflex.scss';\n@import '~../node_modules/primeicons/primeicons.css';\n```\n\nPri prvem importu ni potrebno namestiti dodatnih odvisnosti (je že vključeno z primeng), za drugi dve pa je potrebno namestiti:\n```bash\npnpm i primeflex\npnpm i primeicons\n```\n\nDodajanje MNG Commons slik v `assets` na končnem projektu se uredi z konfiguracijo v `assets` segmentu znotraj `angular.json`, kjer se doda:\n\n```json\n{\n \"glob\": \"**/*\",\n \"input\": \"./node_modules/@mediusinc/mng-commons/assets/images\",\n \"output\": \"/assets/images/mng\"\n}\n```\n\n## Custom Formly validatorji\n\nValidatorje lahko dodajamo samostojno na polja, ali pa na skupine polj.\n\nDodajanje se v obeh primerih razlikuje.\n- validator na polje lahko dodamo preko polja, kjer mu podamo ime, funkcijo in sporočilo za validacijo.\n```typescript\nserviceChannelsTableviewDescriptor.addField('cost.code')\n .withValidator('codeValidator', control => control.value, (err, field) => 'error message');\n```\n- validator na skupine lahko dodamo preko\n```typescript\nserviceChannelsTableviewDescriptor.createFieldGroup('Service cost', 'ServiceChannelDto.fieldGroups.serviceCost')\n .withValidator('serviceCostAllOrNoneFieldsRequired', this.serviceCostAllOrNoneFieldsRequired);\n```\n\nKo dodajamo na grupe, moramo registrirati tudi globalno sporočilo za validacijo v `formly-translate.extension.ts`, kjer mora biti ime sporočila za validacijo enako kot napaka, ki jo nastavljamo v samem validatorju.\n```typescript\nexport function formlyConfigProvider(translate: TranslateService): ConfigOption {\n return {\n validationMessages: [\n { name: 'required', message: getRequiredValidationMessage(translate)},\n ...\n // naše sporočilo, ki se imenuje serviceCostAllOrNoneFieldsRequired\n { name: 'serviceCostAllOrNoneFieldsRequired', message: serviceCostAllOrNoneFieldsRequiredValidatorMessage(translate)}\n ],\n extras: { lazyRender: true },\n wrappers: formlyWrappersConfig,\n types: formlyTypesConfig\n };\n}\n\nexport function serviceCostAllOrNoneFieldsRequired(control: AbstractControl): boolean {\n const { code, value, description } = control.value.cost;\n const costControl = control.get('cost');\n\n // tu vmes je še druga koda\n \n // nastavimo enako napako, kot je ime sporočila\n costControl.get('code').setErrors({serviceCostAllOrNoneFieldsRequired: true});\n costControl.get('value').setErrors({serviceCostAllOrNoneFieldsRequired: true});\n costControl.get('description').setErrors({serviceCostAllOrNoneFieldsRequired: true});\n\n return false;\n}\n```\n"
37
+ "sideEffects": false
39
38
  }
@@ -1,3 +1,5 @@
1
+ @import 'variables';
2
+
1
3
  @mixin scaledHeight($val, $scale) {
2
4
  height: $val * $scale;
3
5
  }
@@ -1,4 +1,4 @@
1
- @import 'mng-variables';
1
+ @import '../../mng-overrides/variables';
2
2
 
3
3
  $primaryColor: #0f8bfd;
4
4
  $primaryLightColor: scale-color($primaryColor, $lightness: 60%) !default;
@@ -1,4 +1,4 @@
1
- @import 'mng-variables';
1
+ @import '../../mng-overrides/variables';
2
2
 
3
3
  $primaryColor: #397289 !default;
4
4
  $primaryLightColor: scale-color($primaryColor, $lightness: 60%) !default;
package/version-info.json CHANGED
@@ -1,10 +1,10 @@
1
1
  {
2
2
  "name": "@mediusinc/mng-commons",
3
- "version": "0.9.3",
4
- "tag": "v0.9.3",
3
+ "version": "0.9.7",
4
+ "tag": "v0.9.7",
5
5
  "distance": 0,
6
- "hash": "5fac4f99",
6
+ "hash": "6c43442f",
7
7
  "dirty": false,
8
- "semver": "0.9.3",
9
- "raw": "v0.9.3-5fac4f99"
8
+ "semver": "0.9.7",
9
+ "raw": "v0.9.7-6c43442f"
10
10
  }