@acorex/modules 21.0.0-next.12 → 21.0.0-next.13

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 (34) hide show
  1. package/data-management/index.d.ts +35 -2
  2. package/document-management/index.d.ts +76 -261
  3. package/fesm2022/acorex-modules-data-management.mjs +231 -2
  4. package/fesm2022/acorex-modules-data-management.mjs.map +1 -1
  5. package/fesm2022/acorex-modules-document-management.mjs +529 -2717
  6. package/fesm2022/acorex-modules-document-management.mjs.map +1 -1
  7. package/fesm2022/{acorex-modules-human-capital-management-leave-request.entity-BDSyXKSF.mjs → acorex-modules-human-capital-management-leave-request.entity-CviI9xJC.mjs} +2 -2
  8. package/fesm2022/acorex-modules-human-capital-management-leave-request.entity-CviI9xJC.mjs.map +1 -0
  9. package/fesm2022/acorex-modules-human-capital-management.mjs +350 -695
  10. package/fesm2022/acorex-modules-human-capital-management.mjs.map +1 -1
  11. package/fesm2022/{acorex-modules-task-management-task-board.page-Cgxdk78j.mjs → acorex-modules-task-management-task-board.page-B_S373L-.mjs} +47 -54
  12. package/fesm2022/acorex-modules-task-management-task-board.page-B_S373L-.mjs.map +1 -0
  13. package/fesm2022/acorex-modules-task-management.mjs +39 -11
  14. package/fesm2022/acorex-modules-task-management.mjs.map +1 -1
  15. package/fesm2022/acorex-modules-workflow-management-activity-definition.entity-BbBEPTBa.mjs +258 -0
  16. package/fesm2022/acorex-modules-workflow-management-activity-definition.entity-BbBEPTBa.mjs.map +1 -0
  17. package/fesm2022/acorex-modules-workflow-management-workflow-definition.entity-nJMBL0qt.mjs +371 -0
  18. package/fesm2022/acorex-modules-workflow-management-workflow-definition.entity-nJMBL0qt.mjs.map +1 -0
  19. package/fesm2022/acorex-modules-workflow-management-workflow-instance.entity-Pso0oRN5.mjs +313 -0
  20. package/fesm2022/acorex-modules-workflow-management-workflow-instance.entity-Pso0oRN5.mjs.map +1 -0
  21. package/fesm2022/acorex-modules-workflow-management.mjs +710 -2536
  22. package/fesm2022/acorex-modules-workflow-management.mjs.map +1 -1
  23. package/human-capital-management/index.d.ts +19 -79
  24. package/package.json +14 -14
  25. package/task-management/index.d.ts +12 -1
  26. package/workflow-management/index.d.ts +220 -265
  27. package/fesm2022/acorex-modules-human-capital-management-leave-request-task-popover.component-yGvT9kSL.mjs +0 -381
  28. package/fesm2022/acorex-modules-human-capital-management-leave-request-task-popover.component-yGvT9kSL.mjs.map +0 -1
  29. package/fesm2022/acorex-modules-human-capital-management-leave-request.entity-BDSyXKSF.mjs.map +0 -1
  30. package/fesm2022/acorex-modules-task-management-task-board.page-Cgxdk78j.mjs.map +0 -1
  31. package/fesm2022/acorex-modules-workflow-management-cartable-page.component-Bso0XRkJ.mjs +0 -296
  32. package/fesm2022/acorex-modules-workflow-management-cartable-page.component-Bso0XRkJ.mjs.map +0 -1
  33. package/fesm2022/acorex-modules-workflow-management-index-xB36g4F1.mjs +0 -469
  34. package/fesm2022/acorex-modules-workflow-management-index-xB36g4F1.mjs.map +0 -1
@@ -1,7 +1,7 @@
1
1
  import { AXPSessionService, AXPAuthGuard, AXP_PERMISSION_DEFINITION_PROVIDER } from '@acorex/platform/auth';
2
2
  import { AXPEntityService, AXMEntityCrudServiceImpl, entityMasterCrudActions, entityMasterRecordActions, cloneLayoutArrays, ensureLayoutSection, ensureLayoutPropertyView, ensureListActions, actionExists, AXPEntityDefinitionRegistryService, AXP_ENTITY_CONFIG_TOKEN, AXP_ENTITY_ACTION_PLUGIN, AXP_ENTITY_STORAGE_MIDDLEWARE, AXP_ENTITY_DEFINITION_LOADER } from '@acorex/platform/layout/entity';
3
3
  import { AXPHookService, AXPPlatformScope, AXPDataGenerator, AXP_MODULE_MANIFEST_PROVIDER, AXP_FEATURE_DEFINITION_PROVIDER, AXP_DISTRIBUTED_EVENT_LISTENER_PROVIDER, AXPDeviceService, resolvePlatformScopeKey, resolvePlatformScopeName } from '@acorex/platform/core';
4
- import { AXPSearchCommandProvider, createAllQueryView, createQueryView, AXPEntityCommandScope, AXPEntityQueryType, AXPFileTypeProviderService, AXP_FILE_TYPE_INFO_PROVIDER, AXPFileStorageService, AXPFilterOperatorMiddlewareService, AXPSettingsService, AXPLockService, UploadFromComputerActionProvider, AXP_FILE_ACTION_PROVIDER, AXP_MENU_PROVIDER, AXP_SEARCH_PROVIDER } from '@acorex/platform/common';
4
+ import { AXPSearchCommandProvider, createAllQueryView, AXPFileTypeProviderService, AXP_FILE_TYPE_INFO_PROVIDER, AXPFileStorageService, AXPFilterOperatorMiddlewareService, AXPSettingsService, AXPLockService, UploadFromComputerActionProvider, AXP_FILE_ACTION_PROVIDER, AXPEntityCommandScope, AXP_MENU_PROVIDER, AXP_SEARCH_PROVIDER } from '@acorex/platform/common';
5
5
  import * as i0 from '@angular/core';
6
6
  import { Injectable, inject, Injector, NgModule, ChangeDetectionStrategy, Component, signal, computed, viewChild, input, effect, ViewEncapsulation, untracked, HostListener } from '@angular/core';
7
7
  import * as i3$2 from '@acorex/core/translation';
@@ -10,7 +10,6 @@ import { firstValueFrom } from 'rxjs';
10
10
  import * as i6 from '@acorex/platform/layout/widget-core';
11
11
  import { AXPWidgetsCatalog, AXPValueWidgetComponent, AXPWidgetCoreModule, AXP_WIDGETS_ADVANCE_CATEGORY } from '@acorex/platform/layout/widget-core';
12
12
  import { RouterModule, ROUTES, Router, ActivatedRoute } from '@angular/router';
13
- import { set, castArray, get as get$1 } from 'lodash-es';
14
13
  import { AXDataSource } from '@acorex/cdk/common';
15
14
  import * as i7 from '@acorex/components/collapse';
16
15
  import { AXCollapseModule } from '@acorex/components/collapse';
@@ -25,7 +24,7 @@ import { AXSelectBoxModule } from '@acorex/components/select-box';
25
24
  import * as i2 from '@angular/forms';
26
25
  import { FormsModule } from '@angular/forms';
27
26
  import get from 'lodash-es/get';
28
- import set$1 from 'lodash-es/set';
27
+ import set from 'lodash-es/set';
29
28
  import { AXP_NAME_PROPERTY, AXP_DATA_PATH_PROPERTY } from '@acorex/platform/layout/widgets';
30
29
  import * as i2$2 from '@acorex/components/media-viewer';
31
30
  import { AXMediaViewerModule } from '@acorex/components/media-viewer';
@@ -42,6 +41,7 @@ import { AXPStateMessageComponent, AXPThemeLayoutBlockComponent } from '@acorex/
42
41
  import { AXPLayoutThemeService } from '@acorex/platform/themes/shared';
43
42
  import * as i1$2 from '@angular/common';
44
43
  import { CommonModule } from '@angular/common';
44
+ import { castArray, get as get$1, set as set$1 } from 'lodash-es';
45
45
  import { AXDialogService } from '@acorex/components/dialog';
46
46
  import { AXPopupService } from '@acorex/components/popup';
47
47
  import { AXPLayoutBuilderService } from '@acorex/platform/layout/builder';
@@ -72,18 +72,6 @@ const RootConfig = {
72
72
  icon: 'fa-light fa-books',
73
73
  },
74
74
  entities: {
75
- documentRelated: {
76
- name: 'DocumentRelated',
77
- title: `@${config.i18n}:entities.document.title`,
78
- titlePlural: `@${config.i18n}:entities.document.title-plural`,
79
- icon: 'fa-light fa-default',
80
- },
81
- review: {
82
- name: 'Review',
83
- title: `@${config.i18n}:entities.review.title`,
84
- titlePlural: `@${config.i18n}:entities.review.title-plural`,
85
- icon: 'fa-light fa-file-pen',
86
- },
87
75
  folder: {
88
76
  name: 'Folder',
89
77
  title: `@${config.i18n}:entities.folder.title`,
@@ -102,24 +90,6 @@ const RootConfig = {
102
90
  titlePlural: `@${config.i18n}:entities.document-type.title-plural`,
103
91
  icon: 'fa-light fa-books',
104
92
  },
105
- documentTypeMetaDefinition: {
106
- name: 'documentTypeMeta',
107
- title: `@${config.i18n}:entities.document-type-meta.title`,
108
- titlePlural: `@${config.i18n}:entities.document-type-meta.title-plural`,
109
- icon: 'fa-light fa-meta',
110
- },
111
- documentTypeMetaValue: {
112
- name: 'documentTypeMetaValue',
113
- title: `@${config.i18n}:entities.document-type-meta-value.title`,
114
- titlePlural: `@${config.i18n}:entities.document-type-meta-value.title-plural`,
115
- icon: 'fa-light fa-meta',
116
- },
117
- documentTypeStatus: {
118
- name: 'documentTypeStatus',
119
- title: `@${config.i18n}:entities.document-type-status.title`,
120
- titlePlural: `@${config.i18n}:entities.document-type-status.title-plural`,
121
- icon: 'fa-light fa-status',
122
- },
123
93
  },
124
94
  };
125
95
 
@@ -194,13 +164,6 @@ const AXMPermissionsKeys = {
194
164
  Delete: 'DocumentManagement:Permission:Driver.Delete',
195
165
  Create: 'DocumentManagement:Permission:Driver.Create',
196
166
  },
197
- Review: {
198
- Management: 'DocumentManagement:Permission:Review.Management',
199
- View: 'DocumentManagement:Permission:Review.View',
200
- Edit: 'DocumentManagement:Permission:Review.Edit',
201
- Delete: 'DocumentManagement:Permission:Review.Delete',
202
- Create: 'DocumentManagement:Permission:Review.Create',
203
- },
204
167
  },
205
168
  };
206
169
 
@@ -226,13 +189,6 @@ class AXMPermissionDefinitionProvider {
226
189
  .addChild(keys.Driver.Edit, await trans('driver.edit.title'), await trans('driver.edit.description'))
227
190
  .addChild(keys.Driver.Delete, await trans('driver.delete.title'), await trans('driver.delete.description'))
228
191
  .addChild(keys.Driver.Create, await trans('driver.create.title'), await trans('driver.create.description'))
229
- .endPermission()
230
- //
231
- .addPermission(keys.Review.Management, await trans('review.manage.title'), await trans('review.manage.description'))
232
- .addChild(keys.Review.View, await trans('review.view.title'), await trans('review.view.description'))
233
- .addChild(keys.Review.Edit, await trans('review.edit.title'), await trans('review.edit.description'))
234
- .addChild(keys.Review.Delete, await trans('review.delete.title'), await trans('review.delete.description'))
235
- .addChild(keys.Review.Create, await trans('review.create.title'), await trans('review.create.description'))
236
192
  .endPermission();
237
193
  //
238
194
  }
@@ -333,25 +289,21 @@ class AXMEntityProvider {
333
289
  }));
334
290
  }
335
291
  async get(moduleName, entityName) {
336
- if (moduleName == RootConfig.module.name) {
292
+ if (moduleName === RootConfig.module.name) {
337
293
  switch (entityName) {
338
- case RootConfig.entities.document.name:
339
- return (await Promise.resolve().then(function () { return index; })).documentFactory(this.injector);
340
294
  case RootConfig.entities.documentType.name:
341
295
  return (await Promise.resolve().then(function () { return index; })).documentTypeFactory(this.injector);
342
296
  case RootConfig.entities.folder.name:
343
- return (await Promise.resolve().then(function () { return index; })).folderFactory(this.injector);
344
- case RootConfig.entities.review.name:
345
- return (await Promise.resolve().then(function () { return index; })).reviewFactory(this.injector);
346
- case RootConfig.entities.documentRelated.name:
347
- return (await Promise.resolve().then(function () { return index; })).documentRelatedFactory(this.injector);
297
+ return (await Promise.resolve().then(function () { return folder_entity; })).folderEntityFactory(this.injector);
298
+ case RootConfig.entities.document.name:
299
+ return (await Promise.resolve().then(function () { return document_entity; })).documentEntityFactory(this.injector);
348
300
  }
349
301
  }
350
302
  return null;
351
303
  }
352
304
  async list() {
353
305
  const m = RootConfig.module.name;
354
- const entities = Object.values(RootConfig.entities);
306
+ const entities = [RootConfig.entities.documentType];
355
307
  return Promise.resolve(entities.map((e) => ({ name: e.name, module: m })));
356
308
  }
357
309
  static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.3.16", ngImport: i0, type: AXMEntityProvider, deps: [], target: i0.ɵɵFactoryTarget.Injectable }); }
@@ -380,6 +332,37 @@ class AXMSearchCommandProvider extends AXPSearchCommandProvider {
380
332
  }
381
333
  }
382
334
 
335
+ /**
336
+ * Minimal entity definition for Document so the entity registry can resolve
337
+ * DocumentManagement.Document. Used by AXMDocumentService (AXMEntityCrudServiceImpl).
338
+ * No list/form UI; documents are handled by document-explorer.
339
+ */
340
+ async function documentEntityFactory(_injector) {
341
+ const entityDef = {
342
+ module: RootConfig.module.name,
343
+ name: RootConfig.entities.document.name,
344
+ title: RootConfig.entities.document.title,
345
+ parentKey: 'parentId',
346
+ formats: {
347
+ individual: RootConfig.entities.document.title,
348
+ plural: RootConfig.entities.document.titlePlural,
349
+ searchResult: {
350
+ title: '{{ title }}',
351
+ description: RootConfig.module.title,
352
+ },
353
+ },
354
+ relatedEntities: [],
355
+ groups: [],
356
+ properties: [],
357
+ };
358
+ return entityDef;
359
+ }
360
+
361
+ var document_entity = /*#__PURE__*/Object.freeze({
362
+ __proto__: null,
363
+ documentEntityFactory: documentEntityFactory
364
+ });
365
+
383
366
  class AXMDocumentService extends AXMEntityCrudServiceImpl {
384
367
  }
385
368
  class AXMDocumentServiceImpl extends AXMDocumentService {
@@ -393,23 +376,15 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.16", ngImpo
393
376
  type: Injectable
394
377
  }], ctorParameters: () => [] });
395
378
 
