ngx-material-entity 15.1.3 → 15.1.4

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 (90) hide show
  1. package/README.md +100 -0
  2. package/components/confirm-dialog/confirm-dialog.component.d.ts +1 -1
  3. package/components/edit-page/edit-page.component.d.ts +112 -0
  4. package/components/edit-page/page-edit-data.builder.d.ts +17 -0
  5. package/components/input/array/array-date-input/array-date-input.component.d.ts +1 -1
  6. package/components/input/array/array-date-range-input/array-date-range-input.component.d.ts +1 -1
  7. package/components/input/array/array-date-time-input/array-date-time-input.component.d.ts +1 -1
  8. package/components/input/array/array-table.class.d.ts +1 -1
  9. package/components/input/date/date-input/date-input.component.d.ts +1 -1
  10. package/components/input/date/date-time-input/date-time-input.component.d.ts +1 -1
  11. package/components/input/file/file-default-input/file-default-input.component.d.ts +1 -1
  12. package/components/input/file/file-image-input/file-image-input.component.d.ts +1 -1
  13. package/components/input/file/file-input/file-input.component.d.ts +3 -3
  14. package/components/input/input.component.d.ts +3 -3
  15. package/components/input/relations/references-many-input/references-many-input.component.d.ts +1 -1
  16. package/components/input/string/string-password-input/string-password-input.component.d.ts +1 -1
  17. package/components/table/create-dialog/create-entity-dialog-data.builder.d.ts +3 -3
  18. package/components/table/create-dialog/create-entity-dialog-data.d.ts +1 -1
  19. package/components/table/create-dialog/create-entity-dialog.component.d.ts +4 -4
  20. package/components/table/edit-dialog/{edit-dialog-data.builder.d.ts → edit-data.builder.d.ts} +7 -7
  21. package/components/table/edit-dialog/{edit-entity-dialog-data.d.ts → edit-entity-data.d.ts} +5 -5
  22. package/components/table/edit-dialog/edit-entity-dialog.component.d.ts +6 -6
  23. package/components/table/edit-dialog/edit-entity.builder.d.ts +24 -0
  24. package/components/table/table-data.builder.d.ts +9 -7
  25. package/components/table/table-data.d.ts +18 -8
  26. package/components/table/table.component.d.ts +11 -7
  27. package/components/table/table.module.d.ts +4 -3
  28. package/esm2020/classes/entity.model.mjs +2 -2
  29. package/esm2020/components/confirm-dialog/confirm-dialog.component.mjs +4 -4
  30. package/esm2020/components/edit-page/edit-page.component.mjs +203 -0
  31. package/esm2020/components/edit-page/page-edit-data.builder.mjs +32 -0
  32. package/esm2020/components/input/array/array-date-input/array-date-input.component.mjs +4 -4
  33. package/esm2020/components/input/array/array-date-range-input/array-date-range-input.component.mjs +4 -4
  34. package/esm2020/components/input/array/array-date-time-input/array-date-time-input.component.mjs +4 -4
  35. package/esm2020/components/input/array/array-table.class.mjs +3 -3
  36. package/esm2020/components/input/base-input.component.mjs +2 -2
  37. package/esm2020/components/input/date/date-input/date-input.component.mjs +2 -2
  38. package/esm2020/components/input/date/date-range-input/date-range-input.component.mjs +5 -5
  39. package/esm2020/components/input/date/date-time-input/date-time-input.component.mjs +3 -3
  40. package/esm2020/components/input/file/file-default-input/file-default-input.component.mjs +2 -2
  41. package/esm2020/components/input/file/file-image-input/file-image-input.component.mjs +3 -3
  42. package/esm2020/components/input/file/file-input/file-input.component.mjs +5 -5
  43. package/esm2020/components/input/input.component.mjs +6 -6
  44. package/esm2020/components/input/relations/references-many-input/references-many-input.component.mjs +4 -4
  45. package/esm2020/components/input/string/string-password-input/string-password-input.component.mjs +4 -4
  46. package/esm2020/components/table/create-dialog/create-entity-dialog-data.builder.mjs +2 -2
  47. package/esm2020/components/table/create-dialog/create-entity-dialog-data.mjs +1 -1
  48. package/esm2020/components/table/create-dialog/create-entity-dialog.component.mjs +5 -5
  49. package/esm2020/components/table/edit-dialog/edit-data.builder.mjs +41 -0
  50. package/esm2020/components/table/edit-dialog/edit-entity-data.mjs +2 -0
  51. package/esm2020/components/table/edit-dialog/edit-entity-dialog.component.mjs +16 -16
  52. package/esm2020/components/table/edit-dialog/edit-entity.builder.mjs +28 -0
  53. package/esm2020/components/table/table-data.builder.mjs +11 -8
  54. package/esm2020/components/table/table-data.mjs +1 -1
  55. package/esm2020/components/table/table.component.mjs +42 -29
  56. package/esm2020/components/table/table.module.mjs +5 -1
  57. package/esm2020/decorators/array/array-decorator-internal.data.mjs +2 -2
  58. package/esm2020/decorators/base/base-property.decorator.mjs +2 -2
  59. package/esm2020/decorators/date/date-decorator-internal.data.mjs +2 -2
  60. package/esm2020/decorators/date/date.decorator.mjs +2 -2
  61. package/esm2020/decorators/file/file.decorator.mjs +2 -2
  62. package/esm2020/decorators/string/string.decorator.mjs +2 -2
  63. package/esm2020/public-api.mjs +30 -26
  64. package/esm2020/services/entity.service.mjs +236 -0
  65. package/esm2020/services/unsaved-changes.guard.mjs +14 -0
  66. package/esm2020/utilities/date.utilities.mjs +158 -0
  67. package/esm2020/utilities/entity.utilities.mjs +828 -0
  68. package/esm2020/utilities/file.utilities.mjs +163 -0
  69. package/esm2020/utilities/selection.utilities.mjs +50 -0
  70. package/fesm2015/ngx-material-entity.mjs +882 -613
  71. package/fesm2015/ngx-material-entity.mjs.map +1 -1
  72. package/fesm2020/ngx-material-entity.mjs +896 -633
  73. package/fesm2020/ngx-material-entity.mjs.map +1 -1
  74. package/package.json +1 -1
  75. package/public-api.d.ts +27 -25
  76. package/{classes → services}/entity.service.d.ts +18 -1
  77. package/services/unsaved-changes.guard.d.ts +4 -0
  78. package/{classes → utilities}/entity.utilities.d.ts +1 -1
  79. package/components/table/edit-dialog/edit-entity-dialog.builder.d.ts +0 -24
  80. package/esm2020/classes/date.utilities.mjs +0 -158
  81. package/esm2020/classes/entity.service.mjs +0 -213
  82. package/esm2020/classes/entity.utilities.mjs +0 -828
  83. package/esm2020/classes/file.utilities.mjs +0 -163
  84. package/esm2020/classes/selection.utilities.mjs +0 -50
  85. package/esm2020/components/table/edit-dialog/edit-dialog-data.builder.mjs +0 -41
  86. package/esm2020/components/table/edit-dialog/edit-entity-dialog-data.mjs +0 -2
  87. package/esm2020/components/table/edit-dialog/edit-entity-dialog.builder.mjs +0 -28
  88. /package/{classes → utilities}/date.utilities.d.ts +0 -0
  89. /package/{classes → utilities}/file.utilities.d.ts +0 -0
  90. /package/{classes → utilities}/selection.utilities.d.ts +0 -0
