ngx-material-entity 18.1.0 → 18.2.1

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 (85) hide show
  1. package/README.md +10 -13
  2. package/components/create-page/create-page.component.d.ts +3 -0
  3. package/components/edit-page/edit-page.component.d.ts +3 -0
  4. package/components/input/file/file-default-input/file-default-input.component.d.ts +1 -1
  5. package/components/input/file/file-image-input/file-image-input.component.d.ts +3 -0
  6. package/components/input/file/file-input/file-input.component.d.ts +8 -2
  7. package/components/input/input.component.d.ts +2 -0
  8. package/components/input/number/number-dropdown-input/number-dropdown-input.component.d.ts +2 -0
  9. package/components/input/relations/references-many-input/references-many-input.component.d.ts +2 -0
  10. package/components/input/string/string-dropdown-input/string-dropdown-input.component.d.ts +2 -0
  11. package/components/input/string/string-password-input/string-password-input.component.d.ts +3 -0
  12. package/components/tooltip/tooltip.component.d.ts +2 -0
  13. package/decorators/array/array-decorator-internal.data.d.ts +3 -2
  14. package/decorators/array/array-decorator.data.d.ts +7 -6
  15. package/decorators/base/property-decorator.data.d.ts +2 -2
  16. package/decorators/file/file-decorator-internal.data.d.ts +3 -2
  17. package/decorators/file/file-decorator.data.d.ts +4 -3
  18. package/esm2022/components/confirm-dialog/confirm-dialog.component.mjs +4 -4
  19. package/esm2022/components/create-page/create-page.component.mjs +18 -8
  20. package/esm2022/components/custom-table/custom-table.component.mjs +4 -4
  21. package/esm2022/components/edit-page/edit-page.component.mjs +18 -8
  22. package/esm2022/components/form/form.component.mjs +5 -5
  23. package/esm2022/components/input/array/array-date-input/array-date-input.component.mjs +5 -5
  24. package/esm2022/components/input/array/array-date-range-input/array-date-range-input.component.mjs +3 -3
  25. package/esm2022/components/input/array/array-date-time-input/array-date-time-input.component.mjs +3 -3
  26. package/esm2022/components/input/array/array-string-autocomplete-chips/array-string-autocomplete-chips.component.mjs +8 -6
  27. package/esm2022/components/input/array/array-string-chips-input/array-string-chips-input.component.mjs +8 -6
  28. package/esm2022/components/input/array/array-table.class.mjs +3 -3
  29. package/esm2022/components/input/base-input.component.mjs +3 -3
  30. package/esm2022/components/input/boolean/boolean-checkbox-input/boolean-checkbox-input.component.mjs +4 -4
  31. package/esm2022/components/input/boolean/boolean-dropdown-input/boolean-dropdown-input.component.mjs +3 -3
  32. package/esm2022/components/input/boolean/boolean-toggle-input/boolean-toggle-input.component.mjs +4 -4
  33. package/esm2022/components/input/custom/custom.component.mjs +3 -3
  34. package/esm2022/components/input/date/date-input/date-input.component.mjs +3 -3
  35. package/esm2022/components/input/date/date-range-input/date-range-input.component.mjs +3 -3
  36. package/esm2022/components/input/date/date-time-input/date-time-input.component.mjs +3 -3
  37. package/esm2022/components/input/file/file-default-input/file-default-input.component.mjs +5 -5
  38. package/esm2022/components/input/file/file-image-input/file-image-input.component.mjs +9 -5
  39. package/esm2022/components/input/file/file-input/file-input.component.mjs +25 -12
  40. package/esm2022/components/input/input.component.mjs +23 -12
  41. package/esm2022/components/input/number/number-dropdown-input/number-dropdown-input.component.mjs +10 -6
  42. package/esm2022/components/input/number/number-input/number-input.component.mjs +3 -3
  43. package/esm2022/components/input/number/number-slider-input/number-slider-input.component.mjs +4 -4
  44. package/esm2022/components/input/relations/references-many-input/references-many-input.component.mjs +10 -6
  45. package/esm2022/components/input/string/string-autocomplete-input/string-autocomplete-input.component.mjs +3 -3
  46. package/esm2022/components/input/string/string-dropdown-input/string-dropdown-input.component.mjs +10 -6
  47. package/esm2022/components/input/string/string-input/string-input.component.mjs +3 -3
  48. package/esm2022/components/input/string/string-password-input/string-password-input.component.mjs +11 -6
  49. package/esm2022/components/input/string/string-textbox-input/string-textbox-input.component.mjs +3 -3
  50. package/esm2022/components/table/create-dialog/create-entity-dialog.component.mjs +9 -6
  51. package/esm2022/components/table/display-column-value/base-display-column-value.component.mjs +3 -3
  52. package/esm2022/components/table/display-column-value/display-column-value.component.mjs +3 -3
  53. package/esm2022/components/table/edit-dialog/edit-data.builder.mjs +1 -1
  54. package/esm2022/components/table/edit-dialog/edit-entity-dialog.component.mjs +9 -7
  55. package/esm2022/components/table/table-data.builder.mjs +3 -1
  56. package/esm2022/components/table/table-data.mjs +1 -1
  57. package/esm2022/components/table/table.component.mjs +5 -11
  58. package/esm2022/components/tooltip/tooltip.component.mjs +9 -5
  59. package/esm2022/decorators/array/array-decorator-internal.data.mjs +5 -3
  60. package/esm2022/decorators/array/array-decorator.data.mjs +1 -1
  61. package/esm2022/decorators/array/array.decorator.mjs +15 -8
  62. package/esm2022/decorators/base/property-decorator.data.mjs +2 -2
  63. package/esm2022/decorators/file/file-decorator-internal.data.mjs +4 -3
  64. package/esm2022/decorators/file/file-decorator.data.mjs +3 -3
  65. package/esm2022/decorators/file/file.decorator.mjs +7 -4
  66. package/esm2022/decorators/number/number.decorator.mjs +7 -4
  67. package/esm2022/decorators/object/object.decorator.mjs +5 -3
  68. package/esm2022/decorators/string/string-decorator-internal.data.mjs +2 -1
  69. package/esm2022/decorators/string/string.decorator.mjs +11 -6
  70. package/esm2022/directives/drag-drop.directive.mjs +3 -3
  71. package/esm2022/directives/dynamic-style-class.directive.mjs +3 -3
  72. package/esm2022/directives/included-in.directive.mjs +3 -3
  73. package/esm2022/directives/number.directive.mjs +3 -3
  74. package/esm2022/directives/password-match.directive.mjs +3 -3
  75. package/esm2022/directives/tooltip.directive.mjs +3 -3
  76. package/esm2022/functions/dropdown-values-to-function.function.mjs +2 -1
  77. package/esm2022/functions/table-column-value-to-sort-value.function.mjs +9 -5
  78. package/esm2022/utilities/date.utilities.mjs +1 -1
  79. package/esm2022/utilities/entity.utilities.mjs +36 -21
  80. package/esm2022/utilities/file.utilities.mjs +7 -4
  81. package/esm2022/utilities/validation.utilities.mjs +41 -21
  82. package/fesm2022/ngx-material-entity.mjs +367 -254
  83. package/fesm2022/ngx-material-entity.mjs.map +1 -1
  84. package/package.json +4 -2
  85. package/utilities/entity.utilities.d.ts +4 -4
package/README.md CHANGED
@@ -65,8 +65,6 @@ NgxMaterialEntity aims to have a fast way to get started with a lot of default o
65
65
 
66
66
  # Requirements