396
- var document_service = /*#__PURE__*/Object.freeze({
397
- __proto__: null,
398
- AXMDocumentService: AXMDocumentService,
399
- AXMDocumentServiceImpl: AXMDocumentServiceImpl
400
- });
401
-
402
- async function documentFactory(injector) {
403
- const dataService = injector.get(AXMDocumentService);
379
+ async function documentTypeFactory(injector) {
404
380
  const i18n = RootConfig.config.i18n;
405
381
  const entityDef = {
406
382
  module: RootConfig.module.name,
407
- name: RootConfig.entities.document.name,
408
- title: RootConfig.entities.document.title,
409
- icon: RootConfig.entities.document.icon,
383
+ name: RootConfig.entities.documentType.name,
384
+ title: RootConfig.entities.documentType.title,
410
385
  formats: {
411
- individual: RootConfig.entities.review.title,
412
- plural: RootConfig.entities.review.titlePlural,
386
+ individual: RootConfig.entities.documentType.title,
387
+ plural: RootConfig.entities.documentType.titlePlural,
413
388
  searchResult: {
414
389
  title: '{{ title }}',
415
390
  description: RootConfig.module.title,
@@ -418,62 +393,34 @@ async function documentFactory(injector) {
418
393
  plugins: [
419
394
  { name: 'history' },
420
395
  {
421
- name: 'attachments',
422
- options: {
423
- multiple: false,
424
- field: 'fileId',
425
- },
396
+ name: 'meta-data-selector'
426
397
  },
427
- { name: 'meta-data-form', options: { path: 'typeId' } }
428
398
  ],
429
- relatedEntities: [
399
+ relatedEntities: [],
400
+ groups: [
430
401
  {
431
- entity: `${RootConfig.module.name}.${RootConfig.entities.review.name}`,
432
- conditions: [
433
- {
434
- name: 'documentId',
435
- operator: {
436
- type: 'equal',
437
- },
438
- value: '{{context.eval("id")}}',
439
- },
440
- ],
441
- // hidden: '{{context.eval("toggle")}}',
442
- actions: [],
402
+ id: 'basic-info',
403
+ title: RootConfig.entities.documentType.title,
443
404
  },
444
- ],
445
- groups: [
446
405
  {
447
- id: 'section',
448
- title: RootConfig.entities.document.title,
406
+ id: 'management',
407
+ title: `@${i18n}:terms.common.management`,
449
408
  },
450
409
  ],
451
410
  properties: [
452
411
  {
453
412
  name: 'name',
454
413
  title: '@general:terms.common.name',
455
- groupId: 'section',
414
+ groupId: 'basic-info',
456
415
  options: {
457
416
  sort: {
458
417
  enabled: true,
459
418
  },
460
- filter: {
461
- inline: {
462
- enabled: true,
463
- },
464
- advance: {
465
- enabled: true,
466
- },
467
- },
468
419
  },
469
420
  schema: {
470
421
  dataType: 'string',
471
- readonly: true,
472
422
  interface: {
473
423
  type: AXPWidgetsCatalog.text,
474
- options: {
475
- placeholder: '@general:terms.common.name',
476
- },
477
424
  },
478
425
  },
479
426
  validations: [
@@ -483,17 +430,13 @@ async function documentFactory(injector) {
483
430
  ],
484
431
  },
485
432
  {
486
- name: 'typeId',
487
- title: '@general:terms.common.type',
488
- groupId: 'section',
433
+ name: 'title',
434
+ title: '@general:terms.common.title',
435
+ groupId: 'basic-info',
489
436
  schema: {
490
437
  dataType: 'string',
491
- readonly: true,
492
438
  interface: {
493
- type: AXPWidgetsCatalog.lookup,
494
- options: {
495
- entity: `${RootConfig.module.name}.${RootConfig.entities.documentType.name}`,
496
- },
439
+ type: AXPWidgetsCatalog.text,
497
440
  },
498
441
  },
499
442
  validations: [
@@ -503,196 +446,130 @@ async function documentFactory(injector) {
503
446
  ],
504
447
  },
505
448
  {
506
- name: 'version',
507
- title: `@${i18n}:terms.common.version`,
508
- groupId: 'section',
449
+ name: 'maxSize',
450
+ title: `@${i18n}:terms.document.max-size`,
451
+ groupId: 'basic-info',
509
452
  schema: {
510
453
  dataType: 'number',
511
- readonly: true,
512
454
  interface: {
513
- type: AXPWidgetsCatalog.number,
514
- options: {},
455
+ type: AXPWidgetsCatalog.numberUnit,
456
+ options: {
457
+ textField: 'name',
458
+ valueField: 'value',
459
+ dataSource: [
460
+ {
461
+ name: 'kb',
462
+ value: 'KB',
463
+ calUnit: 1,
464
+ },
465
+ {
466
+ name: 'mb',
467
+ value: 'MB',
468
+ calUnit: 1024,
469
+ },
470
+ {
471
+ name: 'gb',
472
+ value: 'GB',
473
+ calUnit: 1024 * 1024,
474
+ },
475
+ ],
476
+ mainUnit: 'kb',
477
+ },
515
478
  },
516
479
  },
480
+ validations: [
481
+ {
482
+ rule: 'required',
483
+ },
484
+ ],
517
485
  },
518
486
  {
519
- name: 'size',
520
- title: `@${i18n}:terms.common.size`,
487
+ name: 'isEncrypted',
488
+ title: `@${i18n}:terms.document.is-encrypted`,
489
+ groupId: 'basic-info',
521
490
  schema: {
522
- dataType: 'number',
523
- readonly: true,
491
+ dataType: 'boolean',
524
492
  interface: {
525
- type: AXPWidgetsCatalog.number,
526
- options: {},
493
+ type: AXPWidgetsCatalog.toggle,
527
494
  },
528
495
  },
529
496
  },
530
497
  {
531
- name: 'status',
532
- title: `@${i18n}:terms.common.status`,
533
- groupId: 'section',
534
- options: {
535
- sort: {
536
- enabled: true,
498
+ name: 'enableExpiration',
499
+ title: `@${i18n}:terms.document.enable-expiration`,
500
+ groupId: 'management',
501
+ schema: {
502
+ dataType: 'boolean',
503
+ interface: {
504
+ type: AXPWidgetsCatalog.toggle,
537
505
  },
538
- filter: {
539
- inline: {
540
- enabled: true,
541
- },
542
- advance: {
543
- enabled: true,
544
- },
506
+ },
507
+ },
508
+ {
509
+ name: 'requiresReview',
510
+ title: `@${i18n}:terms.document.requires-review`,
511
+ groupId: 'management',
512
+ schema: {
513
+ dataType: 'boolean',
514
+ interface: {
515
+ type: AXPWidgetsCatalog.toggle,
545
516
  },
546
517
  },
518
+ },
519
+ {
520
+ name: 'enableVersioning',
521
+ title: `@${i18n}:terms.document.enable-versioning`,
522
+ groupId: 'management',
547
523
  schema: {
548
- dataType: 'string',
549
- readonly: true,
524
+ dataType: 'boolean',
550
525
  interface: {
551
- type: AXPWidgetsCatalog.text,
526
+ type: AXPWidgetsCatalog.toggle,
552
527
  options: {
553
- content: `{{ context.eval('status') }}`,
528
+ disabled: '{{ !!context.eval("requiresReview") }}',
554
529
  },
530
+ triggers: [
531
+ {
532
+ event: "{{ events.context('requiresReview') }}",
533
+ action: "{{ context.set('enableVersioning', true) }}",
534
+ },
535
+ ],
555
536
  },
556
537
  },
557
538
  },
558
- ],
559
- columns: [
560
- { name: 'name' },
561
- { name: 'status' },
562
- { name: 'version' },
563
- ],
564
- queries: {
565
- byKey: {
566
- execute: async (id) => {
567
- const x = await dataService.getOne(id);
568
- x.fileId = [x.fileId];
569
- set(x, 'typeId', x.documentType.id);
570
- return x;
571
- },
572
- type: AXPEntityQueryType.Single,
573
- },
574
- list: {
575
- execute: async (e) => {
576
- const filter = e.filter;
577
- // Base filter for requiresReview
578
- const baseFilters = [
579
- {
580
- field: 'documentType.requiresReview',
581
- operator: { type: 'equal' },
582
- value: true,
583
- },
584
- ];
585
- // Check if e.filter has filters array with items
586
- const hasAdditionalFilters = filter?.filters && Array.isArray(filter.filters) && filter.filters.length > 0;
587
- // Combine filters if additional filters exist
588
- const allFilters = hasAdditionalFilters
589
- ? [...baseFilters, ...filter.filters]
590
- : baseFilters;
591
- const x = await dataService.query({
592
- skip: e.skip,
593
- take: e.take,
594
- filter: {
595
- logic: 'and',
596
- filters: allFilters,
597
- },
598
- });
599
- return x;
539
+ // {
540
+ // name: 'meta',
541
+ // title: `t("metaTitle", { scope: "${i18n}" })`,
542
+ // groupId: 'section',
543
+ // schema: {
544
+ // dataType: 'object',
545
+ // interface: {
546
+ // type: 'meta-selector-editor',
547
+ // },
548
+ // },
549
+ // },
550
+ {
551
+ name: 'type',
552
+ title: `@${i18n}:terms.common.type`,
553
+ groupId: 'basic-info',
554
+ schema: {
555
+ dataType: 'object',
556
+ interface: {
557
+ type: AXPWidgetsCatalog.fileTypeExtension,
558
+ options: {},
559
+ },
600
560
  },
601
- type: AXPEntityQueryType.List,
602
561
  },
603
- },
562
+ ],
563
+ columns: [{ name: 'name' }, { name: 'title' }],
604
564
  interfaces: {
605
565
  master: {
606
566
  create: {
607
567
  sections: [
608
568
  {
609
- id: 'section',
610
- },
611
- ],
612
- properties: [
613
- {
614
- name: 'name',
615
- layout: {
616
- positions: {
617
- lg: {
618
- colSpan: 6,
619
- },
620
- },
621
- },
622
- },
623
- {
624
- name: 'typeId',
625
- layout: {
626
- positions: {
627
- lg: {
628
- colSpan: 12,
629
- },
630
- },
631
- },
569
+ id: 'basic-info',
632
570
  },
633
- ],
634
- },
635
- // update: {
636
- // sections: [
637
- // {
638
- // id: 'section',
639
- // },
640
- // ],
641
- // properties: [
642
- // {
643
- // name: 'name',
644
- // layout: {
645
- // positions: {
646
- // lg: {
647
- // colSpan: 6,
648
- // },
649
- // },
650
- // },
651
- // },
652
- // {
653
- // name: 'type',
654
- // layout: {
655
- // positions: {
656
- // lg: {
657
- // colSpan: 12,
658
- // },
659
- // },
660
- // },
661
- // },
662
- // {
663
- // name: 'metaData',
664
- // layout: {
665
- // positions: {
666
- // lg: {
667
- // colSpan: 12,
668
- // },
669
- // },
670
- // },
671
- // },
672
- // {
673
- // name: 'file',
674
- // layout: {
675
- // positions: {
676
- // lg: {
677
- // colSpan: 12,
678
- // },
679
- // },
680
- // },
681
- // },
682
- // ],
683
- // },
684
- single: {
685
- title: '{{title}}',
686
- sections: [
687
571
  {
688
- id: 'section',
689
- layout: {
690
- positions: {
691
- lg: {
692
- colSpan: 12,
693
- },
694
- },
695
- },
572
+ id: 'management',
696
573
  },
697
574
  ],
698
575
  properties: [
@@ -707,47 +584,7 @@ async function documentFactory(injector) {
707
584
  },
708
585
  },
709
586
  {
710
- name: 'typeId',
711
- layout: {
712
- positions: {
713
- lg: {
714
- colSpan: 6,
715
- },
716
- },
717
- },
718
- },
719
- // {
720
- // name: 'fileId',
721
- // layout: {
722
- // positions: {
723
- // lg: {
724
- // colSpan: 12,
725
- // },
726
- // },
727
- // },
728
- // },
729
- // {
730
- // name: 'file',
731
- // layout: {
732
- // positions: {
733
- // lg: {
734
- // colSpan: 12,
735
- // },
736
- // },
737
- // },
738
- // },
739
- {
740
- name: 'status',
741
- layout: {
742
- positions: {
743
- lg: {
744
- colSpan: 6,
745
- },
746
- },
747
- },
748
- },
749
- {
750
- name: 'version',
587
+ name: 'title',
751
588
  layout: {
752
589
  positions: {
753
590
  lg: {
@@ -756,2232 +593,72 @@ async function documentFactory(injector) {
756
593
  },
757
594
  },
758
595
  },
759
- ],
760
- actions: [],
761
- },
762
- list: {
763
- actions: [
764
- {
765
- title: '@general:actions.detail.title',
766
- command: 'open-entity',
767
- priority: 'secondary',
768
- type: 'view',
769
- default: true,
770
- scope: AXPEntityCommandScope.Individual,
771
- },
772
- ],
773
- views: [
774
- createAllQueryView({ sorts: [{ name: 'name', dir: 'asc' }] }),
775
- createQueryView('Draft', `@${i18n}:terms.workflow.draft`, true, {
776
- conditions: [
777
- {
778
- name: 'status',
779
- operator: {
780
- type: 'equal',
781
- },
782
- value: 'Draft',
783
- },
784
- ],
785
- }),
786
- createQueryView('PendingReview', `@${i18n}:terms.workflow.pending`, true, {
787
- conditions: [
788
- {
789
- name: 'status',
790
- operator: {
791
- type: 'equal',
792
- },
793
- value: 'PendingReview',
794
- },
795
- ],
796
- }),
797
- createQueryView('Reviewed', `@${i18n}:terms.workflow.reviewed`, true, {
798
- conditions: [
799
- {
800
- name: 'status',
801
- operator: {
802
- type: 'equal',
803
- },
804
- value: 'Reviewed',
805
- },
806
- ],
807
- }),
808
- ],
809
- },
810
- },
811
- },
812
- };
813
- return entityDef;
814
- }
815
-
816
- class AXMDocumentManagementDocumentEntityModule {
817
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.3.16", ngImport: i0, type: AXMDocumentManagementDocumentEntityModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule }); }
818
- static { this.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "14.0.0", version: "20.3.16", ngImport: i0, type: AXMDocumentManagementDocumentEntityModule }); }
819
- static { this.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "20.3.16", ngImport: i0, type: AXMDocumentManagementDocumentEntityModule, providers: [
820
- {
821
- provide: AXMDocumentService,
822
- useClass: AXMDocumentServiceImpl,
823
- },
824
- ] }); }
825
- }
826
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.16", ngImport: i0, type: AXMDocumentManagementDocumentEntityModule, decorators: [{
827
- type: NgModule,
828
- args: [{
829
- imports: [],
830
- exports: [],
831
- declarations: [],
832
- providers: [
833
- {
834
- provide: AXMDocumentService,
835
- useClass: AXMDocumentServiceImpl,
836
- },
837
- ],
838
- }]
839
- }] });
840
-
841
- function getNextStatus(options) {
842
- const { current, requiresReview, reviewFirst, reviewResult, } = options;
843
- switch (current) {
844
- case 'Draft':
845
- if (requiresReview)
846
- return 'PendingReview';
847
- return 'Completed';
848
- case 'PendingReview':
849
- if (reviewResult === 'rejected')
850
- return 'Rejected';
851
- if (reviewResult === 'approved') {
852
- return 'Completed';
853
- }
854
- return null;
855
- case 'Reviewed':
856
- return 'Completed';
857
- default:
858
- return null;
859
- }
860
- }
861
- const AXMDocumentWorkflowTransitionMap = {
862
- Draft: ['PendingReview', 'Completed'],
863
- PendingReview: ['Reviewed', 'Rejected'],
864
- Rejected: ['PendingReview'], // پس از اصلاح
865
- Reviewed: ['Completed', 'Distributed'],
866
- Distributed: ['Completed'],
867
- Completed: [],
868
- };
869
- function canTransition(from, to) {
870
- return AXMDocumentWorkflowTransitionMap[from]?.includes(to) ?? false;
871
- }
872
-
873
- async function documentTypeFactory(injector) {
874
- const i18n = RootConfig.config.i18n;
875
- const entityDef = {
876
- module: RootConfig.module.name,
877
- name: RootConfig.entities.documentType.name,
878
- title: RootConfig.entities.documentType.title,
879
- formats: {
880
- individual: RootConfig.entities.documentType.title,
881
- plural: RootConfig.entities.documentType.titlePlural,
882
- searchResult: {
883
- title: '{{ title }}',
884
- description: RootConfig.module.title,
885
- },
886
- },
887
- plugins: [
888
- { name: 'history' },
889
- {
890
- name: 'meta-data-selector'
891
- },
892
- ],
893
- relatedEntities: [],
894
- groups: [
895
- {
896
- id: 'basic-info',
897
- title: RootConfig.entities.documentType.title,
898
- },
899
- {
900
- id: 'management',
901
- title: `@${i18n}:terms.common.management`,
902
- },
903
- ],
904
- properties: [
905
- {
906
- name: 'name',
907
- title: '@general:terms.common.name',
908
- groupId: 'basic-info',
909
- options: {
910
- sort: {
911
- enabled: true,
912
- },
913
- },
914
- schema: {
915
- dataType: 'string',
916
- interface: {
917
- type: AXPWidgetsCatalog.text,
918
- },
919
- },
920
- validations: [
921
- {
922
- rule: 'required',
923
- },
924
- ],
925
- },
926
- {
927
- name: 'title',
928
- title: '@general:terms.common.title',
929
- groupId: 'basic-info',
930
- schema: {
931
- dataType: 'string',
932
- interface: {
933
- type: AXPWidgetsCatalog.text,
934
- },
935
- },
936
- validations: [
937
- {
938
- rule: 'required',
939
- },
940
- ],
941
- },
942
- {
943
- name: 'maxSize',
944
- title: `@${i18n}:terms.document.max-size`,
945
- groupId: 'basic-info',
946
- schema: {
947
- dataType: 'number',
948
- interface: {
949
- type: AXPWidgetsCatalog.numberUnit,
950
- options: {
951
- textField: 'name',
952
- valueField: 'value',
953
- dataSource: [
954
- {
955
- name: 'kb',
956
- value: 'KB',
957
- calUnit: 1,
958
- },
959
- {
960
- name: 'mb',
961
- value: 'MB',
962
- calUnit: 1024,
963
- },
964
- {
965
- name: 'gb',
966
- value: 'GB',
967
- calUnit: 1024 * 1024,
968
- },
969
- ],
970
- mainUnit: 'kb',
971
- },
972
- },
973
- },
974
- validations: [
975
- {
976
- rule: 'required',
977
- },
978
- ],
979
- },
980
- {
981
- name: 'isEncrypted',
982
- title: `@${i18n}:terms.document.is-encrypted`,
983
- groupId: 'basic-info',
984
- schema: {
985
- dataType: 'boolean',
986
- interface: {
987
- type: AXPWidgetsCatalog.toggle,
988
- },
989
- },
990
- },
991
- {
992
- name: 'enableExpiration',
993
- title: `@${i18n}:terms.document.enable-expiration`,
994
- groupId: 'management',
995
- schema: {
996
- dataType: 'boolean',
997
- interface: {
998
- type: AXPWidgetsCatalog.toggle,
999
- },
1000
- },
1001
- },
1002
- {
1003
- name: 'requiresReview',
1004
- title: `@${i18n}:terms.document.requires-review`,
1005
- groupId: 'management',
1006
- schema: {
1007
- dataType: 'boolean',
1008
- interface: {
1009
- type: AXPWidgetsCatalog.toggle,
1010
- },
1011
- },
1012
- },
1013
- {
1014
- name: 'enableVersioning',
1015
- title: `@${i18n}:terms.document.enable-versioning`,
1016
- groupId: 'management',
1017
- schema: {
1018
- dataType: 'boolean',
1019
- interface: {
1020
- type: AXPWidgetsCatalog.toggle,
1021
- options: {
1022
- disabled: '{{ !!context.eval("requiresReview") }}',
1023
- },
1024
- triggers: [
1025
- {
1026
- event: "{{ events.context('requiresReview') }}",
1027
- action: "{{ context.set('enableVersioning', true) }}",
1028
- },
1029
- ],
1030
- },
1031
- },
1032
- },
1033
- // {
1034
- // name: 'meta',
1035
- // title: `t("metaTitle", { scope: "${i18n}" })`,
1036
- // groupId: 'section',
1037
- // schema: {
1038
- // dataType: 'object',
1039
- // interface: {
1040
- // type: 'meta-selector-editor',
1041
- // },
1042
- // },
1043
- // },
1044
- {
1045
- name: 'type',
1046
- title: `@${i18n}:terms.common.type`,
1047
- groupId: 'basic-info',
1048
- schema: {
1049
- dataType: 'object',
1050
- interface: {
1051
- type: AXPWidgetsCatalog.fileTypeExtension,
1052
- options: {},
1053
- },
1054
- },
1055
- },
1056
- ],
1057
- columns: [{ name: 'name' }, { name: 'title' }],
1058
- interfaces: {
1059
- master: {
1060
- create: {
1061
- sections: [
1062
- {
1063
- id: 'basic-info',
1064
- },
1065
- {
1066
- id: 'management',
1067
- },
1068
- ],
1069
- properties: [
1070
- {
1071
- name: 'name',
1072
- layout: {
1073
- positions: {
1074
- lg: {
1075
- colSpan: 6,
1076
- },
1077
- },
1078
- },
1079
- },
1080
- {
1081
- name: 'title',
1082
- layout: {
1083
- positions: {
1084
- lg: {
1085
- colSpan: 6,
1086
- },
1087
- },
1088
- },
1089
- },
1090
- {
1091
- name: 'maxSize',
1092
- layout: {
1093
- positions: {
1094
- lg: {
1095
- colSpan: 6,
1096
- },
1097
- },
1098
- },
1099
- },
1100
- {
1101
- name: 'isEncrypted',
1102
- layout: {
1103
- positions: {
1104
- lg: {
1105
- colSpan: 6,
1106
- },
1107
- },
1108
- },
1109
- },
1110
- {
1111
- name: 'enableExpiration',
1112
- layout: {
1113
- positions: {
1114
- lg: {
1115
- colSpan: 6,
1116
- },
1117
- },
1118
- },
1119
- },
1120
- {
1121
- name: 'requiresReview',
1122
- layout: {
1123
- positions: {
1124
- lg: {
1125
- colSpan: 6,
1126
- },
1127
- },
1128
- },
1129
- },
1130
- {
1131
- name: 'enableVersioning',
1132
- layout: {
1133
- positions: {
1134
- lg: {
1135
- colSpan: 6,
1136
- },
1137
- },
1138
- },
1139
- },
1140
- // {
1141
- // name: 'meta',
1142
- // layout: {
1143
- // positions: {
1144
- // lg: {
1145
- // colSpan: 12,
1146
- // },
1147
- // },
1148
- // },
1149
- // },
1150
- {
1151
- name: 'type',
1152
- layout: {
1153
- positions: {
1154
- lg: {
1155
- colSpan: 12,
1156
- },
1157
- },
1158
- },
1159
- },
1160
- ],
1161
- },
1162
- update: {
1163
- sections: [
1164
- {
1165
- id: 'basic-info',
1166
- },
1167
- {
1168
- id: 'management',
1169
- },
1170
- ],
1171
- properties: [
1172
- {
1173
- name: 'name',
1174
- layout: {
1175
- positions: {
1176
- lg: {
1177
- colSpan: 6,
1178
- },
1179
- },
1180
- },
1181
- },
1182
- {
1183
- name: 'title',
1184
- layout: {
1185
- positions: {
1186
- lg: {
1187
- colSpan: 6,
1188
- },
1189
- },
1190
- },
1191
- },
1192
- {
1193
- name: 'maxSize',
1194
- layout: {
1195
- positions: {
1196
- lg: {
1197
- colSpan: 6,
1198
- },
1199
- },
1200
- },
1201
- },
1202
- {
1203
- name: 'isEncrypted',
1204
- layout: {
1205
- positions: {
1206
- lg: {
1207
- colSpan: 6,
1208
- },
1209
- },
1210
- },
1211
- },
1212
- {
1213
- name: 'enableExpiration',
1214
- layout: {
1215
- positions: {
1216
- lg: {
1217
- colSpan: 6,
1218
- },
1219
- },
1220
- },
1221
- },
1222
- {
1223
- name: 'requiresReview',
1224
- layout: {
1225
- positions: {
1226
- lg: {
1227
- colSpan: 6,
1228
- },
1229
- },
1230
- },
1231
- },
1232
- {
1233
- name: 'enableVersioning',
1234
- layout: {
1235
- positions: {
1236
- lg: {
1237
- colSpan: 6,
1238
- },
1239
- },
1240
- },
1241
- },
1242
- {
1243
- name: 'type',
1244
- layout: {
1245
- positions: {
1246
- lg: {
1247
- colSpan: 12,
1248
- },
1249
- },
1250
- },
1251
- },
1252
- ],
1253
- },
1254
- single: {
1255
- title: '{{title}}',
1256
- sections: [
1257
- {
1258
- id: 'basic-info',
1259
- layout: {
1260
- positions: {
1261
- lg: {
1262
- colSpan: 12,
1263
- },
1264
- },
1265
- },
1266
- },
1267
- {
1268
- id: 'management',
1269
- layout: {
1270
- positions: {
1271
- lg: {
1272
- colSpan: 12,
1273
- },
1274
- },
1275
- },
1276
- },
1277
- ],
1278
- properties: [
1279
- {
1280
- name: 'name',
1281
- layout: {
1282
- positions: {
1283
- lg: {
1284
- colSpan: 6,
1285
- },
1286
- },
1287
- },
1288
- },
1289
- {
1290
- name: 'title',
1291
- layout: {
1292
- positions: {
1293
- lg: {
1294
- colSpan: 6,
1295
- },
1296
- },
1297
- },
1298
- },
1299
- {
1300
- name: 'maxSize',
1301
- layout: {
1302
- positions: {
1303
- lg: {
1304
- colSpan: 6,
1305
- },
1306
- },
1307
- },
1308
- },
1309
- {
1310
- name: 'isEncrypted',
1311
- layout: {
1312
- positions: {
1313
- lg: {
1314
- colSpan: 6,
1315
- },
1316
- },
1317
- },
1318
- },
1319
- {
1320
- name: 'enableExpiration',
1321
- layout: {
1322
- positions: {
1323
- lg: {
1324
- colSpan: 6,
1325
- },
1326
- },
1327
- },
1328
- },
1329
- {
1330
- name: 'requiresReview',
1331
- layout: {
1332
- positions: {
1333
- lg: {
1334
- colSpan: 6,
1335
- },
1336
- },
1337
- },
1338
- },
1339
- {
1340
- name: 'enableVersioning',
1341
- layout: {
1342
- positions: {
1343
- lg: {
1344
- colSpan: 6,
1345
- },
1346
- },
1347
- },
1348
- },
1349
- // {
1350
- // name: 'meta',
1351
- // layout: {
1352
- // positions: {
1353
- // lg: {
1354
- // colSpan: 12,
1355
- // },
1356
- // },
1357
- // },
1358
- // },
1359
- {
1360
- name: 'type',
1361
- layout: {
1362
- positions: {
1363
- lg: {
1364
- colSpan: 12,
1365
- },
1366
- },
1367
- },
1368
- },
1369
- ],
1370
- actions: [...entityMasterRecordActions()],
1371
- },
1372
- list: {
1373
- actions: [...entityMasterCrudActions({ edit: true })],
1374
- views: [createAllQueryView()],
1375
- },
1376
- },
1377
- },
1378
- };
1379
- return entityDef;
1380
- }
1381
-
1382
- class AXMDocumentTypeService extends AXMEntityCrudServiceImpl {
1383
- }
1384
- class AXMDocumentTypeServiceImpl extends AXMDocumentTypeService {
1385
- constructor() {
1386
- super(`${RootConfig.module.name}.${RootConfig.entities.documentType.name}`);
1387
- }
1388
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.3.16", ngImport: i0, type: AXMDocumentTypeServiceImpl, deps: [], target: i0.ɵɵFactoryTarget.Injectable }); }
1389
- static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "20.3.16", ngImport: i0, type: AXMDocumentTypeServiceImpl }); }
1390
- }
1391
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.16", ngImport: i0, type: AXMDocumentTypeServiceImpl, decorators: [{
1392
- type: Injectable
1393
- }], ctorParameters: () => [] });
1394
-
1395
- class AXMDocumentManagementDocumentTypeEntityModule {
1396
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.3.16", ngImport: i0, type: AXMDocumentManagementDocumentTypeEntityModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule }); }
1397
- static { this.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "14.0.0", version: "20.3.16", ngImport: i0, type: AXMDocumentManagementDocumentTypeEntityModule }); }
1398
- static { this.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "20.3.16", ngImport: i0, type: AXMDocumentManagementDocumentTypeEntityModule, providers: [
1399
- {
1400
- provide: AXMDocumentTypeService,
1401
- useClass: AXMDocumentTypeServiceImpl,
1402
- },
1403
- ] }); }
1404
- }
1405
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.16", ngImport: i0, type: AXMDocumentManagementDocumentTypeEntityModule, decorators: [{
1406
- type: NgModule,
1407
- args: [{
1408
- imports: [],
1409
- exports: [],
1410
- declarations: [],
1411
- providers: [
1412
- {
1413
- provide: AXMDocumentTypeService,
1414
- useClass: AXMDocumentTypeServiceImpl,
1415
- },
1416
- ],
1417
- }]
1418
- }] });
1419
-
1420
- async function documentTypeMetaDefinitionfactory(injector) {
1421
- const entityDef = {
1422
- module: RootConfig.module.name,
1423
- name: RootConfig.entities.document.name,
1424
- title: RootConfig.entities.document.title,
1425
- formats: {
1426
- individual: RootConfig.entities.document.title,
1427
- plural: RootConfig.entities.document.titlePlural,
1428
- searchResult: {
1429
- title: '{{ title }}',
1430
- description: RootConfig.module.title,
1431
- },
1432
- },
1433
- relatedEntities: [],
1434
- groups: [
1435
- {
1436
- id: 'section',
1437
- title: RootConfig.entities.document.title,
1438
- },
1439
- ],
1440
- properties: [
1441
- {
1442
- name: 'name',
1443
- title: '@general:terms.common.name',
1444
- groupId: 'section',
1445
- options: {
1446
- sort: {
1447
- enabled: true,
1448
- },
1449
- },
1450
- schema: {
1451
- dataType: 'string',
1452
- interface: {
1453
- type: AXPWidgetsCatalog.text,
1454
- },
1455
- },
1456
- validations: [
1457
- {
1458
- rule: 'required',
1459
- },
1460
- ],
1461
- },
1462
- {
1463
- name: 'title',
1464
- title: '@general:terms.common.title',
1465
- groupId: 'section',
1466
- schema: {
1467
- dataType: 'string',
1468
- interface: {
1469
- type: AXPWidgetsCatalog.text,
1470
- },
1471
- },
1472
- validations: [
1473
- {
1474
- rule: 'required',
1475
- },
1476
- ],
1477
- },
1478
- ],
1479
- columns: [{ name: 'name' }, { name: 'title' }],
1480
- interfaces: {
1481
- master: {
1482
- create: {
1483
- sections: [
1484
- {
1485
- id: 'section',
1486
- },
1487
- ],
1488
- properties: [
1489
- {
1490
- name: 'name',
1491
- layout: {
1492
- positions: {
1493
- lg: {
1494
- colSpan: 6,
1495
- },
1496
- },
1497
- },
1498
- },
1499
- {
1500
- name: 'title',
1501
- layout: {
1502
- positions: {
1503
- lg: {
1504
- colSpan: 6,
1505
- },
1506
- },
1507
- },
1508
- },
1509
- ],
1510
- },
1511
- update: {
1512
- sections: [
1513
- {
1514
- id: 'section',
1515
- },
1516
- ],
1517
- properties: [
1518
- {
1519
- name: 'name',
1520
- layout: {
1521
- positions: {
1522
- lg: {
1523
- colSpan: 6,
1524
- },
1525
- },
1526
- },
1527
- },
1528
- {
1529
- name: 'title',
1530
- layout: {
1531
- positions: {
1532
- lg: {
1533
- colSpan: 6,
1534
- },
1535
- },
1536
- },
1537
- },
1538
- ],
1539
- },
1540
- single: {
1541
- title: '{{title}}',
1542
- sections: [
1543
- {
1544
- id: 'section',
1545
- layout: {
1546
- positions: {
1547
- lg: {
1548
- colSpan: 12,
1549
- },
1550
- },
1551
- },
1552
- },
1553
- ],
1554
- properties: [
1555
- {
1556
- name: 'name',
1557
- layout: {
1558
- positions: {
1559
- lg: {
1560
- colSpan: 6,
1561
- },
1562
- },
1563
- },
1564
- },
1565
- {
1566
- name: 'title',
1567
- layout: {
1568
- positions: {
1569
- lg: {
1570
- colSpan: 6,
1571
- },
1572
- },
1573
- },
1574
- },
1575
- ],
1576
- actions: [...entityMasterRecordActions()],
1577
- },
1578
- list: {
1579
- actions: [...entityMasterCrudActions()],
1580
- views: [createAllQueryView({ sorts: [{ name: 'title', dir: 'asc' }] })],
1581
- },
1582
- },
1583
- },
1584
- };
1585
- return entityDef;
1586
- }
1587
-
1588
- class AXMDocumentManagementDocumentTypeMetaDefinitionEntityService extends AXMEntityCrudServiceImpl {
1589
- }
1590
- class AXMDocumentManagementDocumentTypeMetaDefinitionEntityServiceImpl extends AXMDocumentManagementDocumentTypeMetaDefinitionEntityService {
1591
- constructor() {
1592
- super(`${RootConfig.module.name}.${RootConfig.entities.documentTypeMetaDefinition}`);
1593
- }
1594
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.3.16", ngImport: i0, type: AXMDocumentManagementDocumentTypeMetaDefinitionEntityServiceImpl, deps: [], target: i0.ɵɵFactoryTarget.Injectable }); }
1595
- static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "20.3.16", ngImport: i0, type: AXMDocumentManagementDocumentTypeMetaDefinitionEntityServiceImpl }); }
1596
- }
1597
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.16", ngImport: i0, type: AXMDocumentManagementDocumentTypeMetaDefinitionEntityServiceImpl, decorators: [{
1598
- type: Injectable
1599
- }], ctorParameters: () => [] });
1600
-
1601
- class AXMDocumentManagementDocumentTypeMetaDefinitionEntityModule {
1602
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.3.16", ngImport: i0, type: AXMDocumentManagementDocumentTypeMetaDefinitionEntityModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule }); }
1603
- static { this.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "14.0.0", version: "20.3.16", ngImport: i0, type: AXMDocumentManagementDocumentTypeMetaDefinitionEntityModule }); }
1604
- static { this.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "20.3.16", ngImport: i0, type: AXMDocumentManagementDocumentTypeMetaDefinitionEntityModule, providers: [
1605
- {
1606
- provide: AXMDocumentManagementDocumentTypeMetaDefinitionEntityService,
1607
- useClass: AXMDocumentManagementDocumentTypeMetaDefinitionEntityServiceImpl,
1608
- },
1609
- ] }); }
1610
- }
1611
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.16", ngImport: i0, type: AXMDocumentManagementDocumentTypeMetaDefinitionEntityModule, decorators: [{
1612
- type: NgModule,
1613
- args: [{
1614
- imports: [],
1615
- exports: [],
1616
- declarations: [],
1617
- providers: [
1618
- {
1619
- provide: AXMDocumentManagementDocumentTypeMetaDefinitionEntityService,
1620
- useClass: AXMDocumentManagementDocumentTypeMetaDefinitionEntityServiceImpl,
1621
- },
1622
- ],
1623
- }]
1624
- }] });
1625
-
1626
- async function documentTypeMetaValueFactory(injector) {
1627
- const entityDef = {
1628
- module: RootConfig.module.name,
1629
- name: RootConfig.entities.document.name,
1630
- title: RootConfig.entities.document.title,
1631
- formats: {
1632
- individual: RootConfig.entities.document.title,
1633
- plural: RootConfig.entities.document.titlePlural,
1634
- searchResult: {
1635
- title: '{{ title }}',
1636
- description: RootConfig.module.title,
1637
- },
1638
- },
1639
- relatedEntities: [],
1640
- groups: [
1641
- {
1642
- id: 'section',
1643
- title: RootConfig.entities.document.title,
1644
- },
1645
- ],
1646
- properties: [
1647
- {
1648
- name: 'name',
1649
- title: '@general:terms.common.name',
1650
- groupId: 'section',
1651
- options: {
1652
- sort: {
1653
- enabled: true,
1654
- },
1655
- },
1656
- schema: {
1657
- dataType: 'string',
1658
- interface: {
1659
- type: AXPWidgetsCatalog.text,
1660
- },
1661
- },
1662
- validations: [
1663
- {
1664
- rule: 'required',
1665
- },
1666
- ],
1667
- },
1668
- {
1669
- name: 'title',
1670
- title: '@general:terms.common.title',
1671
- groupId: 'section',
1672
- schema: {
1673
- dataType: 'string',
1674
- interface: {
1675
- type: AXPWidgetsCatalog.text,
1676
- },
1677
- },
1678
- validations: [
1679
- {
1680
- rule: 'required',
1681
- },
1682
- ],
1683
- },
1684
- ],
1685
- columns: [{ name: 'name' }, { name: 'title' }],
1686
- interfaces: {
1687
- master: {
1688
- create: {
1689
- sections: [
1690
- {
1691
- id: 'section',
1692
- },
1693
- ],
1694
- properties: [
1695
- {
1696
- name: 'name',
1697
- layout: {
1698
- positions: {
1699
- lg: {
1700
- colSpan: 6,
1701
- },
1702
- },
1703
- },
1704
- },
1705
- {
1706
- name: 'title',
1707
- layout: {
1708
- positions: {
1709
- lg: {
1710
- colSpan: 6,
1711
- },
1712
- },
1713
- },
1714
- },
1715
- ],
1716
- },
1717
- update: {
1718
- sections: [
1719
- {
1720
- id: 'section',
1721
- },
1722
- ],
1723
- properties: [
1724
- {
1725
- name: 'name',
1726
- layout: {
1727
- positions: {
1728
- lg: {
1729
- colSpan: 6,
1730
- },
1731
- },
1732
- },
1733
- },
1734
- {
1735
- name: 'title',
1736
- layout: {
1737
- positions: {
1738
- lg: {
1739
- colSpan: 6,
1740
- },
1741
- },
1742
- },
1743
- },
1744
- ],
1745
- },
1746
- single: {
1747
- title: '{{title}}',
1748
- sections: [
1749
- {
1750
- id: 'section',
1751
- layout: {
1752
- positions: {
1753
- lg: {
1754
- colSpan: 12,
1755
- },
1756
- },
1757
- },
1758
- },
1759
- ],
1760
- properties: [
1761
- {
1762
- name: 'name',
1763
- layout: {
1764
- positions: {
1765
- lg: {
1766
- colSpan: 6,
1767
- },
1768
- },
1769
- },
1770
- },
1771
- {
1772
- name: 'title',
1773
- layout: {
1774
- positions: {
1775
- lg: {
1776
- colSpan: 6,
1777
- },
1778
- },
1779
- },
1780
- },
1781
- ],
1782
- actions: [...entityMasterRecordActions()],
1783
- },
1784
- list: {
1785
- actions: [...entityMasterCrudActions()],
1786
- views: [createAllQueryView({ sorts: [{ name: 'title', dir: 'asc' }] })],
1787
- },
1788
- },
1789
- },
1790
- };
1791
- return entityDef;
1792
- }
1793
-
1794
- class AXMDocumentManagementDocumentTypeMetaValueEntityService extends AXMEntityCrudServiceImpl {
1795
- }
1796
- class AXMDocumentManagementDocumentTypeMetaValueEntityServiceImpl extends AXMDocumentManagementDocumentTypeMetaValueEntityService {
1797
- constructor() {
1798
- super(`${RootConfig.module.name}.${RootConfig.entities.documentTypeMetaValue}`);
1799
- }
1800
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.3.16", ngImport: i0, type: AXMDocumentManagementDocumentTypeMetaValueEntityServiceImpl, deps: [], target: i0.ɵɵFactoryTarget.Injectable }); }
1801
- static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "20.3.16", ngImport: i0, type: AXMDocumentManagementDocumentTypeMetaValueEntityServiceImpl }); }
1802
- }
1803
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.16", ngImport: i0, type: AXMDocumentManagementDocumentTypeMetaValueEntityServiceImpl, decorators: [{
1804
- type: Injectable
1805
- }], ctorParameters: () => [] });
1806
-
1807
- class AXMDocumentManagementDocumentTypeMetaValueEntityModule {
1808
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.3.16", ngImport: i0, type: AXMDocumentManagementDocumentTypeMetaValueEntityModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule }); }
1809
- static { this.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "14.0.0", version: "20.3.16", ngImport: i0, type: AXMDocumentManagementDocumentTypeMetaValueEntityModule }); }
1810
- static { this.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "20.3.16", ngImport: i0, type: AXMDocumentManagementDocumentTypeMetaValueEntityModule, providers: [
1811
- {
1812
- provide: AXMDocumentManagementDocumentTypeMetaValueEntityService,
1813
- useClass: AXMDocumentManagementDocumentTypeMetaValueEntityServiceImpl,
1814
- },
1815
- ] }); }
1816
- }
1817
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.16", ngImport: i0, type: AXMDocumentManagementDocumentTypeMetaValueEntityModule, decorators: [{
1818
- type: NgModule,
1819
- args: [{
1820
- imports: [],
1821
- exports: [],
1822
- declarations: [],
1823
- providers: [
1824
- {
1825
- provide: AXMDocumentManagementDocumentTypeMetaValueEntityService,
1826
- useClass: AXMDocumentManagementDocumentTypeMetaValueEntityServiceImpl,
1827
- },
1828
- ],
1829
- }]
1830
- }] });
1831
-
1832
- async function documentTypeStatusDefinitionFactory(injector) {
1833
- const entityDef = {
1834
- module: RootConfig.module.name,
1835
- name: RootConfig.entities.document.name,
1836
- title: RootConfig.entities.document.title,
1837
- formats: {
1838
- individual: RootConfig.entities.document.title,
1839
- plural: RootConfig.entities.document.titlePlural,
1840
- searchResult: {
1841
- title: '{{ title }}',
1842
- description: RootConfig.module.title,
1843
- },
1844
- },
1845
- relatedEntities: [],
1846
- groups: [
1847
- {
1848
- id: 'section',
1849
- title: RootConfig.entities.document.title,
1850
- },
1851
- ],
1852
- properties: [
1853
- {
1854
- name: 'name',
1855
- title: '@general:terms.common.name',
1856
- groupId: 'section',
1857
- options: {
1858
- sort: {
1859
- enabled: true,
1860
- },
1861
- },
1862
- schema: {
1863
- dataType: 'string',
1864
- interface: {
1865
- type: AXPWidgetsCatalog.text,
1866
- },
1867
- },
1868
- validations: [
1869
- {
1870
- rule: 'required',
1871
- },
1872
- ],
1873
- },
1874
- {
1875
- name: 'title',
1876
- title: '@general:terms.common.title',
1877
- groupId: 'section',
1878
- schema: {
1879
- dataType: 'string',
1880
- interface: {
1881
- type: AXPWidgetsCatalog.text,
1882
- },
1883
- },
1884
- validations: [
1885
- {
1886
- rule: 'required',
1887
- },
1888
- ],
1889
- },
1890
- ],
1891
- columns: [{ name: 'name' }, { name: 'title' }],
1892
- interfaces: {
1893
- master: {
1894
- create: {
1895
- sections: [
1896
- {
1897
- id: 'section',
1898
- },
1899
- ],
1900
- properties: [
1901
- {
1902
- name: 'name',
1903
- layout: {
1904
- positions: {
1905
- lg: {
1906
- colSpan: 6,
1907
- },
1908
- },
1909
- },
1910
- },
1911
- {
1912
- name: 'title',
1913
- layout: {
1914
- positions: {
1915
- lg: {
1916
- colSpan: 6,
1917
- },
1918
- },
1919
- },
1920
- },
1921
- ],
1922
- },
1923
- update: {
1924
- sections: [
1925
- {
1926
- id: 'section',
1927
- },
1928
- ],
1929
- properties: [
1930
- {
1931
- name: 'name',
1932
- layout: {
1933
- positions: {
1934
- lg: {
1935
- colSpan: 6,
1936
- },
1937
- },
1938
- },
1939
- },
1940
- {
1941
- name: 'title',
1942
- layout: {
1943
- positions: {
1944
- lg: {
1945
- colSpan: 6,
1946
- },
1947
- },
1948
- },
1949
- },
1950
- ],
1951
- },
1952
- single: {
1953
- title: '{{title}}',
1954
- sections: [
1955
- {
1956
- id: 'section',
1957
- layout: {
1958
- positions: {
1959
- lg: {
1960
- colSpan: 12,
1961
- },
1962
- },
1963
- },
1964
- },
1965
- ],
1966
- properties: [
1967
- {
1968
- name: 'name',
1969
- layout: {
1970
- positions: {
1971
- lg: {
1972
- colSpan: 6,
1973
- },
1974
- },
1975
- },
1976
- },
1977
- {
1978
- name: 'title',
1979
- layout: {
1980
- positions: {
1981
- lg: {
1982
- colSpan: 6,
1983
- },
1984
- },
1985
- },
1986
- },
1987
- ],
1988
- actions: [...entityMasterRecordActions()],
1989
- },
1990
- list: {
1991
- actions: [...entityMasterCrudActions()],
1992
- views: [createAllQueryView({ sorts: [{ name: 'title', dir: 'asc' }] })],
1993
- },
1994
- },
1995
- },
1996
- };
1997
- return entityDef;
1998
- }
1999
-
2000
- class AXMDocumentManagementDocumentTypeStatusDefinitionEntityService extends AXMEntityCrudServiceImpl {
2001
- }
2002
- class AXMDocumentManagementDocumentTypeStatusDefinitionEntityServiceImpl extends AXMDocumentManagementDocumentTypeStatusDefinitionEntityService {
2003
- constructor() {
2004
- super(`${RootConfig.module.name}.${RootConfig.entities.documentTypeStatus}`);
2005
- }
2006
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.3.16", ngImport: i0, type: AXMDocumentManagementDocumentTypeStatusDefinitionEntityServiceImpl, deps: [], target: i0.ɵɵFactoryTarget.Injectable }); }
2007
- static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "20.3.16", ngImport: i0, type: AXMDocumentManagementDocumentTypeStatusDefinitionEntityServiceImpl }); }
2008
- }
2009
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.16", ngImport: i0, type: AXMDocumentManagementDocumentTypeStatusDefinitionEntityServiceImpl, decorators: [{
2010
- type: Injectable
2011
- }], ctorParameters: () => [] });
2012
-
2013
- class AXMDocumentManagementDocumentTypeStatusDefinitionEntityModule {
2014
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.3.16", ngImport: i0, type: AXMDocumentManagementDocumentTypeStatusDefinitionEntityModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule }); }
2015
- static { this.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "14.0.0", version: "20.3.16", ngImport: i0, type: AXMDocumentManagementDocumentTypeStatusDefinitionEntityModule }); }
2016
- static { this.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "20.3.16", ngImport: i0, type: AXMDocumentManagementDocumentTypeStatusDefinitionEntityModule, providers: [
2017
- {
2018
- provide: AXMDocumentManagementDocumentTypeStatusDefinitionEntityService,
2019
- useClass: AXMDocumentManagementDocumentTypeStatusDefinitionEntityServiceImpl,
2020
- },
2021
- ] }); }
2022
- }
2023
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.16", ngImport: i0, type: AXMDocumentManagementDocumentTypeStatusDefinitionEntityModule, decorators: [{
2024
- type: NgModule,
2025
- args: [{
2026
- imports: [],
2027
- exports: [],
2028
- declarations: [],
2029
- providers: [
2030
- {
2031
- provide: AXMDocumentManagementDocumentTypeStatusDefinitionEntityService,
2032
- useClass: AXMDocumentManagementDocumentTypeStatusDefinitionEntityServiceImpl,
2033
- },
2034
- ],
2035
- }]
2036
- }] });
2037
-
2038
- async function documentRelatedFactory(injector) {
2039
- const i18n = RootConfig.config.i18n;
2040
- const entityDef = {
2041
- module: RootConfig.module.name,
2042
- name: RootConfig.entities.documentRelated.name,
2043
- title: RootConfig.entities.documentRelated.title,
2044
- icon: RootConfig.entities.documentRelated.icon,
2045
- formats: {
2046
- individual: RootConfig.entities.documentRelated.title,
2047
- plural: RootConfig.entities.documentRelated.titlePlural,
2048
- searchResult: {
2049
- title: '{{ title }}',
2050
- description: RootConfig.module.title,
2051
- },
2052
- },
2053
- relatedEntities: [],
2054
- groups: [
2055
- {
2056
- id: 'section',
2057
- title: RootConfig.entities.documentRelated.title,
2058
- },
2059
- ],
2060
- properties: [
2061
- {
2062
- name: 'name',
2063
- title: '@general:terms.common.name',
2064
- groupId: 'section',
2065
- schema: {
2066
- dataType: 'string',
2067
- readonly: true,
2068
- interface: {
2069
- type: AXPWidgetsCatalog.text,
2070
- options: {
2071
- placeholder: '@general:terms.common.name',
2072
- },
2073
- },
2074
- },
2075
- },
2076
- {
2077
- name: 'size',
2078
- title: '@general:terms.common.size',
2079
- groupId: 'section',
2080
- schema: {
2081
- dataType: 'string',
2082
- readonly: true,
2083
- interface: {
2084
- type: AXPWidgetsCatalog.number,
2085
- options: {},
2086
- },
2087
- },
2088
- validations: [
2089
- {
2090
- rule: 'required',
2091
- },
2092
- ],
2093
- },
2094
- {
2095
- name: 'type',
2096
- title: '@general:terms.common.type',
2097
- groupId: 'section',
2098
- schema: {
2099
- dataType: 'string',
2100
- readonly: true,
2101
- interface: {
2102
- type: AXPWidgetsCatalog.lookup,
2103
- options: {
2104
- entity: `${RootConfig.module.name}.${RootConfig.entities.documentType.name}`,
2105
- expose: 'type',
2106
- },
2107
- },
2108
- },
2109
- validations: [
2110
- {
2111
- rule: 'required',
2112
- },
2113
- ],
2114
- },
2115
- {
2116
- name: 'metaData',
2117
- title: `@${i18n}:terms.common.meta-data`,
2118
- groupId: 'section',
2119
- schema: {
2120
- dataType: 'object',
2121
- readonly: true,
2122
- interface: {
2123
- type: AXPWidgetsCatalog.blockLayout,
2124
- options: {},
2125
- // children: 'context.eval("type.meta")'
2126
- children: []
2127
- },
2128
- },
2129
- validations: [
2130
- {
2131
- rule: 'required',
2132
- },
2133
- ],
2134
- },
2135
- {
2136
- name: 'fileId',
2137
- title: `@${i18n}:terms.common.file`,
2138
- groupId: 'section',
2139
- schema: {
2140
- dataType: 'string',
2141
- readonly: true,
2142
- interface: {
2143
- type: AXPWidgetsCatalog.fileUploader,
2144
- options: {
2145
- maxFileSize: ` {{context.eval("type.maxSize")}} `,
2146
- multiple: ` {{context.eval("type.multiple")}} `,
2147
- // accept: ` {{context.eval("type.multiple")}} `,
2148
- },
2149
- },
2150
- },
2151
- validations: [
2152
- {
2153
- rule: 'required',
2154
- },
2155
- ],
2156
- },
2157
- ],
2158
- columns: [
2159
- { name: 'name' },
2160
- { name: 'fileId' },
2161
- { name: 'type' },
2162
- { name: 'size' }
2163
- ],
2164
- interfaces: {
2165
- master: {
2166
- create: {
2167
- sections: [
2168
- {
2169
- id: 'section',
2170
- },
2171
- ],
2172
- properties: [
2173
- {
2174
- name: 'metaData',
2175
- layout: {
2176
- positions: {
2177
- lg: {
2178
- colSpan: 12,
2179
- },
2180
- },
2181
- },
2182
- },
2183
- {
2184
- name: 'fileId',
2185
- layout: {
2186
- positions: {
2187
- lg: {
2188
- colSpan: 12,
2189
- },
2190
- },
2191
- },
2192
- },
2193
- ],
2194
- },
2195
- update: {
2196
- sections: [
2197
- {
2198
- id: 'section',
2199
- },
2200
- ],
2201
- properties: [
2202
- {
2203
- name: 'name',
2204
- layout: {
2205
- positions: {
2206
- lg: {
2207
- colSpan: 6,
2208
- },
2209
- },
2210
- },
2211
- },
2212
- {
2213
- name: 'type',
2214
- layout: {
2215
- positions: {
2216
- lg: {
2217
- colSpan: 12,
2218
- },
2219
- },
2220
- },
2221
- },
2222
- {
2223
- name: 'metaData',
2224
- layout: {
2225
- positions: {
2226
- lg: {
2227
- colSpan: 12,
2228
- },
2229
- },
2230
- },
2231
- },
2232
- {
2233
- name: 'file',
2234
- layout: {
2235
- positions: {
2236
- lg: {
2237
- colSpan: 12,
2238
- },
2239
- },
2240
- },
2241
- },
2242
- ],
2243
- },
2244
- single: {
2245
- title: '{{title}}',
2246
- sections: [
2247
- {
2248
- id: 'section',
2249
- layout: {
2250
- positions: {
2251
- lg: {
2252
- colSpan: 12,
2253
- },
2254
- },
2255
- },
2256
- },
2257
- ],
2258
- properties: [
2259
- {
2260
- name: 'metaData',
2261
- layout: {
2262
- positions: {
2263
- lg: {
2264
- colSpan: 6,
2265
- },
2266
- }
2267
- },
2268
- },
2269
- {
2270
- name: 'fileId',
2271
- layout: {
2272
- positions: {
2273
- lg: {
2274
- colSpan: 12,
2275
- },
2276
- },
2277
- },
2278
- },
2279
- ],
2280
- actions: [],
2281
- },
2282
- list: {
2283
- actions: [
2284
- {
2285
- title: '@general:actions.detail.title',
2286
- command: 'open-entity',
2287
- priority: 'secondary',
2288
- type: 'view',
2289
- default: true,
2290
- scope: AXPEntityCommandScope.Individual,
2291
- },
2292
- ],
2293
- views: [
2294
- createAllQueryView({ sorts: [{ name: 'name', dir: 'asc' }] }),
2295
- createQueryView('Draft', `@${i18n}:terms.workflow.draft`, true, {
2296
- conditions: [
2297
- {
2298
- name: 'status',
2299
- operator: {
2300
- type: 'equal',
2301
- },
2302
- value: 'Draft',
2303
- },
2304
- ],
2305
- }),
2306
- createQueryView('PendingReview', `@${i18n}:terms.workflow.pending`, true, {
2307
- conditions: [
2308
- {
2309
- name: 'status',
2310
- operator: {
2311
- type: 'equal',
2312
- },
2313
- value: 'PendingReview',
2314
- },
2315
- ],
2316
- }),
2317
- createQueryView('Reviewed', `@${i18n}:terms.workflow.reviewed`, true, {
2318
- conditions: [
2319
- {
2320
- name: 'status',
2321
- operator: {
2322
- type: 'equal',
2323
- },
2324
- value: 'Reviewed',
2325
- },
2326
- ],
2327
- }),
2328
- ],
2329
- },
2330
- },
2331
- },
2332
- };
2333
- return entityDef;
2334
- }
2335
-
2336
- class AXMFolderService extends AXMEntityCrudServiceImpl {
2337
- }
2338
- class AXMFolderServiceImpl extends AXMFolderService {
2339
- constructor() {
2340
- super(`${RootConfig.module.name}.${RootConfig.entities.folder.name}`);
2341
- }
2342
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.3.16", ngImport: i0, type: AXMFolderServiceImpl, deps: [], target: i0.ɵɵFactoryTarget.Injectable }); }
2343
- static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "20.3.16", ngImport: i0, type: AXMFolderServiceImpl }); }
2344
- }
2345
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.16", ngImport: i0, type: AXMFolderServiceImpl, decorators: [{
2346
- type: Injectable
2347
- }], ctorParameters: () => [] });
2348
-
2349
- async function folderFactory(injector) {
2350
- const dataService = injector.get(AXMFolderService);
2351
- const entityDef = {
2352
- module: RootConfig.module.name,
2353
- name: RootConfig.entities.folder.name,
2354
- title: RootConfig.entities.folder.title,
2355
- formats: {
2356
- individual: RootConfig.entities.folder.title,
2357
- plural: RootConfig.entities.folder.titlePlural,
2358
- searchResult: {
2359
- title: '{{ title }}',
2360
- description: RootConfig.module.title,
2361
- },
2362
- },
2363
- relatedEntities: [],
2364
- groups: [
2365
- {
2366
- id: 'section',
2367
- title: RootConfig.entities.folder.title,
2368
- },
2369
- ],
2370
- properties: [
2371
- {
2372
- name: 'name',
2373
- title: '@general:terms.common.name',
2374
- groupId: 'section',
2375
- options: {
2376
- sort: {
2377
- enabled: true,
2378
- },
2379
- },
2380
- schema: {
2381
- dataType: 'string',
2382
- interface: {
2383
- type: AXPWidgetsCatalog.text,
2384
- },
2385
- },
2386
- validations: [
2387
- {
2388
- rule: 'required',
2389
- },
2390
- ],
2391
- },
2392
- {
2393
- name: 'title',
2394
- title: '@general:terms.common.title',
2395
- groupId: 'section',
2396
- schema: {
2397
- dataType: 'string',
2398
- interface: {
2399
- type: AXPWidgetsCatalog.text,
2400
- },
2401
- },
2402
- validations: [
2403
- {
2404
- rule: 'required',
2405
- },
2406
- ],
2407
- },
2408
- ],
2409
- columns: [{ name: 'name' }, { name: 'title' }],
2410
- commands: {
2411
- create: {
2412
- execute: async (data) => {
2413
- const res = await dataService.insertOne(data);
2414
- return { id: res };
2415
- },
2416
- },
2417
- delete: {
2418
- execute: async (id) => {
2419
- return await dataService.deleteOne(id);
2420
- },
2421
- },
2422
- update: {
2423
- execute: async (data) => {
2424
- return await dataService.updateOne(data.id, data);
2425
- },
2426
- },
2427
- },
2428
- queries: {
2429
- byKey: {
2430
- execute: async (id) => {
2431
- return await dataService.getOne(id);
2432
- },
2433
- type: AXPEntityQueryType.Single,
2434
- },
2435
- list: {
2436
- execute: async (e) => {
2437
- return await dataService.query(e);
2438
- },
2439
- type: AXPEntityQueryType.List,
2440
- },
2441
- },
2442
- interfaces: {
2443
- master: {
2444
- create: {
2445
- sections: [
2446
- {
2447
- id: 'section',
2448
- },
2449
- ],
2450
- properties: [
2451
- {
2452
- name: 'name',
2453
- layout: {
2454
- positions: {
2455
- lg: {
2456
- colSpan: 6,
2457
- },
2458
- },
2459
- },
2460
- },
2461
- {
2462
- name: 'title',
2463
- layout: {
2464
- positions: {
2465
- lg: {
2466
- colSpan: 6,
2467
- },
2468
- },
2469
- },
2470
- },
2471
- ],
2472
- },
2473
- update: {
2474
- sections: [
2475
- {
2476
- id: 'section',
2477
- },
2478
- ],
2479
- properties: [
2480
- {
2481
- name: 'name',
2482
- layout: {
2483
- positions: {
2484
- lg: {
2485
- colSpan: 6,
2486
- },
2487
- },
2488
- },
2489
- },
2490
- {
2491
- name: 'title',
2492
- layout: {
2493
- positions: {
2494
- lg: {
2495
- colSpan: 6,
2496
- },
2497
- },
2498
- },
2499
- },
2500
- ],
2501
- },
2502
- single: {
2503
- title: '{{title}}',
2504
- sections: [
2505
- {
2506
- id: 'section',
2507
- layout: {
2508
- positions: {
2509
- lg: {
2510
- colSpan: 12,
2511
- },
2512
- },
2513
- },
2514
- },
2515
- ],
2516
- properties: [
2517
- {
2518
- name: 'name',
2519
- layout: {
2520
- positions: {
2521
- lg: {
2522
- colSpan: 6,
2523
- },
2524
- },
2525
- },
2526
- },
2527
- {
2528
- name: 'title',
2529
- layout: {
2530
- positions: {
2531
- lg: {
2532
- colSpan: 6,
2533
- },
2534
- },
2535
- },
2536
- },
2537
- ],
2538
- actions: [...entityMasterRecordActions()],
2539
- },
2540
- list: {
2541
- actions: [...entityMasterCrudActions()],
2542
- views: [createAllQueryView({ sorts: [{ name: 'title', dir: 'asc' }] })],
2543
- },
2544
- },
2545
- },
2546
- };
2547
- return entityDef;
2548
- }
2549
-
2550
- class AXMFolderEntityModule {
2551
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.3.16", ngImport: i0, type: AXMFolderEntityModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule }); }
2552
- static { this.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "14.0.0", version: "20.3.16", ngImport: i0, type: AXMFolderEntityModule }); }
2553
- static { this.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "20.3.16", ngImport: i0, type: AXMFolderEntityModule, providers: [
2554
- {
2555
- provide: AXMFolderService,
2556
- useClass: AXMFolderServiceImpl,
2557
- },
2558
- ] }); }
2559
- }
2560
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.16", ngImport: i0, type: AXMFolderEntityModule, decorators: [{
2561
- type: NgModule,
2562
- args: [{
2563
- imports: [],
2564
- exports: [],
2565
- declarations: [],
2566
- providers: [
2567
- {
2568
- provide: AXMFolderService,
2569
- useClass: AXMFolderServiceImpl,
2570
- },
2571
- ],
2572
- }]
2573
- }] });
2574
-
2575
- class AXMReviewService extends AXMEntityCrudServiceImpl {
2576
- }
2577
- class AXMReviewServiceImpl extends AXMReviewService {
2578
- constructor() {
2579
- super(`${RootConfig.module.name}.${RootConfig.entities.review.name}`);
2580
- }
2581
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.3.16", ngImport: i0, type: AXMReviewServiceImpl, deps: [], target: i0.ɵɵFactoryTarget.Injectable }); }
2582
- static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "20.3.16", ngImport: i0, type: AXMReviewServiceImpl }); }
2583
- }
2584
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.16", ngImport: i0, type: AXMReviewServiceImpl, decorators: [{
2585
- type: Injectable
2586
- }], ctorParameters: () => [] });
2587
-
2588
- // Helper function to update document status based on review status
2589
- async function updateDocumentStatus(documentId, reviewStatus, injector) {
2590
- try {
2591
- // Import document service dynamically to avoid circular dependencies
2592
- const { AXMDocumentService } = await Promise.resolve().then(function () { return document_service; });
2593
- const documentService = injector.get(AXMDocumentService);
2594
- // Map review status to document workflow phase
2595
- let documentStatus;
2596
- switch (reviewStatus) {
2597
- case 'Approved':
2598
- documentStatus = 'Reviewed';
2599
- break;
2600
- case 'Rejected':
2601
- documentStatus = 'Rejected';
2602
- break;
2603
- case 'Pending':
2604
- documentStatus = 'PendingReview';
2605
- break;
2606
- default:
2607
- documentStatus = 'PendingReview';
2608
- }
2609
- // Update the document status
2610
- await documentService.updateOne(documentId, { status: documentStatus });
2611
- }
2612
- catch (error) {
2613
- console.error('Failed to update document status:', error);
2614
- // Don't throw error to avoid breaking the review process
2615
- }
2616
- }
2617
- async function reviewFactory(injector) {
2618
- const dataService = injector.get(AXMReviewService);
2619
- const i18n = RootConfig.config.i18n;
2620
- const entityDef = {
2621
- module: RootConfig.module.name,
2622
- name: RootConfig.entities.review.name,
2623
- title: RootConfig.entities.review.title,
2624
- icon: RootConfig.entities.review.icon,
2625
- formats: {
2626
- individual: RootConfig.entities.review.title,
2627
- plural: RootConfig.entities.review.titlePlural,
2628
- searchResult: {
2629
- title: '{{ title }}',
2630
- description: RootConfig.module.title,
2631
- },
2632
- },
2633
- relatedEntities: [],
2634
- groups: [
2635
- {
2636
- id: 'section',
2637
- title: RootConfig.entities.review.title,
2638
- },
2639
- ],
2640
- properties: [
2641
- {
2642
- name: 'version',
2643
- title: `@${i18n}:terms.common.version`,
2644
- groupId: 'section',
2645
- schema: {
2646
- dataType: 'number',
2647
- interface: {
2648
- type: AXPWidgetsCatalog.textBlockLayout,
2649
- options: {
2650
- content: `{{ context.eval('version') }}`,
2651
- },
2652
- },
2653
- },
2654
- },
2655
- {
2656
- name: 'documentId',
2657
- groupId: 'section',
2658
- title: `@${i18n}:entities.document.title`,
2659
- options: {
2660
- sort: {
2661
- enabled: true,
2662
- },
2663
- filter: {
2664
- advance: {
2665
- enabled: true,
2666
- },
2667
- inline: {
2668
- enabled: true,
2669
- },
2670
- },
2671
- },
2672
- schema: {
2673
- dataType: 'string',
2674
- interface: {
2675
- type: AXPWidgetsCatalog.lookup,
2676
- options: {
2677
- entity: `${RootConfig.module.name}.${RootConfig.entities.document.name}`,
2678
- multiple: false,
2679
- filter: "{{ { logic:'and' , filters: [ { field:'documentType.requiresReview' , value: true , operator: { type:'equal' } },] } }}",
2680
- textField: 'name',
2681
- valueField: 'id',
2682
- expose: [
2683
- { source: 'id', target: 'document.id' },
2684
- { source: 'name', target: 'document.name' },
2685
- { source: 'title', target: 'document.title' },
2686
- { source: 'version', target: 'document.version' },
2687
- ],
2688
- },
2689
- triggers: [
2690
- {
2691
- event: "{{ events.context('documentId') }}",
2692
- action: "{{ context.set('version' , context.eval('document').version ) }}",
2693
- },
2694
- ],
2695
- },
2696
- },
2697
- validations: [
2698
- {
2699
- rule: 'required',
2700
- },
2701
- ],
2702
- },
2703
- {
2704
- name: 'reviewerId',
2705
- title: `@${i18n}:terms.common.reviewer`,
2706
- groupId: 'section',
2707
- schema: {
2708
- dataType: 'string',
2709
- defaultValue: '{{ session.currentUser().id }}',
2710
- interface: {
2711
- type: AXPWidgetsCatalog.lookup,
2712
- options: {
2713
- entity: 'SecurityManagement.User',
2714
- multiple: false,
2715
- textField: 'username',
2716
- valueField: 'id',
2717
- expose: [
2718
- { source: 'id', target: 'reviewer.id' },
2719
- { source: 'username', target: 'reviewer.username' },
2720
- ],
2721
- },
2722
- },
2723
- },
2724
- validations: [
2725
- {
2726
- rule: 'required',
2727
- },
2728
- ],
2729
- },
2730
- {
2731
- name: 'status',
2732
- title: `@${i18n}:terms.workflow.approve`,
2733
- groupId: 'section',
2734
- schema: {
2735
- dataType: 'string',
2736
- interface: {
2737
- type: AXPWidgetsCatalog.toggle,
2738
- options: {},
2739
- },
2740
- },
2741
- validations: [
2742
- {
2743
- rule: 'required',
2744
- },
2745
- ],
2746
- },
2747
- {
2748
- name: 'comment',
2749
- title: `@${i18n}:terms.common.comment`,
2750
- groupId: 'section',
2751
- schema: {
2752
- dataType: 'string',
2753
- interface: {
2754
- type: AXPWidgetsCatalog.richText,
2755
- },
2756
- },
2757
- },
2758
- {
2759
- name: 'reviewedAt',
2760
- title: `@${i18n}:terms.timestamps.reviewed-at`,
2761
- groupId: 'section',
2762
- options: {
2763
- sort: {
2764
- enabled: true,
2765
- },
2766
- filter: {
2767
- advance: {
2768
- enabled: true,
2769
- },
2770
- inline: {
2771
- enabled: false,
2772
- },
2773
- },
2774
- },
2775
- schema: {
2776
- defaultValue: '{{ variables.execute("now") }}',
2777
- dataType: 'date',
2778
- interface: {
2779
- type: AXPWidgetsCatalog.dateTime,
2780
- options: {
2781
- showTime: true,
2782
- },
2783
- },
2784
- },
2785
- validations: [
2786
- {
2787
- rule: 'required',
2788
- },
2789
- ],
2790
- },
2791
- {
2792
- name: 'auditInfo.updated.at',
2793
- title: `@${i18n}:terms.timestamps.modified-at`,
2794
- groupId: 'section',
2795
- options: {
2796
- sort: {
2797
- enabled: true,
2798
- },
2799
- filter: {
2800
- advance: {
2801
- enabled: true,
2802
- },
2803
- inline: {
2804
- enabled: false,
2805
- },
2806
- },
2807
- },
2808
- schema: {
2809
- dataType: 'date',
2810
- interface: {
2811
- type: AXPWidgetsCatalog.dateTime,
2812
- options: {
2813
- showTime: true,
2814
- },
2815
- },
2816
- },
2817
- },
2818
- {
2819
- name: 'auditInfo.updated.by',
2820
- title: `@${i18n}:terms.timestamps.modified-by`,
2821
- groupId: 'section',
2822
- options: {
2823
- sort: {
2824
- enabled: true,
2825
- },
2826
- filter: {
2827
- advance: {
2828
- enabled: true,
2829
- },
2830
- inline: {
2831
- enabled: true,
2832
- },
2833
- },
2834
- },
2835
- schema: {
2836
- dataType: 'string',
2837
- interface: {
2838
- type: AXPWidgetsCatalog.lookup,
2839
- options: {
2840
- entity: 'SecurityManagement.User',
2841
- multiple: false,
2842
- textField: 'username',
2843
- valueField: 'id',
2844
- expose: [
2845
- { source: 'id', target: 'auditInfo.updated.by.id' },
2846
- { source: 'username', target: 'auditInfo.updated.by.username' },
2847
- ],
2848
- },
2849
- },
2850
- },
2851
- },
2852
- ],
2853
- columns: [
2854
- { name: 'reviewerId', options: { dataPath: 'reviewer.title' } },
2855
- { name: 'status' },
2856
- { name: 'comment' },
2857
- { name: 'reviewedAt' },
2858
- { name: 'auditInfo.updated.at' },
2859
- { name: 'auditInfo.updated.by', options: { dataPath: 'auditInfo.updated.by.fullName' } },
2860
- ],
2861
- commands: {
2862
- create: {
2863
- execute: async (data) => {
2864
- // Set reviewedAt to current date if not provided
2865
- if (!data.reviewedAt) {
2866
- data.reviewedAt = new Date();
2867
- }
2868
- //TODO for test
2869
- data.reviewStatus = 'Approved';
2870
- // Create the review record
2871
- const res = await dataService.insertOne(data);
2872
- // Update document status based on review status
2873
- await updateDocumentStatus(data.documentId, data.reviewStatus, injector);
2874
- return { id: res };
2875
- },
2876
- },
2877
- delete: {
2878
- execute: async (id) => {
2879
- return await dataService.deleteOne(id);
2880
- },
2881
- },
2882
- update: {
2883
- execute: async (data) => {
2884
- // Update reviewedAt to current date
2885
- data.reviewedAt = new Date();
2886
- //TODO for test
2887
- data.reviewStatus = 'Approved';
2888
- // Update the review record
2889
- const result = await dataService.updateOne(data.id, data);
2890
- // Update document status based on review status
2891
- await updateDocumentStatus(data.documentId, data.reviewStatus, injector);
2892
- return result;
2893
- },
2894
- },
2895
- },
2896
- queries: {
2897
- byKey: {
2898
- execute: async (id) => {
2899
- const review = await dataService.getOne(id);
2900
- return {
2901
- ...review,
2902
- reviewedAt: review.reviewedAt ?? new Date(),
2903
- };
2904
- },
2905
- type: AXPEntityQueryType.Single,
2906
- },
2907
- list: {
2908
- execute: async (e) => {
2909
- return await dataService.query(e);
2910
- },
2911
- type: AXPEntityQueryType.List,
2912
- },
2913
- },
2914
- interfaces: {
2915
- master: {
2916
- create: {
2917
- sections: [
2918
- {
2919
- id: 'section',
2920
- },
2921
- ],
2922
- properties: [
2923
596
  {
2924
- name: 'documentId',
597
+ name: 'maxSize',
2925
598
  layout: {
2926
599
  positions: {
2927
600
  lg: {
2928
- colSpan: 12,
2929
- order: 1,
601
+ colSpan: 6,
2930
602
  },
2931
603
  },
2932
604
  },
2933
605
  },
2934
606
  {
2935
- name: 'reviewerId',
607
+ name: 'isEncrypted',
2936
608
  layout: {
2937
609
  positions: {
2938
610
  lg: {
2939
611
  colSpan: 6,
2940
- order: 5,
2941
612
  },
2942
613
  },
2943
614
  },
2944
615
  },
2945
616
  {
2946
- name: 'version',
617
+ name: 'enableExpiration',
2947
618
  layout: {
2948
619
  positions: {
2949
620
  lg: {
2950
621
  colSpan: 6,
2951
- order: 2,
2952
622
  },
2953
623
  },
2954
624
  },
2955
625
  },
2956
626
  {
2957
- name: 'status',
627
+ name: 'requiresReview',
2958
628
  layout: {
2959
629
  positions: {
2960
630
  lg: {
2961
631
  colSpan: 6,
2962
- order: 3,
2963
632
  },
2964
633
  },
2965
634
  },
2966
635
  },
2967
636
  {
2968
- name: 'comment',
637
+ name: 'enableVersioning',
2969
638
  layout: {
2970
639
  positions: {
2971
640
  lg: {
2972
- colSpan: 12,
2973
- order: 4,
641
+ colSpan: 6,
2974
642
  },
2975
643
  },
2976
644
  },
2977
645
  },
646
+ // {
647
+ // name: 'meta',
648
+ // layout: {
649
+ // positions: {
650
+ // lg: {
651
+ // colSpan: 12,
652
+ // },
653
+ // },
654
+ // },
655
+ // },
2978
656
  {
2979
- name: 'reviewedAt',
657
+ name: 'type',
2980
658
  layout: {
2981
659
  positions: {
2982
660
  lg: {
2983
- colSpan: 6,
2984
- order: 6,
661
+ colSpan: 12,
2985
662
  },
2986
663
  },
2987
664
  },
@@ -2991,39 +668,89 @@ async function reviewFactory(injector) {
2991
668
  update: {
2992
669
  sections: [
2993
670
  {
2994
- id: 'section',
671
+ id: 'basic-info',
672
+ },
673
+ {
674
+ id: 'management',
2995
675
  },
2996
676
  ],
2997
677
  properties: [
2998
678
  {
2999
- name: 'reviewerId',
679
+ name: 'name',
3000
680
  layout: {
3001
681
  positions: {
3002
682
  lg: {
3003
683
  colSpan: 6,
3004
- order: 5,
3005
684
  },
3006
685
  },
3007
686
  },
3008
687
  },
3009
688
  {
3010
- name: 'comment',
689
+ name: 'title',
3011
690
  layout: {
3012
691
  positions: {
3013
692
  lg: {
3014
- colSpan: 12,
3015
- order: 4,
693
+ colSpan: 6,
694
+ },
695
+ },
696
+ },
697
+ },
698
+ {
699
+ name: 'maxSize',
700
+ layout: {
701
+ positions: {
702
+ lg: {
703
+ colSpan: 6,
704
+ },
705
+ },
706
+ },
707
+ },
708
+ {
709
+ name: 'isEncrypted',
710
+ layout: {
711
+ positions: {
712
+ lg: {
713
+ colSpan: 6,
714
+ },
715
+ },
716
+ },
717
+ },
718
+ {
719
+ name: 'enableExpiration',
720
+ layout: {
721
+ positions: {
722
+ lg: {
723
+ colSpan: 6,
724
+ },
725
+ },
726
+ },
727
+ },
728
+ {
729
+ name: 'requiresReview',
730
+ layout: {
731
+ positions: {
732
+ lg: {
733
+ colSpan: 6,
3016
734
  },
3017
735
  },
3018
736
  },
3019
737
  },
3020
738
  {
3021
- name: 'reviewedAt',
739
+ name: 'enableVersioning',
3022
740
  layout: {
3023
741
  positions: {
3024
742
  lg: {
3025
743
  colSpan: 6,
3026
- order: 6,
744
+ },
745
+ },
746
+ },
747
+ },
748
+ {
749
+ name: 'type',
750
+ layout: {
751
+ positions: {
752
+ lg: {
753
+ colSpan: 12,
3027
754
  },
3028
755
  },
3029
756
  },
@@ -3031,10 +758,10 @@ async function reviewFactory(injector) {
3031
758
  ],
3032
759
  },
3033
760
  single: {
3034
- title: '{{document.name}} - Review',
761
+ title: '{{title}}',
3035
762
  sections: [
3036
763
  {
3037
- id: 'section',
764
+ id: 'basic-info',
3038
765
  layout: {
3039
766
  positions: {
3040
767
  lg: {
@@ -3043,107 +770,114 @@ async function reviewFactory(injector) {
3043
770
  },
3044
771
  },
3045
772
  },
3046
- ],
3047
- properties: [
3048
773
  {
3049
- name: 'documentId',
3050
- dataPath: 'document',
774
+ id: 'management',
3051
775
  layout: {
3052
776
  positions: {
3053
777
  lg: {
3054
778
  colSpan: 12,
3055
- order: 1,
3056
779
  },
3057
780
  },
3058
781
  },
3059
782
  },
783
+ ],
784
+ properties: [
3060
785
  {
3061
- name: 'reviewerId',
786
+ name: 'name',
3062
787
  layout: {
3063
788
  positions: {
3064
789
  lg: {
3065
790
  colSpan: 6,
3066
- order: 5,
3067
791
  },
3068
792
  },
3069
793
  },
3070
794
  },
3071
795
  {
3072
- name: 'version',
796
+ name: 'title',
3073
797
  layout: {
3074
798
  positions: {
3075
799
  lg: {
3076
800
  colSpan: 6,
3077
- order: 2,
3078
801
  },
3079
802
  },
3080
803
  },
3081
804
  },
3082
805
  {
3083
- name: 'status',
806
+ name: 'maxSize',
3084
807
  layout: {
3085
808
  positions: {
3086
809
  lg: {
3087
810
  colSpan: 6,
3088
- order: 3,
3089
811
  },
3090
812
  },
3091
813
  },
3092
814
  },
3093
815
  {
3094
- name: 'comment',
816
+ name: 'isEncrypted',
3095
817
  layout: {
3096
818
  positions: {
3097
819
  lg: {
3098
- colSpan: 12,
3099
- order: 4,
820
+ colSpan: 6,
3100
821
  },
3101
822
  },
3102
823
  },
3103
824
  },
3104
825
  {
3105
- name: 'reviewedAt',
826
+ name: 'enableExpiration',
3106
827
  layout: {
3107
828
  positions: {
3108
829
  lg: {
3109
830
  colSpan: 6,
3110
- order: 6,
3111
831
  },
3112
832
  },
3113
833
  },
3114
834
  },
3115
835
  {
3116
- name: 'auditInfo.updated.at',
836
+ name: 'requiresReview',
3117
837
  layout: {
3118
838
  positions: {
3119
839
  lg: {
3120
840
  colSpan: 6,
3121
- order: 7,
3122
841
  },
3123
842
  },
3124
843
  },
3125
844
  },
3126
845
  {
3127
- name: 'auditInfo.updated.by',
846
+ name: 'enableVersioning',
3128
847
  layout: {
3129
848
  positions: {
3130
849
  lg: {
3131
850
  colSpan: 6,
3132
- order: 8,
851
+ },
852
+ },
853
+ },
854
+ },
855
+ // {
856
+ // name: 'meta',
857
+ // layout: {
858
+ // positions: {
859
+ // lg: {
860
+ // colSpan: 12,
861
+ // },
862
+ // },
863
+ // },
864
+ // },
865
+ {
866
+ name: 'type',
867
+ layout: {
868
+ positions: {
869
+ lg: {
870
+ colSpan: 12,
3133
871
  },
3134
872
  },
3135
873
  },
3136
874
  },
3137
875
  ],
3138
- actions: [],
876
+ actions: [...entityMasterRecordActions()],
3139
877
  },
3140
878
  list: {
3141
- actions: [],
3142
- views: [
3143
- createAllQueryView({
3144
- sorts: [{ name: 'reviewedAt', dir: 'desc' }],
3145
- }),
3146
- ],
879
+ actions: [...entityMasterCrudActions({ edit: true })],
880
+ views: [createAllQueryView()],
3147
881
  },
3148
882
  },
3149
883
  },
@@ -3151,17 +885,30 @@ async function reviewFactory(injector) {
3151
885
  return entityDef;
3152
886
  }
3153
887
 
3154
- class AXMReviewEntityModule {
3155
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.3.16", ngImport: i0, type: AXMReviewEntityModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule }); }
3156
- static { this.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "14.0.0", version: "20.3.16", ngImport: i0, type: AXMReviewEntityModule }); }
3157
- static { this.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "20.3.16", ngImport: i0, type: AXMReviewEntityModule, providers: [
888
+ class AXMDocumentTypeService extends AXMEntityCrudServiceImpl {
889
+ }
890
+ class AXMDocumentTypeServiceImpl extends AXMDocumentTypeService {
891
+ constructor() {
892
+ super(`${RootConfig.module.name}.${RootConfig.entities.documentType.name}`);
893
+ }
894
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.3.16", ngImport: i0, type: AXMDocumentTypeServiceImpl, deps: [], target: i0.ɵɵFactoryTarget.Injectable }); }
895
+ static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "20.3.16", ngImport: i0, type: AXMDocumentTypeServiceImpl }); }
896
+ }
897
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.16", ngImport: i0, type: AXMDocumentTypeServiceImpl, decorators: [{
898
+ type: Injectable
899
+ }], ctorParameters: () => [] });
900
+
901
+ class AXMDocumentManagementDocumentTypeEntityModule {
902
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.3.16", ngImport: i0, type: AXMDocumentManagementDocumentTypeEntityModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule }); }
903
+ static { this.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "14.0.0", version: "20.3.16", ngImport: i0, type: AXMDocumentManagementDocumentTypeEntityModule }); }
904
+ static { this.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "20.3.16", ngImport: i0, type: AXMDocumentManagementDocumentTypeEntityModule, providers: [
3158
905
  {
3159
- provide: AXMReviewService,
3160
- useClass: AXMReviewServiceImpl,
906
+ provide: AXMDocumentTypeService,
907
+ useClass: AXMDocumentTypeServiceImpl,
3161
908
  },
3162
909
  ] }); }
3163
910
  }