package/README.md CHANGED
@@ -57,6 +57,11 @@ NgxMaterialEntity aims to have a fast way to get started with a lot of default o
57
57
  - [NgxMatEntityTable Configuration](#ngxmatentitytable-configuration)
58
58
  - [Display Columns](#display-columns)
59
59
  - [Multiselect Actions](#multiselect-actions)
60
+ - [Edit in seperate page](#edit-in-seperate-page)
61
+ - [1. In the base data entry of your table config add `defaultEdit: 'page'`](#1-in-the-base-data-entry-of-your-table-config-add-defaultedit-page)
62
+ - [2. Add the route on which the entity should be edited:](#2-add-the-route-on-which-the-entity-should-be-edited)
63
+ - [3. Use a custom route (optional)](#3-use-a-custom-route-optional)
64
+ - [4. Require confirmation before leaving page with unsaved changes (optional)](#4-require-confirmation-before-leaving-page-with-unsaved-changes-optional)
60
65
 
61
66
  # Requirements
62
67
  This package relies on the [angular material library](https://material.angular.io/guide/getting-started) to render its components.
@@ -1274,3 +1279,98 @@ export interface MultiSelectAction<EntityType extends object> {
1274
1279
  confirmDialogData?: ConfirmDialogData
1275
1280
  }
1276
1281
  ```
1282
+ ## Edit in seperate page
1283
+ When handling entities that have a lot of properties, you might don't want to edit everything inside a dialog but in a separate page.
1284
+
1285
+ For that case, this library has a generic edit page. It works flawlessly with the table component, but you need to adjust some things:
1286
+
1287
+ ### 1. In the base data entry of your table config add `defaultEdit: 'page'`
1288
+ ### 2. Add the route on which the entity should be edited:
1289
+ ```typescript
1290
+ import { defaultEditDataRoute, EditDataRoute, NGX_EDIT_DATA_ENTITY, NGX_EDIT_DATA_ENTITY_SERVICE, PageEditData } from 'ngx-material-entity';
1291
+
1292
+ //...
1293
+
1294
+ const editMyEntityData: PageEditData<MyEntity> = {
1295
+ editData: {
1296
+ title: (entity: MyEntity) => `My Entity #${entity.id}`
1297
+ }
1298
+ };
1299
+
1300
+ const editDataRoute: EditDataRoute = {
1301
+ ...defaultEditDataRoute,
1302
+ providers: [
1303
+ {
1304
+ provide: NGX_EDIT_DATA_ENTITY_SERVICE,
1305
+ useExisting: MyEntityService
1306
+ },
1307
+ {
1308
+ provide: NGX_EDIT_DATA_ENTITY,
1309
+ useValue: MyEntity
1310
+ },
1311
+ {
1312
+ provide: NGX_EDIT_DATA,
1313
+ useValue: editMyEntityData
1314
+ }
1315
+ ]
1316
+ };
1317
+ ```
1318
+ The `defaultEditDataRoute` just provides values for things like path, title or loadComponent out of the box.
1319
+
1320
+ The providers array is needed for the route to access the relevant entity service, entity class and the configuration data.
1321
+ ### 3. Use a custom route (optional)
1322
+ By default, the configuration above will open any entities on the path `entities/:id`.
1323
+
1324
+ At some point you probably want to open them on different paths, eg. `my-entities/:id` for the example above.
1325
+
1326
+ In order to do that you need to add the custom path at two different places:
1327
+ <br>
1328
+ - In the relevant EntityService:
1329
+ `override readonly editBaseRoute: string = 'my-entities';`
1330
+ <br>
1331
+ - And in the route:
1332
+ ```typescript
1333
+ import { defaultEditDataRoute, EditDataRoute, NGX_EDIT_DATA_ENTITY, NGX_EDIT_DATA_ENTITY_SERVICE, PageEditData } from 'ngx-material-entity';
1334
+
1335
+ //...
1336
+
1337
+ const editDataRoute: EditDataRoute = {
1338
+ ...defaultEditDataRoute,
1339
+ path: 'my-entities/:id',
1340
+ providers: [
1341
+ {
1342
+ provide: NGX_EDIT_DATA_ENTITY_SERVICE,
1343
+ useExisting: MyEntityService
1344
+ },
1345
+ {
1346
+ provide: NGX_EDIT_DATA_ENTITY,
1347
+ useValue: MyEntity
1348
+ }
1349
+ ]
1350
+ };
1351
+ ```
1352
+
1353
+ ### 4. Require confirmation before leaving page with unsaved changes (optional)
1354
+ If you want the user to confim abandoning their changes you can simply add the `UnsavedChangesGuard` to your route:
1355
+
1356
+ ```typescript
1357
+ import { defaultEditDataRoute, EditDataRoute, NGX_EDIT_DATA_ENTITY, NGX_EDIT_DATA_ENTITY_SERVICE, PageEditData, UnsavedChangesGuard } from 'ngx-material-entity';
1358
+
1359
+ //...
1360
+
1361
+ const editDataRoute: EditDataRoute = {
1362
+ ...defaultEditDataRoute,
1363
+ path: 'my-entities/:id',
1364
+ providers: [
1365
+ {
1366
+ provide: NGX_EDIT_DATA_ENTITY_SERVICE,
1367
+ useExisting: MyEntityService
1368
+ },
1369
+ {
1370
+ provide: NGX_EDIT_DATA_ENTITY,
1371
+ useValue: MyEntity
1372
+ }
1373
+ ],
1374
+ canDeactivate: [UnsavedChangesGuard]
1375
+ };
1376
+ ```
@@ -16,7 +16,7 @@ export declare class NgxMatEntityConfirmDialogComponent implements OnInit {
16
16
  constructor(dialogRef: MatDialogRef<NgxMatEntityConfirmDialogComponent>, inputData: ConfirmDialogData);
17
17
  ngOnInit(): void;
18
18
  /**
19
- * Closes the dialog with value 1 to signal that the action should be run.
19
+ * Closes the dialog with true to signal that the action should be run.
20
20
  */
21
21
  confirmAction(): void;
22
22
  /**
@@ -0,0 +1,112 @@
1
+ import { Location } from '@angular/common';
2
+ import { EnvironmentProviders, InjectionToken, OnInit, Provider, Type } from '@angular/core';
3
+ import { MatDialog } from '@angular/material/dialog';
4
+ import { ActivatedRoute, DefaultExport, Route } from '@angular/router';
5
+ import { Observable } from 'rxjs';
6
+ import { BaseEntityType, EntityClassNewable } from '../../classes/entity.model';
7
+ import { EntityService } from '../../services/entity.service';
8
+ import { EntityTab, EntityUtilities } from '../../utilities/entity.utilities';
9
+ import { ConfirmDialogData } from '../confirm-dialog/confirm-dialog-data';
10
+ import { EditEntityData } from '../table/edit-dialog/edit-entity-data';
11
+ import { EditData } from '../table/table-data';
12
+ import { PageEditDataInternal } from './page-edit-data.builder';
13
+ import * as i0 from "@angular/core";
14
+ /**
15
+ * The definition for a route to use with the "NgxMatEntityEditPageComponent".
16
+ */
17
+ export interface EditDataRoute extends Route {
18
+ loadComponent: () => Type<unknown> | Observable<Type<unknown> | DefaultExport<Type<unknown>>> | Promise<Type<unknown> | DefaultExport<Type<unknown>>>;
19
+ providers: (Provider | EnvironmentProviders)[];
20
+ title: string;
21
+ path: string;
22
+ }
23
+ export declare const defaultEditDataRoute: Omit<EditDataRoute, 'providers'>;
24
+ /**
25
+ * The data that needs to be provided for a route to be able to edit a entity.
26
+ */
27
+ export declare type PageEditData<EntityType extends BaseEntityType<EntityType>> = Omit<EditEntityData<EntityType>, 'entity' | 'EntityServiceClass'> & {
28
+ /**
29
+ * Whether or not to display a loading spinner while the entity for the page is loaded.
30
+ *
31
+ * @default true
32
+ */
33
+ displayLoadingSpinner?: boolean;
34
+ /**
35
+ * The data of the default edit page.
36
+ */
37
+ editData?: EditData<EntityType> & {
38
+ /**
39
+ * The data for the dialog when the user tries to leave the site with unsaved changes.
40
+ */
41
+ confirmUnsavedChangesDialogData?: ConfirmDialogData;
42
+ /**
43
+ * Whether or not leaving with unsaved changes should require a confirm dialog.
44
+ *
45
+ * @default true
46
+ */
47
+ unsavedChangesRequireConfirmDialog?: boolean;
48
+ };
49
+ };
50
+ export declare const NGX_EDIT_DATA_ENTITY_SERVICE: InjectionToken<EntityService<any>>;
51
+ export declare const NGX_EDIT_DATA_ENTITY: InjectionToken<EntityClassNewable<any>>;
52
+ export declare const NGX_EDIT_DATA: InjectionToken<PageEditData<any>>;
53
+ /**
54
+ * A generic page that allows you to edit a specific entity.
55
+ * For this to work you need to provide some data for the route.
56
+ */
57
+ export declare class NgxMatEntityEditPageComponent<EntityType extends BaseEntityType<EntityType>> implements OnInit {
58
+ private readonly dialog;
59
+ private readonly location;
60
+ private readonly route;
61
+ readonly entityService: EntityService<EntityType>;
62
+ private readonly EntityClass;
63
+ private readonly inputData;
64
+ EntityUtilities: typeof EntityUtilities;
65
+ entityTabs: EntityTab<EntityType>[];
66
+ entity: EntityType;
67
+ entityPriorChanges: EntityType;
68
+ data: PageEditDataInternal<EntityType>;
69
+ isEntityValid: boolean;
70
+ isEntityDirty: boolean;
71
+ isReadOnly: boolean;
72
+ private inConfirmNavigation;
73
+ get hasUnsavedChanges(): boolean;
74
+ constructor(dialog: MatDialog, location: Location, route: ActivatedRoute, entityService: EntityService<EntityType>, EntityClass: EntityClassNewable<EntityType>, inputData: PageEditData<EntityType>);
75
+ ngOnInit(): Promise<void>;
76
+ /**
77
+ * Whether the page can be left without confirmation (of unsaved changes).
78
+ *
79
+ * @returns Whether or not the page can be left without confirmation.
80
+ */
81
+ canDeactivate(): boolean;
82
+ /**
83
+ * Checks if the entity has become invalid or dirty.
84
+ */
85
+ checkEntity(): Promise<void>;
86
+ /**
87
+ * Tries to save the changes and close the dialog afterwards.
88
+ * Also handles the confirmation if required.
89
+ */
90
+ edit(): void;
91
+ private confirmEdit;
92
+ /**
93
+ * Tries to delete the entity and close the dialog afterwards.
94
+ * Also handles the confirmation if required.
95
+ */
96
+ delete(): void;
97
+ private confirmDelete;
98
+ /**
99
+ * Tries to navigate back.
100
+ */
101
+ navigateBack(): void;
102
+ /**
103
+ * Opens the confirm dialog for navigating with unsaved changes.
104
+ * This is exposed because the UnsavedChangesGuard needs to access this.
105
+ *
106
+ * @returns The first observable result of the confirm dialog.
107
+ */
108
+ openConfirmNavigationDialog(): Observable<boolean>;
109
+ private confirmNavigateBack;
110
+ static ɵfac: i0.ɵɵFactoryDeclaration<NgxMatEntityEditPageComponent<any>, never>;
111
+ static ɵcmp: i0.ɵɵComponentDeclaration<NgxMatEntityEditPageComponent<any>, "ngx-mat-entity-edit-page", never, {}, {}, never, never, true, never>;
112
+ }
@@ -0,0 +1,17 @@
1
+ import { BaseBuilder } from '../../classes/base.builder';
2
+ import { BaseEntityType } from '../../classes/entity.model';
3
+ import { ConfirmDialogDataInternal } from '../confirm-dialog/confirm-dialog-data.builder';
4
+ import { EditDataInternal } from '../table/edit-dialog/edit-data.builder';
5
+ import { EditEntityDataInternal } from '../table/edit-dialog/edit-entity.builder';
6
+ import { PageEditData } from './edit-page.component';
7
+ export declare type PageEditDataInternal<EntityType extends BaseEntityType<EntityType>> = Omit<EditEntityDataInternal<EntityType>, 'entity' | 'EntityServiceClass'> & {
8
+ displayLoadingSpinner: boolean;
9
+ editData: EditDataInternal<EntityType> & {
10
+ confirmUnsavedChangesDialogData: ConfirmDialogDataInternal;
11
+ unsavedChangesRequireConfirmDialog: boolean;
12
+ };
13
+ };
14
+ export declare class PageEditDataBuilder<EntityType extends BaseEntityType<EntityType>> extends BaseBuilder<PageEditDataInternal<EntityType>, PageEditData<EntityType>> {
15
+ constructor(data: PageEditData<EntityType>);
16
+ protected generateBaseData(data: PageEditData<EntityType>): PageEditDataInternal<EntityType>;
17
+ }
@@ -1,7 +1,7 @@
1
1
  import { OnInit } from '@angular/core';
2
- import { DateUtilities } from '../../../../classes/date.utilities';
3
2
  import { BaseEntityType } from '../../../../classes/entity.model';
4
3
  import { DecoratorTypes } from '../../../../decorators/base/decorator-types.enum';
4
+ import { DateUtilities } from '../../../../utilities/date.utilities';
5
5
  import { ArrayTableComponent } from '../array-table.class';
6
6
  import * as i0 from "@angular/core";
7
7
  export declare class ArrayDateInputComponent<EntityType extends BaseEntityType<EntityType>> extends ArrayTableComponent<Date, EntityType, DecoratorTypes.ARRAY_DATE> implements OnInit {
@@ -1,8 +1,8 @@
1
1
  import { OnInit } from '@angular/core';
2
- import { DateUtilities } from '../../../../classes/date.utilities';
3
2
  import { BaseEntityType } from '../../../../classes/entity.model';
4
3
  import { DecoratorTypes } from '../../../../decorators/base/decorator-types.enum';
5
4
  import { DateRange } from '../../../../decorators/date/date-decorator.data';
5
+ import { DateUtilities } from '../../../../utilities/date.utilities';
6
6
  import { ArrayTableComponent } from '../array-table.class';
7
7
  import * as i0 from "@angular/core";
8
8
  export declare class ArrayDateRangeInputComponent<EntityType extends BaseEntityType<EntityType>> extends ArrayTableComponent<DateRange, EntityType, DecoratorTypes.ARRAY_DATE_RANGE> implements OnInit {
@@ -1,9 +1,9 @@
1
1
  import { Time } from '@angular/common';
2
2
  import { OnInit } from '@angular/core';
3
- import { DateUtilities } from '../../../../classes/date.utilities';
4
3
  import { BaseEntityType } from '../../../../classes/entity.model';
5
4
  import { DecoratorTypes } from '../../../../decorators/base/decorator-types.enum';
6
5
  import { DropdownValue } from '../../../../decorators/base/dropdown-value.interface';
6
+ import { DateUtilities } from '../../../../utilities/date.utilities';
7
7
  import { ArrayTableComponent } from '../array-table.class';
8
8
  import * as i0 from "@angular/core";
9
9
  export declare class ArrayDateTimeInputComponent<EntityType extends BaseEntityType<EntityType>> extends ArrayTableComponent<Date, EntityType, DecoratorTypes.ARRAY_DATE_TIME> implements OnInit {
@@ -3,8 +3,8 @@ import { OnInit } from '@angular/core';
3
3
  import { MatDialog } from '@angular/material/dialog';
4
4
  import { MatTableDataSource } from '@angular/material/table';
5
5
  import { BaseEntityType } from '../../../classes/entity.model';
6
- import { SelectionUtilities } from '../../../classes/selection.utilities';
7
6
  import { DecoratorTypes } from '../../../decorators/base/decorator-types.enum';
7
+ import { SelectionUtilities } from '../../../utilities/selection.utilities';
8
8
  import { NgxMatEntityBaseInputComponent } from '../base-input.component';
9
9
  import * as i0 from "@angular/core";
10
10
  declare type ArrayTableType = DecoratorTypes.ARRAY | DecoratorTypes.ARRAY_DATE | DecoratorTypes.ARRAY_DATE_RANGE | DecoratorTypes.ARRAY_DATE_TIME;
@@ -1,7 +1,7 @@
1
1
  import { OnInit } from '@angular/core';
2
- import { DateUtilities } from '../../../../classes/date.utilities';
3
2
  import { BaseEntityType } from '../../../../classes/entity.model';
4
3
  import { DecoratorTypes } from '../../../../decorators/base/decorator-types.enum';
4
+ import { DateUtilities } from '../../../../utilities/date.utilities';
5
5
  import { NgxMatEntityBaseInputComponent } from '../../base-input.component';
6
6
  import * as i0 from "@angular/core";
7
7
  export declare class DateInputComponent<EntityType extends BaseEntityType<EntityType>> extends NgxMatEntityBaseInputComponent<EntityType, DecoratorTypes.DATE, Date> implements OnInit {
@@ -1,10 +1,10 @@
1
1
  import { Time } from '@angular/common';
2
2
  import { OnInit } from '@angular/core';
3
3
  import { DateFilterFn } from '@angular/material/datepicker';
4
- import { DateUtilities } from '../../../../classes/date.utilities';
5
4
  import { BaseEntityType } from '../../../../classes/entity.model';
6
5
  import { DecoratorTypes } from '../../../../decorators/base/decorator-types.enum';
7
6
  import { DropdownValue } from '../../../../decorators/base/dropdown-value.interface';
7
+ import { DateUtilities } from '../../../../utilities/date.utilities';
8
8
  import { NgxMatEntityBaseInputComponent } from '../../base-input.component';
9
9
  import * as i0 from "@angular/core";
10
10
  export declare class DateTimeInputComponent<EntityType extends BaseEntityType<EntityType>> extends NgxMatEntityBaseInputComponent<EntityType, DecoratorTypes.DATE_TIME, Date> implements OnInit {
@@ -1,8 +1,8 @@
1
1
  import { OnInit } from '@angular/core';
2
2
  import { BaseEntityType } from '../../../../classes/entity.model';
3
- import { FileUtilities } from '../../../../classes/file.utilities';
4
3
  import { DecoratorTypes } from '../../../../decorators/base/decorator-types.enum';
5
4
  import { FileData } from '../../../../decorators/file/file-decorator.data';
5
+ import { FileUtilities } from '../../../../utilities/file.utilities';
6
6
  import { NgxMatEntityBaseInputComponent } from '../../base-input.component';
7
7
  import * as i0 from "@angular/core";
8
8
  export declare class FileDefaultInputComponent<EntityType extends BaseEntityType<EntityType>> extends NgxMatEntityBaseInputComponent<EntityType, DecoratorTypes.FILE_DEFAULT, FileData | FileData[]> implements OnInit {
@@ -1,8 +1,8 @@
1
1
  import { OnInit } from '@angular/core';
2
2
  import { BaseEntityType } from '../../../../classes/entity.model';
3
- import { FileUtilities } from '../../../../classes/file.utilities';
4
3
  import { DecoratorTypes } from '../../../../decorators/base/decorator-types.enum';
5
4
  import { FileData } from '../../../../decorators/file/file-decorator.data';
5
+ import { FileUtilities } from '../../../../utilities/file.utilities';
6
6
  import { NgxMatEntityBaseInputComponent } from '../../base-input.component';
7
7
  import * as i0 from "@angular/core";
8
8
  export declare class FileImageInputComponent<EntityType extends BaseEntityType<EntityType>> extends NgxMatEntityBaseInputComponent<EntityType, DecoratorTypes.FILE_IMAGE, FileData | FileData[]> implements OnInit {
@@ -1,10 +1,10 @@
1
1
  import { EventEmitter, OnInit } from '@angular/core';
2
2
  import { NgModel } from '@angular/forms';
3
- import { DefaultFileDecoratorConfigInternal, ImageFileDecoratorConfigInternal } from '../../../../decorators/file/file-decorator-internal.data';
4
- import { FileUtilities } from '../../../../classes/file.utilities';
5
- import { FileData } from '../../../../decorators/file/file-decorator.data';
6
3
  import { MatDialog } from '@angular/material/dialog';
7
4
  import { BaseEntityType } from '../../../../classes/entity.model';
5
+ import { DefaultFileDecoratorConfigInternal, ImageFileDecoratorConfigInternal } from '../../../../decorators/file/file-decorator-internal.data';
6
+ import { FileData } from '../../../../decorators/file/file-decorator.data';
7
+ import { FileUtilities } from '../../../../utilities/file.utilities';
8
8
  import * as i0 from "@angular/core";
9
9
  export declare class FileInputComponent<EntityType extends BaseEntityType<EntityType>> implements OnInit {
10
10
  private readonly dialog;
@@ -3,14 +3,14 @@ import { EventEmitter, OnInit, TemplateRef } from '@angular/core';
3
3
  import { NgModel } from '@angular/forms';
4
4
  import { MatDialog, MatDialogRef } from '@angular/material/dialog';
5
5
  import { MatTableDataSource } from '@angular/material/table';
6
- import { DateUtilities } from '../../classes/date.utilities';
7
6
  import { BaseEntityType } from '../../classes/entity.model';
8
- import { EntityTab, EntityUtilities } from '../../classes/entity.utilities';
9
- import { SelectionUtilities } from '../../classes/selection.utilities';
10
7
  import { EntityArrayDecoratorConfigInternal } from '../../decorators/array/array-decorator-internal.data';
11
8
  import { DecoratorTypes } from '../../decorators/base/decorator-types.enum';
12
9
  import { PropertyDecoratorConfigInternal } from '../../decorators/base/property-decorator-internal.data';
13
10
  import { DefaultObjectDecoratorConfigInternal } from '../../decorators/object/object-decorator-internal.data';
11
+ import { DateUtilities } from '../../utilities/date.utilities';
12
+ import { EntityTab, EntityUtilities } from '../../utilities/entity.utilities';
13
+ import { SelectionUtilities } from '../../utilities/selection.utilities';
14
14
  import { AddArrayItemDialogData } from './add-array-item-dialog-data';
15
15
  import { AddArrayItemDialogDataInternal } from './add-array-item-dialog-data.builder';
16
16
  import * as i0 from "@angular/core";
@@ -2,9 +2,9 @@ import { SelectionModel } from '@angular/cdk/collections';
2
2
  import { EnvironmentInjector, OnInit } from '@angular/core';
3
3
  import { MatTableDataSource } from '@angular/material/table';
4
4
  import { BaseEntityType } from '../../../../classes/entity.model';
5
- import { SelectionUtilities } from '../../../../classes/selection.utilities';
6
5
  import { DecoratorTypes } from '../../../../decorators/base/decorator-types.enum';
7
6
  import { DropdownValue } from '../../../../decorators/base/dropdown-value.interface';
7
+ import { SelectionUtilities } from '../../../../utilities/selection.utilities';
8
8
  import { NgxMatEntityBaseInputComponent } from '../../base-input.component';
9
9
  import * as i0 from "@angular/core";
10
10
  export declare class ReferencesManyInputComponent<EntityType extends BaseEntityType<EntityType>> extends NgxMatEntityBaseInputComponent<EntityType, DecoratorTypes.REFERENCES_MANY, string[]> implements OnInit {
@@ -1,6 +1,6 @@
1
1
  import { OnInit } from '@angular/core';
2
- import { DecoratorTypes } from '../../../../decorators/base/decorator-types.enum';
3
2
  import { BaseEntityType } from '../../../../classes/entity.model';
3
+ import { DecoratorTypes } from '../../../../decorators/base/decorator-types.enum';
4
4
  import { NgxMatEntityBaseInputComponent } from '../../base-input.component';
5
5
  import * as i0 from "@angular/core";
6
6
  export declare class StringPasswordInputComponent<EntityType extends BaseEntityType<EntityType>> extends NgxMatEntityBaseInputComponent<EntityType, DecoratorTypes.STRING_PASSWORD, string> implements OnInit {
@@ -1,9 +1,9 @@
1
- import { EntityService } from '../../../classes/entity.service';
2
- import { CreateEntityDialogData } from './create-entity-dialog-data';
3
1
  import { HttpClient } from '@angular/common/http';
4
- import { CreateDialogDataInternal } from './create-dialog-data.builder';
5
2
  import { BaseBuilder } from '../../../classes/base.builder';
6
3
  import { BaseEntityType } from '../../../classes/entity.model';
4
+ import { EntityService } from '../../../services/entity.service';
5
+ import { CreateDialogDataInternal } from './create-dialog-data.builder';
6
+ import { CreateEntityDialogData } from './create-entity-dialog-data';
7
7
  /**
8
8
  * The internal CreateEntityDialogData. Requires all default values the user can leave out.
9
9
  */
@@ -1,6 +1,6 @@
1
1
  import { HttpClient } from '@angular/common/http';
2
2
  import { BaseEntityType } from '../../../classes/entity.model';
3
- import { EntityService } from '../../../classes/entity.service';
3
+ import { EntityService } from '../../../services/entity.service';
4
4
  import { CreateDialogData } from '../table-data';
5
5
  /**
6
6
  * The Definition of the Create Entity Dialog Data.
@@ -1,10 +1,10 @@
1
1
  import { Injector, OnInit } from '@angular/core';
2
2
  import { MatDialog, MatDialogRef } from '@angular/material/dialog';
3
- import { EntityService } from '../../../classes/entity.service';
4
- import { EntityTab, EntityUtilities } from '../../../classes/entity.utilities';
5
- import { CreateEntityDialogDataInternal } from './create-entity-dialog-data.builder';
6
- import { CreateEntityDialogData } from './create-entity-dialog-data';
7
3
  import { BaseEntityType } from '../../../classes/entity.model';
4
+ import { EntityService } from '../../../services/entity.service';
5
+ import { EntityTab, EntityUtilities } from '../../../utilities/entity.utilities';
6
+ import { CreateEntityDialogData } from './create-entity-dialog-data';
7
+ import { CreateEntityDialogDataInternal } from './create-entity-dialog-data.builder';
8
8
  import * as i0 from "@angular/core";
9
9
  /**
10
10
  * The default dialog used to create new entities based on the configuration passed in the MAT_DIALOG_DATA "inputData".
@@ -1,11 +1,11 @@
1
- import { BaseEntityType } from '../../../classes/entity.model';
2
1
  import { BaseBuilder } from '../../../classes/base.builder';
2
+ import { BaseEntityType } from '../../../classes/entity.model';
3
3
  import { ConfirmDialogData } from '../../confirm-dialog/confirm-dialog-data';
4
- import { EditDialogData } from '../table-data';
4
+ import { EditData } from '../table-data';
5
5
  /**
6
- * The internal EditDialogData. Requires all default values the user can leave out.
6
+ * The internal EditData. Requires all default values the user can leave out.
7
7
  */
8
- export declare class EditDialogDataInternal<EntityType extends BaseEntityType<EntityType>> implements EditDialogData<EntityType> {
8
+ export declare class EditDataInternal<EntityType extends BaseEntityType<EntityType>> implements EditData<EntityType> {
9
9
  title: (entity: EntityType) => string;
10
10
  confirmButtonLabel: string;
11
11
  deleteButtonLabel: string;
@@ -19,7 +19,7 @@ export declare class EditDialogDataInternal<EntityType extends BaseEntityType<En
19
19
  /**
20
20
  * The Builder for the EditDialogData. Sets default values.
21
21
  */
22
- export declare class EditDialogDataBuilder<EntityType extends BaseEntityType<EntityType>> extends BaseBuilder<EditDialogDataInternal<EntityType>, EditDialogData<EntityType>> {
23
- constructor(data?: EditDialogData<EntityType>);
24
- protected generateBaseData(data?: EditDialogData<EntityType>): EditDialogDataInternal<EntityType>;
22
+ export declare class EditDialogDataBuilder<EntityType extends BaseEntityType<EntityType>> extends BaseBuilder<EditDataInternal<EntityType>, EditData<EntityType>> {
23
+ constructor(data?: EditData<EntityType>);
24
+ protected generateBaseData(data?: EditData<EntityType>): EditDataInternal<EntityType>;
25
25
  }
@@ -1,11 +1,11 @@
1
1
  import { HttpClient } from '@angular/common/http';
2
2
  import { BaseEntityType } from '../../../classes/entity.model';
3
- import { EntityService } from '../../../classes/entity.service';
4
- import { EditDialogData } from '../table-data';
3
+ import { EntityService } from '../../../services/entity.service';
4
+ import { EditData } from '../table-data';
5
5
  /**
6
- * The Definition of the Edit Entity Dialog Data.
6
+ * The Definition of the Edit Entity Dialog or page Data.
7
7
  */
8
- export interface EditEntityDialogData<EntityType extends BaseEntityType<EntityType>> {
8
+ export interface EditEntityData<EntityType extends BaseEntityType<EntityType>> {
9
9
  /**
10
10
  * The entity to edit.
11
11
  */
@@ -17,7 +17,7 @@ export interface EditEntityDialogData<EntityType extends BaseEntityType<EntityTy
17
17
  /**
18
18
  * The info of the generic edit-dialog.
19
19
  */
20
- editDialogData?: EditDialogData<EntityType>;
20
+ editData?: EditData<EntityType>;
21
21
  /**
22
22
  * Whether or not the user can delete this specific entity.
23
23
  */
@@ -1,10 +1,10 @@
1
1
  import { Injector, OnInit } from '@angular/core';
2
2
  import { MatDialog, MatDialogRef } from '@angular/material/dialog';
3
- import { EntityService } from '../../../classes/entity.service';
4
- import { EntityTab, EntityUtilities } from '../../../classes/entity.utilities';
5
- import { EditEntityDialogData } from './edit-entity-dialog-data';
6
- import { EditEntityDialogDataInternal } from './edit-entity-dialog.builder';
7
3
  import { BaseEntityType } from '../../../classes/entity.model';
4
+ import { EntityService } from '../../../services/entity.service';
5
+ import { EntityTab, EntityUtilities } from '../../../utilities/entity.utilities';
6
+ import { EditEntityData } from './edit-entity-data';
7
+ import { EditEntityDataInternal } from './edit-entity.builder';
8
8
  import * as i0 from "@angular/core";
9
9
  /**
10
10
  * The default dialog used to edit an existing entity based on the configuration passed in the MAT_DIALOG_DATA "inputData".
@@ -21,11 +21,11 @@ export declare class NgxMatEntityEditDialogComponent<EntityType extends BaseEnti
21
21
  entityTabs: EntityTab<EntityType>[];
22
22
  entityService: EntityService<EntityType>;
23
23
  entityPriorChanges: EntityType;
24
- data: EditEntityDialogDataInternal<EntityType>;
24
+ data: EditEntityDataInternal<EntityType>;
25
25
  isEntityValid: boolean;
26
26
  isEntityDirty: boolean;
27
27
  isReadOnly: boolean;
28
- constructor(inputData: EditEntityDialogData<EntityType>, dialogRef: MatDialogRef<NgxMatEntityEditDialogComponent<EntityType>>, injector: Injector, dialog: MatDialog);
28
+ constructor(inputData: EditEntityData<EntityType>, dialogRef: MatDialogRef<NgxMatEntityEditDialogComponent<EntityType>>, injector: Injector, dialog: MatDialog);
29
29
  ngOnInit(): void;
30
30
  /**
31
31
  * Checks if the entity has become invalid or dirty.
@@ -0,0 +1,24 @@
1
+ import { HttpClient } from '@angular/common/http';
2
+ import { BaseBuilder } from '../../../classes/base.builder';
3
+ import { BaseEntityType } from '../../../classes/entity.model';
4
+ import { EntityService } from '../../../services/entity.service';
5
+ import { EditDataInternal } from './edit-data.builder';
6
+ import { EditEntityData } from './edit-entity-data';
7
+ /**
8
+ * The internal EditEntityData. Requires all default values the user can leave out.
9
+ */
10
+ export declare class EditEntityDataInternal<EntityType extends BaseEntityType<EntityType>> implements EditEntityData<EntityType> {
11
+ entity: EntityType;
12
+ EntityServiceClass: new (httpClient: HttpClient) => EntityService<EntityType>;
13
+ editData: EditDataInternal<EntityType>;
14
+ allowUpdate: (entity: EntityType) => boolean;
15
+ allowDelete: (entity: EntityType) => boolean;
16
+ constructor(entity: EntityType, EntityServiceClass: new (httpClient: HttpClient) => EntityService<EntityType>, editData: EditDataInternal<EntityType>, allowUpdate: (entity: EntityType) => boolean, allowDelete: (entity: EntityType) => boolean);
17
+ }
18
+ /**
19
+ * The Builder for the EditEntityData. Sets default values.
20
+ */
21
+ export declare class EditEntityDataBuilder<EntityType extends BaseEntityType<EntityType>> extends BaseBuilder<EditEntityDataInternal<EntityType>, EditEntityData<EntityType>> {
22
+ constructor(data: EditEntityData<EntityType>);
23
+ protected generateBaseData(data: EditEntityData<EntityType>): EditEntityDataInternal<EntityType>;
24
+ }
@@ -1,18 +1,18 @@
1
- import { EntityService } from '../../classes/entity.service';
2
- import { CreateDialogDataInternal } from './create-dialog/create-dialog-data.builder';
3
- import { EditDialogDataInternal } from './edit-dialog/edit-dialog-data.builder';
4
- import { BaseData, DisplayColumn, MultiSelectAction, TableData } from './table-data';
5
1
  import { HttpClient } from '@angular/common/http';
6
2
  import { BaseBuilder } from '../../classes/base.builder';
7
3
  import { BaseEntityType, EntityClassNewable } from '../../classes/entity.model';
4
+ import { EntityService } from '../../services/entity.service';
5
+ import { CreateDialogDataInternal } from './create-dialog/create-dialog-data.builder';
6
+ import { EditDataInternal } from './edit-dialog/edit-data.builder';
7
+ import { BaseData, DisplayColumn, MultiSelectAction, TableData } from './table-data';
8
8
  /**
9
9
  * The internal TableData. Requires all default values the user can leave out.
10
10
  */
11
11
  export declare class TableDataInternal<EntityType extends BaseEntityType<EntityType>> implements TableData<EntityType> {
12
12
  baseData: BaseDataInternal<EntityType>;
13
13
  createDialogData: CreateDialogDataInternal;
14
- editDialogData: EditDialogDataInternal<EntityType>;
15
- constructor(baseData: BaseDataInternal<EntityType>, createDialogData: CreateDialogDataInternal, editDialogData: EditDialogDataInternal<EntityType>);
14
+ editData: EditDataInternal<EntityType>;
15
+ constructor(baseData: BaseDataInternal<EntityType>, createDialogData: CreateDialogDataInternal, editDialogData: EditDataInternal<EntityType>);
16
16
  }
17
17
  /**
18
18
  * The Builder for the table BaseData. Sets default values.
@@ -30,6 +30,7 @@ export declare class BaseDataInternal<EntityType extends BaseEntityType<EntityTy
30
30
  EntityServiceClass: new (httpClient: HttpClient) => EntityService<EntityType>;
31
31
  searchLabel: string;
32
32
  createButtonLabel: string;
33
+ defaultEdit: 'dialog' | 'page';
33
34
  searchString: (entity: EntityType) => string;
34
35
  allowCreate: () => boolean;
35
36
  allowRead: (entity: EntityType) => boolean;
@@ -37,10 +38,11 @@ export declare class BaseDataInternal<EntityType extends BaseEntityType<EntityTy
37
38
  allowDelete: (entity: EntityType) => boolean;
38
39
  multiSelectActions: MultiSelectAction<EntityType>[];
39
40
  multiSelectLabel: string;
41
+ displayLoadingSpinner: boolean;
40
42
  EntityClass?: EntityClassNewable<EntityType>;
41
43
  edit?: (entity: EntityType) => unknown;
42
44
  create?: (entity: EntityType) => unknown;
43
- constructor(title: string, displayColumns: DisplayColumn<EntityType>[], EntityServiceClass: new (httpClient: HttpClient) => EntityService<EntityType>, searchLabel: string, createButtonLabel: string, searchString: (entity: EntityType) => string, allowCreate: () => boolean, allowRead: (entity: EntityType) => boolean, allowUpdate: (entity: EntityType) => boolean, allowDelete: (entity: EntityType) => boolean, multiSelectActions: MultiSelectAction<EntityType>[], multiSelectLabel: string, EntityClass?: EntityClassNewable<EntityType>, edit?: (entity: EntityType) => unknown, create?: (entity: EntityType) => unknown);
45
+ constructor(title: string, displayColumns: DisplayColumn<EntityType>[], EntityServiceClass: new (httpClient: HttpClient) => EntityService<EntityType>, searchLabel: string, createButtonLabel: string, defaultEdit: 'dialog' | 'page', searchString: (entity: EntityType) => string, allowCreate: () => boolean, allowRead: (entity: EntityType) => boolean, allowUpdate: (entity: EntityType) => boolean, allowDelete: (entity: EntityType) => boolean, multiSelectActions: MultiSelectAction<EntityType>[], multiSelectLabel: string, displayLoadingSpinner: boolean, EntityClass?: EntityClassNewable<EntityType>, edit?: (entity: EntityType) => unknown, create?: (entity: EntityType) => unknown);
44
46
  }
45
47
  /**
46
48
  * The Builder for the complete TableData. Sets default values and validates user input.