67
67
  This package relies on the [angular material library](https://material.angular.io/guide/getting-started) to render its components.
68
- <br>
69
- It also uses [bootstrap](https://getbootstrap.com/) for responsive design.
70
68
 
71
69
  # Basic Usage
72
70
  ## Create your entity
@@ -136,7 +134,7 @@ It is pretty easy to use the input component inside a for-loop that iterates ove
136
134
  <br>
137
135
  We thought this approach a bit further and build a complete CRUD table component with support for:
138
136
  - omitting values for creating or updating entities
139
- - layouting & responsive design (based on bootstrap)
137
+ - layouting & responsive design
140
138
  - multi select actions
141
139
  - validation
142
140
 
@@ -250,7 +248,7 @@ export abstract class PropertyDecoratorConfig {
250
248
  omitForUpdate?: boolean;
251
249
  /**
252
250
  * Defines the width of the input property when used inside the default create or edit dialog.
253
- * Has 3 bootstrap values for different breakpoints for simple responsive design.
251
+ * Has 3 values for different breakpoints for simple responsive design based on bootstrap (1-12).
254
252
  * The first value sets the columns for the screen size lg, the second for md and the third for sm.
255
253
  *
256
254
  * @default [6, 6, 12]
@@ -264,7 +262,6 @@ export abstract class PropertyDecoratorConfig {
264
262
  position?: Position
265
263
  }
266
264
  ```
267
- For more information regarding the "defaultWidths" see the bootstrap guide about the [Grid system](https://getbootstrap.com/docs/5.0/layout/grid/).
268
265
 
269
266
  ## @string default
270
267
  The "default" display of a string value. Inside a single line mat-input.
@@ -614,11 +611,11 @@ export interface StringChipsArrayDecoratorConfig extends ArrayDecoratorConfig {
614
611
  displayStyle: 'chips',
615
612
 
616
613
  /**
617
- * The class for the <i> tag used to remove an entry from the array.
614
+ * The icon used to remove an entry from the array.
618
615
  *
619
- * @default 'fas fa-circle-minus'
616
+ * @default faCircleMinus
620
617
  */
621
- deleteIcon?: string,
618
+ deleteIcon?: IconDefinition,
622
619
  /**
623
620
  * The minimum required length of the string.
624
621
  */
@@ -644,11 +641,11 @@ export interface AutocompleteStringChipsArrayDecoratorConfig extends ArrayDecora
644
641
  displayStyle: 'chips',
645
642
 
646
643
  /**
647
- * The class for the <i> tag used to remove an entry from the array.
644
+ * The icon used to remove an entry from the array.
648
645
  *
649
- * @default 'fas fa-circle-minus'
646
+ * @default faCircleMinus
650
647
  */
651
- deleteIcon?: string,
648
+ deleteIcon?: IconDefinition,
652
649
  /**
653
650
  * The autocomplete values.
654
651
  */
@@ -885,9 +882,9 @@ abstract class FileDecoratorConfig extends PropertyDecoratorConfig {
885
882
  type!: 'image' | 'other';
886
883
 
887
884
  /**
888
- * The class for the <i> tag used to remove a file from the input.
885
+ * The icon used to remove a file from the input.
889
886
  *
890
- * @default 'fas fa-circle-minus'
887
+ * @default faCircleMinus
891
888
  */
892
889
  deleteIcon?: string;
893
890
 
@@ -2,6 +2,7 @@ import { Location } from '@angular/common';
2
2
  import { HttpClient } from '@angular/common/http';
3
3
  import { ElementRef, EnvironmentInjector, InjectionToken, OnInit, Renderer2 } from '@angular/core';
4
4
  import { MatDialog } from '@angular/material/dialog';
5
+ import { IconDefinition } from '@fortawesome/angular-fontawesome';
5
6
  import { PageCreateDataInternal } from './page-create-data.builder';
6
7
  import { BaseEntityType, EntityClassNewable } from '../../classes/entity.model';
7
8
  import { NgxGlobalDefaultValues } from '../../global-configuration-values';
@@ -64,6 +65,8 @@ export declare class NgxMatEntityCreatePageComponent<EntityType extends BaseEnti
64
65
  private readonly el;
65
66
  private readonly renderer;
66
67
  protected readonly globalConfig: NgxGlobalDefaultValues;
68
+ faChevronLeft: IconDefinition;
69
+ faWarning: IconDefinition;
67
70
  /**
68
71
  * Contains HelperMethods around handling Entities and their property-metadata.
69
72
  */
@@ -3,6 +3,7 @@ import { HttpClient } from '@angular/common/http';
3
3
  import { ElementRef, EnvironmentInjector, InjectionToken, OnInit, Renderer2 } from '@angular/core';
4
4
  import { MatDialog } from '@angular/material/dialog';
5
5
  import { ActivatedRoute } from '@angular/router';
6
+ import { IconDefinition } from '@fortawesome/angular-fontawesome';
6
7
  import { PageEditDataInternal } from './page-edit-data.builder';
7
8
  import { BaseEntityType, EntityClassNewable } from '../../classes/entity.model';
8
9
  import { NgxGlobalDefaultValues } from '../../global-configuration-values';
@@ -67,6 +68,8 @@ export declare class NgxMatEntityEditPageComponent<EntityType extends BaseEntity
67
68
  private readonly el;
68
69
  private readonly renderer;
69
70
  protected readonly globalConfig: NgxGlobalDefaultValues;
71
+ faChevronLeft: IconDefinition;
72
+ faWarning: IconDefinition;
70
73
  /**
71
74
  * Contains HelperMethods around handling Entities and their property-metadata.
72
75
  */
@@ -5,7 +5,7 @@ import { FileData } from '../../../../decorators/file/file-decorator.data';
5
5
  import { NgxMatEntityBaseInputComponent } from '../../base-input.component';
6
6
  import * as i0 from "@angular/core";
7
7
  export declare class FileDefaultInputComponent<EntityType extends BaseEntityType<EntityType>> extends NgxMatEntityBaseInputComponent<EntityType, DecoratorTypes.FILE_DEFAULT, FileData | FileData[]> implements OnInit {
8
- refreshFileData(fileData?: FileData | FileData[]): Promise<void>;
8
+ refreshFileData(fileData?: FileData | FileData[]): void;
9
9
  static ɵfac: i0.ɵɵFactoryDeclaration<FileDefaultInputComponent<any>, never>;
10
10
  static ɵcmp: i0.ɵɵComponentDeclaration<FileDefaultInputComponent<any>, "file-default-input", never, {}, {}, never, never, true, never>;
11
11
  }
@@ -1,5 +1,6 @@
1
1
  import { HttpClient } from '@angular/common/http';
2
2
  import { OnInit } from '@angular/core';
3
+ import { IconDefinition } from '@fortawesome/angular-fontawesome';
3
4
  import { BaseEntityType } from '../../../../classes/entity.model';
4
5
  import { DecoratorTypes } from '../../../../decorators/base/decorator-types.enum';
5
6
  import { FileData } from '../../../../decorators/file/file-decorator.data';
@@ -7,6 +8,8 @@ import { NgxMatEntityBaseInputComponent } from '../../base-input.component';
7
8
  import * as i0 from "@angular/core";
8
9
  export declare class FileImageInputComponent<EntityType extends BaseEntityType<EntityType>> extends NgxMatEntityBaseInputComponent<EntityType, DecoratorTypes.FILE_IMAGE, FileData | FileData[]> implements OnInit {
9
10
  private readonly http;
11
+ faAngleLeft: IconDefinition;
12
+ faAngleRight: IconDefinition;
10
13
  get multiPreviewImages(): string[] | undefined;
11
14
  set multiPreviewImages(value: string[] | undefined);
12
15
  get singlePreviewImage(): string | undefined;
@@ -2,6 +2,7 @@ import { HttpClient } from '@angular/common/http';
2
2
  import { EventEmitter, OnInit } from '@angular/core';
3
3
  import { NgModel } from '@angular/forms';
4
4
  import { MatDialog } from '@angular/material/dialog';
5
+ import { IconDefinition } from '@fortawesome/angular-fontawesome';
5
6
  import { BaseEntityType } from '../../../../classes/entity.model';
6
7
  import { DefaultFileDecoratorConfigInternal, ImageFileDecoratorConfigInternal } from '../../../../decorators/file/file-decorator-internal.data';
7
8
  import { FileData } from '../../../../decorators/file/file-decorator.data';
@@ -10,6 +11,11 @@ import * as i0 from "@angular/core";
10
11
  export declare class FileInputComponent<EntityType extends BaseEntityType<EntityType>> implements OnInit {
11
12
  private readonly dialog;
12
13
  private readonly http;
14
+ faFileArrowUp: IconDefinition;
15
+ faUpload: IconDefinition;
16
+ faPlusCircle: IconDefinition;
17
+ faFileZipper: IconDefinition;
18
+ faDownload: IconDefinition;
13
19
  get filenames(): string[] | undefined;
14
20
  set filenames(value: string[] | undefined);
15
21
  FileUtilities: typeof FileUtilities;
@@ -25,8 +31,8 @@ export declare class FileInputComponent<EntityType extends BaseEntityType<Entity
25
31
  ngOnInit(): void;
26
32
  private initMultiFile;
27
33
  private initSingleFile;
28
- setFileFromInput(event: Event): Promise<void>;
29
- setFile(files: File[]): Promise<void>;
34
+ setFileFromInput(event: Event): void;
35
+ setFile(files: File[]): void;
30
36
  private resetFileInputs;
31
37
  private setMultiFile;
32
38
  private setSingleFile;
@@ -5,6 +5,7 @@ import { NgModel } from '@angular/forms';
5
5
  import { MatDialog } from '@angular/material/dialog';
6
6
  import { MatTableDataSource } from '@angular/material/table';
7
7
  import { Router } from '@angular/router';
8
+ import { IconDefinition } from '@fortawesome/angular-fontawesome';
8
9
  import { BaseEntityType } from '../../classes/entity.model';
9
10
  import { EditArrayItemDialogDataInternal, EntityArrayDecoratorConfigInternal } from '../../decorators/array/array-decorator-internal.data';
10
11
  import { DecoratorTypes } from '../../decorators/base/decorator-types.enum';
@@ -114,6 +115,7 @@ export declare class NgxMatEntityInputComponent<EntityType extends BaseEntityTyp
114
115
  protected readonly defaultGetValidationErrorMessage: (model: NgModel) => string;
115
116
  protected readonly globalConfig: NgxGlobalDefaultValues;
116
117
  private readonly http;
118
+ faSearch: IconDefinition;
117
119
  /**
118
120
  * The entity on which the property exists. Used in conjunction with the "propertyKey"
119
121
  * to determine the property for which the input should be generated.
@@ -1,4 +1,5 @@
1
1
  import { EnvironmentInjector, OnInit } from '@angular/core';
2
+ import { IconDefinition } from '@fortawesome/angular-fontawesome';
2
3
  import { BaseEntityType } from '../../../../classes/entity.model';
3
4
  import { DecoratorTypes } from '../../../../decorators/base/decorator-types.enum';
4
5
  import { DropdownValue } from '../../../../decorators/base/dropdown-value.interface';
@@ -6,6 +7,7 @@ import { NgxMatEntityBaseInputComponent } from '../../base-input.component';
6
7
  import * as i0 from "@angular/core";
7
8
  export declare class NumberDropdownInputComponent<EntityType extends BaseEntityType<EntityType>> extends NgxMatEntityBaseInputComponent<EntityType, DecoratorTypes.NUMBER_DROPDOWN, number> implements OnInit {
8
9
  private readonly injector;
10
+ faSearch: IconDefinition;
9
11
  private dropdownValues;
10
12
  filteredDropdownValues: DropdownValue<number | undefined>[];
11
13
  get currentDropdownValue(): DropdownValue<number | undefined> | undefined;
@@ -1,4 +1,5 @@
1
1
  import { EnvironmentInjector, OnInit } from '@angular/core';
2
+ import { IconDefinition } from '@fortawesome/angular-fontawesome';
2
3
  import { BaseEntityType } from '../../../../classes/entity.model';
3
4
  import { DecoratorTypes } from '../../../../decorators/base/decorator-types.enum';
4
5
  import { DropdownValue } from '../../../../decorators/base/dropdown-value.interface';
@@ -9,6 +10,7 @@ import * as i0 from "@angular/core";
9
10
  export declare class ReferencesManyInputComponent<EntityType extends BaseEntityType<EntityType>> extends NgxMatEntityBaseInputComponent<EntityType, DecoratorTypes.REFERENCES_MANY, string[]> implements OnInit {
10
11
  private readonly injector;
11
12
  private readonly globalConfig;
13
+ faSearch: IconDefinition;
12
14
  private allReferencedEntities;
13
15
  private allDropdownValues;
14
16
  dropdownValues: DropdownValue<string>[];
@@ -1,4 +1,5 @@
1
1
  import { EnvironmentInjector, OnInit } from '@angular/core';
2
+ import { IconDefinition } from '@fortawesome/angular-fontawesome';
2
3
  import { BaseEntityType } from '../../../../classes/entity.model';
3
4
  import { DecoratorTypes } from '../../../../decorators/base/decorator-types.enum';
4
5
  import { DropdownValue } from '../../../../decorators/base/dropdown-value.interface';
@@ -6,6 +7,7 @@ import { NgxMatEntityBaseInputComponent } from '../../base-input.component';
6
7
  import * as i0 from "@angular/core";
7
8
  export declare class StringDropdownInputComponent<EntityType extends BaseEntityType<EntityType>> extends NgxMatEntityBaseInputComponent<EntityType, DecoratorTypes.STRING_DROPDOWN, string> implements OnInit {
8
9
  private readonly injector;
10
+ faSearch: IconDefinition;
9
11
  private dropdownValues;
10
12
  filteredDropdownValues: DropdownValue<string | undefined>[];
11
13
  get currentDropdownValue(): DropdownValue<string | undefined> | undefined;
@@ -1,4 +1,5 @@
1
1
  import { OnInit } from '@angular/core';
2
+ import { IconDefinition } from '@fortawesome/angular-fontawesome';
2
3
  import { BaseEntityType } from '../../../../classes/entity.model';
3
4
  import { DecoratorTypes } from '../../../../decorators/base/decorator-types.enum';
4
5
  import { NgxMatEntityBaseInputComponent } from '../../base-input.component';
@@ -9,6 +10,8 @@ export declare enum PasswordStrength {
9
10
  STRONG = "strong"
10
11
  }
11
12
  export declare class StringPasswordInputComponent<EntityType extends BaseEntityType<EntityType>> extends NgxMatEntityBaseInputComponent<EntityType, DecoratorTypes.STRING_PASSWORD, string> implements OnInit {
13
+ faEye: IconDefinition;
14
+ faEyeSlash: IconDefinition;
12
15
  hide: boolean;
13
16
  hideConfirm: boolean;
14
17
  confirmRequired: boolean;
@@ -1,8 +1,10 @@
1
+ import { IconDefinition } from '@fortawesome/angular-fontawesome';
1
2
  import * as i0 from "@angular/core";
2
3
  /**
3
4
  * A component that displays an info-symbol and a tooltip when it is hovered/clicked.
4
5
  */
5
6
  export declare class TooltipComponent {
7
+ faInfo: IconDefinition;
6
8
  /**
7
9
  * What to display inside the tooltip.
8
10
  */
@@ -1,4 +1,5 @@
1
1
  import { DateFilterFn } from '@angular/material/datepicker';
2
+ import { IconDefinition } from '@fortawesome/angular-fontawesome';
2
3
  import { AutocompleteStringChipsArrayDecoratorConfig, DateArrayDecoratorConfig, DateRangeArrayDecoratorConfig, DateTimeArrayDecoratorConfig, EditArrayItemDialogData, EntityArrayDecoratorConfig, StringChipsArrayDecoratorConfig } from './array-decorator.data';
3
4
  import { BaseEntityType, EntityClassNewable } from '../../classes/entity.model';
4
5
  import { ConfirmDialogData } from '../../components/confirm-dialog/confirm-dialog-data';
@@ -104,7 +105,7 @@ export declare class StringChipsArrayDecoratorConfigInternal extends PropertyDec
104
105
  itemType: DecoratorTypes.STRING;
105
106
  allowDuplicates: boolean;
106
107
  duplicatesErrorDialog: ConfirmDialogData;
107
- deleteIcon: string;
108
+ deleteIcon: IconDefinition;
108
109
  minLength?: number;
109
110
  maxLength?: number;
110
111
  regex?: RegExp;
@@ -118,7 +119,7 @@ export declare class AutocompleteStringChipsArrayDecoratorConfigInternal extends
118
119
  itemType: DecoratorTypes.STRING_AUTOCOMPLETE;
119
120
  allowDuplicates: boolean;
120
121
  duplicatesErrorDialog: ConfirmDialogData;
121
- deleteIcon: string;
122
+ deleteIcon: IconDefinition;
122
123
  minLength?: number;
123
124
  maxLength?: number;
124
125
  regex?: RegExp;
@@ -1,4 +1,5 @@
1
1
  import { DateFilterFn } from '@angular/material/datepicker';
2
+ import { IconDefinition } from '@fortawesome/angular-fontawesome';
2
3
  import { BaseEntityType, EntityClassNewable } from '../../classes/entity.model';
3
4
  import { ConfirmDialogData } from '../../components/confirm-dialog/confirm-dialog-data';
4
5
  import { CreateData, DisplayColumn, DynamicStyleClasses } from '../../components/table/table-data';
@@ -199,10 +200,10 @@ export interface DateRangeArrayDecoratorConfig extends ArrayTableDecoratorConfig
199
200
  export interface StringChipsArrayDecoratorConfig extends ArrayDecoratorConfig<string[]> {
200
201
  itemType: DecoratorTypes.STRING;
201
202
  /**
202
- * The class for the <i> tag used to remove an entry from the array.
203
- * @default 'fas fa-circle-minus'
203
+ * The font awesome icon used to remove an entry from the array.
204
+ * @default faCircleMinus
204
205
  */
205
- deleteIcon?: string;
206
+ deleteIcon?: IconDefinition;
206
207
  /**
207
208
  * The minimum required length of the string.
208
209
  */
@@ -222,10 +223,10 @@ export interface StringChipsArrayDecoratorConfig extends ArrayDecoratorConfig<st
222
223
  export interface AutocompleteStringChipsArrayDecoratorConfig extends ArrayDecoratorConfig<string[]> {
223
224
  itemType: DecoratorTypes.STRING_AUTOCOMPLETE;
224
225
  /**
225
- * The class for the <i> tag used to remove an entry from the array.
226
- * @default 'fas fa-circle-minus'
226
+ * The icon used to remove an entry from the array.
227
+ * @default faCircleMinus
227
228
  */
228
- deleteIcon?: string;
229
+ deleteIcon?: IconDefinition;
229
230
  /**
230
231
  * The autocomplete values.
231
232
  */
@@ -32,7 +32,7 @@ export declare abstract class PropertyDecoratorConfig<ValueType> {
32
32
  omitForUpdate?: boolean;
33
33
  /**
34
34
  * Defines the width of the input property when used inside the default create or edit dialog.
35
- * Has 3 bootstrap values for different breakpoints for simple responsive design.
35
+ * Has 3 values for different breakpoints for simple responsive design based on bootstrap (1-12).
36
36
  * The first value sets the columns for the screen size lg, the second for md and the third for sm.
37
37
  * @default [6, 6, 12]
38
38
  */
@@ -74,7 +74,7 @@ export interface Position {
74
74
  */
75
75
  tabName?: string;
76
76
  /**
77
- * Specifies the (bootstrap)-row in which this property is displayed.
77
+ * Specifies the row in which this property is displayed.
78
78
  * Ordering is ascending.
79
79
  * @default -1 (sets this property after the last row)
80
80
  */
@@ -1,3 +1,4 @@
1
+ import { IconDefinition } from '@fortawesome/angular-fontawesome';
1
2
  import { DefaultFileDecoratorConfig, FileData, ImageFileDecoratorConfig } from './file-decorator.data';
2
3
  import { ConfirmDialogData } from '../../components/confirm-dialog/confirm-dialog-data';
3
4
  import { PropertyDecoratorConfigInternal } from '../base/property-decorator-internal.data';
@@ -63,7 +64,7 @@ export declare class DefaultFileDecoratorConfigInternal extends PropertyDecorato
63
64
  preview: false;
64
65
  multiple: boolean;
65
66
  allowedMimeTypes: string[];
66
- deleteIcon: string;
67
+ deleteIcon: IconDefinition;
67
68
  maxSize: number;
68
69
  maxSizeTotal: number;
69
70
  mimeTypeErrorDialog: ConfirmDialogData;
@@ -81,7 +82,7 @@ export declare class ImageFileDecoratorConfigInternal extends PropertyDecoratorC
81
82
  multiple: boolean;
82
83
  preview: boolean;
83
84
  previewPlaceholderUrl?: string;
84
- deleteIcon: string;
85
+ deleteIcon: IconDefinition;
85
86
  maxSize: number;
86
87
  maxSizeTotal: number;
87
88
  mimeTypeErrorDialog: ConfirmDialogData;
@@ -1,3 +1,4 @@
1
+ import { IconDefinition } from '@fortawesome/angular-fontawesome';
1
2
  import { FileDataWithFile, FileDataWithUrl } from './file-decorator-internal.data';
2
3
  import { ConfirmDialogData } from '../../components/confirm-dialog/confirm-dialog-data';
3
4
  import { PropertyDecoratorConfig } from '../base/property-decorator.data';
@@ -18,10 +19,10 @@ declare abstract class FileDecoratorConfig extends PropertyDecoratorConfig<FileD
18
19
  */
19
20
  type: 'image' | 'other';
20
21
  /**
21
- * The class for the <i> tag used to remove a file from the input.
22
- * @default 'fas fa-circle-minus'
22
+ * The icon used to remove a file from the input.
23
+ * @default faCircleMinus
23
24
  */
24
- deleteIcon?: string;
25
+ deleteIcon?: IconDefinition;
25
26
  /**
26
27
  * Whether or not the file should be displayed inside a preview.
27
28
  * @default true
@@ -49,10 +49,10 @@ export class NgxMatEntityConfirmDialogComponent {
49
49
  cancel() {
50
50
  this.dialogRef.close(false);
51
51
  }
52
- static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.0.0", ngImport: i0, type: NgxMatEntityConfirmDialogComponent, deps: [{ token: i1.MatDialogRef }, { token: MAT_DIALOG_DATA }, { token: NGX_COMPLETE_GLOBAL_DEFAULT_VALUES }], target: i0.ɵɵFactoryTarget.Component });
53
- static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "18.0.0", type: NgxMatEntityConfirmDialogComponent, isStandalone: true, selector: "ngx-mat-entity-confirm-dialog", ngImport: i0, template: "@if (data.title) {\n <h2 mat-dialog-title>{{data.title}}</h2>\n}\n\n<mat-dialog-content>\n @for (paragraph of data.text; track $index) {\n <p>{{paragraph}}</p>\n }\n @if (data.requireConfirmation) {\n <div class=\"checkbox-wrapper\">\n <mat-checkbox name=\"confirm\" [(ngModel)]=\"confirm\">\n {{data.confirmationText}}\n </mat-checkbox>\n </div>\n }\n</mat-dialog-content>\n\n<mat-dialog-actions>\n @if (data.type === 'delete') {\n <button type=\"button\" mat-raised-button color=\"warn\" class=\"confirm-button\" [disabled]=\"data.requireConfirmation && !confirm\" (click)=\"confirmAction()\">\n {{data.confirmButtonLabel}}\n </button>\n }\n @if (data.type !== 'delete') {\n <button type=\"button\" mat-raised-button class=\"confirm-button\" [disabled]=\"data.requireConfirmation && !confirm\" (click)=\"confirmAction()\">\n {{data.confirmButtonLabel}}\n </button>\n }\n @if (data.type !== 'info-only') {\n <button type=\"button\" mat-raised-button class=\"cancel-button\" (click)=\"cancel()\">\n {{data.cancelButtonLabel}}\n </button>\n }\n</mat-dialog-actions>", styles: [".checkbox-wrapper{min-height:50px;display:flex}.checkbox-wrapper>mat-checkbox{align-self:center}\n", "::ng-deep .mdc-dialog .mdc-dialog__content{padding:6px 20px!important}mat-dialog-actions{justify-content:space-between;align-items:center;padding-left:20px;padding-right:20px}.mat-dialog-title{padding:12px 20px;display:flex;justify-content:space-between;align-items:center}.mat-dialog-title div{font-size:var(--mdc-dialog-subhead-size, 14px);font-weight:var(--mdc-dialog-subhead-weight, 500)}\n"], dependencies: [{ kind: "ngmodule", type: CommonModule }, { kind: "ngmodule", type: MatDialogModule }, { kind: "directive", type: i1.MatDialogTitle, selector: "[mat-dialog-title], [matDialogTitle]", inputs: ["id"], exportAs: ["matDialogTitle"] }, { kind: "directive", type: i1.MatDialogActions, selector: "[mat-dialog-actions], mat-dialog-actions, [matDialogActions]", inputs: ["align"] }, { kind: "directive", type: i1.MatDialogContent, selector: "[mat-dialog-content], mat-dialog-content, [matDialogContent]" }, { kind: "ngmodule", type: FormsModule }, { kind: "directive", type: i2.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i2.NgModel, selector: "[ngModel]:not([formControlName]):not([formControl])", inputs: ["name", "disabled", "ngModel", "ngModelOptions"], outputs: ["ngModelChange"], exportAs: ["ngModel"] }, { kind: "ngmodule", type: MatCheckboxModule }, { kind: "component", type: i3.MatCheckbox, selector: "mat-checkbox", inputs: ["aria-label", "aria-labelledby", "aria-describedby", "id", "required", "labelPosition", "name", "value", "disableRipple", "tabIndex", "color", "checked", "disabled", "indeterminate"], outputs: ["change", "indeterminateChange"], exportAs: ["matCheckbox"] }, { kind: "ngmodule", type: MatButtonModule }, { kind: "component", type: i4.MatButton, selector: " button[mat-button], button[mat-raised-button], button[mat-flat-button], button[mat-stroked-button] ", exportAs: ["matButton"] }] });
52
+ static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.0.7", ngImport: i0, type: NgxMatEntityConfirmDialogComponent, deps: [{ token: i1.MatDialogRef }, { token: MAT_DIALOG_DATA }, { token: NGX_COMPLETE_GLOBAL_DEFAULT_VALUES }], target: i0.ɵɵFactoryTarget.Component });
53
+ static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "18.0.7", type: NgxMatEntityConfirmDialogComponent, isStandalone: true, selector: "ngx-mat-entity-confirm-dialog", ngImport: i0, template: "@if (data.title) {\n <h2 mat-dialog-title>{{data.title}}</h2>\n}\n\n<mat-dialog-content>\n @for (paragraph of data.text; track $index) {\n <p>{{paragraph}}</p>\n }\n @if (data.requireConfirmation) {\n <div class=\"checkbox-wrapper\">\n <mat-checkbox name=\"confirm\" [(ngModel)]=\"confirm\">\n {{data.confirmationText}}\n </mat-checkbox>\n </div>\n }\n</mat-dialog-content>\n\n<mat-dialog-actions>\n @if (data.type === 'delete') {\n <button type=\"button\" mat-raised-button color=\"warn\" class=\"confirm-button\" [disabled]=\"data.requireConfirmation && !confirm\" (click)=\"confirmAction()\">\n {{data.confirmButtonLabel}}\n </button>\n }\n @if (data.type !== 'delete') {\n <button type=\"button\" mat-raised-button class=\"confirm-button\" [disabled]=\"data.requireConfirmation && !confirm\" (click)=\"confirmAction()\">\n {{data.confirmButtonLabel}}\n </button>\n }\n @if (data.type !== 'info-only') {\n <button type=\"button\" mat-raised-button class=\"cancel-button\" (click)=\"cancel()\">\n {{data.cancelButtonLabel}}\n </button>\n }\n</mat-dialog-actions>", styles: [".checkbox-wrapper{min-height:50px;display:flex}.checkbox-wrapper>mat-checkbox{align-self:center}\n", "::ng-deep .mdc-dialog .mdc-dialog__content{padding:6px 20px!important}mat-dialog-actions{justify-content:space-between;align-items:center;padding-left:20px;padding-right:20px}.mat-dialog-title{padding:12px 20px;display:flex;justify-content:space-between;align-items:center}.mat-dialog-title div{font-size:var(--mdc-dialog-subhead-size, 14px);font-weight:var(--mdc-dialog-subhead-weight, 500)}\n"], dependencies: [{ kind: "ngmodule", type: CommonModule }, { kind: "ngmodule", type: MatDialogModule }, { kind: "directive", type: i1.MatDialogTitle, selector: "[mat-dialog-title], [matDialogTitle]", inputs: ["id"], exportAs: ["matDialogTitle"] }, { kind: "directive", type: i1.MatDialogActions, selector: "[mat-dialog-actions], mat-dialog-actions, [matDialogActions]", inputs: ["align"] }, { kind: "directive", type: i1.MatDialogContent, selector: "[mat-dialog-content], mat-dialog-content, [matDialogContent]" }, { kind: "ngmodule", type: FormsModule }, { kind: "directive", type: i2.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i2.NgModel, selector: "[ngModel]:not([formControlName]):not([formControl])", inputs: ["name", "disabled", "ngModel", "ngModelOptions"], outputs: ["ngModelChange"], exportAs: ["ngModel"] }, { kind: "ngmodule", type: MatCheckboxModule }, { kind: "component", type: i3.MatCheckbox, selector: "mat-checkbox", inputs: ["aria-label", "aria-labelledby", "aria-describedby", "id", "required", "labelPosition", "name", "value", "disableRipple", "tabIndex", "color", "disabledInteractive", "checked", "disabled", "indeterminate"], outputs: ["change", "indeterminateChange"], exportAs: ["matCheckbox"] }, { kind: "ngmodule", type: MatButtonModule }, { kind: "component", type: i4.MatButton, selector: " button[mat-button], button[mat-raised-button], button[mat-flat-button], button[mat-stroked-button] ", exportAs: ["matButton"] }] });
54
54
  }
55
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.0.0", ngImport: i0, type: NgxMatEntityConfirmDialogComponent, decorators: [{
55
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.0.7", ngImport: i0, type: NgxMatEntityConfirmDialogComponent, decorators: [{
56
56
  type: Component,
57
57
  args: [{ selector: 'ngx-mat-entity-confirm-dialog', standalone: true, imports: [
58
58
  CommonModule,
@@ -68,4 +68,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.0.0", ngImpor
68
68
  type: Inject,
69
69
  args: [NGX_COMPLETE_GLOBAL_DEFAULT_VALUES]
70
70
  }] }] });
71
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29uZmlybS1kaWFsb2cuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvbmd4LW1hdGVyaWFsLWVudGl0eS9zcmMvY29tcG9uZW50cy9jb25maXJtLWRpYWxvZy9jb25maXJtLWRpYWxvZy5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9uZ3gtbWF0ZXJpYWwtZW50aXR5L3NyYy9jb21wb25lbnRzL2NvbmZpcm0tZGlhbG9nL2NvbmZpcm0tZGlhbG9nLmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxZQUFZLEVBQUUsTUFBTSxpQkFBaUIsQ0FBQztBQUMvQyxPQUFPLEVBQUUsU0FBUyxFQUFFLE1BQU0sRUFBVSxNQUFNLGVBQWUsQ0FBQztBQUMxRCxPQUFPLEVBQUUsV0FBVyxFQUFFLE1BQU0sZ0JBQWdCLENBQUM7QUFDN0MsT0FBTyxFQUFFLGVBQWUsRUFBRSxNQUFNLDBCQUEwQixDQUFDO0FBQzNELE9BQU8sRUFBRSxpQkFBaUIsRUFBRSxNQUFNLDRCQUE0QixDQUFDO0FBQy9ELE9BQU8sRUFBRSxlQUFlLEVBQUUsZUFBZSxFQUFFLFlBQVksRUFBRSxNQUFNLDBCQUEwQixDQUFDO0FBRzFGLE9BQU8sRUFBRSx3QkFBd0IsRUFBNkIsTUFBTSwrQkFBK0IsQ0FBQztBQUNwRyxPQUFPLEVBQUUsa0NBQWtDLEVBQTBCLE1BQU0sbUNBQW1DLENBQUM7Ozs7OztBQUUvRzs7OztHQUlHO0FBY0gsTUFBTSxPQUFPLGtDQUFrQztJQWF0QjtJQUVBO0lBRUU7SUFmdkI7O09BRUc7SUFDSCxPQUFPLEdBQVksS0FBSyxDQUFDO0lBRXpCOztPQUVHO0lBQ0gsSUFBSSxDQUE2QjtJQUVqQyxZQUNxQixTQUEyRCxFQUUzRCxTQUE0QixFQUUxQixZQUFvQztRQUp0QyxjQUFTLEdBQVQsU0FBUyxDQUFrRDtRQUUzRCxjQUFTLEdBQVQsU0FBUyxDQUFtQjtRQUUxQixpQkFBWSxHQUFaLFlBQVksQ0FBd0I7SUFDeEQsQ0FBQztJQUVKLFFBQVE7UUFDSixJQUFJLENBQUMsSUFBSSxHQUFHLElBQUksd0JBQXdCLENBQUMsSUFBSSxDQUFDLFlBQVksRUFBRSxJQUFJLENBQUMsU0FBUyxDQUFDLENBQUMsU0FBUyxFQUFFLENBQUM7UUFDeEYsSUFBSSxDQUFDLFNBQVMsQ0FBQyxZQUFZLEdBQUcsSUFBSSxDQUFDO0lBQ3ZDLENBQUM7SUFFRDs7T0FFRztJQUNILGFBQWE7UUFDVCxJQUFJLENBQUMsU0FBUyxDQUFDLEtBQUssQ0FBQyxJQUFJLENBQUMsQ0FBQztJQUMvQixDQUFDO0lBRUQ7O09BRUc7SUFDSCxNQUFNO1FBQ0YsSUFBSSxDQUFDLFNBQVMsQ0FBQyxLQUFLLENBQUMsS0FBSyxDQUFDLENBQUM7SUFDaEMsQ0FBQzt1R0FyQ1Esa0NBQWtDLDhDQWMvQixlQUFlLGFBRWYsa0NBQWtDOzJGQWhCckMsa0NBQWtDLHlGQzdCL0MsZ3RDQWlDcUIseWlCRFhiLFlBQVksOEJBQ1osZUFBZSx5YkFDZixXQUFXLDhWQUNYLGlCQUFpQiw2V0FDakIsZUFBZTs7MkZBR1Ysa0NBQWtDO2tCQWI5QyxTQUFTOytCQUNJLCtCQUErQixjQUc3QixJQUFJLFdBQ1A7d0JBQ0wsWUFBWTt3QkFDWixlQUFlO3dCQUNmLFdBQVc7d0JBQ1gsaUJBQWlCO3dCQUNqQixlQUFlO3FCQUNsQjs7MEJBZ0JJLE1BQU07MkJBQUMsZUFBZTs7MEJBRXRCLE1BQU07MkJBQUMsa0NBQWtDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQ29tbW9uTW9kdWxlIH0gZnJvbSAnQGFuZ3VsYXIvY29tbW9uJztcbmltcG9ydCB7IENvbXBvbmVudCwgSW5qZWN0LCBPbkluaXQgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IEZvcm1zTW9kdWxlIH0gZnJvbSAnQGFuZ3VsYXIvZm9ybXMnO1xuaW1wb3J0IHsgTWF0QnV0dG9uTW9kdWxlIH0gZnJvbSAnQGFuZ3VsYXIvbWF0ZXJpYWwvYnV0dG9uJztcbmltcG9ydCB7IE1hdENoZWNrYm94TW9kdWxlIH0gZnJvbSAnQGFuZ3VsYXIvbWF0ZXJpYWwvY2hlY2tib3gnO1xuaW1wb3J0IHsgTUFUX0RJQUxPR19EQVRBLCBNYXREaWFsb2dNb2R1bGUsIE1hdERpYWxvZ1JlZiB9IGZyb20gJ0Bhbmd1bGFyL21hdGVyaWFsL2RpYWxvZyc7XG5cbmltcG9ydCB7IENvbmZpcm1EaWFsb2dEYXRhIH0gZnJvbSAnLi9jb25maXJtLWRpYWxvZy1kYXRhJztcbmltcG9ydCB7IENvbmZpcm1EaWFsb2dEYXRhQnVpbGRlciwgQ29uZmlybURpYWxvZ0RhdGFJbnRlcm5hbCB9IGZyb20gJy4vY29uZmlybS1kaWFsb2ctZGF0YS5idWlsZGVyJztcbmltcG9ydCB7IE5HWF9DT01QTEVURV9HTE9CQUxfREVGQVVMVF9WQUxVRVMsIE5neEdsb2JhbERlZmF1bHRWYWx1ZXMgfSBmcm9tICcuLi8uLi9nbG9iYWwtY29uZmlndXJhdGlvbi12YWx1ZXMnO1xuXG4vKipcbiAqIFRoZSBEaWFsb2cgdXNlZCB3aGVuZXZlciBjb25maXJtYXRpb24gYnkgdGhlIHVzZXIgaXMgcmVxdWlyZWQgKGUuZy4gV2hlbiB0aGUgdXNlciB0cmllcyB0byBkZWxldGUgYW4gZW50aXR5KS5cbiAqXG4gKiBDYW4gYmUgY3VzdG9taXplZCB3aXRoIHRoZSBNQVRfRElBTE9HX0RBVEEgXCJpbnB1dERhdGFcIi4gQ3VzdG9taXphdGlvbiBvcHRpb25zIGFyZSBkZWZpbmVkIGluIFwiQ29uZmlybURpYWxvZ0RhdGFcIi5cbiAqL1xuQENvbXBvbmVudCh7XG4gICAgc2VsZWN0b3I6ICduZ3gtbWF0LWVudGl0eS1jb25maXJtLWRpYWxvZycsXG4gICAgdGVtcGxhdGVVcmw6ICcuL2NvbmZpcm0tZGlhbG9nLmNvbXBvbmVudC5odG1sJyxcbiAgICBzdHlsZVVybHM6IFsnLi9jb25maXJtLWRpYWxvZy5jb21wb25lbnQuc2NzcycsICcuLi8uLi9zY3NzL2RpYWxvZy1zdHlsZXMuc2NzcyddLFxuICAgIHN0YW5kYWxvbmU6IHRydWUsXG4gICAgaW1wb3J0czogW1xuICAgICAgICBDb21tb25Nb2R1bGUsXG4gICAgICAgIE1hdERpYWxvZ01vZHVsZSxcbiAgICAgICAgRm9ybXNNb2R1bGUsXG4gICAgICAgIE1hdENoZWNrYm94TW9kdWxlLFxuICAgICAgICBNYXRCdXR0b25Nb2R1bGVcbiAgICBdXG59KVxuZXhwb3J0IGNsYXNzIE5neE1hdEVudGl0eUNvbmZpcm1EaWFsb2dDb21wb25lbnQgaW1wbGVtZW50cyBPbkluaXQge1xuXG4gICAgLyoqXG4gICAgICogV2hldGhlciBvciBub3QgdGhlIHVzZXIgbmVlZHMgdG8gdGljayBhIGNoZWNrYm94IHRvIGVuYWJsZSB0aGUgY29uZmlybSBidXR0b24uXG4gICAgICovXG4gICAgY29uZmlybTogYm9vbGVhbiA9IGZhbHNlO1xuXG4gICAgLyoqXG4gICAgICogVGhlIGNvbmZpZ3VyYXRpb24gZGF0YSBvZiB0aGUgZGlhbG9nLlxuICAgICAqL1xuICAgIGRhdGEhOiBDb25maXJtRGlhbG9nRGF0YUludGVybmFsO1xuXG4gICAgY29uc3RydWN0b3IoXG4gICAgICAgIHByaXZhdGUgcmVhZG9ubHkgZGlhbG9nUmVmOiBNYXREaWFsb2dSZWY8Tmd4TWF0RW50aXR5Q29uZmlybURpYWxvZ0NvbXBvbmVudD4sXG4gICAgICAgIEBJbmplY3QoTUFUX0RJQUxPR19EQVRBKVxuICAgICAgICBwcml2YXRlIHJlYWRvbmx5IGlucHV0RGF0YTogQ29uZmlybURpYWxvZ0RhdGEsXG4gICAgICAgIEBJbmplY3QoTkdYX0NPTVBMRVRFX0dMT0JBTF9ERUZBVUxUX1ZBTFVFUylcbiAgICAgICAgcHJvdGVjdGVkIHJlYWRvbmx5IGdsb2JhbENvbmZpZzogTmd4R2xvYmFsRGVmYXVsdFZhbHVlc1xuICAgICkge31cblxuICAgIG5nT25Jbml0KCk6IHZvaWQge1xuICAgICAgICB0aGlzLmRhdGEgPSBuZXcgQ29uZmlybURpYWxvZ0RhdGFCdWlsZGVyKHRoaXMuZ2xvYmFsQ29uZmlnLCB0aGlzLmlucHV0RGF0YSkuZ2V0UmVzdWx0KCk7XG4gICAgICAgIHRoaXMuZGlhbG9nUmVmLmRpc2FibGVDbG9zZSA9IHRydWU7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogQ2xvc2VzIHRoZSBkaWFsb2cgd2l0aCB0cnVlIHRvIHNpZ25hbCB0aGF0IHRoZSBhY3Rpb24gc2hvdWxkIGJlIHJ1bi5cbiAgICAgKi9cbiAgICBjb25maXJtQWN0aW9uKCk6IHZvaWQge1xuICAgICAgICB0aGlzLmRpYWxvZ1JlZi5jbG9zZSh0cnVlKTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBDbG9zZXMgdGhlIGRpYWxvZy5cbiAgICAgKi9cbiAgICBjYW5jZWwoKTogdm9pZCB7XG4gICAgICAgIHRoaXMuZGlhbG9nUmVmLmNsb3NlKGZhbHNlKTtcbiAgICB9XG59IiwiQGlmIChkYXRhLnRpdGxlKSB7XG4gICAgPGgyIG1hdC1kaWFsb2ctdGl0bGU+e3tkYXRhLnRpdGxlfX08L2gyPlxufVxuXG48bWF0LWRpYWxvZy1jb250ZW50PlxuICAgIEBmb3IgKHBhcmFncmFwaCBvZiBkYXRhLnRleHQ7IHRyYWNrICRpbmRleCkge1xuICAgICAgICA8cD57e3BhcmFncmFwaH19PC9wPlxuICAgIH1cbiAgICBAaWYgKGRhdGEucmVxdWlyZUNvbmZpcm1hdGlvbikge1xuICAgICAgICA8ZGl2IGNsYXNzPVwiY2hlY2tib3gtd3JhcHBlclwiPlxuICAgICAgICAgICAgPG1hdC1jaGVja2JveCBuYW1lPVwiY29uZmlybVwiIFsobmdNb2RlbCldPVwiY29uZmlybVwiPlxuICAgICAgICAgICAgICAgIHt7ZGF0YS5jb25maXJtYXRpb25UZXh0fX1cbiAgICAgICAgICAgIDwvbWF0LWNoZWNrYm94PlxuICAgICAgICA8L2Rpdj5cbiAgICB9XG48L21hdC1kaWFsb2ctY29udGVudD5cblxuPG1hdC1kaWFsb2ctYWN0aW9ucz5cbiAgICBAaWYgKGRhdGEudHlwZSA9PT0gJ2RlbGV0ZScpIHtcbiAgICAgICAgPGJ1dHRvbiB0eXBlPVwiYnV0dG9uXCIgbWF0LXJhaXNlZC1idXR0b24gY29sb3I9XCJ3YXJuXCIgY2xhc3M9XCJjb25maXJtLWJ1dHRvblwiIFtkaXNhYmxlZF09XCJkYXRhLnJlcXVpcmVDb25maXJtYXRpb24gJiYgIWNvbmZpcm1cIiAoY2xpY2spPVwiY29uZmlybUFjdGlvbigpXCI+XG4gICAgICAgICAgICB7e2RhdGEuY29uZmlybUJ1dHRvbkxhYmVsfX1cbiAgICAgICAgPC9idXR0b24+XG4gICAgfVxuICAgIEBpZiAoZGF0YS50eXBlICE9PSAnZGVsZXRlJykge1xuICAgICAgICA8YnV0dG9uIHR5cGU9XCJidXR0b25cIiBtYXQtcmFpc2VkLWJ1dHRvbiBjbGFzcz1cImNvbmZpcm0tYnV0dG9uXCIgW2Rpc2FibGVkXT1cImRhdGEucmVxdWlyZUNvbmZpcm1hdGlvbiAmJiAhY29uZmlybVwiIChjbGljayk9XCJjb25maXJtQWN0aW9uKClcIj5cbiAgICAgICAgICAgIHt7ZGF0YS5jb25maXJtQnV0dG9uTGFiZWx9fVxuICAgICAgICA8L2J1dHRvbj5cbiAgICB9XG4gICAgQGlmIChkYXRhLnR5cGUgIT09ICdpbmZvLW9ubHknKSB7XG4gICAgICAgIDxidXR0b24gdHlwZT1cImJ1dHRvblwiIG1hdC1yYWlzZWQtYnV0dG9uIGNsYXNzPVwiY2FuY2VsLWJ1dHRvblwiIChjbGljayk9XCJjYW5jZWwoKVwiPlxuICAgICAgICAgICAge3tkYXRhLmNhbmNlbEJ1dHRvbkxhYmVsfX1cbiAgICAgICAgPC9idXR0b24+XG4gICAgfVxuPC9tYXQtZGlhbG9nLWFjdGlvbnM+Il19
71
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29uZmlybS1kaWFsb2cuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvbmd4LW1hdGVyaWFsLWVudGl0eS9zcmMvY29tcG9uZW50cy9jb25maXJtLWRpYWxvZy9jb25maXJtLWRpYWxvZy5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9uZ3gtbWF0ZXJpYWwtZW50aXR5L3NyYy9jb21wb25lbnRzL2NvbmZpcm0tZGlhbG9nL2NvbmZpcm0tZGlhbG9nLmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxZQUFZLEVBQUUsTUFBTSxpQkFBaUIsQ0FBQztBQUMvQyxPQUFPLEVBQUUsU0FBUyxFQUFFLE1BQU0sRUFBVSxNQUFNLGVBQWUsQ0FBQztBQUMxRCxPQUFPLEVBQUUsV0FBVyxFQUFFLE1BQU0sZ0JBQWdCLENBQUM7QUFDN0MsT0FBTyxFQUFFLGVBQWUsRUFBRSxNQUFNLDBCQUEwQixDQUFDO0FBQzNELE9BQU8sRUFBRSxpQkFBaUIsRUFBRSxNQUFNLDRCQUE0QixDQUFDO0FBQy9ELE9BQU8sRUFBRSxlQUFlLEVBQUUsZUFBZSxFQUFFLFlBQVksRUFBRSxNQUFNLDBCQUEwQixDQUFDO0FBRzFGLE9BQU8sRUFBRSx3QkFBd0IsRUFBNkIsTUFBTSwrQkFBK0IsQ0FBQztBQUNwRyxPQUFPLEVBQUUsa0NBQWtDLEVBQTBCLE1BQU0sbUNBQW1DLENBQUM7Ozs7OztBQUUvRzs7OztHQUlHO0FBY0gsTUFBTSxPQUFPLGtDQUFrQztJQWF0QjtJQUVBO0lBRUU7SUFmdkI7O09BRUc7SUFDSCxPQUFPLEdBQVksS0FBSyxDQUFDO0lBRXpCOztPQUVHO0lBQ0gsSUFBSSxDQUE2QjtJQUVqQyxZQUNxQixTQUEyRCxFQUUzRCxTQUE0QixFQUUxQixZQUFvQztRQUp0QyxjQUFTLEdBQVQsU0FBUyxDQUFrRDtRQUUzRCxjQUFTLEdBQVQsU0FBUyxDQUFtQjtRQUUxQixpQkFBWSxHQUFaLFlBQVksQ0FBd0I7SUFDeEQsQ0FBQztJQUVKLFFBQVE7UUFDSixJQUFJLENBQUMsSUFBSSxHQUFHLElBQUksd0JBQXdCLENBQUMsSUFBSSxDQUFDLFlBQVksRUFBRSxJQUFJLENBQUMsU0FBUyxDQUFDLENBQUMsU0FBUyxFQUFFLENBQUM7UUFDeEYsSUFBSSxDQUFDLFNBQVMsQ0FBQyxZQUFZLEdBQUcsSUFBSSxDQUFDO0lBQ3ZDLENBQUM7SUFFRDs7T0FFRztJQUNILGFBQWE7UUFDVCxJQUFJLENBQUMsU0FBUyxDQUFDLEtBQUssQ0FBQyxJQUFJLENBQUMsQ0FBQztJQUMvQixDQUFDO0lBRUQ7O09BRUc7SUFDSCxNQUFNO1FBQ0YsSUFBSSxDQUFDLFNBQVMsQ0FBQyxLQUFLLENBQUMsS0FBSyxDQUFDLENBQUM7SUFDaEMsQ0FBQzt1R0FyQ1Esa0NBQWtDLDhDQWMvQixlQUFlLGFBRWYsa0NBQWtDOzJGQWhCckMsa0NBQWtDLHlGQzdCL0MsZ3RDQWlDcUIseWlCRFhiLFlBQVksOEJBQ1osZUFBZSx5YkFDZixXQUFXLDhWQUNYLGlCQUFpQixvWUFDakIsZUFBZTs7MkZBR1Ysa0NBQWtDO2tCQWI5QyxTQUFTOytCQUNJLCtCQUErQixjQUc3QixJQUFJLFdBQ1A7d0JBQ0wsWUFBWTt3QkFDWixlQUFlO3dCQUNmLFdBQVc7d0JBQ1gsaUJBQWlCO3dCQUNqQixlQUFlO3FCQUNsQjs7MEJBZ0JJLE1BQU07MkJBQUMsZUFBZTs7MEJBRXRCLE1BQU07MkJBQUMsa0NBQWtDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQ29tbW9uTW9kdWxlIH0gZnJvbSAnQGFuZ3VsYXIvY29tbW9uJztcbmltcG9ydCB7IENvbXBvbmVudCwgSW5qZWN0LCBPbkluaXQgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IEZvcm1zTW9kdWxlIH0gZnJvbSAnQGFuZ3VsYXIvZm9ybXMnO1xuaW1wb3J0IHsgTWF0QnV0dG9uTW9kdWxlIH0gZnJvbSAnQGFuZ3VsYXIvbWF0ZXJpYWwvYnV0dG9uJztcbmltcG9ydCB7IE1hdENoZWNrYm94TW9kdWxlIH0gZnJvbSAnQGFuZ3VsYXIvbWF0ZXJpYWwvY2hlY2tib3gnO1xuaW1wb3J0IHsgTUFUX0RJQUxPR19EQVRBLCBNYXREaWFsb2dNb2R1bGUsIE1hdERpYWxvZ1JlZiB9IGZyb20gJ0Bhbmd1bGFyL21hdGVyaWFsL2RpYWxvZyc7XG5cbmltcG9ydCB7IENvbmZpcm1EaWFsb2dEYXRhIH0gZnJvbSAnLi9jb25maXJtLWRpYWxvZy1kYXRhJztcbmltcG9ydCB7IENvbmZpcm1EaWFsb2dEYXRhQnVpbGRlciwgQ29uZmlybURpYWxvZ0RhdGFJbnRlcm5hbCB9IGZyb20gJy4vY29uZmlybS1kaWFsb2ctZGF0YS5idWlsZGVyJztcbmltcG9ydCB7IE5HWF9DT01QTEVURV9HTE9CQUxfREVGQVVMVF9WQUxVRVMsIE5neEdsb2JhbERlZmF1bHRWYWx1ZXMgfSBmcm9tICcuLi8uLi9nbG9iYWwtY29uZmlndXJhdGlvbi12YWx1ZXMnO1xuXG4vKipcbiAqIFRoZSBEaWFsb2cgdXNlZCB3aGVuZXZlciBjb25maXJtYXRpb24gYnkgdGhlIHVzZXIgaXMgcmVxdWlyZWQgKGUuZy4gV2hlbiB0aGUgdXNlciB0cmllcyB0byBkZWxldGUgYW4gZW50aXR5KS5cbiAqXG4gKiBDYW4gYmUgY3VzdG9taXplZCB3aXRoIHRoZSBNQVRfRElBTE9HX0RBVEEgXCJpbnB1dERhdGFcIi4gQ3VzdG9taXphdGlvbiBvcHRpb25zIGFyZSBkZWZpbmVkIGluIFwiQ29uZmlybURpYWxvZ0RhdGFcIi5cbiAqL1xuQENvbXBvbmVudCh7XG4gICAgc2VsZWN0b3I6ICduZ3gtbWF0LWVudGl0eS1jb25maXJtLWRpYWxvZycsXG4gICAgdGVtcGxhdGVVcmw6ICcuL2NvbmZpcm0tZGlhbG9nLmNvbXBvbmVudC5odG1sJyxcbiAgICBzdHlsZVVybHM6IFsnLi9jb25maXJtLWRpYWxvZy5jb21wb25lbnQuc2NzcycsICcuLi8uLi9zY3NzL2RpYWxvZy1zdHlsZXMuc2NzcyddLFxuICAgIHN0YW5kYWxvbmU6IHRydWUsXG4gICAgaW1wb3J0czogW1xuICAgICAgICBDb21tb25Nb2R1bGUsXG4gICAgICAgIE1hdERpYWxvZ01vZHVsZSxcbiAgICAgICAgRm9ybXNNb2R1bGUsXG4gICAgICAgIE1hdENoZWNrYm94TW9kdWxlLFxuICAgICAgICBNYXRCdXR0b25Nb2R1bGVcbiAgICBdXG59KVxuZXhwb3J0IGNsYXNzIE5neE1hdEVudGl0eUNvbmZpcm1EaWFsb2dDb21wb25lbnQgaW1wbGVtZW50cyBPbkluaXQge1xuXG4gICAgLyoqXG4gICAgICogV2hldGhlciBvciBub3QgdGhlIHVzZXIgbmVlZHMgdG8gdGljayBhIGNoZWNrYm94IHRvIGVuYWJsZSB0aGUgY29uZmlybSBidXR0b24uXG4gICAgICovXG4gICAgY29uZmlybTogYm9vbGVhbiA9IGZhbHNlO1xuXG4gICAgLyoqXG4gICAgICogVGhlIGNvbmZpZ3VyYXRpb24gZGF0YSBvZiB0aGUgZGlhbG9nLlxuICAgICAqL1xuICAgIGRhdGEhOiBDb25maXJtRGlhbG9nRGF0YUludGVybmFsO1xuXG4gICAgY29uc3RydWN0b3IoXG4gICAgICAgIHByaXZhdGUgcmVhZG9ubHkgZGlhbG9nUmVmOiBNYXREaWFsb2dSZWY8Tmd4TWF0RW50aXR5Q29uZmlybURpYWxvZ0NvbXBvbmVudD4sXG4gICAgICAgIEBJbmplY3QoTUFUX0RJQUxPR19EQVRBKVxuICAgICAgICBwcml2YXRlIHJlYWRvbmx5IGlucHV0RGF0YTogQ29uZmlybURpYWxvZ0RhdGEsXG4gICAgICAgIEBJbmplY3QoTkdYX0NPTVBMRVRFX0dMT0JBTF9ERUZBVUxUX1ZBTFVFUylcbiAgICAgICAgcHJvdGVjdGVkIHJlYWRvbmx5IGdsb2JhbENvbmZpZzogTmd4R2xvYmFsRGVmYXVsdFZhbHVlc1xuICAgICkge31cblxuICAgIG5nT25Jbml0KCk6IHZvaWQge1xuICAgICAgICB0aGlzLmRhdGEgPSBuZXcgQ29uZmlybURpYWxvZ0RhdGFCdWlsZGVyKHRoaXMuZ2xvYmFsQ29uZmlnLCB0aGlzLmlucHV0RGF0YSkuZ2V0UmVzdWx0KCk7XG4gICAgICAgIHRoaXMuZGlhbG9nUmVmLmRpc2FibGVDbG9zZSA9IHRydWU7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogQ2xvc2VzIHRoZSBkaWFsb2cgd2l0aCB0cnVlIHRvIHNpZ25hbCB0aGF0IHRoZSBhY3Rpb24gc2hvdWxkIGJlIHJ1bi5cbiAgICAgKi9cbiAgICBjb25maXJtQWN0aW9uKCk6IHZvaWQge1xuICAgICAgICB0aGlzLmRpYWxvZ1JlZi5jbG9zZSh0cnVlKTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBDbG9zZXMgdGhlIGRpYWxvZy5cbiAgICAgKi9cbiAgICBjYW5jZWwoKTogdm9pZCB7XG4gICAgICAgIHRoaXMuZGlhbG9nUmVmLmNsb3NlKGZhbHNlKTtcbiAgICB9XG59IiwiQGlmIChkYXRhLnRpdGxlKSB7XG4gICAgPGgyIG1hdC1kaWFsb2ctdGl0bGU+e3tkYXRhLnRpdGxlfX08L2gyPlxufVxuXG48bWF0LWRpYWxvZy1jb250ZW50PlxuICAgIEBmb3IgKHBhcmFncmFwaCBvZiBkYXRhLnRleHQ7IHRyYWNrICRpbmRleCkge1xuICAgICAgICA8cD57e3BhcmFncmFwaH19PC9wPlxuICAgIH1cbiAgICBAaWYgKGRhdGEucmVxdWlyZUNvbmZpcm1hdGlvbikge1xuICAgICAgICA8ZGl2IGNsYXNzPVwiY2hlY2tib3gtd3JhcHBlclwiPlxuICAgICAgICAgICAgPG1hdC1jaGVja2JveCBuYW1lPVwiY29uZmlybVwiIFsobmdNb2RlbCldPVwiY29uZmlybVwiPlxuICAgICAgICAgICAgICAgIHt7ZGF0YS5jb25maXJtYXRpb25UZXh0fX1cbiAgICAgICAgICAgIDwvbWF0LWNoZWNrYm94PlxuICAgICAgICA8L2Rpdj5cbiAgICB9XG48L21hdC1kaWFsb2ctY29udGVudD5cblxuPG1hdC1kaWFsb2ctYWN0aW9ucz5cbiAgICBAaWYgKGRhdGEudHlwZSA9PT0gJ2RlbGV0ZScpIHtcbiAgICAgICAgPGJ1dHRvbiB0eXBlPVwiYnV0dG9uXCIgbWF0LXJhaXNlZC1idXR0b24gY29sb3I9XCJ3YXJuXCIgY2xhc3M9XCJjb25maXJtLWJ1dHRvblwiIFtkaXNhYmxlZF09XCJkYXRhLnJlcXVpcmVDb25maXJtYXRpb24gJiYgIWNvbmZpcm1cIiAoY2xpY2spPVwiY29uZmlybUFjdGlvbigpXCI+XG4gICAgICAgICAgICB7e2RhdGEuY29uZmlybUJ1dHRvbkxhYmVsfX1cbiAgICAgICAgPC9idXR0b24+XG4gICAgfVxuICAgIEBpZiAoZGF0YS50eXBlICE9PSAnZGVsZXRlJykge1xuICAgICAgICA8YnV0dG9uIHR5cGU9XCJidXR0b25cIiBtYXQtcmFpc2VkLWJ1dHRvbiBjbGFzcz1cImNvbmZpcm0tYnV0dG9uXCIgW2Rpc2FibGVkXT1cImRhdGEucmVxdWlyZUNvbmZpcm1hdGlvbiAmJiAhY29uZmlybVwiIChjbGljayk9XCJjb25maXJtQWN0aW9uKClcIj5cbiAgICAgICAgICAgIHt7ZGF0YS5jb25maXJtQnV0dG9uTGFiZWx9fVxuICAgICAgICA8L2J1dHRvbj5cbiAgICB9XG4gICAgQGlmIChkYXRhLnR5cGUgIT09ICdpbmZvLW9ubHknKSB7XG4gICAgICAgIDxidXR0b24gdHlwZT1cImJ1dHRvblwiIG1hdC1yYWlzZWQtYnV0dG9uIGNsYXNzPVwiY2FuY2VsLWJ1dHRvblwiIChjbGljayk9XCJjYW5jZWwoKVwiPlxuICAgICAgICAgICAge3tkYXRhLmNhbmNlbEJ1dHRvbkxhYmVsfX1cbiAgICAgICAgPC9idXR0b24+XG4gICAgfVxuPC9tYXQtZGlhbG9nLWFjdGlvbnM+Il19