3164
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.16", ngImport: i0, type: AXMReviewEntityModule, decorators: [{
911
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.16", ngImport: i0, type: AXMDocumentManagementDocumentTypeEntityModule, decorators: [{
3165
912
  type: NgModule,
3166
913
  args: [{
3167
914
  imports: [],
@@ -3169,64 +916,71 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.16", ngImpo
3169
916
  declarations: [],
3170
917
  providers: [
3171
918
  {
3172
- provide: AXMReviewService,
3173
- useClass: AXMReviewServiceImpl,
919
+ provide: AXMDocumentTypeService,
920
+ useClass: AXMDocumentTypeServiceImpl,
3174
921
  },
3175
922
  ],
3176
923
  }]
3177
924
  }] });
3178
925
 
3179
- class AXMDocumentReletedEntityModule {
3180
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.3.16", ngImport: i0, type: AXMDocumentReletedEntityModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule }); }
3181
- static { this.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "14.0.0", version: "20.3.16", ngImport: i0, type: AXMDocumentReletedEntityModule }); }
3182
- static { this.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "20.3.16", ngImport: i0, type: AXMDocumentReletedEntityModule }); }
926
+ /**
927
+ * Minimal entity definition for Folder so the entity registry can resolve
928
+ * DocumentManagement.Folder. Used by AXMFolderService (AXMEntityCrudServiceImpl).
929
+ * No list/form UI; folder tree is handled by document-explorer.
930
+ */
931
+ async function folderEntityFactory(_injector) {
932
+ const entityDef = {
933
+ module: RootConfig.module.name,
934
+ name: RootConfig.entities.folder.name,
935
+ title: RootConfig.entities.folder.title,
936
+ parentKey: 'parentId',
937
+ formats: {
938
+ individual: RootConfig.entities.folder.title,
939
+ plural: RootConfig.entities.folder.titlePlural,
940
+ searchResult: {
941
+ title: '{{ title }}',
942
+ description: RootConfig.module.title,
943
+ },
944
+ },
945
+ relatedEntities: [],
946
+ groups: [],
947
+ properties: [],
948
+ };
949
+ return entityDef;
950
+ }
951
+
952
+ var folder_entity = /*#__PURE__*/Object.freeze({
953
+ __proto__: null,
954
+ folderEntityFactory: folderEntityFactory
955
+ });
956
+
957
+ class AXMFolderService extends AXMEntityCrudServiceImpl {
3183
958
  }
3184
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.16", ngImport: i0, type: AXMDocumentReletedEntityModule, decorators: [{
3185
- type: NgModule,
3186
- args: [{
3187
- imports: [],
3188
- exports: [],
3189
- declarations: [],
3190
- providers: [],
3191
- }]
3192
- }] });
959
+ class AXMFolderServiceImpl extends AXMFolderService {
960
+ constructor() {
961
+ super(`${RootConfig.module.name}.${RootConfig.entities.folder.name}`);
962
+ }
963
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.3.16", ngImport: i0, type: AXMFolderServiceImpl, deps: [], target: i0.ɵɵFactoryTarget.Injectable }); }
964
+ static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "20.3.16", ngImport: i0, type: AXMFolderServiceImpl }); }
965
+ }
966
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.16", ngImport: i0, type: AXMFolderServiceImpl, decorators: [{
967
+ type: Injectable
968
+ }], ctorParameters: () => [] });
3193
969
 
3194
970
  // Entity Services
3195
971
 
3196
972
  var index = /*#__PURE__*/Object.freeze({
3197
973
  __proto__: null,
3198
- AXMDocumentManagementDocumentEntityModule: AXMDocumentManagementDocumentEntityModule,
3199
974
  AXMDocumentManagementDocumentTypeEntityModule: AXMDocumentManagementDocumentTypeEntityModule,
3200
- AXMDocumentManagementDocumentTypeMetaDefinitionEntityModule: AXMDocumentManagementDocumentTypeMetaDefinitionEntityModule,
3201
- AXMDocumentManagementDocumentTypeMetaDefinitionEntityService: AXMDocumentManagementDocumentTypeMetaDefinitionEntityService,
3202
- AXMDocumentManagementDocumentTypeMetaDefinitionEntityServiceImpl: AXMDocumentManagementDocumentTypeMetaDefinitionEntityServiceImpl,
3203
- AXMDocumentManagementDocumentTypeMetaValueEntityModule: AXMDocumentManagementDocumentTypeMetaValueEntityModule,
3204
- AXMDocumentManagementDocumentTypeMetaValueEntityService: AXMDocumentManagementDocumentTypeMetaValueEntityService,
3205
- AXMDocumentManagementDocumentTypeMetaValueEntityServiceImpl: AXMDocumentManagementDocumentTypeMetaValueEntityServiceImpl,
3206
- AXMDocumentManagementDocumentTypeStatusDefinitionEntityModule: AXMDocumentManagementDocumentTypeStatusDefinitionEntityModule,
3207
- AXMDocumentManagementDocumentTypeStatusDefinitionEntityService: AXMDocumentManagementDocumentTypeStatusDefinitionEntityService,
3208
- AXMDocumentManagementDocumentTypeStatusDefinitionEntityServiceImpl: AXMDocumentManagementDocumentTypeStatusDefinitionEntityServiceImpl,
3209
- AXMDocumentReletedEntityModule: AXMDocumentReletedEntityModule,
3210
975
  AXMDocumentService: AXMDocumentService,
3211
976
  AXMDocumentServiceImpl: AXMDocumentServiceImpl,
3212
977
  AXMDocumentTypeService: AXMDocumentTypeService,
3213
978
  AXMDocumentTypeServiceImpl: AXMDocumentTypeServiceImpl,
3214
- AXMFolderEntityModule: AXMFolderEntityModule,
3215
979
  AXMFolderService: AXMFolderService,
3216
980
  AXMFolderServiceImpl: AXMFolderServiceImpl,
3217
- AXMReviewEntityModule: AXMReviewEntityModule,
3218
- AXMReviewService: AXMReviewService,
3219
- AXMReviewServiceImpl: AXMReviewServiceImpl,
3220
- canTransition: canTransition,
3221
- documentFactory: documentFactory,
3222
- documentRelatedFactory: documentRelatedFactory,
981
+ documentEntityFactory: documentEntityFactory,
3223
982
  documentTypeFactory: documentTypeFactory,
3224
- documentTypeMetaDefinitionfactory: documentTypeMetaDefinitionfactory,
3225
- documentTypeMetaValueFactory: documentTypeMetaValueFactory,
3226
- documentTypeStatusDefinitionFactory: documentTypeStatusDefinitionFactory,
3227
- folderFactory: folderFactory,
3228
- getNextStatus: getNextStatus,
3229
- reviewFactory: reviewFactory
983
+ folderEntityFactory: folderEntityFactory
3230
984
  });
3231
985
 
3232
986
  class AXMImageFileTypeProvider {
@@ -3671,14 +1425,14 @@ class AXMFileTypeExtensionWidgetEditComponent extends AXPValueWidgetComponent {
3671
1425
  if (extension.meta) {
3672
1426
  for (const meta of extension.meta) {
3673
1427
  if (!get(meta, '__node__')) {
3674
- set$1(meta, '__node__', typeof meta.interface == 'function' ? await meta.interface() : meta.interface);
1428
+ set(meta, '__node__', typeof meta.interface == 'function' ? await meta.interface() : meta.interface);
3675
1429
  }
3676
1430
  }
3677
1431
  }
3678
1432
  if (fileType.meta) {
3679
1433
  for (const meta of fileType.meta) {
3680
1434
  if (!get(meta, '__node__')) {
3681
- set$1(meta, '__node__', typeof meta.interface == 'function' ? await meta.interface() : meta.interface);
1435
+ set(meta, '__node__', typeof meta.interface == 'function' ? await meta.interface() : meta.interface);
3682
1436
  }
3683
1437
  }
3684
1438
  }
@@ -4169,12 +1923,12 @@ class AXMDocumentDialogService {
4169
1923
  const promises = (ctx?.['files']).map(async (item, index) => {
4170
1924
  const f = fileList[index];
4171
1925
  const newId = await this.documentService.insertOne({
4172
- fileId: f,
1926
+ fileInfo: f,
4173
1927
  name: f?.name,
4174
- title: f?.name,
1928
+ title: f?.title ?? f?.name,
1929
+ description: f?.description,
4175
1930
  documentType,
4176
1931
  parentId,
4177
- size: f?.size || 0,
4178
1932
  status: 'Draft',
4179
1933
  version: (version ?? 0) + 1,
4180
1934
  metaDataForm: ctx?.[`file-${index}`]?.['metaDataForm'],
@@ -4336,7 +2090,9 @@ class DocumentAttachmentsService {
4336
2090
  parentId: options?.folderId ?? '',
4337
2091
  version: 0,
4338
2092
  };
4339
- const title = await this.translateService.translateAsync('@document-management:dialogs.attach-file.title', { params: { title: fileTypeEntity.title } });
2093
+ const title = await this.translateService.translateAsync('@document-management:dialogs.attach-file.title', {
2094
+ params: { title: fileTypeEntity.title },
2095
+ });
4340
2096
  const result = await this.documentDialog.openAttachmentDialog(title, popupData);
4341
2097
  return this.handlePopupResult(result);
4342
2098
  }
@@ -4345,10 +2101,10 @@ class DocumentAttachmentsService {
4345
2101
  if (!file) {
4346
2102
  throw new Error('File not found');
4347
2103
  }
4348
- console.log(file);
2104
+ const documentTypeEntity = await this.resolveFileType(file.documentType);
4349
2105
  const popupData = {
4350
- documentType: file.documentType,
4351
- files: [file.fileId],
2106
+ documentType: documentTypeEntity,
2107
+ files: [file.fileInfo],
4352
2108
  parentId: options?.folderId ?? '',
4353
2109
  metaData: file.metaDataForm,
4354
2110
  documentId: fileId,
@@ -4366,15 +2122,16 @@ class DocumentAttachmentsService {
4366
2122
  if (!document) {
4367
2123
  throw new Error('File not found');
4368
2124
  }
2125
+ const documentTypeEntity = await this.resolveFileType(document.documentType);
4369
2126
  // Choose a single new file based on document type constraints
4370
- const files = await this.chooseFiles(document.documentType, false);
2127
+ const files = await this.chooseFiles(documentTypeEntity, false);
4371
2128
  if (!files || files.length === 0) {
4372
2129
  return false;
4373
2130
  }
4374
2131
  const mapped = this.mapFilesToFileListItems(files);
4375
2132
  // Open a lightweight dialog to edit metadata (no auto-save); then apply update with new file
4376
2133
  const result = await this.documentDialog.openAttachmentDialogWithoutSave('@document-management:dialogs.manage-version.upload-new-version', {
4377
- documentType: document.documentType,
2134
+ documentType: documentTypeEntity,
4378
2135
  files: mapped,
4379
2136
  parentId: document.parentId,
4380
2137
  metaData: document.metaDataForm,
@@ -4387,8 +2144,7 @@ class DocumentAttachmentsService {
4387
2144
  const metaDataForm = document.metaDataForm;
4388
2145
  const newName = files[0]?.name ?? document.name;
4389
2146
  await this.documentService.updateOne(fileId, {
4390
- fileId: mapped[0],
4391
- size: files[0]?.size ?? document.size,
2147
+ fileInfo: mapped[0],
4392
2148
  version: (document.version ?? 0) + 1,
4393
2149
  metaDataForm,
4394
2150
  name: newName,
@@ -4402,19 +2158,16 @@ class DocumentAttachmentsService {
4402
2158
  }
4403
2159
  }
4404
2160
  async resolveFileType(fileType) {
4405
- if (typeof fileType === 'string' || typeof fileType === 'number') {
4406
- const fileTypeId = fileType;
4407
- const fileTypeEntity = await this.documentTypeService.getOne(fileTypeId);
4408
- if (!fileTypeEntity) {
4409
- throw new Error('File type not found');
4410
- }
4411
- return fileTypeEntity;
2161
+ const id = typeof fileType === 'string' ? fileType : fileType.id;
2162
+ const entity = await this.documentTypeService.getOne(id);
2163
+ if (!entity) {
2164
+ throw new Error(`Document type not found: ${id}`);
4412
2165
  }
4413
- return fileType;
2166
+ return entity;
4414
2167
  }
4415
2168
  async chooseFiles(fileTypeEntity, multiple) {
4416
- console.log(fileTypeEntity.type.selectedItems);
4417
- const acceptTypes = fileTypeEntity.type.selectedItems.map((item) => `.${item.name.split('.')[1]}`).join(',');
2169
+ const selectedItems = fileTypeEntity.type?.selectedItems ?? [];
2170
+ const acceptTypes = selectedItems.map((item) => `.${item.name.split('.')[1]}`).join(',');
4418
2171
  return await this.fileService.choose({
4419
2172
  multiple: multiple ?? false,
4420
2173
  accept: acceptTypes,
@@ -4470,7 +2223,6 @@ class AXMDocumentManagerService {
4470
2223
  this.workflow = inject(AXPWorkflowService);
4471
2224
  this.translate = inject(AXTranslationService);
4472
2225
  this.layoutBuilder = inject(AXPLayoutBuilderService);
4473
- this.reviewService = inject(AXMReviewService);
4474
2226
  this.attachmentsService = inject(DocumentAttachmentsService);
4475
2227
  this.filterMiddlewareService = inject(AXPFilterOperatorMiddlewareService);
4476
2228
  this.hooks = inject(AXPHookService, { optional: true });
@@ -4486,13 +2238,13 @@ class AXMDocumentManagerService {
4486
2238
  this.mapFolderDtoToFolderNode = (folder) => {
4487
2239
  return {
4488
2240
  id: folder.id,
4489
- name: folder.name,
2241
+ name: folder.title,
4490
2242
  type: 'folder',
4491
2243
  parentId: folder.parentId || null,
4492
2244
  modifiedAt: folder?.updated?.at,
4493
2245
  createdAt: folder?.created?.at,
4494
2246
  description: folder.description,
4495
- childrenCount: folder.nodeCount,
2247
+ childrenCount: folder.childrenCount,
4496
2248
  size: folder.size,
4497
2249
  documentTypes: folder.documentTypes || [],
4498
2250
  storageType: 'physical',
@@ -4536,8 +2288,8 @@ class AXMDocumentManagerService {
4536
2288
  logic: 'and',
4537
2289
  filters: [
4538
2290
  { field: 'parentId', operator: { type: 'isNull' } },
4539
- { field: 'tenantId', operator: { type: 'isNull' } },
4540
- { field: 'userId', operator: { type: 'isNull' } },
2291
+ { field: 'ownershipInfo.tenantId', operator: { type: 'isNull' } },
2292
+ { field: 'ownershipInfo.userId', operator: { type: 'isNull' } },
4541
2293
  ],
4542
2294
  },
4543
2295
  });
@@ -4563,10 +2315,10 @@ class AXMDocumentManagerService {
4563
2315
  {
4564
2316
  field: 'parentId',
4565
2317
  operator: { type: 'equal' },
4566
- value: rootFolder.folders?.find((f) => f.name === 'Tenants')?.id,
2318
+ value: rootFolder.folders?.find((f) => f.title === 'Tenants')?.id,
4567
2319
  },
4568
- { field: 'tenantId', operator: { type: 'equal' }, value: tenantId },
4569
- { field: 'userId', operator: { type: 'isNull' } },
2320
+ { field: 'ownershipInfo.tenantId', operator: { type: 'equal' }, value: tenantId },
2321
+ { field: 'ownershipInfo.userId', operator: { type: 'isNull' } },
4570
2322
  ]),
4571
2323
  },
4572
2324
  });
@@ -4590,8 +2342,8 @@ class AXMDocumentManagerService {
4590
2342
  logic: 'and',
4591
2343
  filters: this.filterMiddlewareService.transformFilters([
4592
2344
  { field: 'parentId', operator: { type: 'equal' }, value: tenantFolderId },
4593
- { field: 'tenantId', operator: { type: 'equal' }, value: tenantId },
4594
- { field: 'userId', operator: { type: 'equal' }, value: userId },
2345
+ { field: 'ownershipInfo.tenantId', operator: { type: 'equal' }, value: tenantId },
2346
+ { field: 'ownershipInfo.userId', operator: { type: 'equal' }, value: userId },
4595
2347
  ]),
4596
2348
  },
4597
2349
  });
@@ -4611,8 +2363,8 @@ class AXMDocumentManagerService {
4611
2363
  parentId: file.parentId,
4612
2364
  modifiedAt: file?.updated?.at,
4613
2365
  createdAt: file?.created?.at,
4614
- size: file.size,
4615
- fileId: file.fileId,
2366
+ size: file.fileInfo?.size ?? 0,
2367
+ fileId: file.fileInfo,
4616
2368
  storageType: 'physical',
4617
2369
  meta: file.metaDataForm ? Object.values(file.metaDataForm) : undefined,
4618
2370
  documentTypes: file.documentType ? [file.documentType] : [],
@@ -4622,33 +2374,46 @@ class AXMDocumentManagerService {
4622
2374
  * Maps document to media viewer data
4623
2375
  */
4624
2376
  async mapDocumentToMediaViewerData(doc, fileInfosMap) {
4625
- if (doc.fileId?.source?.kind == 'fileId') {
4626
- const fileId = doc.fileId.source.value;
2377
+ const f = doc.fileInfo ?? doc.fileId;
2378
+ const fileIdStr = f == null
2379
+ ? undefined
2380
+ : typeof f === 'string'
2381
+ ? f
2382
+ : f.source?.kind === 'fileId' &&
2383
+ typeof f.source?.value === 'string'
2384
+ ? f.source.value
2385
+ : typeof f.id === 'string'
2386
+ ? f.id
2387
+ : undefined;
2388
+ if (fileIdStr) {
4627
2389
  let fileInfo;
4628
2390
  if (fileInfosMap) {
4629
- // Use pre-fetched data
4630
- fileInfo = fileInfosMap.get(fileId);
2391
+ fileInfo = fileInfosMap.get(fileIdStr);
4631
2392
  }
4632
2393
  else {
4633
- // Fallback to individual fetch (for backward compatibility)
4634
- fileInfo = await this.fileService.getInfo(fileId);
2394
+ fileInfo = await this.fileService.getInfo(fileIdStr);
4635
2395
  }
2396
+ const resolvedSize = fileInfo?.size ?? doc?.fileId?.size ?? 0;
4636
2397
  return {
4637
2398
  id: doc.id ?? '',
4638
2399
  name: doc.name,
4639
2400
  type: doc.name.endsWith('.pdf') ? 'pdf' : 'image',
4640
2401
  url: fileInfo?.url ?? '',
4641
- size: doc.size.toString(),
2402
+ size: resolvedSize.toString(),
4642
2403
  thumbnailUrl: fileInfo?.url ?? '',
4643
2404
  };
4644
2405
  }
2406
+ const fallbackUrl = doc?.fileId?.source?.kind === 'url' && typeof doc.fileId.source.value === 'string'
2407
+ ? doc.fileId.source.value
2408
+ : '';
2409
+ const fallbackSize = doc?.fileId?.size ?? 0;
4645
2410
  return {
4646
2411
  id: doc.id ?? '',
4647
2412
  name: doc.name,
4648
2413
  type: doc.meta?.['type'] ?? 'image',
4649
- url: doc.fileId ?? '',
4650
- size: doc.size.toString(),
4651
- thumbnailUrl: doc.fileId ?? '',
2414
+ url: fallbackUrl,
2415
+ size: fallbackSize.toString(),
2416
+ thumbnailUrl: fallbackUrl,
4652
2417
  };
4653
2418
  }
4654
2419
  //#endregion
@@ -4686,9 +2451,8 @@ class AXMDocumentManagerService {
4686
2451
  return `${nameWithoutExt} copy${extension}`;
4687
2452
  }
4688
2453
  /**
4689
- * Prepares file for copy operation by downloading from storage and converting to blob source
4690
- * This method takes an existing AXPFileListItem (or fileId string) and prepares it for re-upload
4691
- * by downloading the file from storage and changing source to blob with uploading status
2454
+ * Prepares file for copy operation by downloading from storage and converting to blob source.
2455
+ * Accepts document fileId (AXPFileListItem or legacy string) and returns AXPFileListItem with blob source.
4692
2456
  */
4693
2457
  async prepareFileForCopy(fileId, fileName) {
4694
2458
  try {
@@ -4708,9 +2472,6 @@ class AXMDocumentManagerService {
4708
2472
  fileIdString = fileId.id;
4709
2473
  existingFileItem = fileId;
4710
2474
  }
4711
- else if (fileId.fileId && typeof fileId.fileId === 'string') {
4712
- fileIdString = fileId.fileId;
4713
- }
4714
2475
  }
4715
2476
  if (!fileIdString) {
4716
2477
  console.warn('Could not extract fileId from:', fileId);
@@ -4784,7 +2545,7 @@ class AXMDocumentManagerService {
4784
2545
  throw new Error('Both Tenant ID and User ID are required for user scope');
4785
2546
  }
4786
2547
  const tenantFolder = await this.getTenantRootFolder(rootFolder, options.tenantId);
4787
- const userRoot = await this.getUserRootFolder(tenantFolder.folders?.find((f) => f.name === 'Users')?.id, options.tenantId, options.userId);
2548
+ const userRoot = await this.getUserRootFolder(tenantFolder.folders?.find((f) => f.title === 'Users')?.id, options.tenantId, options.userId);
4788
2549
  result = this.mapFolderDtoToFolderNode(userRoot);
4789
2550
  path = await this.buildPath(result, userRoot.id);
4790
2551
  break;
@@ -4819,12 +2580,14 @@ class AXMDocumentManagerService {
4819
2580
  const userRef = { id: userId, type: 'user' };
4820
2581
  const folderToCreate = {
4821
2582
  ...data,
2583
+ title: data.title,
2584
+ childrenCount: 0,
4822
2585
  created: { at: now, user: userRef },
4823
2586
  updated: { at: now, user: userRef },
4824
2587
  isSystem: false,
4825
2588
  isHidden: false,
4826
2589
  isDeleted: false,
4827
- size: 0,
2590
+ size: data.size ?? 0,
4828
2591
  };
4829
2592
  const createdFolder = (await this.folderService.insertOne(folderToCreate));
4830
2593
  let folder;
@@ -5048,12 +2811,15 @@ class AXMDocumentManagerService {
5048
2811
  // Extract needed properties without id
5049
2812
  const { id, ...fileDataWithoutId } = originalFile;
5050
2813
  // Prepare file for copy by downloading from storage and converting to blob source
5051
- const fileListItem = await this.prepareFileForCopy(originalFile.fileId, newName);
2814
+ const fileListItem = await this.prepareFileForCopy(originalFile.fileInfo, newName);
2815
+ if (!fileListItem) {
2816
+ throw new Error('Could not prepare file for copy');
2817
+ }
5052
2818
  const fileData = {
5053
2819
  ...fileDataWithoutId,
5054
2820
  name: newName,
5055
2821
  title: newName,
5056
- fileId: fileListItem,
2822
+ fileInfo: fileListItem,
5057
2823
  };
5058
2824
  // Create the new file
5059
2825
  return await this.createFile(fileData);
@@ -5069,7 +2835,7 @@ class AXMDocumentManagerService {
5069
2835
  const { id, ...folderDataWithoutId } = originalFolder;
5070
2836
  const folderData = {
5071
2837
  ...folderDataWithoutId,
5072
- name: newName,
2838
+ title: newName,
5073
2839
  };
5074
2840
  // Create the new folder
5075
2841
  return await this.createFolder(folderData);
@@ -5130,7 +2896,7 @@ class AXMDocumentManagerService {
5130
2896
  if (selectedFolder) {
5131
2897
  if (options.node.type === 'folder') {
5132
2898
  await this.createFolder({
5133
- name: options.node.name,
2899
+ title: options.node.name,
5134
2900
  parentId: selectedFolder.id,
5135
2901
  color: '#ffffff',
5136
2902
  size: options.node.size,
@@ -5144,13 +2910,15 @@ class AXMDocumentManagerService {
5144
2910
  throw new Error(`File with ID ${options.node.id} not found`);
5145
2911
  }
5146
2912
  // Prepare file for copy by downloading from storage and converting to blob source
5147
- const fileListItem = await this.prepareFileForCopy(originalFile.fileId, options.node.name);
2913
+ const fileListItem = await this.prepareFileForCopy(originalFile.fileInfo, options.node.name);
2914
+ if (!fileListItem) {
2915
+ throw new Error('Could not prepare file for copy');
2916
+ }
5148
2917
  await this.createFile({
5149
2918
  title: options.node.name,
5150
2919
  name: options.node.name,
5151
2920
  parentId: selectedFolder.id,
5152
- fileId: fileListItem,
5153
- size: originalFile.size ?? options.node.size ?? 0,
2921
+ fileInfo: fileListItem,
5154
2922
  documentType: options.node.documentTypes[0],
5155
2923
  status: 'Draft',
5156
2924
  });
@@ -5396,7 +3164,7 @@ class AXMDocumentManagerService {
5396
3164
  const selected = Array.isArray(form.documentTypes) ? form.documentTypes : [];
5397
3165
  const selectedTypes = selected.map((v) => typeof v === 'object' ? v : items.find((it) => it.name === v) || { name: v, title: v, id: v });
5398
3166
  await this.updateFolder(node.id, {
5399
- name: form.name,
3167
+ title: form.title ?? form.name,
5400
3168
  description: form.description,
5401
3169
  inherit: form.inherit,
5402
3170
  documentTypes: selectedTypes,
@@ -5420,12 +3188,12 @@ class AXMDocumentManagerService {
5420
3188
  .dialog((dialog) => {
5421
3189
  dialog
5422
3190
  .setTitle('@document-management:actions.create-folder')
5423
- .setContext({ name: '', description: '', inherit: 'None', documentTypes: [], color: '#FFFFFF' })
3191
+ .setContext({ title: '', description: '', inherit: 'None', documentTypes: [], color: '#FFFFFF' })
5424
3192
  .content((flex) => {
5425
3193
  flex
5426
3194
  .setDirection('column')
5427
- .formField('@general:terms.common.name', (field) => {
5428
- field.path('name');
3195
+ .formField('@general:terms.common.title', (field) => {
3196
+ field.path('title');
5429
3197
  field.textBox({ validations: [{ rule: 'required' }] });
5430
3198
  })
5431
3199
  .formField('@general:terms.common.description', (field) => {
@@ -5469,16 +3237,22 @@ class AXMDocumentManagerService {
5469
3237
  return null;
5470
3238
  }
5471
3239
  const form = context;
5472
- const folder = await this.createFolder({
5473
- name: form.name,
5474
- color: form.color,
5475
- parentId,
5476
- description: form.description,
5477
- documentTypes: form.documentTypes,
5478
- size: 0,
5479
- inherit: form.inherit,
5480
- });
5481
- return folder;
3240
+ try {
3241
+ const folder = await this.createFolder({
3242
+ title: form.title,
3243
+ color: form.color,
3244
+ parentId,
3245
+ description: form.description,
3246
+ documentTypes: form.documentTypes,
3247
+ size: 0,
3248
+ inherit: form.inherit,
3249
+ });
3250
+ return folder;
3251
+ }
3252
+ catch (err) {
3253
+ console.error('[showCreateFolderDialog] createFolder failed', err);
3254
+ throw err;
3255
+ }
5482
3256
  });
5483
3257
  })
5484
3258
  .show();
@@ -5519,7 +3293,7 @@ class AXMDocumentManagerService {
5519
3293
  dialogRef.setLoading(true);
5520
3294
  try {
5521
3295
  if (node.type === 'folder') {
5522
- return await this.updateFolder(node.id, { name: formData.name });
3296
+ return await this.updateFolder(node.id, { title: formData.name });
5523
3297
  }
5524
3298
  await this.updateFileName(node, formData.name);
5525
3299
  return await this.updateFile(node.id, { name: formData.name });
@@ -5578,7 +3352,7 @@ class AXMDocumentManagerService {
5578
3352
  */
5579
3353
  async showFileViewerPopup(node, options) {
5580
3354
  const isVirtualFolder = node.parentId === 'virtual';
5581
- const parentFolderName = isVirtualFolder ? 'Virtual' : (await this.folderService.getOne(node.parentId)).name;
3355
+ const parentFolderName = isVirtualFolder ? 'Virtual' : (await this.folderService.getOne(node.parentId)).title;
5582
3356
  const documents = isVirtualFolder
5583
3357
  ? (options?.folderVirtualFiles ?? [])
5584
3358
  : ((await this.folderService.getOne(node.parentId)).documents ?? []);
@@ -5590,13 +3364,16 @@ class AXMDocumentManagerService {
5590
3364
  return ext && AXMDocumentManagerService.GALLERY_EXTENSIONS.includes(ext);
5591
3365
  });
5592
3366
  // Convert documents to AXPFileListItem[] format for the gallery widget
5593
- const fileListItems = filteredDocuments.map((doc) => ({
5594
- id: doc.id ?? '',
5595
- name: doc.name,
5596
- size: doc.size,
5597
- status: 'attached',
5598
- source: doc.fileId?.source,
5599
- }));
3367
+ const fileListItems = filteredDocuments.map((doc) => {
3368
+ const fileInfo = doc.fileInfo ?? doc.fileId;
3369
+ return {
3370
+ id: doc.id ?? '',
3371
+ name: doc.name,
3372
+ size: fileInfo?.size ?? 0,
3373
+ status: 'attached',
3374
+ source: fileInfo?.source,
3375
+ };
3376
+ });
5600
3377
  // Calculate start index
5601
3378
  const startIndex = isVirtualFolder
5602
3379
  ? (options?.folderVirtualFiles?.findIndex((f) => f.id === node.id) ?? 0)
@@ -6290,29 +4067,30 @@ const AXPDocumentExplorerViewModel = signalStore({ providedIn: 'root' }, withSta
6290
4067
  },
6291
4068
  ];
6292
4069
  // Manage versions (only if document type has versioning enabled)
6293
- const docType = node.documentTypes?.[0];
6294
- if (docType?.enableVersioning) {
6295
- menuItems.push({
6296
- name: 'manage-versions',
6297
- text: await trans('menus.context.manage-versions'),
6298
- icon: 'fa-light fa-clock-rotate-left',
6299
- items: [
6300
- {
6301
- name: 'upload-new-version',
6302
- text: await trans('menus.context.upload-new-version'),
6303
- icon: 'fa-light fa-file-circle-plus',
6304
- data: node,
6305
- },
6306
- {
6307
- name: 'show-version-history',
6308
- text: await trans('menus.context.show-version-history'),
6309
- icon: 'fa-light fa-timeline',
6310
- data: node,
6311
- },
6312
- ],
6313
- break: true,
6314
- });
6315
- }
4070
+ // const docType = node.documentTypes?.[0];
4071
+ //TODO handle versioning
4072
+ // if (docType?.enableVersioning) {
4073
+ // menuItems.push({
4074
+ // name: 'manage-versions',
4075
+ // text: await trans('menus.context.manage-versions'),
4076
+ // icon: 'fa-light fa-clock-rotate-left',
4077
+ // items: [
4078
+ // {
4079
+ // name: 'upload-new-version',
4080
+ // text: await trans('menus.context.upload-new-version'),
4081
+ // icon: 'fa-light fa-file-circle-plus',
4082
+ // data: node,
4083
+ // },
4084
+ // {
4085
+ // name: 'show-version-history',
4086
+ // text: await trans('menus.context.show-version-history'),
4087
+ // icon: 'fa-light fa-timeline',
4088
+ // data: node,
4089
+ // },
4090
+ // ],
4091
+ // break: true,
4092
+ // });
4093
+ // }
6316
4094
  // Information submenu items
6317
4095
  const infoSubItems = [
6318
4096
  {
@@ -7152,14 +4930,15 @@ const attachmentsPlugin = {
7152
4930
  },
7153
4931
  };
7154
4932
 
7155
- /** Extract metadata for server (metaDataForm) from widget item (meta or metaDataForm). */
7156
- function getMetaDataFormForServer(item) {
4933
+ function getDocumentMetaDataForm(item) {
7157
4934
  if (item?.meta?.metaDataForm != null)
7158
4935
  return item.meta.metaDataForm;
7159
4936
  if (item?.metaDataForm != null)
7160
4937
  return item.metaDataForm;
7161
- if (item?.meta != null && typeof item.meta === 'object' && !Array.isArray(item.meta))
7162
- return item.meta;
4938
+ if (item?.meta != null && typeof item.meta === 'object' && !Array.isArray(item.meta)) {
4939
+ const m = item.meta;
4940
+ return m['metaDataForm'] ?? m;
4941
+ }
7163
4942
  return undefined;
7164
4943
  }
7165
4944
  /** Resolve list of attachment field names from entity extensions.attachments. */
@@ -7208,7 +4987,7 @@ const attachmentsUploadMiddleware = {
7208
4987
  pendingByField[field] = [];
7209
4988
  const normalized = [];
7210
4989
  for (const item of list) {
7211
- const metaDataForm = getMetaDataFormForServer(item);
4990
+ const metaDataForm = getDocumentMetaDataForm(item);
7212
4991
  if (item?.source?.kind === 'blob' && item.source.value instanceof Blob) {
7213
4992
  const blob = item.source.value;
7214
4993
  const name = item.name || `file-${Date.now()}`;
@@ -7263,7 +5042,7 @@ const attachmentsUploadMiddleware = {
7263
5042
  continue;
7264
5043
  const finalRefs = (ctx.data[field] ?? []).filter((x) => x.status !== 'pending_upload');
7265
5044
  for (const { fileItem, blob } of pending) {
7266
- const metaDataForm = fileItem.metaDataForm ?? getMetaDataFormForServer(fileItem);
5045
+ const metaDataForm = fileItem.metaDataForm ?? getDocumentMetaDataForm(fileItem);
7267
5046
  try {
7268
5047
  const info = await storage.save({
7269
5048
  file: blob,
@@ -7324,6 +5103,17 @@ const attachmentsUploadMiddleware = {
7324
5103
  },
7325
5104
  };
7326
5105
 
5106
+ function getFileIdFromFileInfo(fileInfo) {
5107
+ if (fileInfo == null)
5108
+ return undefined;
5109
+ if (typeof fileInfo === 'string')
5110
+ return fileInfo;
5111
+ if (fileInfo.source?.kind === 'fileId' && typeof fileInfo.source.value === 'string')
5112
+ return fileInfo.source.value;
5113
+ if (typeof fileInfo.id === 'string')
5114
+ return fileInfo.id;
5115
+ return undefined;
5116
+ }
7327
5117
  //#region ---- Plugin Guard Utilities ----
7328
5118
  /**
7329
5119
  * Check if the 'document' plugin is active (enabled and not excluded) in the payload.
@@ -7421,6 +5211,11 @@ const DocumentFileUploaderActionsByTypeProvider = {
7421
5211
  });
7422
5212
  if (files.length === 0)
7423
5213
  return;
5214
+ const documentType = {
5215
+ id: docType?.id ?? '',
5216
+ name: typeName,
5217
+ title: docType?.title ?? typeName,
5218
+ };
7424
5219
  const fileItems = files.map((file) => ({
7425
5220
  id: AXPDataGenerator.uuid(),
7426
5221
  name: file.name,
@@ -7428,7 +5223,7 @@ const DocumentFileUploaderActionsByTypeProvider = {
7428
5223
  type: file.type,
7429
5224
  status: 'attached',
7430
5225
  source: { kind: 'blob', value: file },
7431
- __documentTypeName: typeName,
5226
+ meta: { documentType },
7432
5227
  }));
7433
5228
  if (hasMeta) {
7434
5229
  const result = await documentDialogService.openAttachmentDialogWithoutSave('Document Type Choose File', {
@@ -7437,8 +5232,15 @@ const DocumentFileUploaderActionsByTypeProvider = {
7437
5232
  });
7438
5233
  if (result.data?.cancel != null && !result.data.cancel && result.data?.files) {
7439
5234
  result.data.files.forEach((f, i) => {
7440
- if (fileItems[i])
7441
- set(fileItems[i], 'metaDataForm', f?.metaDataForm);
5235
+ if (fileItems[i]) {
5236
+ const meta = {
5237
+ ...fileItems[i].meta,
5238
+ documentType,
5239
+ metaDataForm: f?.metaDataForm,
5240
+ };
5241
+ set$1(fileItems[i], 'meta', meta);
5242
+ set$1(fileItems[i], 'metaDataForm', f?.metaDataForm);
5243
+ }
7442
5244
  });
7443
5245
  }
7444
5246
  else if (result.data?.cancel) {
@@ -7460,13 +5262,18 @@ const DocumentFileUploaderBeforeFilesAddedProvider = {
7460
5262
  priority: 0,
7461
5263
  async execute(payload) {
7462
5264
  const opts = getDocumentPluginOptions(payload);
7463
- const docTypeName = payload.newFiles[0]?.__documentTypeName ??
7464
- opts?.docTypeName;
5265
+ const firstMeta = payload.newFiles[0]?.meta;
5266
+ const docTypeName = firstMeta?.documentType?.name ?? opts?.docTypeName;
7465
5267
  if (!docTypeName)
7466
5268
  return payload;
7467
5269
  const injector = inject(Injector);
7468
5270
  const documentManagementService = injector.get(AXPDocumentManagementService);
7469
5271
  const docType = await documentManagementService.getDocumentTypeByName(docTypeName);
5272
+ const documentType = {
5273
+ id: docType?.id ?? '',
5274
+ name: docType?.name ?? docTypeName,
5275
+ title: docType?.title ?? docTypeName,
5276
+ };
7470
5277
  const documentDialogService = injector.get(AXMDocumentDialogService);
7471
5278
  const result = await documentDialogService.openAttachmentDialogWithoutSave('Document Type Choose File', {
7472
5279
  documentType: docType,
@@ -7474,7 +5281,14 @@ const DocumentFileUploaderBeforeFilesAddedProvider = {
7474
5281
  });
7475
5282
  if (result.data?.cancel != null && !result.data.cancel && result.data?.files) {
7476
5283
  payload.newFiles.forEach((file, i) => {
7477
- set(file, 'metaDataForm', result.data?.files?.[i]?.metaDataForm);
5284
+ const metaDataForm = result.data?.files?.[i]?.metaDataForm;
5285
+ const meta = {
5286
+ ...file.meta,
5287
+ documentType,
5288
+ metaDataForm,
5289
+ };
5290
+ set$1(file, 'meta', meta);
5291
+ set$1(file, 'metaDataForm', metaDataForm);
7478
5292
  });
7479
5293
  }
7480
5294
  return payload;
@@ -7485,9 +5299,10 @@ const DocumentFileUploaderEditDialogAfterFormProvider = {
7485
5299
  key: 'file-uploader.edit-dialog.groups.after-form',
7486
5300
  priority: 0,
7487
5301
  async execute(payload) {
7488
- const metaObj = payload.file?.metaDataForm;
5302
+ const fileMeta = payload.file.meta;
5303
+ const metaObj = (fileMeta?.metaDataForm ?? payload.file.metaDataForm);
7489
5304
  const opts = getDocumentPluginOptions(payload);
7490
- const docTypeName = payload.file?.__documentTypeName ?? opts?.docTypeName;
5305
+ const docTypeName = fileMeta?.documentType?.name ?? opts?.docTypeName;
7491
5306
  const injector = inject(Injector);
7492
5307
  const documentManagementService = injector.get(AXPDocumentManagementService);
7493
5308
  const docType = docTypeName
@@ -7539,9 +5354,8 @@ const DocumentFileUploaderDownloadReferenceProvider = {
7539
5354
  console.error('Document not found for reference:', payload.reference);
7540
5355
  return payload;
7541
5356
  }
7542
- // Extract fileId from document
7543
- const fileId = typeof document.fileId === 'string' ? document.fileId : (document.fileId?.id ?? document.fileId);
7544
- if (!fileId || typeof fileId !== 'string') {
5357
+ const fileId = getFileIdFromFileInfo(document.fileInfo);
5358
+ if (!fileId) {
7545
5359
  console.error('Document does not have a valid fileId:', document);
7546
5360
  return payload;
7547
5361
  }
@@ -7600,13 +5414,7 @@ class AXMDocumentManagementModule {
7600
5414
  static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.3.16", ngImport: i0, type: AXMDocumentManagementModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule }); }
7601
5415
  static { this.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "14.0.0", version: "20.3.16", ngImport: i0, type: AXMDocumentManagementModule, imports: [AXMDriveChooseModule,
7602
5416
  // Entity Modules
7603
- AXMDocumentManagementDocumentTypeStatusDefinitionEntityModule,
7604
- AXMDocumentManagementDocumentTypeMetaValueEntityModule,
7605
- AXMDocumentManagementDocumentTypeMetaDefinitionEntityModule,
7606
- AXMDocumentManagementDocumentTypeEntityModule,
7607
- AXMDocumentManagementDocumentEntityModule,
7608
- AXMFolderEntityModule,
7609
- AXMReviewEntityModule, i6.AXPWidgetCoreModule, i2$2.AXMediaViewerModule, i3$1.AXPWorkflowModule] }); }
5417
+ AXMDocumentManagementDocumentTypeEntityModule, i6.AXPWidgetCoreModule, i2$2.AXMediaViewerModule, i3$1.AXPWorkflowModule] }); }
7610
5418
  static { this.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "20.3.16", ngImport: i0, type: AXMDocumentManagementModule, providers: [
7611
5419
  // Module-specific providers (not part of manifest system)
7612
5420
  { provide: AXP_ENTITY_ACTION_PLUGIN, multi: true, useValue: attachmentsPlugin },
@@ -7658,15 +5466,17 @@ class AXMDocumentManagementModule {
7658
5466
  useClass: AXMSearchCommandProvider,
7659
5467
  multi: true,
7660
5468
  },
5469
+ {
5470
+ provide: AXMDocumentService,
5471
+ useClass: AXMDocumentServiceImpl,
5472
+ },
5473
+ {
5474
+ provide: AXMFolderService,
5475
+ useClass: AXMFolderServiceImpl,
5476
+ },
7661
5477
  ], imports: [AXMDriveChooseModule,
7662
5478
  // Entity Modules
7663
- AXMDocumentManagementDocumentTypeStatusDefinitionEntityModule,
7664
- AXMDocumentManagementDocumentTypeMetaValueEntityModule,
7665
- AXMDocumentManagementDocumentTypeMetaDefinitionEntityModule,
7666
5479
  AXMDocumentManagementDocumentTypeEntityModule,
7667
- AXMDocumentManagementDocumentEntityModule,
7668
- AXMFolderEntityModule,
7669
- AXMReviewEntityModule,
7670
5480
  AXPWidgetCoreModule.forChild({
7671
5481
  widgets: [AXmFileTypeExtensionWidget],
7672
5482
  }),
@@ -7688,13 +5498,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.16", ngImpo
7688
5498
  imports: [
7689
5499
  AXMDriveChooseModule,
7690
5500
  // Entity Modules
7691
- AXMDocumentManagementDocumentTypeStatusDefinitionEntityModule,
7692
- AXMDocumentManagementDocumentTypeMetaValueEntityModule,
7693
- AXMDocumentManagementDocumentTypeMetaDefinitionEntityModule,
7694
5501
  AXMDocumentManagementDocumentTypeEntityModule,
7695
- AXMDocumentManagementDocumentEntityModule,
7696
- AXMFolderEntityModule,
7697
- AXMReviewEntityModule,
7698
5502
  AXPWidgetCoreModule.forChild({
7699
5503
  widgets: [AXmFileTypeExtensionWidget],
7700
5504
  }),
@@ -7762,6 +5566,14 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.16", ngImpo
7762
5566
  useClass: AXMSearchCommandProvider,
7763
5567
  multi: true,
7764
5568
  },
5569
+ {
5570
+ provide: AXMDocumentService,
5571
+ useClass: AXMDocumentServiceImpl,
5572
+ },
5573
+ {
5574
+ provide: AXMFolderService,
5575
+ useClass: AXMFolderServiceImpl,
5576
+ },
7765
5577
  ],
7766
5578
  }]
7767
5579
  }] });
@@ -8237,5 +6049,5 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.16", ngImpo
8237
6049
  * Generated bundle index. Do not edit.
8238
6050
  */
8239
6051
 
8240
- export { AXMArchiveFileTypeProvider, AXMAudioFileTypeProvider, AXMCodeFileTypeProvider, AXMDocumentDriveComponent, AXMDocumentExplorerComponent, AXMDocumentFileTypeProvider, AXMDocumentManagementDocumentEntityModule, AXMDocumentManagementDocumentTypeEntityModule, AXMDocumentManagementDocumentTypeMetaDefinitionEntityModule, AXMDocumentManagementDocumentTypeMetaDefinitionEntityService, AXMDocumentManagementDocumentTypeMetaDefinitionEntityServiceImpl, AXMDocumentManagementDocumentTypeMetaValueEntityModule, AXMDocumentManagementDocumentTypeMetaValueEntityService, AXMDocumentManagementDocumentTypeMetaValueEntityServiceImpl, AXMDocumentManagementDocumentTypeStatusDefinitionEntityModule, AXMDocumentManagementDocumentTypeStatusDefinitionEntityService, AXMDocumentManagementDocumentTypeStatusDefinitionEntityServiceImpl, AXMDocumentManagementModule, AXMDocumentManagerService, AXMDocumentReletedEntityModule, AXMDocumentService, AXMDocumentServiceImpl, AXMDocumentTypeService, AXMDocumentTypeServiceImpl, AXMEntityProvider, AXMFileGalleryPopupComponent, AXMFileTypeExtensionWidgetColumnComponent, AXMFileTypeExtensionWidgetDesignerComponent, AXMFileTypeExtensionWidgetEditComponent, AXMFileTypeExtensionWidgetViewComponent, AXMFileTypeModule, AXMFolderEntityModule, AXMFolderPathBreadcrumbsComponent, AXMFolderService, AXMFolderServiceImpl, AXMImageFileTypeProvider, AXMMenuProvider, AXMPermissionsKeys, AXMReviewEntityModule, AXMReviewService, AXMReviewServiceImpl, AXMSearchCommandProvider, AXMSettingProvider, AXMVideoFileTypeProvider, AXPDocumentExplorerSettings, AXPDocumentExplorerViewModel, AXPDocumentManagementFeatureKeys, AXPDocumentManagementMenuKeys, AXPDocumentManagementService, AXmFileTypeExtensionWidget, RootConfig, ScopedDriveService, canTransition, documentFactory, documentRelatedFactory, documentTypeFactory, documentTypeMetaDefinitionfactory, documentTypeMetaValueFactory, documentTypeStatusDefinitionFactory, folderFactory, getNextStatus, reviewFactory };
6052
+ export { AXMArchiveFileTypeProvider, AXMAudioFileTypeProvider, AXMCodeFileTypeProvider, AXMDocumentDriveComponent, AXMDocumentExplorerComponent, AXMDocumentFileTypeProvider, AXMDocumentManagementDocumentTypeEntityModule, AXMDocumentManagementModule, AXMDocumentManagerService, AXMDocumentService, AXMDocumentServiceImpl, AXMDocumentTypeService, AXMDocumentTypeServiceImpl, AXMEntityProvider, AXMFileGalleryPopupComponent, AXMFileTypeExtensionWidgetColumnComponent, AXMFileTypeExtensionWidgetDesignerComponent, AXMFileTypeExtensionWidgetEditComponent, AXMFileTypeExtensionWidgetViewComponent, AXMFileTypeModule, AXMFolderPathBreadcrumbsComponent, AXMFolderService, AXMFolderServiceImpl, AXMImageFileTypeProvider, AXMMenuProvider, AXMPermissionsKeys, AXMSearchCommandProvider, AXMSettingProvider, AXMVideoFileTypeProvider, AXPDocumentExplorerSettings, AXPDocumentExplorerViewModel, AXPDocumentManagementFeatureKeys, AXPDocumentManagementMenuKeys, AXPDocumentManagementService, AXmFileTypeExtensionWidget, RootConfig, ScopedDriveService, documentEntityFactory, documentTypeFactory, folderEntityFactory };
8241
6053
  //# sourceMappingURL=acorex-modules-document-management.mjs.map