@acorex/modules 21.0.0-next.10 → 21.0.0-next.11
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.
- package/asset-management/index.d.ts +53 -62
- package/document-management/index.d.ts +24 -134
- package/fesm2022/{acorex-modules-asset-management-asset.entity-B9ckElN7.mjs → acorex-modules-asset-management-asset.entity-C57iN3Bo.mjs} +22 -22
- package/fesm2022/acorex-modules-asset-management-asset.entity-C57iN3Bo.mjs.map +1 -0
- package/fesm2022/{acorex-modules-asset-management-inspection.entity-CkNt44Ee.mjs → acorex-modules-asset-management-inspection.entity-CpDuN-qj.mjs} +3 -13
- package/fesm2022/acorex-modules-asset-management-inspection.entity-CpDuN-qj.mjs.map +1 -0
- package/fesm2022/{acorex-modules-asset-management-maintenance-type.entity-V9ErcTNL.mjs → acorex-modules-asset-management-maintenance-type.entity-T3iF8l5n.mjs} +3 -13
- package/fesm2022/acorex-modules-asset-management-maintenance-type.entity-T3iF8l5n.mjs.map +1 -0
- package/fesm2022/{acorex-modules-asset-management-maintenance.entity-Ctt12a9H.mjs → acorex-modules-asset-management-maintenance.entity-Cxzcn0Ae.mjs} +3 -13
- package/fesm2022/acorex-modules-asset-management-maintenance.entity-Cxzcn0Ae.mjs.map +1 -0
- package/fesm2022/acorex-modules-asset-management.mjs +620 -1
- package/fesm2022/acorex-modules-asset-management.mjs.map +1 -1
- package/fesm2022/acorex-modules-content-management.mjs +7 -6
- package/fesm2022/acorex-modules-content-management.mjs.map +1 -1
- package/fesm2022/acorex-modules-document-management.mjs +483 -2002
- package/fesm2022/acorex-modules-document-management.mjs.map +1 -1
- package/fesm2022/acorex-modules-human-capital-management.mjs +4 -0
- package/fesm2022/acorex-modules-human-capital-management.mjs.map +1 -1
- package/fesm2022/acorex-modules-meeting-management.mjs +489 -212
- package/fesm2022/acorex-modules-meeting-management.mjs.map +1 -1
- package/fesm2022/{acorex-modules-order-management-bulk-buy-order-item.entity-CS8G9l7a.mjs → acorex-modules-order-management-bulk-buy-order-item.entity-Cqsc1tku.mjs} +39 -29
- package/fesm2022/acorex-modules-order-management-bulk-buy-order-item.entity-Cqsc1tku.mjs.map +1 -0
- package/fesm2022/{acorex-modules-order-management-bulk-buy-order.entity-BAagygjM.mjs → acorex-modules-order-management-bulk-buy-order.entity-BMvkJRpA.mjs} +30 -12
- package/fesm2022/acorex-modules-order-management-bulk-buy-order.entity-BMvkJRpA.mjs.map +1 -0
- package/fesm2022/{acorex-modules-order-management-entity.provider-BXeXMpey.mjs → acorex-modules-order-management-entity.provider-CUq01hQo.mjs} +3 -3
- package/fesm2022/{acorex-modules-order-management-entity.provider-BXeXMpey.mjs.map → acorex-modules-order-management-entity.provider-CUq01hQo.mjs.map} +1 -1
- package/fesm2022/acorex-modules-order-management.mjs +2 -2
- package/fesm2022/{acorex-modules-person-management-person.entity-T3pPeC5H.mjs → acorex-modules-person-management-person.entity-BtaGNj8n.mjs} +12 -56
- package/fesm2022/acorex-modules-person-management-person.entity-BtaGNj8n.mjs.map +1 -0
- package/fesm2022/acorex-modules-person-management.mjs +1 -1
- package/fesm2022/acorex-modules-report-management.mjs.map +1 -1
- package/fesm2022/{acorex-modules-reservation-management-acorex-modules-reservation-management-DgIxX2nQ.mjs → acorex-modules-reservation-management-acorex-modules-reservation-management-C7jb3vLV.mjs} +5 -2
- package/fesm2022/acorex-modules-reservation-management-acorex-modules-reservation-management-C7jb3vLV.mjs.map +1 -0
- package/fesm2022/{acorex-modules-reservation-management-event-type.entity-Ddr2JufJ.mjs → acorex-modules-reservation-management-event-type.entity-Dj6e-Iay.mjs} +2 -2
- package/fesm2022/{acorex-modules-reservation-management-event-type.entity-Ddr2JufJ.mjs.map → acorex-modules-reservation-management-event-type.entity-Dj6e-Iay.mjs.map} +1 -1
- package/fesm2022/acorex-modules-reservation-management.mjs +1 -1
- package/fesm2022/acorex-modules-task-management.mjs +39 -16
- package/fesm2022/acorex-modules-task-management.mjs.map +1 -1
- package/fesm2022/acorex-modules-workflow-management.mjs +0 -2
- package/fesm2022/acorex-modules-workflow-management.mjs.map +1 -1
- package/meeting-management/index.d.ts +29 -6
- package/package.json +2 -2
- package/report-management/index.d.ts +2 -2
- package/fesm2022/acorex-modules-asset-management-acorex-modules-asset-management-CZchW21Z.mjs +0 -752
- package/fesm2022/acorex-modules-asset-management-acorex-modules-asset-management-CZchW21Z.mjs.map +0 -1
- package/fesm2022/acorex-modules-asset-management-asset.entity-B9ckElN7.mjs.map +0 -1
- package/fesm2022/acorex-modules-asset-management-inspection.entity-CkNt44Ee.mjs.map +0 -1
- package/fesm2022/acorex-modules-asset-management-maintenance-type.entity-V9ErcTNL.mjs.map +0 -1
- package/fesm2022/acorex-modules-asset-management-maintenance.entity-Ctt12a9H.mjs.map +0 -1
- package/fesm2022/acorex-modules-document-management-document-signature-popup.component-Stt6Gx2C.mjs +0 -145
- package/fesm2022/acorex-modules-document-management-document-signature-popup.component-Stt6Gx2C.mjs.map +0 -1
- package/fesm2022/acorex-modules-order-management-bulk-buy-order-item.entity-CS8G9l7a.mjs.map +0 -1
- package/fesm2022/acorex-modules-order-management-bulk-buy-order.entity-BAagygjM.mjs.map +0 -1
- package/fesm2022/acorex-modules-person-management-person.entity-T3pPeC5H.mjs.map +0 -1
- package/fesm2022/acorex-modules-reservation-management-acorex-modules-reservation-management-DgIxX2nQ.mjs.map +0 -1
|
@@ -3,11 +3,11 @@ import { AXPEntityService, AXMEntityCrudServiceImpl, entityMasterCrudActions, en
|
|
|
3
3
|
import { AXPPlatformScope, AXPDataGenerator, AXP_DISTRIBUTED_EVENT_LISTENER_PROVIDER, AXP_MODULE_MANIFEST_PROVIDER, AXP_FEATURE_DEFINITION_PROVIDER, AXPDeviceService, resolvePlatformScopeKey, resolvePlatformScopeName } from '@acorex/platform/core';
|
|
4
4
|
import { AXPSearchCommandProvider, createAllQueryView, createQueryView, AXPEntityCommandScope, AXPEntityQueryType, AXPFileTypeProviderService, AXP_FILE_TYPE_INFO_PROVIDER, AXPFileStorageService, AXPFilterOperatorMiddlewareService, AXPSettingsService, AXPLockService, AXP_MENU_PROVIDER, AXP_SEARCH_PROVIDER } from '@acorex/platform/common';
|
|
5
5
|
import * as i0 from '@angular/core';
|
|
6
|
-
import { Injectable, inject, Injector, NgModule, ChangeDetectionStrategy, Component, signal, viewChild,
|
|
6
|
+
import { Injectable, inject, Injector, NgModule, ChangeDetectionStrategy, Component, signal, viewChild, computed, input, effect, ViewEncapsulation, untracked, HostListener } from '@angular/core';
|
|
7
7
|
import * as i3$3 from '@acorex/core/translation';
|
|
8
8
|
import { AXTranslationService, AXTranslationModule } from '@acorex/core/translation';
|
|
9
9
|
import { firstValueFrom } from 'rxjs';
|
|
10
|
-
import * as
|
|
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
13
|
import { set, castArray, get as get$1 } from 'lodash-es';
|
|
@@ -29,8 +29,7 @@ import set$1 from 'lodash-es/set';
|
|
|
29
29
|
import { AXP_NAME_PROPERTY, AXP_DATA_PATH_PROPERTY } from '@acorex/platform/layout/widgets';
|
|
30
30
|
import * as i3$1 from '@acorex/components/media-viewer';
|
|
31
31
|
import { AXMediaViewerContainerComponent, AXMediaViewerModule } from '@acorex/components/media-viewer';
|
|
32
|
-
import
|
|
33
|
-
import * as i1$3 from '@acorex/components/button';
|
|
32
|
+
import * as i1$2 from '@acorex/components/button';
|
|
34
33
|
import { AXButtonModule } from '@acorex/components/button';
|
|
35
34
|
import { AXBasePageComponent } from '@acorex/components/page';
|
|
36
35
|
import { AXLoadingModule } from '@acorex/components/loading';
|
|
@@ -39,8 +38,9 @@ import { AXMenuModule } from '@acorex/components/menu';
|
|
|
39
38
|
import { AXDateTimeModule } from '@acorex/core/date-time';
|
|
40
39
|
import * as i2$2 from '@acorex/core/format';
|
|
41
40
|
import { AXFormatModule } from '@acorex/core/format';
|
|
41
|
+
import { AXPStateMessageComponent, AXPThemeLayoutBlockComponent } from '@acorex/platform/layout/components';
|
|
42
42
|
import { AXPLayoutThemeService } from '@acorex/platform/themes/shared';
|
|
43
|
-
import * as i1$
|
|
43
|
+
import * as i1$3 from '@angular/common';
|
|
44
44
|
import { CommonModule } from '@angular/common';
|
|
45
45
|
import { AXDialogService } from '@acorex/components/dialog';
|
|
46
46
|
import { AXPopupService } from '@acorex/components/popup';
|
|
@@ -78,18 +78,6 @@ const RootConfig = {
|
|
|
78
78
|
titlePlural: `@${config.i18n}:entities.document.title-plural`,
|
|
79
79
|
icon: 'fa-light fa-default',
|
|
80
80
|
},
|
|
81
|
-
distributionInteraction: {
|
|
82
|
-
name: 'DistributionInteraction',
|
|
83
|
-
title: `@${config.i18n}:entities.distribution-interaction.title`,
|
|
84
|
-
titlePlural: `@${config.i18n}:entities.distribution-interaction.title-plural`,
|
|
85
|
-
icon: 'fa-light fa-default',
|
|
86
|
-
},
|
|
87
|
-
distribution: {
|
|
88
|
-
name: 'Distribution',
|
|
89
|
-
title: `@${config.i18n}:entities.distribution.title`,
|
|
90
|
-
titlePlural: `@${config.i18n}:entities.distribution.title-plural`,
|
|
91
|
-
icon: 'fa-light fa-default',
|
|
92
|
-
},
|
|
93
81
|
review: {
|
|
94
82
|
name: 'Review',
|
|
95
83
|
title: `@${config.i18n}:entities.review.title`,
|
|
@@ -213,20 +201,6 @@ const AXMPermissionsKeys = {
|
|
|
213
201
|
Delete: 'DocumentManagement:Permission:Review.Delete',
|
|
214
202
|
Create: 'DocumentManagement:Permission:Review.Create',
|
|
215
203
|
},
|
|
216
|
-
Distribution: {
|
|
217
|
-
Management: 'DocumentManagement:Permission:Distribution.Management',
|
|
218
|
-
View: 'DocumentManagement:Permission:Distribution.View',
|
|
219
|
-
Edit: 'DocumentManagement:Permission:Distribution.Edit',
|
|
220
|
-
Delete: 'DocumentManagement:Permission:Distribution.Delete',
|
|
221
|
-
Create: 'DocumentManagement:Permission:Distribution.Create',
|
|
222
|
-
},
|
|
223
|
-
DistributionInteraction: {
|
|
224
|
-
Management: 'DocumentManagement:Permission:DistributionInteraction.Management',
|
|
225
|
-
View: 'DocumentManagement:Permission:DistributionInteraction.View',
|
|
226
|
-
Edit: 'DocumentManagement:Permission:DistributionInteraction.Edit',
|
|
227
|
-
Delete: 'DocumentManagement:Permission:DistributionInteraction.Delete',
|
|
228
|
-
Create: 'DocumentManagement:Permission:DistributionInteraction.Create',
|
|
229
|
-
},
|
|
230
204
|
},
|
|
231
205
|
};
|
|
232
206
|
|
|
@@ -274,8 +248,6 @@ const AXPDocumentManagementMenuKeys = {
|
|
|
274
248
|
DocumentTypes: 'document-management:menu:document-types',
|
|
275
249
|
TenantDrive: 'document-management:drive:tenant',
|
|
276
250
|
UserDrive: 'document-management:drive:user',
|
|
277
|
-
DocumentReview: 'document-management:menu:document-review',
|
|
278
|
-
Distribution: 'document-management:menu:distribution',
|
|
279
251
|
};
|
|
280
252
|
|
|
281
253
|
class AXMMenuProvider {
|
|
@@ -323,27 +295,6 @@ class AXMMenuProvider {
|
|
|
323
295
|
},
|
|
324
296
|
priority: 1,
|
|
325
297
|
},
|
|
326
|
-
{
|
|
327
|
-
name: AXPDocumentManagementMenuKeys.DocumentReview,
|
|
328
|
-
text: `@${RootConfig.config.i18n}:workflows.document-review.title`,
|
|
329
|
-
path: this.entityService.createPath(RootConfig.module.name, RootConfig.entities.document.name),
|
|
330
|
-
icon: RootConfig.entities.review.icon,
|
|
331
|
-
policy: {
|
|
332
|
-
permissions: [AXMPermissionsKeys.DocumentManagement.Review.Management]
|
|
333
|
-
},
|
|
334
|
-
badgeKey: 'review-badge',
|
|
335
|
-
priority: 4,
|
|
336
|
-
},
|
|
337
|
-
{
|
|
338
|
-
name: AXPDocumentManagementMenuKeys.Distribution,
|
|
339
|
-
text: RootConfig.entities.distribution.title,
|
|
340
|
-
path: this.entityService.createPath(RootConfig.module.name, RootConfig.entities.distribution.name),
|
|
341
|
-
icon: RootConfig.entities.review.icon,
|
|
342
|
-
policy: {
|
|
343
|
-
permissions: [AXMPermissionsKeys.DocumentManagement.Distribution.Management]
|
|
344
|
-
},
|
|
345
|
-
priority: 4,
|
|
346
|
-
},
|
|
347
298
|
],
|
|
348
299
|
},
|
|
349
300
|
]);
|
|
@@ -392,10 +343,6 @@ class AXMEntityProvider {
|
|
|
392
343
|
return (await Promise.resolve().then(function () { return index; })).folderFactory(this.injector);
|
|
393
344
|
case RootConfig.entities.review.name:
|
|
394
345
|
return (await Promise.resolve().then(function () { return index; })).reviewFactory(this.injector);
|
|
395
|
-
case RootConfig.entities.distribution.name:
|
|
396
|
-
return (await Promise.resolve().then(function () { return index; })).distributionFactory(this.injector);
|
|
397
|
-
case RootConfig.entities.distributionInteraction.name:
|
|
398
|
-
return (await Promise.resolve().then(function () { return index; })).distributionInteractionFactory(this.injector);
|
|
399
346
|
case RootConfig.entities.documentRelated.name:
|
|
400
347
|
return (await Promise.resolve().then(function () { return index; })).documentRelatedFactory(this.injector);
|
|
401
348
|
}
|
|
@@ -603,89 +550,11 @@ async function documentFactory(injector) {
|
|
|
603
550
|
},
|
|
604
551
|
},
|
|
605
552
|
},
|
|
606
|
-
{
|
|
607
|
-
name: 'documentReview',
|
|
608
|
-
title: `@${i18n}:workflows.document-review.title`,
|
|
609
|
-
schema: {
|
|
610
|
-
dataType: 'string',
|
|
611
|
-
readonly: true,
|
|
612
|
-
interface: {
|
|
613
|
-
type: AXPWidgetsCatalog.text,
|
|
614
|
-
options: {
|
|
615
|
-
content: `{{ context.eval('documentReview') }}`,
|
|
616
|
-
},
|
|
617
|
-
},
|
|
618
|
-
},
|
|
619
|
-
},
|
|
620
|
-
{
|
|
621
|
-
name: 'documentReviewReviewer',
|
|
622
|
-
title: `@${i18n}:workflows.document-review.title`,
|
|
623
|
-
schema: {
|
|
624
|
-
dataType: 'string',
|
|
625
|
-
readonly: true,
|
|
626
|
-
interface: {
|
|
627
|
-
type: AXPWidgetsCatalog.text,
|
|
628
|
-
options: {
|
|
629
|
-
content: `{{ context.eval('documentReviewReviewer') }}`,
|
|
630
|
-
},
|
|
631
|
-
},
|
|
632
|
-
},
|
|
633
|
-
},
|
|
634
|
-
{
|
|
635
|
-
name: 'documentReviewComment',
|
|
636
|
-
title: `@${i18n}:workflows.document-review.title`,
|
|
637
|
-
schema: {
|
|
638
|
-
dataType: 'string',
|
|
639
|
-
readonly: true,
|
|
640
|
-
interface: {
|
|
641
|
-
type: AXPWidgetsCatalog.richText,
|
|
642
|
-
options: {
|
|
643
|
-
content: `{{ context.eval('documentReviewComment') }}`,
|
|
644
|
-
},
|
|
645
|
-
},
|
|
646
|
-
},
|
|
647
|
-
},
|
|
648
|
-
{
|
|
649
|
-
name: 'documentReviewStatus',
|
|
650
|
-
title: `@${i18n}:workflows.document-review.title`,
|
|
651
|
-
schema: {
|
|
652
|
-
defaultValue: '{{context.eval("documentReview.reviewStatus") == "Approve"}}',
|
|
653
|
-
dataType: 'string',
|
|
654
|
-
readonly: true,
|
|
655
|
-
interface: {
|
|
656
|
-
type: AXPWidgetsCatalog.toggle,
|
|
657
|
-
options: {
|
|
658
|
-
content: `{{ context.eval('documentReviewComment') }}`,
|
|
659
|
-
},
|
|
660
|
-
},
|
|
661
|
-
},
|
|
662
|
-
},
|
|
663
553
|
],
|
|
664
554
|
columns: [
|
|
665
555
|
{ name: 'name' },
|
|
666
556
|
{ name: 'status' },
|
|
667
557
|
{ name: 'version' },
|
|
668
|
-
{
|
|
669
|
-
name: 'documentReviewReviewer',
|
|
670
|
-
title: `@${i18n}:terms.common.reviewer`,
|
|
671
|
-
options: {
|
|
672
|
-
dataPath: 'documentReview.reviewer.title',
|
|
673
|
-
},
|
|
674
|
-
},
|
|
675
|
-
{
|
|
676
|
-
name: 'documentReviewComment',
|
|
677
|
-
title: `@${i18n}:terms.common.comment`,
|
|
678
|
-
options: {
|
|
679
|
-
dataPath: 'documentReview.comment',
|
|
680
|
-
},
|
|
681
|
-
},
|
|
682
|
-
{
|
|
683
|
-
name: 'documentReviewStatus',
|
|
684
|
-
title: `@${i18n}:terms.workflow.approve`,
|
|
685
|
-
options: {
|
|
686
|
-
dataPath: 'documentReview.reviewStatus',
|
|
687
|
-
},
|
|
688
|
-
},
|
|
689
558
|
],
|
|
690
559
|
queries: {
|
|
691
560
|
byKey: {
|
|
@@ -883,55 +752,7 @@ async function documentFactory(injector) {
|
|
|
883
752
|
},
|
|
884
753
|
},
|
|
885
754
|
],
|
|
886
|
-
actions: [
|
|
887
|
-
{
|
|
888
|
-
title: `@${i18n}:workflows.document-review.send-review.title`,
|
|
889
|
-
command: {
|
|
890
|
-
name: 'send-to-review',
|
|
891
|
-
options: {
|
|
892
|
-
id: '{{context.eval("id")}}',
|
|
893
|
-
title: '{{context.eval("title")}}',
|
|
894
|
-
},
|
|
895
|
-
},
|
|
896
|
-
priority: 'primary',
|
|
897
|
-
type: 'sent',
|
|
898
|
-
scope: AXPEntityCommandScope.TypeLevel,
|
|
899
|
-
disabled: '{{context.eval("status") != "Draft"}}',
|
|
900
|
-
},
|
|
901
|
-
{
|
|
902
|
-
title: `@${i18n}:workflows.document-review.submit-review.title`,
|
|
903
|
-
command: {
|
|
904
|
-
name: 'submit-review',
|
|
905
|
-
options: {
|
|
906
|
-
id: '{{context.eval("reviewRecordId")}}',
|
|
907
|
-
// reviewedAt : '{{ variables.execute("now") }}',
|
|
908
|
-
decoration: {
|
|
909
|
-
header: {
|
|
910
|
-
title: '{{ context.eval("title") + " - version: " + context.eval("version") }}',
|
|
911
|
-
},
|
|
912
|
-
},
|
|
913
|
-
},
|
|
914
|
-
},
|
|
915
|
-
priority: 'primary',
|
|
916
|
-
type: 'review',
|
|
917
|
-
scope: AXPEntityCommandScope.TypeLevel,
|
|
918
|
-
disabled: '{{context.eval("status") != "PendingReview"}}',
|
|
919
|
-
},
|
|
920
|
-
{
|
|
921
|
-
title: `@${i18n}:terms.workflow.distributed`,
|
|
922
|
-
command: {
|
|
923
|
-
name: 'distributed',
|
|
924
|
-
options: {
|
|
925
|
-
id: '{{context.eval("id")}}',
|
|
926
|
-
title: '{{context.eval("title")}}',
|
|
927
|
-
},
|
|
928
|
-
},
|
|
929
|
-
priority: 'primary',
|
|
930
|
-
type: 'review',
|
|
931
|
-
scope: AXPEntityCommandScope.TypeLevel,
|
|
932
|
-
disabled: '{{context.eval("status") != "Reviewed" && context.eval("status") != "Completed"}}',
|
|
933
|
-
},
|
|
934
|
-
],
|
|
755
|
+
actions: [],
|
|
935
756
|
},
|
|
936
757
|
list: {
|
|
937
758
|
actions: [
|
|
@@ -943,56 +764,6 @@ async function documentFactory(injector) {
|
|
|
943
764
|
default: true,
|
|
944
765
|
scope: AXPEntityCommandScope.Individual,
|
|
945
766
|
},
|
|
946
|
-
{
|
|
947
|
-
title: `@${i18n}:workflows.document-review.send-review.title`,
|
|
948
|
-
icon: 'fa-light fa-shield-check',
|
|
949
|
-
command: {
|
|
950
|
-
name: 'send-to-review',
|
|
951
|
-
options: {
|
|
952
|
-
id: '{{context.eval("id")}}',
|
|
953
|
-
title: '{{context.eval("title")}}',
|
|
954
|
-
},
|
|
955
|
-
},
|
|
956
|
-
priority: 'secondary',
|
|
957
|
-
type: 'sent',
|
|
958
|
-
scope: AXPEntityCommandScope.Individual,
|
|
959
|
-
disabled: '{{context.eval("status") != "Draft"}}',
|
|
960
|
-
},
|
|
961
|
-
{
|
|
962
|
-
title: `@${i18n}:workflows.document-review.submit-review.title`,
|
|
963
|
-
icon: 'fa-light fa-ballot-check',
|
|
964
|
-
command: {
|
|
965
|
-
name: 'submit-review',
|
|
966
|
-
options: {
|
|
967
|
-
id: '{{context.eval("reviewRecordId")}}',
|
|
968
|
-
// reviewedAt : '{{ variables.execute("now") }}',
|
|
969
|
-
decoration: {
|
|
970
|
-
header: {
|
|
971
|
-
title: '{{ context.eval("title") + " - version: " + context.eval("version") }}',
|
|
972
|
-
},
|
|
973
|
-
},
|
|
974
|
-
},
|
|
975
|
-
},
|
|
976
|
-
priority: 'secondary',
|
|
977
|
-
type: 'review',
|
|
978
|
-
scope: AXPEntityCommandScope.Individual,
|
|
979
|
-
disabled: '{{context.eval("status") != "PendingReview"}}',
|
|
980
|
-
},
|
|
981
|
-
{
|
|
982
|
-
title: `@${i18n}:terms.workflow.distributed`,
|
|
983
|
-
icon: 'fa-light fa-chart-network',
|
|
984
|
-
command: {
|
|
985
|
-
name: 'distributed',
|
|
986
|
-
options: {
|
|
987
|
-
id: '{{context.eval("id")}}',
|
|
988
|
-
title: '{{context.eval("title")}}',
|
|
989
|
-
},
|
|
990
|
-
},
|
|
991
|
-
priority: 'secondary',
|
|
992
|
-
type: 'review',
|
|
993
|
-
scope: AXPEntityCommandScope.Individual,
|
|
994
|
-
disabled: '{{context.eval("status") != "Reviewed" && context.eval("status") != "Completed"}}',
|
|
995
|
-
},
|
|
996
767
|
],
|
|
997
768
|
views: [
|
|
998
769
|
createAllQueryView({ sorts: [{ name: 'name', dir: 'asc' }] }),
|
|
@@ -1063,42 +834,32 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.15", ngImpo
|
|
|
1063
834
|
}] });
|
|
1064
835
|
|
|
1065
836
|
function getNextStatus(options) {
|
|
1066
|
-
const { current, requiresReview,
|
|
837
|
+
const { current, requiresReview, reviewFirst, reviewResult, } = options;
|
|
1067
838
|
switch (current) {
|
|
1068
839
|
case 'Draft':
|
|
1069
840
|
if (requiresReview)
|
|
1070
841
|
return 'PendingReview';
|
|
1071
|
-
if (requiresDistribution)
|
|
1072
|
-
return 'Distributed';
|
|
1073
842
|
return 'Completed';
|
|
1074
843
|
case 'PendingReview':
|
|
1075
844
|
if (reviewResult === 'rejected')
|
|
1076
845
|
return 'Rejected';
|
|
1077
846
|
if (reviewResult === 'approved') {
|
|
1078
|
-
if (requiresDistribution)
|
|
1079
|
-
return 'Distributed';
|
|
1080
847
|
return 'Completed';
|
|
1081
848
|
}
|
|
1082
849
|
return null;
|
|
1083
850
|
case 'Reviewed':
|
|
1084
|
-
if (requiresDistribution)
|
|
1085
|
-
return 'Distributed';
|
|
1086
851
|
return 'Completed';
|
|
1087
|
-
case 'Distributed':
|
|
1088
|
-
if (allSignaturesCollected)
|
|
1089
|
-
return 'Completed';
|
|
1090
|
-
return 'Distributed';
|
|
1091
852
|
default:
|
|
1092
853
|
return null;
|
|
1093
854
|
}
|
|
1094
855
|
}
|
|
1095
856
|
const AXMDocumentWorkflowTransitionMap = {
|
|
1096
|
-
Draft: ['PendingReview', '
|
|
857
|
+
Draft: ['PendingReview', 'Completed'],
|
|
1097
858
|
PendingReview: ['Reviewed', 'Rejected'],
|
|
1098
859
|
Rejected: ['PendingReview'], // پس از اصلاح
|
|
1099
|
-
Reviewed: ['
|
|
860
|
+
Reviewed: ['Completed', 'Distributed'],
|
|
1100
861
|
Distributed: ['Completed'],
|
|
1101
|
-
Completed: []
|
|
862
|
+
Completed: [],
|
|
1102
863
|
};
|
|
1103
864
|
function canTransition(from, to) {
|
|
1104
865
|
return AXMDocumentWorkflowTransitionMap[from]?.includes(to) ?? false;
|
|
@@ -1244,17 +1005,6 @@ async function documentTypeFactory(injector) {
|
|
|
1244
1005
|
},
|
|
1245
1006
|
},
|
|
1246
1007
|
},
|
|
1247
|
-
{
|
|
1248
|
-
name: 'requiresDistribution',
|
|
1249
|
-
title: `@${i18n}:terms.document.requires-distribution`,
|
|
1250
|
-
groupId: 'management',
|
|
1251
|
-
schema: {
|
|
1252
|
-
dataType: 'boolean',
|
|
1253
|
-
interface: {
|
|
1254
|
-
type: AXPWidgetsCatalog.toggle,
|
|
1255
|
-
},
|
|
1256
|
-
},
|
|
1257
|
-
},
|
|
1258
1008
|
{
|
|
1259
1009
|
name: 'enableVersioning',
|
|
1260
1010
|
title: `@${i18n}:terms.document.enable-versioning`,
|
|
@@ -1372,16 +1122,6 @@ async function documentTypeFactory(injector) {
|
|
|
1372
1122
|
},
|
|
1373
1123
|
},
|
|
1374
1124
|
},
|
|
1375
|
-
{
|
|
1376
|
-
name: 'requiresDistribution',
|
|
1377
|
-
layout: {
|
|
1378
|
-
positions: {
|
|
1379
|
-
lg: {
|
|
1380
|
-
colSpan: 6,
|
|
1381
|
-
},
|
|
1382
|
-
},
|
|
1383
|
-
},
|
|
1384
|
-
},
|
|
1385
1125
|
{
|
|
1386
1126
|
name: 'enableVersioning',
|
|
1387
1127
|
layout: {
|
|
@@ -1484,16 +1224,6 @@ async function documentTypeFactory(injector) {
|
|
|
1484
1224
|
},
|
|
1485
1225
|
},
|
|
1486
1226
|
},
|
|
1487
|
-
{
|
|
1488
|
-
name: 'requiresDistribution',
|
|
1489
|
-
layout: {
|
|
1490
|
-
positions: {
|
|
1491
|
-
lg: {
|
|
1492
|
-
colSpan: 6,
|
|
1493
|
-
},
|
|
1494
|
-
},
|
|
1495
|
-
},
|
|
1496
|
-
},
|
|
1497
1227
|
{
|
|
1498
1228
|
name: 'enableVersioning',
|
|
1499
1229
|
layout: {
|
|
@@ -1611,16 +1341,6 @@ async function documentTypeFactory(injector) {
|
|
|
1611
1341
|
},
|
|
1612
1342
|
},
|
|
1613
1343
|
},
|
|
1614
|
-
{
|
|
1615
|
-
name: 'requiresDistribution',
|
|
1616
|
-
layout: {
|
|
1617
|
-
positions: {
|
|
1618
|
-
lg: {
|
|
1619
|
-
colSpan: 6,
|
|
1620
|
-
},
|
|
1621
|
-
},
|
|
1622
|
-
},
|
|
1623
|
-
},
|
|
1624
1344
|
{
|
|
1625
1345
|
name: 'enableVersioning',
|
|
1626
1346
|
layout: {
|
|
@@ -2562,54 +2282,7 @@ async function documentRelatedFactory(injector) {
|
|
|
2562
2282
|
},
|
|
2563
2283
|
},
|
|
2564
2284
|
],
|
|
2565
|
-
actions: [
|
|
2566
|
-
{
|
|
2567
|
-
title: `@${i18n}:workflows.document-review.send-review.title`,
|
|
2568
|
-
command: {
|
|
2569
|
-
name: 'send-to-review',
|
|
2570
|
-
options: {
|
|
2571
|
-
id: '{{context.eval("id")}}',
|
|
2572
|
-
title: '{{context.eval("title")}}',
|
|
2573
|
-
},
|
|
2574
|
-
},
|
|
2575
|
-
priority: 'primary',
|
|
2576
|
-
type: 'sent',
|
|
2577
|
-
scope: AXPEntityCommandScope.TypeLevel,
|
|
2578
|
-
disabled: '{{context.eval("status") != "Draft"}}',
|
|
2579
|
-
},
|
|
2580
|
-
{
|
|
2581
|
-
title: `@${i18n}:workflows.document-review.submit-review.title`,
|
|
2582
|
-
command: {
|
|
2583
|
-
name: 'submit-review',
|
|
2584
|
-
options: {
|
|
2585
|
-
id: '{{context.eval("reviewRecordId")}}',
|
|
2586
|
-
decoration: {
|
|
2587
|
-
header: {
|
|
2588
|
-
title: '{{ context.eval("title") }}',
|
|
2589
|
-
},
|
|
2590
|
-
},
|
|
2591
|
-
},
|
|
2592
|
-
},
|
|
2593
|
-
priority: 'primary',
|
|
2594
|
-
type: 'review',
|
|
2595
|
-
scope: AXPEntityCommandScope.TypeLevel,
|
|
2596
|
-
disabled: '{{context.eval("status") != "PendingReview"}}',
|
|
2597
|
-
},
|
|
2598
|
-
{
|
|
2599
|
-
title: `@${i18n}:terms.workflow.distributed`,
|
|
2600
|
-
command: {
|
|
2601
|
-
name: 'distributed',
|
|
2602
|
-
options: {
|
|
2603
|
-
id: '{{context.eval("id")}}',
|
|
2604
|
-
title: '{{context.eval("title")}}',
|
|
2605
|
-
},
|
|
2606
|
-
},
|
|
2607
|
-
priority: 'primary',
|
|
2608
|
-
type: 'review',
|
|
2609
|
-
scope: AXPEntityCommandScope.TypeLevel,
|
|
2610
|
-
disabled: '{{context.eval("status") != "Reviewed" && context.eval("status") != "Completed"}}',
|
|
2611
|
-
},
|
|
2612
|
-
],
|
|
2285
|
+
actions: [],
|
|
2613
2286
|
},
|
|
2614
2287
|
list: {
|
|
2615
2288
|
actions: [
|
|
@@ -2621,56 +2294,6 @@ async function documentRelatedFactory(injector) {
|
|
|
2621
2294
|
default: true,
|
|
2622
2295
|
scope: AXPEntityCommandScope.Individual,
|
|
2623
2296
|
},
|
|
2624
|
-
{
|
|
2625
|
-
title: `@${i18n}:workflows.document-review.send-review.title`,
|
|
2626
|
-
icon: 'fa-light fa-shield-check',
|
|
2627
|
-
command: {
|
|
2628
|
-
name: 'send-to-review',
|
|
2629
|
-
options: {
|
|
2630
|
-
id: '{{context.eval("id")}}',
|
|
2631
|
-
title: '{{context.eval("title")}}',
|
|
2632
|
-
},
|
|
2633
|
-
},
|
|
2634
|
-
priority: 'secondary',
|
|
2635
|
-
type: 'sent',
|
|
2636
|
-
scope: AXPEntityCommandScope.Individual,
|
|
2637
|
-
disabled: '{{context.eval("status") != "Draft"}}',
|
|
2638
|
-
},
|
|
2639
|
-
{
|
|
2640
|
-
title: `@${i18n}:workflows.document-review.submit-review.title`,
|
|
2641
|
-
icon: 'fa-light fa-ballot-check',
|
|
2642
|
-
command: {
|
|
2643
|
-
name: 'submit-review',
|
|
2644
|
-
options: {
|
|
2645
|
-
id: '{{context.eval("reviewRecordId")}}',
|
|
2646
|
-
// reviewedAt : '{{ variables.execute("now") }}',
|
|
2647
|
-
decoration: {
|
|
2648
|
-
header: {
|
|
2649
|
-
title: '{{ context.eval("title") + " - version: " + context.eval("version") }}',
|
|
2650
|
-
},
|
|
2651
|
-
},
|
|
2652
|
-
},
|
|
2653
|
-
},
|
|
2654
|
-
priority: 'secondary',
|
|
2655
|
-
type: 'review',
|
|
2656
|
-
scope: AXPEntityCommandScope.Individual,
|
|
2657
|
-
disabled: '{{context.eval("status") != "PendingReview"}}',
|
|
2658
|
-
},
|
|
2659
|
-
{
|
|
2660
|
-
title: `@${i18n}:terms.workflow.distributed`,
|
|
2661
|
-
icon: 'fa-light fa-chart-network',
|
|
2662
|
-
command: {
|
|
2663
|
-
name: 'distributed',
|
|
2664
|
-
options: {
|
|
2665
|
-
id: '{{context.eval("id")}}',
|
|
2666
|
-
title: '{{context.eval("title")}}',
|
|
2667
|
-
},
|
|
2668
|
-
},
|
|
2669
|
-
priority: 'secondary',
|
|
2670
|
-
type: 'review',
|
|
2671
|
-
scope: AXPEntityCommandScope.Individual,
|
|
2672
|
-
disabled: '{{context.eval("status") != "Reviewed" && context.eval("status") != "Completed"}}',
|
|
2673
|
-
},
|
|
2674
2297
|
],
|
|
2675
2298
|
views: [
|
|
2676
2299
|
createAllQueryView({ sorts: [{ name: 'name', dir: 'asc' }] }),
|
|
@@ -3558,609 +3181,78 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.15", ngImpo
|
|
|
3558
3181
|
}]
|
|
3559
3182
|
}] });
|
|
3560
3183
|
|
|
3561
|
-
|
|
3562
|
-
|
|
3563
|
-
|
|
3564
|
-
|
|
3565
|
-
name: RootConfig.entities.distribution.name,
|
|
3566
|
-
title: RootConfig.entities.distribution.title,
|
|
3567
|
-
icon: RootConfig.entities.distribution.icon,
|
|
3568
|
-
formats: {
|
|
3569
|
-
individual: RootConfig.entities.distribution.title,
|
|
3570
|
-
plural: RootConfig.entities.distribution.titlePlural,
|
|
3571
|
-
searchResult: {
|
|
3572
|
-
title: '{{ title }}',
|
|
3573
|
-
description: RootConfig.module.title,
|
|
3574
|
-
},
|
|
3575
|
-
},
|
|
3576
|
-
relatedEntities: [
|
|
3577
|
-
{
|
|
3578
|
-
entity: `${RootConfig.module.name}.${RootConfig.entities.distributionInteraction.name}`,
|
|
3579
|
-
columns: [],
|
|
3580
|
-
conditions: [
|
|
3581
|
-
{
|
|
3582
|
-
name: 'documentDistributionId',
|
|
3583
|
-
operator: {
|
|
3584
|
-
type: 'equal',
|
|
3585
|
-
},
|
|
3586
|
-
value: '{{context.eval("id")}}',
|
|
3587
|
-
},
|
|
3588
|
-
],
|
|
3589
|
-
},
|
|
3590
|
-
],
|
|
3591
|
-
groups: [
|
|
3592
|
-
{
|
|
3593
|
-
id: 'section',
|
|
3594
|
-
title: RootConfig.entities.distribution.title,
|
|
3595
|
-
},
|
|
3596
|
-
],
|
|
3597
|
-
properties: [
|
|
3598
|
-
{
|
|
3599
|
-
name: 'documentId',
|
|
3600
|
-
title: `@${i18n}:terms.document.document-id`,
|
|
3601
|
-
groupId: 'section',
|
|
3602
|
-
options: {},
|
|
3603
|
-
schema: {
|
|
3604
|
-
dataType: 'string',
|
|
3605
|
-
interface: {
|
|
3606
|
-
type: AXPWidgetsCatalog.lookup,
|
|
3607
|
-
options: {
|
|
3608
|
-
entity: 'DocumentManagement.documents',
|
|
3609
|
-
multiple: false,
|
|
3610
|
-
look: 'lookup',
|
|
3611
|
-
},
|
|
3612
|
-
},
|
|
3613
|
-
},
|
|
3614
|
-
validations: [
|
|
3615
|
-
{
|
|
3616
|
-
rule: 'required',
|
|
3617
|
-
},
|
|
3618
|
-
],
|
|
3619
|
-
},
|
|
3620
|
-
{
|
|
3621
|
-
name: 'version',
|
|
3622
|
-
title: `@${i18n}:terms.common.version`,
|
|
3623
|
-
groupId: 'section',
|
|
3624
|
-
options: {
|
|
3625
|
-
sort: {
|
|
3626
|
-
enabled: true,
|
|
3627
|
-
},
|
|
3628
|
-
filter: {
|
|
3629
|
-
advance: {
|
|
3630
|
-
enabled: true,
|
|
3631
|
-
},
|
|
3632
|
-
inline: {
|
|
3633
|
-
enabled: false,
|
|
3634
|
-
},
|
|
3635
|
-
},
|
|
3636
|
-
},
|
|
3637
|
-
schema: {
|
|
3638
|
-
dataType: 'string',
|
|
3639
|
-
interface: {
|
|
3640
|
-
type: AXPWidgetsCatalog.text,
|
|
3641
|
-
},
|
|
3642
|
-
},
|
|
3643
|
-
validations: [
|
|
3644
|
-
{
|
|
3645
|
-
rule: 'required',
|
|
3646
|
-
},
|
|
3647
|
-
],
|
|
3648
|
-
},
|
|
3649
|
-
{
|
|
3650
|
-
name: 'viewedCount',
|
|
3651
|
-
title: `@${i18n}:terms.interactions.viewed-count`,
|
|
3652
|
-
schema: {
|
|
3653
|
-
dataType: 'string',
|
|
3654
|
-
interface: {
|
|
3655
|
-
type: AXPWidgetsCatalog.text,
|
|
3656
|
-
},
|
|
3657
|
-
},
|
|
3658
|
-
},
|
|
3659
|
-
{
|
|
3660
|
-
name: 'signedCount',
|
|
3661
|
-
title: `@${i18n}:terms.interactions.signed-count`,
|
|
3662
|
-
schema: {
|
|
3663
|
-
dataType: 'string',
|
|
3664
|
-
interface: {
|
|
3665
|
-
type: AXPWidgetsCatalog.text,
|
|
3666
|
-
},
|
|
3667
|
-
},
|
|
3668
|
-
},
|
|
3669
|
-
{
|
|
3670
|
-
name: 'status',
|
|
3671
|
-
title: `@${i18n}:terms.common.status`,
|
|
3672
|
-
schema: {
|
|
3673
|
-
dataType: 'string',
|
|
3674
|
-
interface: {
|
|
3675
|
-
type: AXPWidgetsCatalog.text,
|
|
3676
|
-
},
|
|
3677
|
-
},
|
|
3678
|
-
},
|
|
3679
|
-
],
|
|
3680
|
-
columns: [{ name: 'documentId', options: { dataPath: 'document.name' } }, { name: 'version' },
|
|
3681
|
-
{ name: 'viewedCount' }, { name: 'signedCount' }, { name: 'status' }
|
|
3682
|
-
],
|
|
3683
|
-
interfaces: {
|
|
3684
|
-
master: {
|
|
3685
|
-
create: {
|
|
3686
|
-
sections: [
|
|
3687
|
-
{
|
|
3688
|
-
id: 'section',
|
|
3689
|
-
},
|
|
3690
|
-
],
|
|
3691
|
-
properties: [
|
|
3692
|
-
{
|
|
3693
|
-
name: 'documentId',
|
|
3694
|
-
layout: {
|
|
3695
|
-
positions: {
|
|
3696
|
-
lg: {
|
|
3697
|
-
colSpan: 6,
|
|
3698
|
-
order: 1,
|
|
3699
|
-
},
|
|
3700
|
-
},
|
|
3701
|
-
},
|
|
3702
|
-
},
|
|
3703
|
-
{
|
|
3704
|
-
name: 'version',
|
|
3705
|
-
layout: {
|
|
3706
|
-
positions: {
|
|
3707
|
-
lg: {
|
|
3708
|
-
colSpan: 6,
|
|
3709
|
-
order: 2,
|
|
3710
|
-
},
|
|
3711
|
-
},
|
|
3712
|
-
},
|
|
3713
|
-
},
|
|
3714
|
-
],
|
|
3715
|
-
},
|
|
3716
|
-
update: {
|
|
3717
|
-
sections: [
|
|
3718
|
-
{
|
|
3719
|
-
id: 'section',
|
|
3720
|
-
},
|
|
3721
|
-
],
|
|
3722
|
-
properties: [
|
|
3723
|
-
{
|
|
3724
|
-
name: 'documentId',
|
|
3725
|
-
layout: {
|
|
3726
|
-
positions: {
|
|
3727
|
-
lg: {
|
|
3728
|
-
colSpan: 6,
|
|
3729
|
-
order: 1,
|
|
3730
|
-
},
|
|
3731
|
-
},
|
|
3732
|
-
},
|
|
3733
|
-
},
|
|
3734
|
-
{
|
|
3735
|
-
name: 'version',
|
|
3736
|
-
layout: {
|
|
3737
|
-
positions: {
|
|
3738
|
-
lg: {
|
|
3739
|
-
colSpan: 6,
|
|
3740
|
-
order: 2,
|
|
3741
|
-
},
|
|
3742
|
-
},
|
|
3743
|
-
},
|
|
3744
|
-
},
|
|
3745
|
-
],
|
|
3746
|
-
},
|
|
3747
|
-
single: {
|
|
3748
|
-
title: `{{document.name}}`,
|
|
3749
|
-
sections: [
|
|
3750
|
-
{
|
|
3751
|
-
id: 'section',
|
|
3752
|
-
layout: {
|
|
3753
|
-
positions: {
|
|
3754
|
-
lg: {
|
|
3755
|
-
colSpan: 12,
|
|
3756
|
-
},
|
|
3757
|
-
},
|
|
3758
|
-
},
|
|
3759
|
-
},
|
|
3760
|
-
],
|
|
3761
|
-
properties: [
|
|
3762
|
-
{
|
|
3763
|
-
name: 'documentId',
|
|
3764
|
-
layout: {
|
|
3765
|
-
positions: {
|
|
3766
|
-
lg: {
|
|
3767
|
-
colSpan: 6,
|
|
3768
|
-
order: 1,
|
|
3769
|
-
},
|
|
3770
|
-
},
|
|
3771
|
-
},
|
|
3772
|
-
},
|
|
3773
|
-
{
|
|
3774
|
-
name: 'version',
|
|
3775
|
-
layout: {
|
|
3776
|
-
positions: {
|
|
3777
|
-
lg: {
|
|
3778
|
-
colSpan: 6,
|
|
3779
|
-
order: 2,
|
|
3780
|
-
},
|
|
3781
|
-
},
|
|
3782
|
-
},
|
|
3783
|
-
},
|
|
3784
|
-
],
|
|
3785
|
-
actions: [...entityMasterRecordActions()],
|
|
3786
|
-
},
|
|
3787
|
-
list: {
|
|
3788
|
-
actions: [...entityMasterCrudActions()],
|
|
3789
|
-
views: [
|
|
3790
|
-
createAllQueryView({
|
|
3791
|
-
sorts: [{ name: 'documentId', dir: 'asc' }],
|
|
3792
|
-
}),
|
|
3793
|
-
],
|
|
3794
|
-
},
|
|
3795
|
-
},
|
|
3796
|
-
},
|
|
3797
|
-
};
|
|
3798
|
-
return entityDef;
|
|
3799
|
-
}
|
|
3800
|
-
|
|
3801
|
-
class AXMDistributionService extends AXMEntityCrudServiceImpl {
|
|
3802
|
-
}
|
|
3803
|
-
class AXMDistributionServiceImpl extends AXMDistributionService {
|
|
3804
|
-
constructor() {
|
|
3805
|
-
super(`${RootConfig.module.name}.${RootConfig.entities.distribution.name}`);
|
|
3806
|
-
}
|
|
3807
|
-
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.3.15", ngImport: i0, type: AXMDistributionServiceImpl, deps: [], target: i0.ɵɵFactoryTarget.Injectable }); }
|
|
3808
|
-
static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "20.3.15", ngImport: i0, type: AXMDistributionServiceImpl }); }
|
|
3809
|
-
}
|
|
3810
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.15", ngImport: i0, type: AXMDistributionServiceImpl, decorators: [{
|
|
3811
|
-
type: Injectable
|
|
3812
|
-
}], ctorParameters: () => [] });
|
|
3813
|
-
|
|
3814
|
-
class AXMDistributionEntityModule {
|
|
3815
|
-
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.3.15", ngImport: i0, type: AXMDistributionEntityModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule }); }
|
|
3816
|
-
static { this.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "14.0.0", version: "20.3.15", ngImport: i0, type: AXMDistributionEntityModule }); }
|
|
3817
|
-
static { this.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "20.3.15", ngImport: i0, type: AXMDistributionEntityModule, providers: [
|
|
3818
|
-
{
|
|
3819
|
-
provide: AXMDistributionService,
|
|
3820
|
-
useClass: AXMDistributionServiceImpl,
|
|
3821
|
-
},
|
|
3822
|
-
] }); }
|
|
3184
|
+
class AXMDocumentReletedEntityModule {
|
|
3185
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.3.15", ngImport: i0, type: AXMDocumentReletedEntityModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule }); }
|
|
3186
|
+
static { this.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "14.0.0", version: "20.3.15", ngImport: i0, type: AXMDocumentReletedEntityModule }); }
|
|
3187
|
+
static { this.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "20.3.15", ngImport: i0, type: AXMDocumentReletedEntityModule }); }
|
|
3823
3188
|
}
|
|
3824
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.15", ngImport: i0, type:
|
|
3189
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.15", ngImport: i0, type: AXMDocumentReletedEntityModule, decorators: [{
|
|
3825
3190
|
type: NgModule,
|
|
3826
3191
|
args: [{
|
|
3827
3192
|
imports: [],
|
|
3828
3193
|
exports: [],
|
|
3829
3194
|
declarations: [],
|
|
3830
|
-
providers: [
|
|
3831
|
-
{
|
|
3832
|
-
provide: AXMDistributionService,
|
|
3833
|
-
useClass: AXMDistributionServiceImpl,
|
|
3834
|
-
},
|
|
3835
|
-
],
|
|
3195
|
+
providers: [],
|
|
3836
3196
|
}]
|
|
3837
3197
|
}] });
|
|
3838
3198
|
|
|
3839
|
-
|
|
3840
|
-
|
|
3841
|
-
|
|
3842
|
-
|
|
3843
|
-
|
|
3844
|
-
|
|
3845
|
-
|
|
3846
|
-
|
|
3847
|
-
|
|
3848
|
-
|
|
3849
|
-
|
|
3850
|
-
|
|
3851
|
-
|
|
3852
|
-
|
|
3853
|
-
|
|
3854
|
-
|
|
3855
|
-
|
|
3856
|
-
|
|
3857
|
-
|
|
3858
|
-
|
|
3859
|
-
|
|
3860
|
-
|
|
3861
|
-
|
|
3199
|
+
// Entity Services
|
|
3200
|
+
|
|
3201
|
+
var index = /*#__PURE__*/Object.freeze({
|
|
3202
|
+
__proto__: null,
|
|
3203
|
+
AXMDocumentManagementDocumentEntityModule: AXMDocumentManagementDocumentEntityModule,
|
|
3204
|
+
AXMDocumentManagementDocumentTypeEntityModule: AXMDocumentManagementDocumentTypeEntityModule,
|
|
3205
|
+
AXMDocumentManagementDocumentTypeMetaDefinitionEntityModule: AXMDocumentManagementDocumentTypeMetaDefinitionEntityModule,
|
|
3206
|
+
AXMDocumentManagementDocumentTypeMetaDefinitionEntityService: AXMDocumentManagementDocumentTypeMetaDefinitionEntityService,
|
|
3207
|
+
AXMDocumentManagementDocumentTypeMetaDefinitionEntityServiceImpl: AXMDocumentManagementDocumentTypeMetaDefinitionEntityServiceImpl,
|
|
3208
|
+
AXMDocumentManagementDocumentTypeMetaValueEntityModule: AXMDocumentManagementDocumentTypeMetaValueEntityModule,
|
|
3209
|
+
AXMDocumentManagementDocumentTypeMetaValueEntityService: AXMDocumentManagementDocumentTypeMetaValueEntityService,
|
|
3210
|
+
AXMDocumentManagementDocumentTypeMetaValueEntityServiceImpl: AXMDocumentManagementDocumentTypeMetaValueEntityServiceImpl,
|
|
3211
|
+
AXMDocumentManagementDocumentTypeStatusDefinitionEntityModule: AXMDocumentManagementDocumentTypeStatusDefinitionEntityModule,
|
|
3212
|
+
AXMDocumentManagementDocumentTypeStatusDefinitionEntityService: AXMDocumentManagementDocumentTypeStatusDefinitionEntityService,
|
|
3213
|
+
AXMDocumentManagementDocumentTypeStatusDefinitionEntityServiceImpl: AXMDocumentManagementDocumentTypeStatusDefinitionEntityServiceImpl,
|
|
3214
|
+
AXMDocumentReletedEntityModule: AXMDocumentReletedEntityModule,
|
|
3215
|
+
AXMDocumentService: AXMDocumentService,
|
|
3216
|
+
AXMDocumentServiceImpl: AXMDocumentServiceImpl,
|
|
3217
|
+
AXMDocumentTypeService: AXMDocumentTypeService,
|
|
3218
|
+
AXMDocumentTypeServiceImpl: AXMDocumentTypeServiceImpl,
|
|
3219
|
+
AXMFolderEntityModule: AXMFolderEntityModule,
|
|
3220
|
+
AXMFolderService: AXMFolderService,
|
|
3221
|
+
AXMFolderServiceImpl: AXMFolderServiceImpl,
|
|
3222
|
+
AXMReviewEntityModule: AXMReviewEntityModule,
|
|
3223
|
+
AXMReviewService: AXMReviewService,
|
|
3224
|
+
AXMReviewServiceImpl: AXMReviewServiceImpl,
|
|
3225
|
+
canTransition: canTransition,
|
|
3226
|
+
documentFactory: documentFactory,
|
|
3227
|
+
documentRelatedFactory: documentRelatedFactory,
|
|
3228
|
+
documentTypeFactory: documentTypeFactory,
|
|
3229
|
+
documentTypeMetaDefinitionfactory: documentTypeMetaDefinitionfactory,
|
|
3230
|
+
documentTypeMetaValueFactory: documentTypeMetaValueFactory,
|
|
3231
|
+
documentTypeStatusDefinitionFactory: documentTypeStatusDefinitionFactory,
|
|
3232
|
+
folderFactory: folderFactory,
|
|
3233
|
+
getNextStatus: getNextStatus,
|
|
3234
|
+
reviewFactory: reviewFactory
|
|
3235
|
+
});
|
|
3236
|
+
|
|
3237
|
+
class AXMImageFileTypeProvider {
|
|
3238
|
+
async items() {
|
|
3239
|
+
return [
|
|
3862
3240
|
{
|
|
3863
|
-
name: '
|
|
3864
|
-
title: '
|
|
3865
|
-
|
|
3866
|
-
|
|
3867
|
-
|
|
3868
|
-
|
|
3869
|
-
|
|
3241
|
+
name: 'image',
|
|
3242
|
+
title: 'Image',
|
|
3243
|
+
icon: 'fa-light fa-image ax-text-purple-500',
|
|
3244
|
+
extensions: [
|
|
3245
|
+
{
|
|
3246
|
+
name: 'jpg',
|
|
3247
|
+
title: 'JPEG',
|
|
3248
|
+
icon: 'fa-light fa-image ax-text-purple-500',
|
|
3249
|
+
meta: [],
|
|
3870
3250
|
},
|
|
3871
|
-
},
|
|
3872
|
-
validations: [
|
|
3873
3251
|
{
|
|
3874
|
-
|
|
3875
|
-
|
|
3876
|
-
|
|
3877
|
-
|
|
3878
|
-
{
|
|
3879
|
-
name: 'hasViewed',
|
|
3880
|
-
title: `@${i18n}:terms.interactions.has-viewed`,
|
|
3881
|
-
groupId: 'section',
|
|
3882
|
-
schema: {
|
|
3883
|
-
dataType: 'boolean',
|
|
3884
|
-
interface: {
|
|
3885
|
-
type: AXPWidgetsCatalog.toggle,
|
|
3886
|
-
},
|
|
3887
|
-
},
|
|
3888
|
-
},
|
|
3889
|
-
{
|
|
3890
|
-
name: 'hasSigned',
|
|
3891
|
-
title: `@${i18n}:terms.interactions.has-signed`,
|
|
3892
|
-
groupId: 'section',
|
|
3893
|
-
schema: {
|
|
3894
|
-
dataType: 'boolean',
|
|
3895
|
-
interface: {
|
|
3896
|
-
type: AXPWidgetsCatalog.toggle,
|
|
3897
|
-
},
|
|
3898
|
-
},
|
|
3899
|
-
},
|
|
3900
|
-
{
|
|
3901
|
-
name: 'lastViewDate',
|
|
3902
|
-
title: `@${i18n}:terms.timestamps.viewed-at`,
|
|
3903
|
-
groupId: 'section',
|
|
3904
|
-
schema: {
|
|
3905
|
-
dataType: 'date',
|
|
3906
|
-
interface: {
|
|
3907
|
-
type: AXPWidgetsCatalog.dateTime,
|
|
3908
|
-
},
|
|
3909
|
-
},
|
|
3910
|
-
},
|
|
3911
|
-
{
|
|
3912
|
-
name: 'lastSignDate',
|
|
3913
|
-
title: `@${i18n}:terms.timestamps.signed-at`,
|
|
3914
|
-
groupId: 'section',
|
|
3915
|
-
schema: {
|
|
3916
|
-
dataType: 'date',
|
|
3917
|
-
interface: {
|
|
3918
|
-
type: AXPWidgetsCatalog.dateTime,
|
|
3919
|
-
},
|
|
3920
|
-
},
|
|
3921
|
-
},
|
|
3922
|
-
],
|
|
3923
|
-
columns: [{ name: 'user', options: { dataPath: 'user.title' } }, { name: 'hasViewed' },
|
|
3924
|
-
{ name: 'lastViewDate' },
|
|
3925
|
-
{ name: 'hasSigned' },
|
|
3926
|
-
{ name: 'lastSignDate' }
|
|
3927
|
-
],
|
|
3928
|
-
interfaces: {
|
|
3929
|
-
master: {
|
|
3930
|
-
create: {
|
|
3931
|
-
sections: [
|
|
3932
|
-
{
|
|
3933
|
-
id: 'section',
|
|
3934
|
-
},
|
|
3935
|
-
],
|
|
3936
|
-
properties: [
|
|
3937
|
-
{
|
|
3938
|
-
name: 'name',
|
|
3939
|
-
layout: {
|
|
3940
|
-
positions: {
|
|
3941
|
-
lg: {
|
|
3942
|
-
colSpan: 6,
|
|
3943
|
-
order: 1,
|
|
3944
|
-
},
|
|
3945
|
-
},
|
|
3946
|
-
},
|
|
3947
|
-
},
|
|
3948
|
-
{
|
|
3949
|
-
name: 'title',
|
|
3950
|
-
layout: {
|
|
3951
|
-
positions: {
|
|
3952
|
-
lg: {
|
|
3953
|
-
colSpan: 6,
|
|
3954
|
-
order: 2,
|
|
3955
|
-
},
|
|
3956
|
-
},
|
|
3957
|
-
},
|
|
3958
|
-
},
|
|
3959
|
-
],
|
|
3960
|
-
},
|
|
3961
|
-
update: {
|
|
3962
|
-
sections: [
|
|
3963
|
-
{
|
|
3964
|
-
id: 'section',
|
|
3965
|
-
},
|
|
3966
|
-
],
|
|
3967
|
-
properties: [
|
|
3968
|
-
{
|
|
3969
|
-
name: 'name',
|
|
3970
|
-
layout: {
|
|
3971
|
-
positions: {
|
|
3972
|
-
lg: {
|
|
3973
|
-
colSpan: 6,
|
|
3974
|
-
order: 1,
|
|
3975
|
-
},
|
|
3976
|
-
},
|
|
3977
|
-
},
|
|
3978
|
-
},
|
|
3979
|
-
{
|
|
3980
|
-
name: 'title',
|
|
3981
|
-
layout: {
|
|
3982
|
-
positions: {
|
|
3983
|
-
lg: {
|
|
3984
|
-
colSpan: 6,
|
|
3985
|
-
order: 2,
|
|
3986
|
-
},
|
|
3987
|
-
},
|
|
3988
|
-
},
|
|
3989
|
-
},
|
|
3990
|
-
],
|
|
3991
|
-
},
|
|
3992
|
-
single: {
|
|
3993
|
-
title: '{{title}}',
|
|
3994
|
-
sections: [
|
|
3995
|
-
{
|
|
3996
|
-
id: 'section',
|
|
3997
|
-
layout: {
|
|
3998
|
-
positions: {
|
|
3999
|
-
lg: {
|
|
4000
|
-
colSpan: 12,
|
|
4001
|
-
},
|
|
4002
|
-
},
|
|
4003
|
-
},
|
|
4004
|
-
},
|
|
4005
|
-
],
|
|
4006
|
-
properties: [
|
|
4007
|
-
{
|
|
4008
|
-
name: 'name',
|
|
4009
|
-
layout: {
|
|
4010
|
-
positions: {
|
|
4011
|
-
lg: {
|
|
4012
|
-
colSpan: 6,
|
|
4013
|
-
order: 1,
|
|
4014
|
-
},
|
|
4015
|
-
},
|
|
4016
|
-
},
|
|
4017
|
-
},
|
|
4018
|
-
{
|
|
4019
|
-
name: 'title',
|
|
4020
|
-
layout: {
|
|
4021
|
-
positions: {
|
|
4022
|
-
lg: {
|
|
4023
|
-
colSpan: 6,
|
|
4024
|
-
order: 2,
|
|
4025
|
-
},
|
|
4026
|
-
},
|
|
4027
|
-
},
|
|
4028
|
-
},
|
|
4029
|
-
],
|
|
4030
|
-
actions: [],
|
|
4031
|
-
},
|
|
4032
|
-
list: {
|
|
4033
|
-
actions: [],
|
|
4034
|
-
views: [
|
|
4035
|
-
createAllQueryView({
|
|
4036
|
-
sorts: [{ name: 'name', dir: 'asc' }],
|
|
4037
|
-
}),
|
|
4038
|
-
],
|
|
4039
|
-
},
|
|
4040
|
-
},
|
|
4041
|
-
},
|
|
4042
|
-
};
|
|
4043
|
-
return entityDef;
|
|
4044
|
-
}
|
|
4045
|
-
|
|
4046
|
-
class AXMDistributionInteractionService extends AXMEntityCrudServiceImpl {
|
|
4047
|
-
}
|
|
4048
|
-
class AXMDistributionInteractionServiceImpl extends AXMDistributionInteractionService {
|
|
4049
|
-
constructor() {
|
|
4050
|
-
super(`${RootConfig.module.name}.${RootConfig.entities.distributionInteraction.name}`);
|
|
4051
|
-
}
|
|
4052
|
-
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.3.15", ngImport: i0, type: AXMDistributionInteractionServiceImpl, deps: [], target: i0.ɵɵFactoryTarget.Injectable }); }
|
|
4053
|
-
static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "20.3.15", ngImport: i0, type: AXMDistributionInteractionServiceImpl }); }
|
|
4054
|
-
}
|
|
4055
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.15", ngImport: i0, type: AXMDistributionInteractionServiceImpl, decorators: [{
|
|
4056
|
-
type: Injectable
|
|
4057
|
-
}], ctorParameters: () => [] });
|
|
4058
|
-
|
|
4059
|
-
class AXMDistributionInteractionEntityModule {
|
|
4060
|
-
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.3.15", ngImport: i0, type: AXMDistributionInteractionEntityModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule }); }
|
|
4061
|
-
static { this.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "14.0.0", version: "20.3.15", ngImport: i0, type: AXMDistributionInteractionEntityModule }); }
|
|
4062
|
-
static { this.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "20.3.15", ngImport: i0, type: AXMDistributionInteractionEntityModule, providers: [
|
|
4063
|
-
{
|
|
4064
|
-
provide: AXMDistributionInteractionService,
|
|
4065
|
-
useClass: AXMDistributionInteractionServiceImpl,
|
|
4066
|
-
},
|
|
4067
|
-
] }); }
|
|
4068
|
-
}
|
|
4069
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.15", ngImport: i0, type: AXMDistributionInteractionEntityModule, decorators: [{
|
|
4070
|
-
type: NgModule,
|
|
4071
|
-
args: [{
|
|
4072
|
-
imports: [],
|
|
4073
|
-
exports: [],
|
|
4074
|
-
declarations: [],
|
|
4075
|
-
providers: [
|
|
4076
|
-
{
|
|
4077
|
-
provide: AXMDistributionInteractionService,
|
|
4078
|
-
useClass: AXMDistributionInteractionServiceImpl,
|
|
4079
|
-
},
|
|
4080
|
-
],
|
|
4081
|
-
}]
|
|
4082
|
-
}] });
|
|
4083
|
-
|
|
4084
|
-
class AXMDocumentReletedEntityModule {
|
|
4085
|
-
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.3.15", ngImport: i0, type: AXMDocumentReletedEntityModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule }); }
|
|
4086
|
-
static { this.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "14.0.0", version: "20.3.15", ngImport: i0, type: AXMDocumentReletedEntityModule }); }
|
|
4087
|
-
static { this.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "20.3.15", ngImport: i0, type: AXMDocumentReletedEntityModule }); }
|
|
4088
|
-
}
|
|
4089
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.15", ngImport: i0, type: AXMDocumentReletedEntityModule, decorators: [{
|
|
4090
|
-
type: NgModule,
|
|
4091
|
-
args: [{
|
|
4092
|
-
imports: [],
|
|
4093
|
-
exports: [],
|
|
4094
|
-
declarations: [],
|
|
4095
|
-
providers: [],
|
|
4096
|
-
}]
|
|
4097
|
-
}] });
|
|
4098
|
-
|
|
4099
|
-
// Entity Services
|
|
4100
|
-
|
|
4101
|
-
var index = /*#__PURE__*/Object.freeze({
|
|
4102
|
-
__proto__: null,
|
|
4103
|
-
AXMDistributionEntityModule: AXMDistributionEntityModule,
|
|
4104
|
-
AXMDistributionInteractionEntityModule: AXMDistributionInteractionEntityModule,
|
|
4105
|
-
AXMDistributionInteractionService: AXMDistributionInteractionService,
|
|
4106
|
-
AXMDistributionInteractionServiceImpl: AXMDistributionInteractionServiceImpl,
|
|
4107
|
-
AXMDistributionService: AXMDistributionService,
|
|
4108
|
-
AXMDistributionServiceImpl: AXMDistributionServiceImpl,
|
|
4109
|
-
AXMDocumentManagementDocumentEntityModule: AXMDocumentManagementDocumentEntityModule,
|
|
4110
|
-
AXMDocumentManagementDocumentTypeEntityModule: AXMDocumentManagementDocumentTypeEntityModule,
|
|
4111
|
-
AXMDocumentManagementDocumentTypeMetaDefinitionEntityModule: AXMDocumentManagementDocumentTypeMetaDefinitionEntityModule,
|
|
4112
|
-
AXMDocumentManagementDocumentTypeMetaDefinitionEntityService: AXMDocumentManagementDocumentTypeMetaDefinitionEntityService,
|
|
4113
|
-
AXMDocumentManagementDocumentTypeMetaDefinitionEntityServiceImpl: AXMDocumentManagementDocumentTypeMetaDefinitionEntityServiceImpl,
|
|
4114
|
-
AXMDocumentManagementDocumentTypeMetaValueEntityModule: AXMDocumentManagementDocumentTypeMetaValueEntityModule,
|
|
4115
|
-
AXMDocumentManagementDocumentTypeMetaValueEntityService: AXMDocumentManagementDocumentTypeMetaValueEntityService,
|
|
4116
|
-
AXMDocumentManagementDocumentTypeMetaValueEntityServiceImpl: AXMDocumentManagementDocumentTypeMetaValueEntityServiceImpl,
|
|
4117
|
-
AXMDocumentManagementDocumentTypeStatusDefinitionEntityModule: AXMDocumentManagementDocumentTypeStatusDefinitionEntityModule,
|
|
4118
|
-
AXMDocumentManagementDocumentTypeStatusDefinitionEntityService: AXMDocumentManagementDocumentTypeStatusDefinitionEntityService,
|
|
4119
|
-
AXMDocumentManagementDocumentTypeStatusDefinitionEntityServiceImpl: AXMDocumentManagementDocumentTypeStatusDefinitionEntityServiceImpl,
|
|
4120
|
-
AXMDocumentReletedEntityModule: AXMDocumentReletedEntityModule,
|
|
4121
|
-
AXMDocumentService: AXMDocumentService,
|
|
4122
|
-
AXMDocumentServiceImpl: AXMDocumentServiceImpl,
|
|
4123
|
-
AXMDocumentTypeService: AXMDocumentTypeService,
|
|
4124
|
-
AXMDocumentTypeServiceImpl: AXMDocumentTypeServiceImpl,
|
|
4125
|
-
AXMFolderEntityModule: AXMFolderEntityModule,
|
|
4126
|
-
AXMFolderService: AXMFolderService,
|
|
4127
|
-
AXMFolderServiceImpl: AXMFolderServiceImpl,
|
|
4128
|
-
AXMReviewEntityModule: AXMReviewEntityModule,
|
|
4129
|
-
AXMReviewService: AXMReviewService,
|
|
4130
|
-
AXMReviewServiceImpl: AXMReviewServiceImpl,
|
|
4131
|
-
canTransition: canTransition,
|
|
4132
|
-
distributionFactory: distributionFactory,
|
|
4133
|
-
distributionInteractionFactory: distributionInteractionFactory,
|
|
4134
|
-
documentFactory: documentFactory,
|
|
4135
|
-
documentRelatedFactory: documentRelatedFactory,
|
|
4136
|
-
documentTypeFactory: documentTypeFactory,
|
|
4137
|
-
documentTypeMetaDefinitionfactory: documentTypeMetaDefinitionfactory,
|
|
4138
|
-
documentTypeMetaValueFactory: documentTypeMetaValueFactory,
|
|
4139
|
-
documentTypeStatusDefinitionFactory: documentTypeStatusDefinitionFactory,
|
|
4140
|
-
folderFactory: folderFactory,
|
|
4141
|
-
getNextStatus: getNextStatus,
|
|
4142
|
-
reviewFactory: reviewFactory
|
|
4143
|
-
});
|
|
4144
|
-
|
|
4145
|
-
class AXMImageFileTypeProvider {
|
|
4146
|
-
async items() {
|
|
4147
|
-
return [
|
|
4148
|
-
{
|
|
4149
|
-
name: 'image',
|
|
4150
|
-
title: 'Image',
|
|
4151
|
-
icon: 'fa-light fa-image ax-text-purple-500',
|
|
4152
|
-
extensions: [
|
|
4153
|
-
{
|
|
4154
|
-
name: 'jpg',
|
|
4155
|
-
title: 'JPEG',
|
|
4156
|
-
icon: 'fa-light fa-image ax-text-purple-500',
|
|
4157
|
-
meta: [],
|
|
4158
|
-
},
|
|
4159
|
-
{
|
|
4160
|
-
name: 'png',
|
|
4161
|
-
title: 'PNG',
|
|
4162
|
-
icon: 'fa-light fa-image ax-text-purple-500',
|
|
4163
|
-
meta: [],
|
|
3252
|
+
name: 'png',
|
|
3253
|
+
title: 'PNG',
|
|
3254
|
+
icon: 'fa-light fa-image ax-text-purple-500',
|
|
3255
|
+
meta: [],
|
|
4164
3256
|
},
|
|
4165
3257
|
{
|
|
4166
3258
|
name: 'gif',
|
|
@@ -4701,7 +3793,7 @@ class AXMFileTypeExtensionWidgetEditComponent extends AXPValueWidgetComponent {
|
|
|
4701
3793
|
</ax-collapse-group>
|
|
4702
3794
|
}
|
|
4703
3795
|
</axp-widgets-container>
|
|
4704
|
-
</div>`, isInline: true, dependencies: [{ kind: "ngmodule", type: AXSelectBoxModule }, { kind: "component", type: i1.AXSelectBoxComponent, selector: "ax-select-box", inputs: ["disabled", "readonly", "tabIndex", "placeholder", "minValue", "maxValue", "value", "state", "name", "id", "type", "look", "multiple", "valueField", "textField", "disabledField", "textTemplate", "selectedItems", "isItemTruncated", "showItemTooltip", "itemHeight", "maxVisibleItems", "dataSource", "minRecordsForSearch", "caption", "itemTemplate", "selectedTemplate", "emptyTemplate", "loadingTemplate", "dropdownWidth", "searchBoxAutoFocus"], outputs: ["valueChange", "stateChange", "onValueChanged", "onBlur", "onFocus", "readonlyChange", "disabledChange", "onOpened", "onClosed", "onItemSelected", "onItemClick"] }, { kind: "ngmodule", type: FormsModule }, { kind: "directive", type: i2.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i2.NgModel, selector: "[ngModel]:not([formControlName]):not([formControl])", inputs: ["name", "disabled", "ngModel", "ngModelOptions"], outputs: ["ngModelChange"], exportAs: ["ngModel"] }, { kind: "ngmodule", type: AXFormModule }, { kind: "component", type: i3.AXFormFieldComponent, selector: "ax-form-field", inputs: ["labelMode"] }, { kind: "ngmodule", type: AXLabelModule }, { kind: "component", type: i4.AXLabelComponent, selector: "ax-label", inputs: ["required", "for"], outputs: ["requiredChange"] }, { kind: "ngmodule", type: AXDecoratorModule }, { kind: "component", type: i1$1.AXDecoratorGenericComponent, selector: "ax-footer, ax-header, ax-content, ax-divider, ax-form-hint, ax-prefix, ax-suffix, ax-text, ax-title, ax-subtitle, ax-placeholder, ax-overlay" }, { kind: "ngmodule", type: AXPWidgetCoreModule }, { kind: "component", type:
|
|
3796
|
+
</div>`, isInline: true, dependencies: [{ kind: "ngmodule", type: AXSelectBoxModule }, { kind: "component", type: i1.AXSelectBoxComponent, selector: "ax-select-box", inputs: ["disabled", "readonly", "tabIndex", "placeholder", "minValue", "maxValue", "value", "state", "name", "id", "type", "look", "multiple", "valueField", "textField", "disabledField", "textTemplate", "selectedItems", "isItemTruncated", "showItemTooltip", "itemHeight", "maxVisibleItems", "dataSource", "minRecordsForSearch", "caption", "itemTemplate", "selectedTemplate", "emptyTemplate", "loadingTemplate", "dropdownWidth", "searchBoxAutoFocus"], outputs: ["valueChange", "stateChange", "onValueChanged", "onBlur", "onFocus", "readonlyChange", "disabledChange", "onOpened", "onClosed", "onItemSelected", "onItemClick"] }, { kind: "ngmodule", type: FormsModule }, { kind: "directive", type: i2.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i2.NgModel, selector: "[ngModel]:not([formControlName]):not([formControl])", inputs: ["name", "disabled", "ngModel", "ngModelOptions"], outputs: ["ngModelChange"], exportAs: ["ngModel"] }, { kind: "ngmodule", type: AXFormModule }, { kind: "component", type: i3.AXFormFieldComponent, selector: "ax-form-field", inputs: ["labelMode"] }, { kind: "ngmodule", type: AXLabelModule }, { kind: "component", type: i4.AXLabelComponent, selector: "ax-label", inputs: ["required", "for"], outputs: ["requiredChange"] }, { kind: "ngmodule", type: AXDecoratorModule }, { kind: "component", type: i1$1.AXDecoratorGenericComponent, selector: "ax-footer, ax-header, ax-content, ax-divider, ax-form-hint, ax-prefix, ax-suffix, ax-text, ax-title, ax-subtitle, ax-placeholder, ax-overlay" }, { kind: "ngmodule", type: AXPWidgetCoreModule }, { kind: "component", type: i6.AXPWidgetContainerComponent, selector: "axp-widgets-container", inputs: ["context", "functions"], outputs: ["onContextChanged"] }, { kind: "directive", type: i6.AXPWidgetRendererDirective, selector: "[axp-widget-renderer]", inputs: ["parentNode", "index", "mode", "node"], outputs: ["onOptionsChanged", "onValueChanged", "onLoad"], exportAs: ["widgetRenderer"] }, { kind: "ngmodule", type: AXCollapseModule }, { kind: "component", type: i7.AXCollapseComponent, selector: "ax-collapse", inputs: ["disabled", "look", "isCollapsed", "showHeader", "caption", "icon", "isLoading", "headerTemplate"], outputs: ["onClick", "isCollapsedChange"] }, { kind: "component", type: i7.AXCollapseGroupComponent, selector: "ax-collapse-group", inputs: ["look", "accordion", "activeIndex"], outputs: ["accordionChange", "activeIndexChange"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
|
|
4705
3797
|
}
|
|
4706
3798
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.15", ngImport: i0, type: AXMFileTypeExtensionWidgetEditComponent, decorators: [{
|
|
4707
3799
|
type: Component,
|
|
@@ -4912,66 +4004,20 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.15", ngImpo
|
|
|
4912
4004
|
}]
|
|
4913
4005
|
}] });
|
|
4914
4006
|
|
|
4915
|
-
class
|
|
4916
|
-
constructor() {
|
|
4917
|
-
this.documentReviewService = inject(AXMDocumentService);
|
|
4918
|
-
this.count = signal(0, ...(ngDevMode ? [{ debugName: "count" }] : []));
|
|
4919
|
-
this.key = 'review-badge';
|
|
4920
|
-
this.getCount();
|
|
4921
|
-
}
|
|
4922
|
-
async getCount() {
|
|
4923
|
-
// Base filter for requiresReview
|
|
4924
|
-
const baseFilters = [
|
|
4925
|
-
{
|
|
4926
|
-
field: 'documentType.requiresReview',
|
|
4927
|
-
operator: { type: 'equal' },
|
|
4928
|
-
value: true,
|
|
4929
|
-
},
|
|
4930
|
-
{
|
|
4931
|
-
field: 'status',
|
|
4932
|
-
operator: { type: 'equal' },
|
|
4933
|
-
value: 'PendingReview',
|
|
4934
|
-
},
|
|
4935
|
-
];
|
|
4936
|
-
const x = await this.documentReviewService.query({
|
|
4937
|
-
skip: 0,
|
|
4938
|
-
take: 1,
|
|
4939
|
-
filter: {
|
|
4940
|
-
logic: 'and',
|
|
4941
|
-
filters: baseFilters,
|
|
4942
|
-
},
|
|
4943
|
-
});
|
|
4944
|
-
this.count.set(x.total);
|
|
4945
|
-
}
|
|
4946
|
-
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.3.15", ngImport: i0, type: AXMDocumentReviewBadgeProvider, deps: [], target: i0.ɵɵFactoryTarget.Injectable }); }
|
|
4947
|
-
static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "20.3.15", ngImport: i0, type: AXMDocumentReviewBadgeProvider }); }
|
|
4948
|
-
}
|
|
4949
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.15", ngImport: i0, type: AXMDocumentReviewBadgeProvider, decorators: [{
|
|
4950
|
-
type: Injectable
|
|
4951
|
-
}], ctorParameters: () => [] });
|
|
4952
|
-
|
|
4953
|
-
class AXMFileViewerPopupComponent extends AXBasePageComponent {
|
|
4007
|
+
class AXMFileViewerPopupComponent extends AXBasePageComponent {
|
|
4954
4008
|
constructor() {
|
|
4955
4009
|
super(...arguments);
|
|
4956
4010
|
this.index = 0;
|
|
4957
4011
|
this.mediaViewer = viewChild(AXMediaViewerContainerComponent, ...(ngDevMode ? [{ debugName: "mediaViewer" }] : []));
|
|
4958
|
-
this.f = afterNextRender(() => {
|
|
4959
|
-
setTimeout(() => {
|
|
4960
|
-
this.mediaViewer()?.goToIndex(this.index, 0);
|
|
4961
|
-
});
|
|
4962
|
-
});
|
|
4963
4012
|
}
|
|
4964
4013
|
ngAfterViewInit() {
|
|
4965
|
-
|
|
4966
|
-
//Called after ngAfterContentInit when the component's view has been initialized. Applies to components only.
|
|
4967
|
-
//Add 'implements AfterViewInit' to the class.
|
|
4968
|
-
this.mediaViewer()?.goToIndex(this.index, 0);
|
|
4014
|
+
this.mediaViewer()?.goToIndex(this.index);
|
|
4969
4015
|
}
|
|
4970
4016
|
onClose() {
|
|
4971
4017
|
this.close();
|
|
4972
4018
|
}
|
|
4973
4019
|
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.3.15", ngImport: i0, type: AXMFileViewerPopupComponent, deps: null, target: i0.ɵɵFactoryTarget.Component }); }
|
|
4974
|
-
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.2.0", version: "20.3.15", type: AXMFileViewerPopupComponent, isStandalone: true, selector: "ng-component", viewQueries: [{ propertyName: "mediaViewer", first: true, predicate: AXMediaViewerContainerComponent, descendants: true, isSignal: true }], usesInheritance: true, ngImport: i0, template: "<ax-content>\n <ax-media-viewer-container [thumbnail]=\"true\" #c [dataArray]=\"nodes\">\n <ax-header>\n <ax-prefix>\n <ax-file-info></ax-file-info>\n </ax-prefix>\n <ax-suffix>\n <ax-fullscreen-button></ax-fullscreen-button>\n </ax-suffix>\n </ax-header>\n <ax-prefix>\n <ax-button (click)=\"c.next()\">\n <ax-icon class=\"ax-icon ax-icon-chevron-right\"> </ax-icon>\n </ax-button>\n </ax-prefix>\n <ax-suffix>\n <ax-button (click)=\"c.prev()\">\n <ax-icon class=\"ax-icon ax-icon-chevron-left\"> </ax-icon>\n </ax-button>\n </ax-suffix>\n </ax-media-viewer-container>\n</ax-content>\n<ax-footer>\n <ax-suffix>\n <ax-button [text]=\"'close'\" (click)=\"onClose()\" />\n </ax-suffix>\n</ax-footer>\n", styles: ["ax-media-viewer-container{--ax-sys-border-radius:0 }\n"], dependencies: [{ kind: "ngmodule", type: AXDecoratorModule }, { kind: "component", type: i1$1.AXDecoratorIconComponent, selector: "ax-icon", inputs: ["icon"] }, { kind: "component", type: i1$1.AXDecoratorGenericComponent, selector: "ax-footer, ax-header, ax-content, ax-divider, ax-form-hint, ax-prefix, ax-suffix, ax-text, ax-title, ax-subtitle, ax-placeholder, ax-overlay" }, { kind: "component", type: i1$1.AXDecoratorFullScreenButtonComponent, selector: "ax-fullscreen-button", inputs: ["element", "isActive"], outputs: ["elementChange", "isActiveChange"] }, { kind: "ngmodule", type: AXButtonModule }, { kind: "component", type: i1$
|
|
4020
|
+
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.2.0", version: "20.3.15", type: AXMFileViewerPopupComponent, isStandalone: true, selector: "ng-component", viewQueries: [{ propertyName: "mediaViewer", first: true, predicate: AXMediaViewerContainerComponent, descendants: true, isSignal: true }], usesInheritance: true, ngImport: i0, template: "<ax-content>\n <ax-media-viewer-container [thumbnail]=\"true\" #c [dataArray]=\"nodes\">\n <ax-header>\n <ax-prefix>\n <ax-file-info></ax-file-info>\n </ax-prefix>\n <ax-suffix>\n <ax-fullscreen-button></ax-fullscreen-button>\n </ax-suffix>\n </ax-header>\n <ax-prefix>\n <ax-button (click)=\"c.next()\">\n <ax-icon class=\"ax-icon ax-icon-chevron-right\"> </ax-icon>\n </ax-button>\n </ax-prefix>\n <ax-suffix>\n <ax-button (click)=\"c.prev()\">\n <ax-icon class=\"ax-icon ax-icon-chevron-left\"> </ax-icon>\n </ax-button>\n </ax-suffix>\n </ax-media-viewer-container>\n</ax-content>\n<ax-footer>\n <ax-suffix>\n <ax-button [text]=\"'close'\" (click)=\"onClose()\" />\n </ax-suffix>\n</ax-footer>\n", styles: ["ax-media-viewer-container{--ax-sys-border-radius:0 }\n"], dependencies: [{ kind: "ngmodule", type: AXDecoratorModule }, { kind: "component", type: i1$1.AXDecoratorIconComponent, selector: "ax-icon", inputs: ["icon"] }, { kind: "component", type: i1$1.AXDecoratorGenericComponent, selector: "ax-footer, ax-header, ax-content, ax-divider, ax-form-hint, ax-prefix, ax-suffix, ax-text, ax-title, ax-subtitle, ax-placeholder, ax-overlay" }, { kind: "component", type: i1$1.AXDecoratorFullScreenButtonComponent, selector: "ax-fullscreen-button", inputs: ["element", "isActive"], outputs: ["elementChange", "isActiveChange"] }, { kind: "ngmodule", type: AXButtonModule }, { kind: "component", type: i1$2.AXButtonComponent, selector: "ax-button", inputs: ["disabled", "size", "tabIndex", "color", "look", "text", "toggleable", "selected", "iconOnly", "type", "loadingText"], outputs: ["onBlur", "onFocus", "onClick", "selectedChange", "toggleableChange", "lookChange", "colorChange", "disabledChange", "loadingTextChange"] }, { kind: "ngmodule", type: AXMediaViewerModule }, { kind: "component", type: i3$1.AXMediaViewerContainerComponent, selector: "ax-media-viewer-container", inputs: ["dataArray", "thumbnail", "pagination"] }, { kind: "component", type: i3$1.AXFileInfoComponent, selector: "ax-file-info" }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
|
|
4975
4021
|
}
|
|
4976
4022
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.15", ngImport: i0, type: AXMFileViewerPopupComponent, decorators: [{
|
|
4977
4023
|
type: Component,
|
|
@@ -5041,20 +4087,7 @@ class AXMDocumentDialogService {
|
|
|
5041
4087
|
})
|
|
5042
4088
|
.setActions(actions => {
|
|
5043
4089
|
actions.cancel('@general:actions.cancel.title');
|
|
5044
|
-
|
|
5045
|
-
title: '@general:actions.submit.title',
|
|
5046
|
-
color: 'primary',
|
|
5047
|
-
command: { name: 'submit', options: { validate: true } },
|
|
5048
|
-
items: [
|
|
5049
|
-
{
|
|
5050
|
-
title: '@document-management:actions.save-and-send',
|
|
5051
|
-
icon: 'fa-paper-plane',
|
|
5052
|
-
color: 'primary',
|
|
5053
|
-
command: { name: 'send-to-review', options: { validate: true } },
|
|
5054
|
-
},
|
|
5055
|
-
],
|
|
5056
|
-
};
|
|
5057
|
-
actions.custom(submitAction);
|
|
4090
|
+
actions.submit('@general:actions.submit.title');
|
|
5058
4091
|
}).setCloseButton(true);
|
|
5059
4092
|
})
|
|
5060
4093
|
.show();
|
|
@@ -5075,7 +4108,6 @@ class AXMDocumentDialogService {
|
|
|
5075
4108
|
return {
|
|
5076
4109
|
data: {
|
|
5077
4110
|
cancel: false,
|
|
5078
|
-
isReviewSent: action === 'send-to-review',
|
|
5079
4111
|
fileIds: [documentId],
|
|
5080
4112
|
},
|
|
5081
4113
|
};
|
|
@@ -5102,7 +4134,6 @@ class AXMDocumentDialogService {
|
|
|
5102
4134
|
return {
|
|
5103
4135
|
data: {
|
|
5104
4136
|
cancel: false,
|
|
5105
|
-
isReviewSent: action === 'send-to-review',
|
|
5106
4137
|
fileIds,
|
|
5107
4138
|
},
|
|
5108
4139
|
};
|
|
@@ -5217,7 +4248,6 @@ class DocumentAttachmentsService {
|
|
|
5217
4248
|
constructor() {
|
|
5218
4249
|
this.fileService = inject(AXFileService);
|
|
5219
4250
|
this.documentTypeService = inject(AXMDocumentTypeService);
|
|
5220
|
-
this.workflowService = inject(AXPWorkflowService);
|
|
5221
4251
|
this.documentService = inject(AXMDocumentService);
|
|
5222
4252
|
this.documentDialog = inject(AXMDocumentDialogService);
|
|
5223
4253
|
this.translateService = inject(AXTranslationService);
|
|
@@ -5337,21 +4367,6 @@ class DocumentAttachmentsService {
|
|
|
5337
4367
|
if (result?.data?.cancel) {
|
|
5338
4368
|
return false;
|
|
5339
4369
|
}
|
|
5340
|
-
if (this.shouldExecuteWorkflow(result)) {
|
|
5341
|
-
return await this.executeWorkflow(result.data.fileIds[0]);
|
|
5342
|
-
}
|
|
5343
|
-
return true;
|
|
5344
|
-
}
|
|
5345
|
-
shouldExecuteWorkflow(result) {
|
|
5346
|
-
return !!(result?.data?.isReviewSent && result.data.fileIds && result.data.fileIds.length > 0);
|
|
5347
|
-
}
|
|
5348
|
-
async executeWorkflow(fileId) {
|
|
5349
|
-
const workflowResult = await this.workflowService.execute('send-to-review', {
|
|
5350
|
-
options: {
|
|
5351
|
-
id: fileId,
|
|
5352
|
-
},
|
|
5353
|
-
});
|
|
5354
|
-
console.log('Workflow result:', workflowResult);
|
|
5355
4370
|
return true;
|
|
5356
4371
|
}
|
|
5357
4372
|
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.3.15", ngImport: i0, type: DocumentAttachmentsService, deps: [], target: i0.ɵɵFactoryTarget.Injectable }); }
|
|
@@ -6417,9 +5432,22 @@ class AXMDocumentManagerService {
|
|
|
6417
5432
|
const ext = item.name.split('.').pop()?.toLowerCase();
|
|
6418
5433
|
return ext && ['jpg', 'jpeg', 'png', 'gif', 'bmp', 'webp', 'pdf'].includes(ext);
|
|
6419
5434
|
});
|
|
5435
|
+
// Fetch documents with null fileId.source.value
|
|
5436
|
+
const documentsWithNullFileId = filteredDocuments.filter((doc) => doc.fileId?.source?.kind === 'fileId' && !doc.fileId.source.value);
|
|
5437
|
+
// Fetch missing documents and replace them in the array
|
|
5438
|
+
if (documentsWithNullFileId.length > 0) {
|
|
5439
|
+
const fetchedDocuments = await Promise.all(documentsWithNullFileId.map((doc) => this.documentService.getOne(doc.id)));
|
|
5440
|
+
// Replace documents in filteredDocuments with fetched ones
|
|
5441
|
+
fetchedDocuments.forEach((fetchedDoc) => {
|
|
5442
|
+
const index = filteredDocuments.findIndex((doc) => doc.id === fetchedDoc.id);
|
|
5443
|
+
if (index !== -1) {
|
|
5444
|
+
filteredDocuments[index] = fetchedDoc;
|
|
5445
|
+
}
|
|
5446
|
+
});
|
|
5447
|
+
}
|
|
6420
5448
|
// Collect all fileIds that need to be fetched
|
|
6421
5449
|
const fileIds = filteredDocuments
|
|
6422
|
-
.filter((doc) => doc.fileId?.source?.kind === 'fileId')
|
|
5450
|
+
.filter((doc) => doc.fileId?.source?.kind === 'fileId' && doc.fileId.source.value)
|
|
6423
5451
|
.map((doc) => doc.fileId.source.value);
|
|
6424
5452
|
// Fetch all file info at once (need URL for media viewer)
|
|
6425
5453
|
const fileInfosMap = new Map();
|
|
@@ -7476,810 +6504,305 @@ const AXPDocumentExplorerViewModel = signalStore({ providedIn: 'root' }, withSta
|
|
|
7476
6504
|
*/
|
|
7477
6505
|
async makeCopy(node) {
|
|
7478
6506
|
if (node) {
|
|
7479
|
-
try {
|
|
7480
|
-
await driveService.copy(node);
|
|
7481
|
-
await this.refresh();
|
|
7482
|
-
}
|
|
7483
|
-
catch (error) {
|
|
7484
|
-
console.error('Error copying node:', error);
|
|
7485
|
-
}
|
|
7486
|
-
}
|
|
7487
|
-
},
|
|
7488
|
-
/**
|
|
7489
|
-
* Checks if a node is locked
|
|
7490
|
-
*/
|
|
7491
|
-
async isLocked(node) {
|
|
7492
|
-
try {
|
|
7493
|
-
return lockService.check({
|
|
7494
|
-
refId: node.id,
|
|
7495
|
-
refType: `${RootConfig.module.name}.${node.type === 'folder' ? RootConfig.entities.folder.name : RootConfig.entities.document.name}`,
|
|
7496
|
-
});
|
|
7497
|
-
}
|
|
7498
|
-
catch (error) {
|
|
7499
|
-
console.error('Error checking lock status:', error);
|
|
7500
|
-
return false;
|
|
7501
|
-
}
|
|
7502
|
-
},
|
|
7503
|
-
/**
|
|
7504
|
-
* Locks a node
|
|
7505
|
-
*/
|
|
7506
|
-
async lock(node) {
|
|
7507
|
-
const locked = await driveService.showLockDialog(node);
|
|
7508
|
-
if (locked) {
|
|
7509
|
-
await this.refresh();
|
|
7510
|
-
}
|
|
7511
|
-
},
|
|
7512
|
-
/**
|
|
7513
|
-
* Unlocks a node
|
|
7514
|
-
*/
|
|
7515
|
-
async unlock(node) {
|
|
7516
|
-
const unlocked = await driveService.showUnlockDialog(node);
|
|
7517
|
-
if (unlocked) {
|
|
7518
|
-
await this.refresh();
|
|
7519
|
-
}
|
|
7520
|
-
},
|
|
7521
|
-
/**
|
|
7522
|
-
* Moves a node to a different location
|
|
7523
|
-
*/
|
|
7524
|
-
async moveTo(node) {
|
|
7525
|
-
if (node) {
|
|
7526
|
-
const result = await driveService.moveTo({ browseMode: 'folder', node: node, scope: store.scope() });
|
|
7527
|
-
if (result) {
|
|
7528
|
-
await this.refresh();
|
|
7529
|
-
}
|
|
7530
|
-
}
|
|
7531
|
-
},
|
|
7532
|
-
/**
|
|
7533
|
-
* Copies a node to a different location
|
|
7534
|
-
*/
|
|
7535
|
-
async copyTo(node) {
|
|
7536
|
-
if (node) {
|
|
7537
|
-
const result = await driveService.copyTo({ browseMode: 'folder', node: node, scope: store.scope() });
|
|
7538
|
-
if (result) {
|
|
7539
|
-
await this.refresh();
|
|
7540
|
-
}
|
|
7541
|
-
}
|
|
7542
|
-
},
|
|
7543
|
-
/**
|
|
7544
|
-
* Uploads a file by type
|
|
7545
|
-
*/
|
|
7546
|
-
async uploadFileByType(folderId, documentTypeId) {
|
|
7547
|
-
await driveService.uploadFileByType(folderId, documentTypeId);
|
|
7548
|
-
await this.refresh();
|
|
7549
|
-
},
|
|
7550
|
-
//#endregion
|
|
7551
|
-
})));
|
|
7552
|
-
|
|
7553
|
-
class AXMDocumentExplorerComponent {
|
|
7554
|
-
constructor() {
|
|
7555
|
-
this.vm = inject(AXPDocumentExplorerViewModel);
|
|
7556
|
-
this.contextMenu = viewChild('itemsContextMenu', ...(ngDevMode ? [{ debugName: "contextMenu" }] : []));
|
|
7557
|
-
this.rootContextMenu = viewChild('rootContextMenu', ...(ngDevMode ? [{ debugName: "rootContextMenu" }] : []));
|
|
7558
|
-
this.driveService = inject(AXMDocumentManagerService);
|
|
7559
|
-
this.translateService = inject(AXTranslationService);
|
|
7560
|
-
this.layout = inject(AXPLayoutThemeService);
|
|
7561
|
-
this.browseMode = input('file', ...(ngDevMode ? [{ debugName: "browseMode" }] : []));
|
|
7562
|
-
this.viewMode = input(...(ngDevMode ? [undefined, { debugName: "viewMode" }] : []));
|
|
7563
|
-
this.selectionMode = input('none', ...(ngDevMode ? [{ debugName: "selectionMode" }] : []));
|
|
7564
|
-
this.showContextMenu = input(true, ...(ngDevMode ? [{ debugName: "showContextMenu" }] : []));
|
|
7565
|
-
this.view = signal(null, ...(ngDevMode ? [{ debugName: "view" }] : []));
|
|
7566
|
-
this.viewMap = {
|
|
7567
|
-
list: async () => (await import('./acorex-modules-document-management-list-view.component-DfKTfE-z.mjs')).AXMDocumentExplorerListViewComponent,
|
|
7568
|
-
'small-tiles': async () => (await import('./acorex-modules-document-management-small-tiles-view.component-CVemmAlG.mjs')).AXMDocumentExplorerSmallTilesViewComponent,
|
|
7569
|
-
'large-tiles': async () => (await import('./acorex-modules-document-management-large-tiles-view.component-q62xM-2p.mjs')).AXMDocumentExplorerLargeTilesViewComponent,
|
|
7570
|
-
details: async () => (await import('./acorex-modules-document-management-details-view.component-CmHkM5fr.mjs')).AXMDocumentExplorerDetailsViewComponent,
|
|
7571
|
-
'large-icons': async () => (await import('./acorex-modules-document-management-large-icons-view.component-BWsNkndg.mjs')).AXMDocumentExplorerLargeIconsViewComponent,
|
|
7572
|
-
'small-icons': async () => (await import('./acorex-modules-document-management-small-icons-view.component-BrhcmGFl.mjs')).AXMDocumentExplorerSmallIconsViewComponent,
|
|
7573
|
-
'attachment': async () => (await import('./acorex-modules-document-management-attachment-widget.component-DctR7UvD.mjs')).AXMDocumentExplorerAttachmentComponent,
|
|
7574
|
-
};
|
|
7575
|
-
this.#effect = effect(() => {
|
|
7576
|
-
if (this.vm.loadingFolderId() == null) {
|
|
7577
|
-
setTimeout(() => {
|
|
7578
|
-
this.contextMenu()?.refresh();
|
|
7579
|
-
this.rootContextMenu()?.refresh();
|
|
7580
|
-
}, 300);
|
|
7581
|
-
}
|
|
7582
|
-
}, ...(ngDevMode ? [{ debugName: "#effect" }] : []));
|
|
7583
|
-
this.#effect2 = effect(() => {
|
|
7584
|
-
if (this.viewMode()) {
|
|
7585
|
-
this.vm.setViewMode(this.viewMode());
|
|
7586
|
-
}
|
|
7587
|
-
if (this.selectionMode()) {
|
|
7588
|
-
this.vm.setSelectionMode(this.selectionMode());
|
|
7589
|
-
}
|
|
7590
|
-
}, ...(ngDevMode ? [{ debugName: "#effect2" }] : []));
|
|
7591
|
-
this.#effect3 = effect(async () => {
|
|
7592
|
-
const func = get$1(this.viewMap, this.vm.viewMode()) ?? this.viewMap['large-tiles'];
|
|
7593
|
-
const comp = await func();
|
|
7594
|
-
this.view.set(comp);
|
|
7595
|
-
}, ...(ngDevMode ? [{ debugName: "#effect3" }] : []));
|
|
7596
|
-
}
|
|
7597
|
-
#effect;
|
|
7598
|
-
#effect2;
|
|
7599
|
-
#effect3;
|
|
7600
|
-
//#region Menu and Context Menu
|
|
7601
|
-
async handleContextMenuOnOpening(e) {
|
|
7602
|
-
const node = get$1(e.targetElement, '__data__');
|
|
7603
|
-
if (!node) {
|
|
7604
|
-
return;
|
|
7605
|
-
}
|
|
7606
|
-
// Get menu items from ViewModel
|
|
7607
|
-
const items = await this.vm.getNodeContextMenuItems(node);
|
|
7608
|
-
// Set items directly to the context menu
|
|
7609
|
-
e.items.push(...items);
|
|
7610
|
-
}
|
|
7611
|
-
async handleContextMenuRootOnOpening(e) {
|
|
7612
|
-
//TODO: check async translate method in acorex
|
|
7613
|
-
const items = [
|
|
7614
|
-
...(await this.vm.getFolderAddMenuItems()).map((m) => ({
|
|
7615
|
-
...m,
|
|
7616
|
-
name: m.command?.name,
|
|
7617
|
-
data: m.command?.options,
|
|
7618
|
-
})),
|
|
7619
|
-
...(await this.vm.getFolderActionMenuItems()),
|
|
7620
|
-
];
|
|
7621
|
-
const mappedItems = items.map((m) => ({
|
|
7622
|
-
...m,
|
|
7623
|
-
text: m.title,
|
|
7624
|
-
}));
|
|
7625
|
-
e.items.push(...mappedItems);
|
|
7626
|
-
e.items[e.items.length - 1].break = false;
|
|
7627
|
-
}
|
|
7628
|
-
async handleContextMenuItemClick(e) {
|
|
7629
|
-
if (e.item.name) {
|
|
7630
|
-
await this.vm.handleMenuItemClick(e.item.name, e.item.data);
|
|
7631
|
-
}
|
|
7632
|
-
}
|
|
7633
|
-
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.3.15", ngImport: i0, type: AXMDocumentExplorerComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
|
|
7634
|
-
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "20.3.15", type: AXMDocumentExplorerComponent, isStandalone: true, selector: "axm-document-explorer", inputs: { browseMode: { classPropertyName: "browseMode", publicName: "browseMode", isSignal: true, isRequired: false, transformFunction: null }, viewMode: { classPropertyName: "viewMode", publicName: "viewMode", isSignal: true, isRequired: false, transformFunction: null }, selectionMode: { classPropertyName: "selectionMode", publicName: "selectionMode", isSignal: true, isRequired: false, transformFunction: null }, showContextMenu: { classPropertyName: "showContextMenu", publicName: "showContextMenu", isSignal: true, isRequired: false, transformFunction: null } }, viewQueries: [{ propertyName: "contextMenu", first: true, predicate: ["itemsContextMenu"], descendants: true, isSignal: true }, { propertyName: "rootContextMenu", first: true, predicate: ["rootContextMenu"], descendants: true, isSignal: true }], ngImport: i0, template: "<!-- Empty State -->\n<div class=\"view-container\">\n @if (vm.folders().length === 0 && vm.files().length === 0) {\n <axp-state-message\n icon=\"fa-light fa-folder-open\"\n [title]=\"'@document-management:empty-states.no-items.title'\"\n [description]=\"'@document-management:empty-states.no-items.description'\"\n >\n </axp-state-message>\n } @else {\n <ng-container [ngComponentOutlet]=\"view()\"></ng-container>\n }\n</div>\n\n<!-- Context Menu -->\n@if (showContextMenu()) {\n <!-- Item Context Menu-->\n <ax-context-menu\n #itemsContextMenu\n [target]=\"'.__explorer-item'\"\n [orientation]=\"'vertical'\"\n [closeOn]=\"'leave'\"\n (onItemClick)=\"handleContextMenuItemClick($event)\"\n (onOpening)=\"handleContextMenuOnOpening($event)\"\n >\n </ax-context-menu>\n <!-- Root Context Menu-->\n <ax-context-menu\n #rootContextMenu\n [target]=\"'.view-container'\"\n [orientation]=\"'vertical'\"\n [closeOn]=\"'leave'\"\n (onItemClick)=\"handleContextMenuItemClick($event)\"\n (onOpening)=\"handleContextMenuRootOnOpening($event)\"\n >\n </ax-context-menu>\n}\n", styles: ["axm-document-explorer{display:flex;height:max-content;min-height:100%;width:100%;flex-direction:row;gap:1rem}axm-document-explorer>.view-container{display:flex;flex:1 1 0%;-webkit-user-select:none;user-select:none;flex-direction:column;gap:1rem}axm-document-explorer .animation-duration-2s{--fa-animation-duration: 2s}\n"], dependencies: [{ kind: "ngmodule", type: CommonModule }, { kind: "directive", type: i1$4.NgComponentOutlet, selector: "[ngComponentOutlet]", inputs: ["ngComponentOutlet", "ngComponentOutletInputs", "ngComponentOutletInjector", "ngComponentOutletEnvironmentInjector", "ngComponentOutletContent", "ngComponentOutletNgModule", "ngComponentOutletNgModuleFactory"], exportAs: ["ngComponentOutlet"] }, { kind: "ngmodule", type: RouterModule }, { kind: "ngmodule", type: AXDecoratorModule }, { kind: "ngmodule", type: AXLoadingModule }, { kind: "ngmodule", type: AXFormatModule }, { kind: "ngmodule", type: AXDateTimeModule }, { kind: "ngmodule", type: AXMenuModule }, { kind: "component", type: i2$1.AXContextMenuComponent, selector: "ax-context-menu", inputs: ["orientation", "openOn", "closeOn", "items", "target"], outputs: ["onItemClick", "onOpening"] }, { kind: "component", type: AXPStateMessageComponent, selector: "axp-state-message", inputs: ["mode", "icon", "title", "description", "variant"] }], encapsulation: i0.ViewEncapsulation.None }); }
|
|
7635
|
-
}
|
|
7636
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.15", ngImport: i0, type: AXMDocumentExplorerComponent, decorators: [{
|
|
7637
|
-
type: Component,
|
|
7638
|
-
args: [{ selector: 'axm-document-explorer', standalone: true, encapsulation: ViewEncapsulation.None, imports: [
|
|
7639
|
-
CommonModule,
|
|
7640
|
-
RouterModule,
|
|
7641
|
-
AXDecoratorModule,
|
|
7642
|
-
AXLoadingModule,
|
|
7643
|
-
AXFormatModule,
|
|
7644
|
-
AXDateTimeModule,
|
|
7645
|
-
AXMenuModule,
|
|
7646
|
-
AXPStateMessageComponent,
|
|
7647
|
-
], template: "<!-- Empty State -->\n<div class=\"view-container\">\n @if (vm.folders().length === 0 && vm.files().length === 0) {\n <axp-state-message\n icon=\"fa-light fa-folder-open\"\n [title]=\"'@document-management:empty-states.no-items.title'\"\n [description]=\"'@document-management:empty-states.no-items.description'\"\n >\n </axp-state-message>\n } @else {\n <ng-container [ngComponentOutlet]=\"view()\"></ng-container>\n }\n</div>\n\n<!-- Context Menu -->\n@if (showContextMenu()) {\n <!-- Item Context Menu-->\n <ax-context-menu\n #itemsContextMenu\n [target]=\"'.__explorer-item'\"\n [orientation]=\"'vertical'\"\n [closeOn]=\"'leave'\"\n (onItemClick)=\"handleContextMenuItemClick($event)\"\n (onOpening)=\"handleContextMenuOnOpening($event)\"\n >\n </ax-context-menu>\n <!-- Root Context Menu-->\n <ax-context-menu\n #rootContextMenu\n [target]=\"'.view-container'\"\n [orientation]=\"'vertical'\"\n [closeOn]=\"'leave'\"\n (onItemClick)=\"handleContextMenuItemClick($event)\"\n (onOpening)=\"handleContextMenuRootOnOpening($event)\"\n >\n </ax-context-menu>\n}\n", styles: ["axm-document-explorer{display:flex;height:max-content;min-height:100%;width:100%;flex-direction:row;gap:1rem}axm-document-explorer>.view-container{display:flex;flex:1 1 0%;-webkit-user-select:none;user-select:none;flex-direction:column;gap:1rem}axm-document-explorer .animation-duration-2s{--fa-animation-duration: 2s}\n"] }]
|
|
7648
|
-
}], propDecorators: { contextMenu: [{ type: i0.ViewChild, args: ['itemsContextMenu', { isSignal: true }] }], rootContextMenu: [{ type: i0.ViewChild, args: ['rootContextMenu', { isSignal: true }] }], browseMode: [{ type: i0.Input, args: [{ isSignal: true, alias: "browseMode", required: false }] }], viewMode: [{ type: i0.Input, args: [{ isSignal: true, alias: "viewMode", required: false }] }], selectionMode: [{ type: i0.Input, args: [{ isSignal: true, alias: "selectionMode", required: false }] }], showContextMenu: [{ type: i0.Input, args: [{ isSignal: true, alias: "showContextMenu", required: false }] }] } });
|
|
7649
|
-
|
|
7650
|
-
class AXMFolderPathBreadcrumbsComponent {
|
|
7651
|
-
constructor() {
|
|
7652
|
-
this.vm = inject(AXPDocumentExplorerViewModel);
|
|
7653
|
-
this.layout = inject(AXPLayoutThemeService);
|
|
7654
|
-
}
|
|
7655
|
-
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.3.15", ngImport: i0, type: AXMFolderPathBreadcrumbsComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
|
|
7656
|
-
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "20.3.15", type: AXMFolderPathBreadcrumbsComponent, isStandalone: true, selector: "axm-folder-path-breadcrumbs", ngImport: i0, template: "<!-- Breadcrumbs Section -->\n<div class=\"__breadcrumb ax-xs\">\n <!-- Desktop Breadcrumb -->\n @for (item of vm.currentPath(); track item.id; let i = $index;let last = $last) {\n <!-- Navigation Button -->\n <ax-button look=\"blank\" (onClick)=\"vm.navigateToFolder(item.id)\" [text]=\"item.name\" [disabled]=\"last\">\n @if(i === 0) {\n <ax-icon icon=\"fa-light fa-cloud\"></ax-icon>\n }@else {\n <ax-icon icon=\"fa-light fa-folder-closed\"></ax-icon>\n }\n </ax-button>\n <!-- Separator -->\n @if(!last) {\n <i class=\"far fa-chevron-right rtl:ax-rotate-180 fa-fw fa-xs ax-me-2\"></i>\n }\n <!-- End Navigation Button -->\n }\n</div>\n", styles: [":host{display:flex;width:100%;align-items:center}:host .__nav{display:flex;flex-direction:row;align-items:center;gap:.25rem;border-inline-end-width:1px;padding-inline-start:.25rem;padding-inline-end:.5rem}:host .__breadcrumb{display:flex;flex-direction:row;flex-wrap:wrap;align-items:center;padding-inline-start:.5rem;padding-inline-end:.25rem}:host .__breadcrumb .ax-state-disabled button,:host .__breadcrumb .ax-state-loading button{cursor:default!important}\n"], dependencies: [{ kind: "ngmodule", type: AXButtonModule }, { kind: "component", type: i1$3.AXButtonComponent, selector: "ax-button", inputs: ["disabled", "size", "tabIndex", "color", "look", "text", "toggleable", "selected", "iconOnly", "type", "loadingText"], outputs: ["onBlur", "onFocus", "onClick", "selectedChange", "toggleableChange", "lookChange", "colorChange", "disabledChange", "loadingTextChange"] }, { kind: "ngmodule", type: AXDecoratorModule }, { kind: "component", type: i1$1.AXDecoratorIconComponent, selector: "ax-icon", inputs: ["icon"] }] }); }
|
|
7657
|
-
}
|
|
7658
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.15", ngImport: i0, type: AXMFolderPathBreadcrumbsComponent, decorators: [{
|
|
7659
|
-
type: Component,
|
|
7660
|
-
args: [{ selector: 'axm-folder-path-breadcrumbs', standalone: true, imports: [
|
|
7661
|
-
AXButtonModule,
|
|
7662
|
-
AXDecoratorModule,
|
|
7663
|
-
], template: "<!-- Breadcrumbs Section -->\n<div class=\"__breadcrumb ax-xs\">\n <!-- Desktop Breadcrumb -->\n @for (item of vm.currentPath(); track item.id; let i = $index;let last = $last) {\n <!-- Navigation Button -->\n <ax-button look=\"blank\" (onClick)=\"vm.navigateToFolder(item.id)\" [text]=\"item.name\" [disabled]=\"last\">\n @if(i === 0) {\n <ax-icon icon=\"fa-light fa-cloud\"></ax-icon>\n }@else {\n <ax-icon icon=\"fa-light fa-folder-closed\"></ax-icon>\n }\n </ax-button>\n <!-- Separator -->\n @if(!last) {\n <i class=\"far fa-chevron-right rtl:ax-rotate-180 fa-fw fa-xs ax-me-2\"></i>\n }\n <!-- End Navigation Button -->\n }\n</div>\n", styles: [":host{display:flex;width:100%;align-items:center}:host .__nav{display:flex;flex-direction:row;align-items:center;gap:.25rem;border-inline-end-width:1px;padding-inline-start:.25rem;padding-inline-end:.5rem}:host .__breadcrumb{display:flex;flex-direction:row;flex-wrap:wrap;align-items:center;padding-inline-start:.5rem;padding-inline-end:.25rem}:host .__breadcrumb .ax-state-disabled button,:host .__breadcrumb .ax-state-loading button{cursor:default!important}\n"] }]
|
|
7664
|
-
}] });
|
|
7665
|
-
|
|
7666
|
-
const UploadFromDriveHookProvider = {
|
|
7667
|
-
key: 'file-uploader.actions',
|
|
7668
|
-
priority: 0,
|
|
7669
|
-
execute: (payload) => {
|
|
7670
|
-
const driveService = inject(AXMDocumentManagerService);
|
|
7671
|
-
const fileStorageService = inject(AXPFileStorageService);
|
|
7672
|
-
const translationService = inject(AXTranslationService);
|
|
7673
|
-
const dialogService = inject(AXDialogService);
|
|
7674
|
-
payload.actions = [
|
|
7675
|
-
...payload.actions,
|
|
7676
|
-
{
|
|
7677
|
-
plugin: 'upload-document-from-drive',
|
|
7678
|
-
global: true,
|
|
7679
|
-
textKey: '@document-management:actions.choose-from-drive',
|
|
7680
|
-
icon: 'fa-light fa-file-arrow-up',
|
|
7681
|
-
run: async ({ host }) => {
|
|
7682
|
-
const result = await driveService.showChooseFileDialog(AXPPlatformScope.Tenant);
|
|
7683
|
-
if (!result || result.length === 0) {
|
|
7684
|
-
return;
|
|
7685
|
-
}
|
|
7686
|
-
// Show confirm dialog for clone option
|
|
7687
|
-
// Yes/Okay -> clone, No/Cancel -> by-reference
|
|
7688
|
-
const dialogTitle = await translationService.translateAsync('@document-management:actions.upload-options.title');
|
|
7689
|
-
const dialogMessage = await translationService.translateAsync('@document-management:actions.upload-options.confirm-message');
|
|
7690
|
-
const dialogResult = await dialogService.confirm(dialogTitle, dialogMessage, 'primary', 'horizontal', false, 'cancel');
|
|
7691
|
-
// Yes/Okay -> clone, No/Cancel -> by-reference
|
|
7692
|
-
const attachmentType = dialogResult.result ? 'clone' : 'by-reference';
|
|
7693
|
-
// Add files to host with uploading status
|
|
7694
|
-
host.setValue([
|
|
7695
|
-
...(host.getValue() ?? []),
|
|
7696
|
-
...result.map((item) => ({
|
|
7697
|
-
...(item.fileId ?? {}),
|
|
7698
|
-
status: 'uploading',
|
|
7699
|
-
})),
|
|
7700
|
-
]);
|
|
7701
|
-
// Process files based on attachment type
|
|
7702
|
-
for await (const item of result) {
|
|
7703
|
-
if (item.type === 'folder') {
|
|
7704
|
-
continue;
|
|
7705
|
-
}
|
|
7706
|
-
const currentFiles = host.getValue();
|
|
7707
|
-
const fileIndex = currentFiles.findIndex((f) => f.id === (item.fileId?.id ?? ''));
|
|
7708
|
-
if (fileIndex === -1) {
|
|
7709
|
-
continue;
|
|
7710
|
-
}
|
|
7711
|
-
if (attachmentType === 'by-reference') {
|
|
7712
|
-
// By reference: just set documentId
|
|
7713
|
-
const updatedFiles = [...currentFiles];
|
|
7714
|
-
updatedFiles[fileIndex] = {
|
|
7715
|
-
...updatedFiles[fileIndex],
|
|
7716
|
-
status: 'attached',
|
|
7717
|
-
source: {
|
|
7718
|
-
kind: 'reference',
|
|
7719
|
-
value: {
|
|
7720
|
-
id: item.id,
|
|
7721
|
-
type: 'document',
|
|
7722
|
-
},
|
|
7723
|
-
},
|
|
7724
|
-
};
|
|
7725
|
-
host.setValue(updatedFiles);
|
|
7726
|
-
}
|
|
7727
|
-
else {
|
|
7728
|
-
// Clone: get file info and create blob
|
|
7729
|
-
try {
|
|
7730
|
-
const storageInfo = await fileStorageService.getInfo(item.fileId?.id ?? '');
|
|
7731
|
-
if (!storageInfo) {
|
|
7732
|
-
const currentFiles = host.getValue();
|
|
7733
|
-
host.setValue(currentFiles.filter((f) => f.id !== (item.fileId?.id ?? '')));
|
|
7734
|
-
continue;
|
|
7735
|
-
}
|
|
7736
|
-
const updatedFiles = [...currentFiles];
|
|
7737
|
-
updatedFiles[fileIndex] = {
|
|
7738
|
-
...updatedFiles[fileIndex],
|
|
7739
|
-
id: AXPDataGenerator.uuid(),
|
|
7740
|
-
status: 'attached',
|
|
7741
|
-
source: {
|
|
7742
|
-
kind: 'blob',
|
|
7743
|
-
value: new Blob([storageInfo.binary], { type: storageInfo.mimeType }),
|
|
7744
|
-
},
|
|
7745
|
-
};
|
|
7746
|
-
host.setValue(updatedFiles);
|
|
7747
|
-
}
|
|
7748
|
-
catch {
|
|
7749
|
-
const currentFiles = host.getValue();
|
|
7750
|
-
host.setValue(currentFiles.filter((f) => f.id !== (item.fileId?.id ?? '')));
|
|
7751
|
-
}
|
|
7752
|
-
}
|
|
7753
|
-
}
|
|
7754
|
-
},
|
|
7755
|
-
},
|
|
7756
|
-
];
|
|
7757
|
-
return payload;
|
|
7758
|
-
},
|
|
7759
|
-
};
|
|
7760
|
-
|
|
7761
|
-
class AXMDriveChooseModule {
|
|
7762
|
-
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.3.15", ngImport: i0, type: AXMDriveChooseModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule }); }
|
|
7763
|
-
static { this.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "14.0.0", version: "20.3.15", ngImport: i0, type: AXMDriveChooseModule }); }
|
|
7764
|
-
static { this.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "20.3.15", ngImport: i0, type: AXMDriveChooseModule, providers: [
|
|
7765
|
-
{ provide: AXP_DISTRIBUTED_EVENT_LISTENER_PROVIDER, useValue: UploadFromDriveHookProvider, multi: true }
|
|
7766
|
-
] }); }
|
|
7767
|
-
}
|
|
7768
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.15", ngImport: i0, type: AXMDriveChooseModule, decorators: [{
|
|
7769
|
-
type: NgModule,
|
|
7770
|
-
args: [{
|
|
7771
|
-
imports: [],
|
|
7772
|
-
providers: [
|
|
7773
|
-
{ provide: AXP_DISTRIBUTED_EVENT_LISTENER_PROVIDER, useValue: UploadFromDriveHookProvider, multi: true }
|
|
7774
|
-
]
|
|
7775
|
-
}]
|
|
7776
|
-
}] });
|
|
7777
|
-
|
|
7778
|
-
/**
|
|
7779
|
-
* Action to show document distribution popup
|
|
7780
|
-
*/
|
|
7781
|
-
class AXMDocumentDistributionPopupAction extends AXPWorkflowAction {
|
|
7782
|
-
constructor() {
|
|
7783
|
-
super(...arguments);
|
|
7784
|
-
this.translationService = inject(AXTranslationService);
|
|
7785
|
-
this.layoutBuilder = inject(AXPLayoutBuilderService);
|
|
7786
|
-
}
|
|
7787
|
-
async execute(context) {
|
|
7788
|
-
const documentId = context.getVariable('options.id');
|
|
7789
|
-
const documentTitle = context.getVariable('options.title');
|
|
7790
|
-
const dialogTitle = await this.translationService.translateAsync('@document-management:workflows.document-distribution.title', { params: { title: documentTitle } });
|
|
7791
|
-
const dialogRef = await this.layoutBuilder
|
|
7792
|
-
.create()
|
|
7793
|
-
.dialog(dialog => {
|
|
7794
|
-
dialog
|
|
7795
|
-
.setTitle(dialogTitle)
|
|
7796
|
-
.setSize('md')
|
|
7797
|
-
.setContext({ assignedTo: [] })
|
|
7798
|
-
.content(flex => {
|
|
7799
|
-
flex
|
|
7800
|
-
.setDirection('column')
|
|
7801
|
-
.formField('@document-management:actions.distribute', field => {
|
|
7802
|
-
field.path('assignedTo');
|
|
7803
|
-
field.lookupBox({
|
|
7804
|
-
entity: 'SecurityManagement.User',
|
|
7805
|
-
multiple: true,
|
|
7806
|
-
look: 'lookup',
|
|
7807
|
-
validations: [{ rule: 'required' }],
|
|
7808
|
-
});
|
|
7809
|
-
});
|
|
7810
|
-
})
|
|
7811
|
-
.setActions(actions => {
|
|
7812
|
-
actions.cancel('@general:actions.cancel.title');
|
|
7813
|
-
const submitAction = {
|
|
7814
|
-
title: '@document-management:actions.distribute',
|
|
7815
|
-
color: 'primary',
|
|
7816
|
-
command: { name: 'submit', options: { validate: true } },
|
|
7817
|
-
};
|
|
7818
|
-
actions.custom(submitAction);
|
|
7819
|
-
});
|
|
7820
|
-
})
|
|
7821
|
-
.show();
|
|
7822
|
-
const action = dialogRef.action();
|
|
7823
|
-
if (action === 'cancel') {
|
|
7824
|
-
context.setOutput('confirmed', false);
|
|
7825
|
-
return;
|
|
7826
|
-
}
|
|
7827
|
-
const ctx = dialogRef.context();
|
|
7828
|
-
const confirmed = Array.isArray(ctx?.assignedTo) && ctx.assignedTo.length > 0;
|
|
7829
|
-
context.setOutput('confirmed', confirmed);
|
|
7830
|
-
if (confirmed) {
|
|
7831
|
-
context.setOutput('assignedTo', ctx.assignedTo);
|
|
7832
|
-
}
|
|
7833
|
-
}
|
|
7834
|
-
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.3.15", ngImport: i0, type: AXMDocumentDistributionPopupAction, deps: null, target: i0.ɵɵFactoryTarget.Injectable }); }
|
|
7835
|
-
static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "20.3.15", ngImport: i0, type: AXMDocumentDistributionPopupAction }); }
|
|
7836
|
-
}
|
|
7837
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.15", ngImport: i0, type: AXMDocumentDistributionPopupAction, decorators: [{
|
|
7838
|
-
type: Injectable
|
|
7839
|
-
}] });
|
|
7840
|
-
/**
|
|
7841
|
-
* Action to create distribution records and update document status
|
|
7842
|
-
*/
|
|
7843
|
-
class AXMCreateDistributionRecordsAction extends AXPWorkflowAction {
|
|
7844
|
-
constructor() {
|
|
7845
|
-
super(...arguments);
|
|
7846
|
-
this.documentService = inject(AXMDocumentService);
|
|
7847
|
-
this.distributionService = inject(AXMDistributionService);
|
|
7848
|
-
}
|
|
7849
|
-
async execute(context) {
|
|
6507
|
+
try {
|
|
6508
|
+
await driveService.copy(node);
|
|
6509
|
+
await this.refresh();
|
|
6510
|
+
}
|
|
6511
|
+
catch (error) {
|
|
6512
|
+
console.error('Error copying node:', error);
|
|
6513
|
+
}
|
|
6514
|
+
}
|
|
6515
|
+
},
|
|
6516
|
+
/**
|
|
6517
|
+
* Checks if a node is locked
|
|
6518
|
+
*/
|
|
6519
|
+
async isLocked(node) {
|
|
7850
6520
|
try {
|
|
7851
|
-
|
|
7852
|
-
|
|
7853
|
-
|
|
7854
|
-
this.distributionService.insertOne({
|
|
7855
|
-
documentId,
|
|
7856
|
-
version: document.version,
|
|
7857
|
-
assignedTo,
|
|
7858
|
-
});
|
|
7859
|
-
// Update document status to Distributed
|
|
7860
|
-
await this.documentService.updateOne(documentId, {
|
|
7861
|
-
status: 'Distributed',
|
|
6521
|
+
return lockService.check({
|
|
6522
|
+
refId: node.id,
|
|
6523
|
+
refType: `${RootConfig.module.name}.${node.type === 'folder' ? RootConfig.entities.folder.name : RootConfig.entities.document.name}`,
|
|
7862
6524
|
});
|
|
7863
|
-
context.setOutput('success', true);
|
|
7864
|
-
context.setOutput('distributionCount', assignedTo.length);
|
|
7865
6525
|
}
|
|
7866
6526
|
catch (error) {
|
|
7867
|
-
|
|
7868
|
-
|
|
6527
|
+
console.error('Error checking lock status:', error);
|
|
6528
|
+
return false;
|
|
7869
6529
|
}
|
|
7870
|
-
}
|
|
7871
|
-
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.3.15", ngImport: i0, type: AXMCreateDistributionRecordsAction, deps: null, target: i0.ɵɵFactoryTarget.Injectable }); }
|
|
7872
|
-
static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "20.3.15", ngImport: i0, type: AXMCreateDistributionRecordsAction }); }
|
|
7873
|
-
}
|
|
7874
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.15", ngImport: i0, type: AXMCreateDistributionRecordsAction, decorators: [{
|
|
7875
|
-
type: Injectable
|
|
7876
|
-
}] });
|
|
7877
|
-
/**
|
|
7878
|
-
* Workflow for distributing documents to users
|
|
7879
|
-
*/
|
|
7880
|
-
const AXMDocumentDistributionWorkflow = {
|
|
7881
|
-
startStepId: 'show-distribution-popup',
|
|
7882
|
-
steps: {
|
|
7883
|
-
'show-distribution-popup': {
|
|
7884
|
-
id: 'show-distribution-popup',
|
|
7885
|
-
action: 'AXMDocumentDistributionPopupAction',
|
|
7886
|
-
nextSteps: [
|
|
7887
|
-
{
|
|
7888
|
-
conditions: [{ type: 'SINGLE', expression: 'context.getOutput("confirmed") == true' }],
|
|
7889
|
-
nextStepId: 'create-distributions',
|
|
7890
|
-
},
|
|
7891
|
-
],
|
|
7892
|
-
},
|
|
7893
|
-
'create-distributions': {
|
|
7894
|
-
id: 'create-distributions',
|
|
7895
|
-
action: 'AXMCreateDistributionRecordsAction',
|
|
7896
|
-
nextSteps: [
|
|
7897
|
-
{
|
|
7898
|
-
conditions: [{ type: 'SINGLE', expression: 'context.getOutput("success") == true' }],
|
|
7899
|
-
nextStepId: 'show-success',
|
|
7900
|
-
},
|
|
7901
|
-
{
|
|
7902
|
-
conditions: [{ type: 'SINGLE', expression: 'context.getOutput("success") == false' }],
|
|
7903
|
-
nextStepId: 'show-error',
|
|
7904
|
-
},
|
|
7905
|
-
],
|
|
7906
|
-
},
|
|
7907
|
-
'show-success': {
|
|
7908
|
-
id: 'show-success',
|
|
7909
|
-
action: 'AXPToastAction',
|
|
7910
|
-
input: {
|
|
7911
|
-
color: 'success',
|
|
7912
|
-
title: 'document-distribution.success.title',
|
|
7913
|
-
content: 'document-distribution.success.message',
|
|
7914
|
-
},
|
|
7915
|
-
nextSteps: [
|
|
7916
|
-
{
|
|
7917
|
-
conditions: [],
|
|
7918
|
-
nextStepId: 'reload-entity',
|
|
7919
|
-
},
|
|
7920
|
-
],
|
|
7921
|
-
},
|
|
7922
|
-
'show-error': {
|
|
7923
|
-
id: 'show-error',
|
|
7924
|
-
action: 'AXPToastAction',
|
|
7925
|
-
input: {
|
|
7926
|
-
color: 'danger',
|
|
7927
|
-
title: 'document-distribution.error.title',
|
|
7928
|
-
content: 'document-distribution.error.message',
|
|
7929
|
-
},
|
|
7930
|
-
},
|
|
7931
|
-
'reload-entity': {
|
|
7932
|
-
id: 'reload-entity',
|
|
7933
|
-
action: 'reload',
|
|
7934
|
-
},
|
|
7935
6530
|
},
|
|
7936
|
-
|
|
7937
|
-
|
|
7938
|
-
|
|
7939
|
-
|
|
7940
|
-
|
|
7941
|
-
|
|
7942
|
-
|
|
7943
|
-
super(...arguments);
|
|
7944
|
-
this.translationService = inject(AXTranslationService);
|
|
7945
|
-
this.layoutBuilder = inject(AXPLayoutBuilderService);
|
|
7946
|
-
}
|
|
7947
|
-
async execute(context) {
|
|
7948
|
-
const documentId = context.getVariable('options.id');
|
|
7949
|
-
const documentTitle = context.getVariable('options.title');
|
|
7950
|
-
const dialogTitle = await this.translationService.translateAsync('@document-management:workflows.document-review.confirm-send.title', { params: { title: documentTitle } });
|
|
7951
|
-
const dialogRef = await this.layoutBuilder
|
|
7952
|
-
.create()
|
|
7953
|
-
.dialog(dialog => {
|
|
7954
|
-
dialog
|
|
7955
|
-
.setTitle(dialogTitle)
|
|
7956
|
-
.setSize('sm')
|
|
7957
|
-
.setContext({ assignedTo: undefined })
|
|
7958
|
-
.content(flex => {
|
|
7959
|
-
flex
|
|
7960
|
-
.setDirection('column')
|
|
7961
|
-
.formField('@document-management:workflows.document-review.send-review.title', field => {
|
|
7962
|
-
field.path('assignedTo');
|
|
7963
|
-
field.lookupBox({
|
|
7964
|
-
entity: 'SecurityManagement.User',
|
|
7965
|
-
multiple: false,
|
|
7966
|
-
look: 'lookup',
|
|
7967
|
-
validations: [{ rule: 'required' }],
|
|
7968
|
-
});
|
|
7969
|
-
});
|
|
7970
|
-
})
|
|
7971
|
-
.setActions(actions => {
|
|
7972
|
-
actions.cancel('@general:actions.cancel.title');
|
|
7973
|
-
const submitAction = {
|
|
7974
|
-
title: '@document-management:workflows.document-review.send-review.title',
|
|
7975
|
-
color: 'primary',
|
|
7976
|
-
command: { name: 'submit', options: { validate: true } },
|
|
7977
|
-
};
|
|
7978
|
-
actions.custom(submitAction);
|
|
7979
|
-
});
|
|
7980
|
-
})
|
|
7981
|
-
.show();
|
|
7982
|
-
const action = dialogRef.action();
|
|
7983
|
-
if (action === 'cancel') {
|
|
7984
|
-
context.setOutput('confirmed', false);
|
|
7985
|
-
return;
|
|
6531
|
+
/**
|
|
6532
|
+
* Locks a node
|
|
6533
|
+
*/
|
|
6534
|
+
async lock(node) {
|
|
6535
|
+
const locked = await driveService.showLockDialog(node);
|
|
6536
|
+
if (locked) {
|
|
6537
|
+
await this.refresh();
|
|
7986
6538
|
}
|
|
7987
|
-
|
|
7988
|
-
|
|
7989
|
-
|
|
7990
|
-
|
|
7991
|
-
|
|
7992
|
-
|
|
7993
|
-
|
|
7994
|
-
|
|
7995
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.15", ngImport: i0, type: AXMSendToReviewConfirmAction, decorators: [{
|
|
7996
|
-
type: Injectable
|
|
7997
|
-
}] });
|
|
7998
|
-
/**
|
|
7999
|
-
* Action to update document status to PendingReview
|
|
8000
|
-
*/
|
|
8001
|
-
class AXMUpdateDocumentStatusAction extends AXPWorkflowAction {
|
|
8002
|
-
constructor() {
|
|
8003
|
-
super(...arguments);
|
|
8004
|
-
this.documentService = inject(AXMDocumentService);
|
|
8005
|
-
this.reviewService = inject(AXMReviewService);
|
|
8006
|
-
}
|
|
8007
|
-
async execute(context) {
|
|
8008
|
-
try {
|
|
8009
|
-
const documentId = context.getVariable('options.id');
|
|
8010
|
-
const document = await this.documentService.getOne(documentId);
|
|
8011
|
-
const reviewRecordID = await this.reviewService.insertOne({
|
|
8012
|
-
documentId: documentId,
|
|
8013
|
-
reviewStatus: 'Pending',
|
|
8014
|
-
version: document.version ?? 0,
|
|
8015
|
-
modifiedAt: document?.updated?.at,
|
|
8016
|
-
modifiedBy: document?.updated?.user?.id ?? '',
|
|
8017
|
-
reviewerId: context.getVariable('assignTo'),
|
|
8018
|
-
});
|
|
8019
|
-
await this.documentService.updateOne(documentId, {
|
|
8020
|
-
status: 'PendingReview',
|
|
8021
|
-
reviewRecordId: reviewRecordID,
|
|
8022
|
-
});
|
|
8023
|
-
context.setOutput('success', true);
|
|
6539
|
+
},
|
|
6540
|
+
/**
|
|
6541
|
+
* Unlocks a node
|
|
6542
|
+
*/
|
|
6543
|
+
async unlock(node) {
|
|
6544
|
+
const unlocked = await driveService.showUnlockDialog(node);
|
|
6545
|
+
if (unlocked) {
|
|
6546
|
+
await this.refresh();
|
|
8024
6547
|
}
|
|
8025
|
-
|
|
8026
|
-
|
|
8027
|
-
|
|
6548
|
+
},
|
|
6549
|
+
/**
|
|
6550
|
+
* Moves a node to a different location
|
|
6551
|
+
*/
|
|
6552
|
+
async moveTo(node) {
|
|
6553
|
+
if (node) {
|
|
6554
|
+
const result = await driveService.moveTo({ browseMode: 'folder', node: node, scope: store.scope() });
|
|
6555
|
+
if (result) {
|
|
6556
|
+
await this.refresh();
|
|
6557
|
+
}
|
|
8028
6558
|
}
|
|
8029
|
-
}
|
|
8030
|
-
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.3.15", ngImport: i0, type: AXMUpdateDocumentStatusAction, deps: null, target: i0.ɵɵFactoryTarget.Injectable }); }
|
|
8031
|
-
static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "20.3.15", ngImport: i0, type: AXMUpdateDocumentStatusAction }); }
|
|
8032
|
-
}
|
|
8033
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.15", ngImport: i0, type: AXMUpdateDocumentStatusAction, decorators: [{
|
|
8034
|
-
type: Injectable
|
|
8035
|
-
}] });
|
|
8036
|
-
// Note: Using AXPToastAction from platform/common instead of custom toast action
|
|
8037
|
-
/**
|
|
8038
|
-
* Workflow for sending document to review
|
|
8039
|
-
*/
|
|
8040
|
-
const AXMSendToReviewWorkflow = {
|
|
8041
|
-
startStepId: 'confirm-send',
|
|
8042
|
-
steps: {
|
|
8043
|
-
'confirm-send': {
|
|
8044
|
-
id: 'confirm-send',
|
|
8045
|
-
action: 'AXMSendToReviewConfirmAction',
|
|
8046
|
-
nextSteps: [
|
|
8047
|
-
{
|
|
8048
|
-
conditions: [{ type: 'SINGLE', expression: 'context.getOutput("confirmed") == true' }],
|
|
8049
|
-
nextStepId: 'update-status',
|
|
8050
|
-
},
|
|
8051
|
-
],
|
|
8052
|
-
},
|
|
8053
|
-
'update-status': {
|
|
8054
|
-
id: 'update-status',
|
|
8055
|
-
action: 'AXMUpdateDocumentStatusAction',
|
|
8056
|
-
nextSteps: [
|
|
8057
|
-
{
|
|
8058
|
-
conditions: [{ type: 'SINGLE', expression: 'context.getOutput("success") == true' }],
|
|
8059
|
-
nextStepId: 'reload-entity',
|
|
8060
|
-
},
|
|
8061
|
-
{
|
|
8062
|
-
conditions: [{ type: 'SINGLE', expression: 'context.getOutput("success") == false' }],
|
|
8063
|
-
nextStepId: 'show-error',
|
|
8064
|
-
},
|
|
8065
|
-
],
|
|
8066
|
-
},
|
|
8067
|
-
'reload-entity': {
|
|
8068
|
-
id: 'reload-entity',
|
|
8069
|
-
action: 'reload',
|
|
8070
|
-
},
|
|
8071
|
-
'show-success': {
|
|
8072
|
-
id: 'show-success',
|
|
8073
|
-
action: 'AXPToastAction',
|
|
8074
|
-
input: {
|
|
8075
|
-
color: 'success',
|
|
8076
|
-
title: 'document-review.send-review.success',
|
|
8077
|
-
content: 'document-review.send-review.success',
|
|
8078
|
-
},
|
|
8079
|
-
},
|
|
8080
|
-
'show-error': {
|
|
8081
|
-
id: 'show-error',
|
|
8082
|
-
action: 'AXPToastAction',
|
|
8083
|
-
input: {
|
|
8084
|
-
color: 'danger',
|
|
8085
|
-
title: 'document-review.send-review.error',
|
|
8086
|
-
content: 'document-review.send-review.error',
|
|
8087
|
-
},
|
|
8088
|
-
},
|
|
8089
6559
|
},
|
|
8090
|
-
|
|
8091
|
-
|
|
8092
|
-
|
|
8093
|
-
|
|
8094
|
-
|
|
8095
|
-
|
|
8096
|
-
|
|
8097
|
-
|
|
8098
|
-
|
|
8099
|
-
|
|
8100
|
-
}] });
|
|
8101
|
-
/**
|
|
8102
|
-
* Workflow for submitting review
|
|
8103
|
-
*/
|
|
8104
|
-
const AXMSubmitReviewWorkflow = {
|
|
8105
|
-
startStepId: 'open-review-entity',
|
|
8106
|
-
steps: {
|
|
8107
|
-
'open-review-entity': {
|
|
8108
|
-
action: 'start-workflow',
|
|
8109
|
-
input: {
|
|
8110
|
-
workflow: 'quick-modify-entity',
|
|
8111
|
-
context: {
|
|
8112
|
-
entity: `${RootConfig.module.name}.${RootConfig.entities.review.name}`,
|
|
8113
|
-
data: {
|
|
8114
|
-
id: '{{ context.getVariable("options.id") }}',
|
|
8115
|
-
},
|
|
8116
|
-
},
|
|
8117
|
-
},
|
|
8118
|
-
nextSteps: [
|
|
8119
|
-
{
|
|
8120
|
-
conditions: [{ type: 'SINGLE', expression: 'context.getOutput("result") == true' }],
|
|
8121
|
-
nextStepId: 'change-entity',
|
|
8122
|
-
},
|
|
8123
|
-
{
|
|
8124
|
-
conditions: [{ type: 'SINGLE', expression: 'context.getOutput("result") == false' }],
|
|
8125
|
-
nextStepId: 'show-error',
|
|
8126
|
-
},
|
|
8127
|
-
],
|
|
8128
|
-
},
|
|
8129
|
-
'change-entity': {
|
|
8130
|
-
id: 'change-entity',
|
|
8131
|
-
action: 'AXMChangeEntityAction',
|
|
8132
|
-
nextSteps: [
|
|
8133
|
-
{
|
|
8134
|
-
nextStepId: 'reload-entity',
|
|
8135
|
-
conditions: [],
|
|
8136
|
-
},
|
|
8137
|
-
],
|
|
8138
|
-
},
|
|
8139
|
-
'reload-entity': {
|
|
8140
|
-
id: 'reload-entity',
|
|
8141
|
-
action: 'reload',
|
|
8142
|
-
},
|
|
6560
|
+
/**
|
|
6561
|
+
* Copies a node to a different location
|
|
6562
|
+
*/
|
|
6563
|
+
async copyTo(node) {
|
|
6564
|
+
if (node) {
|
|
6565
|
+
const result = await driveService.copyTo({ browseMode: 'folder', node: node, scope: store.scope() });
|
|
6566
|
+
if (result) {
|
|
6567
|
+
await this.refresh();
|
|
6568
|
+
}
|
|
6569
|
+
}
|
|
8143
6570
|
},
|
|
8144
|
-
|
|
6571
|
+
/**
|
|
6572
|
+
* Uploads a file by type
|
|
6573
|
+
*/
|
|
6574
|
+
async uploadFileByType(folderId, documentTypeId) {
|
|
6575
|
+
await driveService.uploadFileByType(folderId, documentTypeId);
|
|
6576
|
+
await this.refresh();
|
|
6577
|
+
},
|
|
6578
|
+
//#endregion
|
|
6579
|
+
})));
|
|
8145
6580
|
|
|
8146
|
-
|
|
8147
|
-
* Action to show document signature popup
|
|
8148
|
-
*/
|
|
8149
|
-
class AXMDocumentSignaturePopupAction extends AXPWorkflowAction {
|
|
6581
|
+
class AXMDocumentExplorerComponent {
|
|
8150
6582
|
constructor() {
|
|
8151
|
-
|
|
8152
|
-
this.
|
|
8153
|
-
this.
|
|
6583
|
+
this.vm = inject(AXPDocumentExplorerViewModel);
|
|
6584
|
+
this.contextMenu = viewChild('itemsContextMenu', ...(ngDevMode ? [{ debugName: "contextMenu" }] : []));
|
|
6585
|
+
this.rootContextMenu = viewChild('rootContextMenu', ...(ngDevMode ? [{ debugName: "rootContextMenu" }] : []));
|
|
6586
|
+
this.driveService = inject(AXMDocumentManagerService);
|
|
6587
|
+
this.translateService = inject(AXTranslationService);
|
|
6588
|
+
this.layout = inject(AXPLayoutThemeService);
|
|
6589
|
+
this.browseMode = input('file', ...(ngDevMode ? [{ debugName: "browseMode" }] : []));
|
|
6590
|
+
this.viewMode = input(...(ngDevMode ? [undefined, { debugName: "viewMode" }] : []));
|
|
6591
|
+
this.selectionMode = input('none', ...(ngDevMode ? [{ debugName: "selectionMode" }] : []));
|
|
6592
|
+
this.showContextMenu = input(true, ...(ngDevMode ? [{ debugName: "showContextMenu" }] : []));
|
|
6593
|
+
this.view = signal(null, ...(ngDevMode ? [{ debugName: "view" }] : []));
|
|
6594
|
+
this.viewMap = {
|
|
6595
|
+
list: async () => (await import('./acorex-modules-document-management-list-view.component-DfKTfE-z.mjs')).AXMDocumentExplorerListViewComponent,
|
|
6596
|
+
'small-tiles': async () => (await import('./acorex-modules-document-management-small-tiles-view.component-CVemmAlG.mjs')).AXMDocumentExplorerSmallTilesViewComponent,
|
|
6597
|
+
'large-tiles': async () => (await import('./acorex-modules-document-management-large-tiles-view.component-q62xM-2p.mjs')).AXMDocumentExplorerLargeTilesViewComponent,
|
|
6598
|
+
details: async () => (await import('./acorex-modules-document-management-details-view.component-CmHkM5fr.mjs')).AXMDocumentExplorerDetailsViewComponent,
|
|
6599
|
+
'large-icons': async () => (await import('./acorex-modules-document-management-large-icons-view.component-BWsNkndg.mjs')).AXMDocumentExplorerLargeIconsViewComponent,
|
|
6600
|
+
'small-icons': async () => (await import('./acorex-modules-document-management-small-icons-view.component-BrhcmGFl.mjs')).AXMDocumentExplorerSmallIconsViewComponent,
|
|
6601
|
+
'attachment': async () => (await import('./acorex-modules-document-management-attachment-widget.component-DctR7UvD.mjs')).AXMDocumentExplorerAttachmentComponent,
|
|
6602
|
+
};
|
|
6603
|
+
this.#effect = effect(() => {
|
|
6604
|
+
if (this.vm.loadingFolderId() == null) {
|
|
6605
|
+
setTimeout(() => {
|
|
6606
|
+
this.contextMenu()?.refresh();
|
|
6607
|
+
this.rootContextMenu()?.refresh();
|
|
6608
|
+
}, 300);
|
|
6609
|
+
}
|
|
6610
|
+
}, ...(ngDevMode ? [{ debugName: "#effect" }] : []));
|
|
6611
|
+
this.#effect2 = effect(() => {
|
|
6612
|
+
if (this.viewMode()) {
|
|
6613
|
+
this.vm.setViewMode(this.viewMode());
|
|
6614
|
+
}
|
|
6615
|
+
if (this.selectionMode()) {
|
|
6616
|
+
this.vm.setSelectionMode(this.selectionMode());
|
|
6617
|
+
}
|
|
6618
|
+
}, ...(ngDevMode ? [{ debugName: "#effect2" }] : []));
|
|
6619
|
+
this.#effect3 = effect(async () => {
|
|
6620
|
+
const func = get$1(this.viewMap, this.vm.viewMode()) ?? this.viewMap['large-tiles'];
|
|
6621
|
+
const comp = await func();
|
|
6622
|
+
this.view.set(comp);
|
|
6623
|
+
}, ...(ngDevMode ? [{ debugName: "#effect3" }] : []));
|
|
6624
|
+
}
|
|
6625
|
+
#effect;
|
|
6626
|
+
#effect2;
|
|
6627
|
+
#effect3;
|
|
6628
|
+
//#region Menu and Context Menu
|
|
6629
|
+
async handleContextMenuOnOpening(e) {
|
|
6630
|
+
const node = get$1(e.targetElement, '__data__');
|
|
6631
|
+
if (!node) {
|
|
6632
|
+
return;
|
|
6633
|
+
}
|
|
6634
|
+
// Get menu items from ViewModel
|
|
6635
|
+
const items = await this.vm.getNodeContextMenuItems(node);
|
|
6636
|
+
// Set items directly to the context menu
|
|
6637
|
+
e.items.push(...items);
|
|
6638
|
+
}
|
|
6639
|
+
async handleContextMenuRootOnOpening(e) {
|
|
6640
|
+
//TODO: check async translate method in acorex
|
|
6641
|
+
const items = [
|
|
6642
|
+
...(await this.vm.getFolderAddMenuItems()).map((m) => ({
|
|
6643
|
+
...m,
|
|
6644
|
+
name: m.command?.name,
|
|
6645
|
+
data: m.command?.options,
|
|
6646
|
+
})),
|
|
6647
|
+
...(await this.vm.getFolderActionMenuItems()),
|
|
6648
|
+
];
|
|
6649
|
+
const mappedItems = items.map((m) => ({
|
|
6650
|
+
...m,
|
|
6651
|
+
text: m.title,
|
|
6652
|
+
}));
|
|
6653
|
+
e.items.push(...mappedItems);
|
|
6654
|
+
e.items[e.items.length - 1].break = false;
|
|
8154
6655
|
}
|
|
8155
|
-
async
|
|
8156
|
-
|
|
8157
|
-
|
|
8158
|
-
const fileId = context.getVariable('options.fileId');
|
|
8159
|
-
const comp = await import('./acorex-modules-document-management-document-signature-popup.component-Stt6Gx2C.mjs')
|
|
8160
|
-
.then(x => x.AXMDocumentSignaturePopupComponent);
|
|
8161
|
-
console.log(fileId);
|
|
8162
|
-
const result = await this.popupService.open(comp, {
|
|
8163
|
-
title: await this.translationService.translateAsync('@document-management:workflows.document-signature.title', {
|
|
8164
|
-
params: { title: documentTitle }
|
|
8165
|
-
}),
|
|
8166
|
-
size: 'md',
|
|
8167
|
-
data: {
|
|
8168
|
-
documentId,
|
|
8169
|
-
documentTitle,
|
|
8170
|
-
fileId
|
|
8171
|
-
}
|
|
8172
|
-
});
|
|
8173
|
-
context.setOutput('confirmed', result.data?.confirmed || false);
|
|
8174
|
-
if (result.data?.confirmed) {
|
|
8175
|
-
context.setOutput('signature', result.data.signature);
|
|
6656
|
+
async handleContextMenuItemClick(e) {
|
|
6657
|
+
if (e.item.name) {
|
|
6658
|
+
await this.vm.handleMenuItemClick(e.item.name, e.item.data);
|
|
8176
6659
|
}
|
|
8177
6660
|
}
|
|
8178
|
-
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.3.15", ngImport: i0, type:
|
|
8179
|
-
static { this.ɵ
|
|
6661
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.3.15", ngImport: i0, type: AXMDocumentExplorerComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
|
|
6662
|
+
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "20.3.15", type: AXMDocumentExplorerComponent, isStandalone: true, selector: "axm-document-explorer", inputs: { browseMode: { classPropertyName: "browseMode", publicName: "browseMode", isSignal: true, isRequired: false, transformFunction: null }, viewMode: { classPropertyName: "viewMode", publicName: "viewMode", isSignal: true, isRequired: false, transformFunction: null }, selectionMode: { classPropertyName: "selectionMode", publicName: "selectionMode", isSignal: true, isRequired: false, transformFunction: null }, showContextMenu: { classPropertyName: "showContextMenu", publicName: "showContextMenu", isSignal: true, isRequired: false, transformFunction: null } }, viewQueries: [{ propertyName: "contextMenu", first: true, predicate: ["itemsContextMenu"], descendants: true, isSignal: true }, { propertyName: "rootContextMenu", first: true, predicate: ["rootContextMenu"], descendants: true, isSignal: true }], ngImport: i0, template: "<!-- Empty State -->\n<div class=\"view-container\">\n @if (vm.folders().length === 0 && vm.files().length === 0) {\n <axp-state-message\n icon=\"fa-light fa-folder-open\"\n [title]=\"'@document-management:empty-states.no-items.title'\"\n [description]=\"'@document-management:empty-states.no-items.description'\"\n >\n </axp-state-message>\n } @else {\n <ng-container [ngComponentOutlet]=\"view()\"></ng-container>\n }\n</div>\n\n<!-- Context Menu -->\n@if (showContextMenu()) {\n <!-- Item Context Menu-->\n <ax-context-menu\n #itemsContextMenu\n [target]=\"'.__explorer-item'\"\n [orientation]=\"'vertical'\"\n [closeOn]=\"'leave'\"\n (onItemClick)=\"handleContextMenuItemClick($event)\"\n (onOpening)=\"handleContextMenuOnOpening($event)\"\n >\n </ax-context-menu>\n <!-- Root Context Menu-->\n <ax-context-menu\n #rootContextMenu\n [target]=\"'.view-container'\"\n [orientation]=\"'vertical'\"\n [closeOn]=\"'leave'\"\n (onItemClick)=\"handleContextMenuItemClick($event)\"\n (onOpening)=\"handleContextMenuRootOnOpening($event)\"\n >\n </ax-context-menu>\n}\n", styles: ["axm-document-explorer{display:flex;height:max-content;min-height:100%;width:100%;flex-direction:row;gap:1rem}axm-document-explorer>.view-container{display:flex;flex:1 1 0%;-webkit-user-select:none;user-select:none;flex-direction:column;gap:1rem}axm-document-explorer .animation-duration-2s{--fa-animation-duration: 2s}\n"], dependencies: [{ kind: "ngmodule", type: CommonModule }, { kind: "directive", type: i1$3.NgComponentOutlet, selector: "[ngComponentOutlet]", inputs: ["ngComponentOutlet", "ngComponentOutletInputs", "ngComponentOutletInjector", "ngComponentOutletEnvironmentInjector", "ngComponentOutletContent", "ngComponentOutletNgModule", "ngComponentOutletNgModuleFactory"], exportAs: ["ngComponentOutlet"] }, { kind: "ngmodule", type: RouterModule }, { kind: "ngmodule", type: AXDecoratorModule }, { kind: "ngmodule", type: AXLoadingModule }, { kind: "ngmodule", type: AXFormatModule }, { kind: "ngmodule", type: AXDateTimeModule }, { kind: "ngmodule", type: AXMenuModule }, { kind: "component", type: i2$1.AXContextMenuComponent, selector: "ax-context-menu", inputs: ["orientation", "openOn", "closeOn", "items", "target"], outputs: ["onItemClick", "onOpening"] }, { kind: "component", type: AXPStateMessageComponent, selector: "axp-state-message", inputs: ["mode", "icon", "title", "description", "variant"] }], encapsulation: i0.ViewEncapsulation.None }); }
|
|
8180
6663
|
}
|
|
8181
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.15", ngImport: i0, type:
|
|
8182
|
-
type:
|
|
8183
|
-
|
|
8184
|
-
|
|
8185
|
-
|
|
8186
|
-
|
|
8187
|
-
|
|
6664
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.15", ngImport: i0, type: AXMDocumentExplorerComponent, decorators: [{
|
|
6665
|
+
type: Component,
|
|
6666
|
+
args: [{ selector: 'axm-document-explorer', standalone: true, encapsulation: ViewEncapsulation.None, imports: [
|
|
6667
|
+
CommonModule,
|
|
6668
|
+
RouterModule,
|
|
6669
|
+
AXDecoratorModule,
|
|
6670
|
+
AXLoadingModule,
|
|
6671
|
+
AXFormatModule,
|
|
6672
|
+
AXDateTimeModule,
|
|
6673
|
+
AXMenuModule,
|
|
6674
|
+
AXPStateMessageComponent,
|
|
6675
|
+
], template: "<!-- Empty State -->\n<div class=\"view-container\">\n @if (vm.folders().length === 0 && vm.files().length === 0) {\n <axp-state-message\n icon=\"fa-light fa-folder-open\"\n [title]=\"'@document-management:empty-states.no-items.title'\"\n [description]=\"'@document-management:empty-states.no-items.description'\"\n >\n </axp-state-message>\n } @else {\n <ng-container [ngComponentOutlet]=\"view()\"></ng-container>\n }\n</div>\n\n<!-- Context Menu -->\n@if (showContextMenu()) {\n <!-- Item Context Menu-->\n <ax-context-menu\n #itemsContextMenu\n [target]=\"'.__explorer-item'\"\n [orientation]=\"'vertical'\"\n [closeOn]=\"'leave'\"\n (onItemClick)=\"handleContextMenuItemClick($event)\"\n (onOpening)=\"handleContextMenuOnOpening($event)\"\n >\n </ax-context-menu>\n <!-- Root Context Menu-->\n <ax-context-menu\n #rootContextMenu\n [target]=\"'.view-container'\"\n [orientation]=\"'vertical'\"\n [closeOn]=\"'leave'\"\n (onItemClick)=\"handleContextMenuItemClick($event)\"\n (onOpening)=\"handleContextMenuRootOnOpening($event)\"\n >\n </ax-context-menu>\n}\n", styles: ["axm-document-explorer{display:flex;height:max-content;min-height:100%;width:100%;flex-direction:row;gap:1rem}axm-document-explorer>.view-container{display:flex;flex:1 1 0%;-webkit-user-select:none;user-select:none;flex-direction:column;gap:1rem}axm-document-explorer .animation-duration-2s{--fa-animation-duration: 2s}\n"] }]
|
|
6676
|
+
}], propDecorators: { contextMenu: [{ type: i0.ViewChild, args: ['itemsContextMenu', { isSignal: true }] }], rootContextMenu: [{ type: i0.ViewChild, args: ['rootContextMenu', { isSignal: true }] }], browseMode: [{ type: i0.Input, args: [{ isSignal: true, alias: "browseMode", required: false }] }], viewMode: [{ type: i0.Input, args: [{ isSignal: true, alias: "viewMode", required: false }] }], selectionMode: [{ type: i0.Input, args: [{ isSignal: true, alias: "selectionMode", required: false }] }], showContextMenu: [{ type: i0.Input, args: [{ isSignal: true, alias: "showContextMenu", required: false }] }] } });
|
|
6677
|
+
|
|
6678
|
+
class AXMFolderPathBreadcrumbsComponent {
|
|
8188
6679
|
constructor() {
|
|
8189
|
-
|
|
8190
|
-
this.
|
|
8191
|
-
}
|
|
8192
|
-
async execute(context) {
|
|
8193
|
-
try {
|
|
8194
|
-
const documentId = context.getVariable('options.id');
|
|
8195
|
-
const signature = context.getOutput('signature');
|
|
8196
|
-
// TODO: Get current user ID from auth service or context
|
|
8197
|
-
// For now using a placeholder - this should be replaced with actual user service
|
|
8198
|
-
const currentUserId = 'current-user-id';
|
|
8199
|
-
// Create signature interaction record
|
|
8200
|
-
const distributionInteractionData = {
|
|
8201
|
-
documentDistributionId: documentId, // TODO: This should map to actual distribution ID
|
|
8202
|
-
userId: currentUserId,
|
|
8203
|
-
action: 'Signed',
|
|
8204
|
-
actionTime: new Date(),
|
|
8205
|
-
signatureType: 'Digital',
|
|
8206
|
-
signatureData: signature,
|
|
8207
|
-
};
|
|
8208
|
-
await this.distributionInteractionService.insertOne(distributionInteractionData);
|
|
8209
|
-
context.setOutput('success', true);
|
|
8210
|
-
}
|
|
8211
|
-
catch (error) {
|
|
8212
|
-
context.setOutput('success', false);
|
|
8213
|
-
context.setOutput('error', error);
|
|
8214
|
-
}
|
|
6680
|
+
this.vm = inject(AXPDocumentExplorerViewModel);
|
|
6681
|
+
this.layout = inject(AXPLayoutThemeService);
|
|
8215
6682
|
}
|
|
8216
|
-
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.3.15", ngImport: i0, type:
|
|
8217
|
-
static { this.ɵ
|
|
6683
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.3.15", ngImport: i0, type: AXMFolderPathBreadcrumbsComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
|
|
6684
|
+
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "20.3.15", type: AXMFolderPathBreadcrumbsComponent, isStandalone: true, selector: "axm-folder-path-breadcrumbs", ngImport: i0, template: "<!-- Breadcrumbs Section -->\n<div class=\"__breadcrumb ax-xs\">\n <!-- Desktop Breadcrumb -->\n @for (item of vm.currentPath(); track item.id; let i = $index;let last = $last) {\n <!-- Navigation Button -->\n <ax-button look=\"blank\" (onClick)=\"vm.navigateToFolder(item.id)\" [text]=\"item.name\" [disabled]=\"last\">\n @if(i === 0) {\n <ax-icon icon=\"fa-light fa-cloud\"></ax-icon>\n }@else {\n <ax-icon icon=\"fa-light fa-folder-closed\"></ax-icon>\n }\n </ax-button>\n <!-- Separator -->\n @if(!last) {\n <i class=\"far fa-chevron-right rtl:ax-rotate-180 fa-fw fa-xs ax-me-2\"></i>\n }\n <!-- End Navigation Button -->\n }\n</div>\n", styles: [":host{display:flex;width:100%;align-items:center}:host .__nav{display:flex;flex-direction:row;align-items:center;gap:.25rem;border-inline-end-width:1px;padding-inline-start:.25rem;padding-inline-end:.5rem}:host .__breadcrumb{display:flex;flex-direction:row;flex-wrap:wrap;align-items:center;padding-inline-start:.5rem;padding-inline-end:.25rem}:host .__breadcrumb .ax-state-disabled button,:host .__breadcrumb .ax-state-loading button{cursor:default!important}\n"], dependencies: [{ kind: "ngmodule", type: AXButtonModule }, { kind: "component", type: i1$2.AXButtonComponent, selector: "ax-button", inputs: ["disabled", "size", "tabIndex", "color", "look", "text", "toggleable", "selected", "iconOnly", "type", "loadingText"], outputs: ["onBlur", "onFocus", "onClick", "selectedChange", "toggleableChange", "lookChange", "colorChange", "disabledChange", "loadingTextChange"] }, { kind: "ngmodule", type: AXDecoratorModule }, { kind: "component", type: i1$1.AXDecoratorIconComponent, selector: "ax-icon", inputs: ["icon"] }] }); }
|
|
8218
6685
|
}
|
|
8219
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.15", ngImport: i0, type:
|
|
8220
|
-
type:
|
|
6686
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.15", ngImport: i0, type: AXMFolderPathBreadcrumbsComponent, decorators: [{
|
|
6687
|
+
type: Component,
|
|
6688
|
+
args: [{ selector: 'axm-folder-path-breadcrumbs', standalone: true, imports: [
|
|
6689
|
+
AXButtonModule,
|
|
6690
|
+
AXDecoratorModule,
|
|
6691
|
+
], template: "<!-- Breadcrumbs Section -->\n<div class=\"__breadcrumb ax-xs\">\n <!-- Desktop Breadcrumb -->\n @for (item of vm.currentPath(); track item.id; let i = $index;let last = $last) {\n <!-- Navigation Button -->\n <ax-button look=\"blank\" (onClick)=\"vm.navigateToFolder(item.id)\" [text]=\"item.name\" [disabled]=\"last\">\n @if(i === 0) {\n <ax-icon icon=\"fa-light fa-cloud\"></ax-icon>\n }@else {\n <ax-icon icon=\"fa-light fa-folder-closed\"></ax-icon>\n }\n </ax-button>\n <!-- Separator -->\n @if(!last) {\n <i class=\"far fa-chevron-right rtl:ax-rotate-180 fa-fw fa-xs ax-me-2\"></i>\n }\n <!-- End Navigation Button -->\n }\n</div>\n", styles: [":host{display:flex;width:100%;align-items:center}:host .__nav{display:flex;flex-direction:row;align-items:center;gap:.25rem;border-inline-end-width:1px;padding-inline-start:.25rem;padding-inline-end:.5rem}:host .__breadcrumb{display:flex;flex-direction:row;flex-wrap:wrap;align-items:center;padding-inline-start:.5rem;padding-inline-end:.25rem}:host .__breadcrumb .ax-state-disabled button,:host .__breadcrumb .ax-state-loading button{cursor:default!important}\n"] }]
|
|
8221
6692
|
}] });
|
|
8222
|
-
|
|
8223
|
-
|
|
8224
|
-
|
|
8225
|
-
|
|
8226
|
-
|
|
8227
|
-
|
|
8228
|
-
|
|
8229
|
-
|
|
8230
|
-
|
|
8231
|
-
|
|
8232
|
-
|
|
8233
|
-
|
|
8234
|
-
|
|
8235
|
-
|
|
8236
|
-
|
|
8237
|
-
|
|
8238
|
-
|
|
8239
|
-
|
|
8240
|
-
|
|
8241
|
-
|
|
8242
|
-
|
|
8243
|
-
|
|
8244
|
-
|
|
8245
|
-
|
|
8246
|
-
|
|
8247
|
-
|
|
8248
|
-
|
|
8249
|
-
|
|
8250
|
-
|
|
8251
|
-
|
|
8252
|
-
|
|
8253
|
-
|
|
8254
|
-
|
|
8255
|
-
|
|
8256
|
-
|
|
8257
|
-
|
|
8258
|
-
|
|
8259
|
-
|
|
8260
|
-
|
|
8261
|
-
|
|
8262
|
-
|
|
8263
|
-
|
|
6693
|
+
|
|
6694
|
+
const UploadFromDriveHookProvider = {
|
|
6695
|
+
key: 'file-uploader.actions',
|
|
6696
|
+
priority: 0,
|
|
6697
|
+
execute: (payload) => {
|
|
6698
|
+
const driveService = inject(AXMDocumentManagerService);
|
|
6699
|
+
const fileStorageService = inject(AXPFileStorageService);
|
|
6700
|
+
const translationService = inject(AXTranslationService);
|
|
6701
|
+
const dialogService = inject(AXDialogService);
|
|
6702
|
+
payload.actions = [
|
|
6703
|
+
...payload.actions,
|
|
6704
|
+
{
|
|
6705
|
+
plugin: 'upload-document-from-drive',
|
|
6706
|
+
global: true,
|
|
6707
|
+
textKey: '@document-management:actions.choose-from-drive',
|
|
6708
|
+
icon: 'fa-light fa-file-arrow-up',
|
|
6709
|
+
run: async ({ host }) => {
|
|
6710
|
+
const result = await driveService.showChooseFileDialog(AXPPlatformScope.Tenant);
|
|
6711
|
+
if (!result || result.length === 0) {
|
|
6712
|
+
return;
|
|
6713
|
+
}
|
|
6714
|
+
// Show confirm dialog for clone option
|
|
6715
|
+
// Yes/Okay -> clone, No/Cancel -> by-reference
|
|
6716
|
+
const dialogTitle = await translationService.translateAsync('@document-management:actions.upload-options.title');
|
|
6717
|
+
const dialogMessage = await translationService.translateAsync('@document-management:actions.upload-options.confirm-message');
|
|
6718
|
+
const dialogResult = await dialogService.confirm(dialogTitle, dialogMessage, 'primary', 'horizontal', false, 'cancel');
|
|
6719
|
+
// Yes/Okay -> clone, No/Cancel -> by-reference
|
|
6720
|
+
const attachmentType = dialogResult.result ? 'clone' : 'by-reference';
|
|
6721
|
+
// Add files to host with uploading status
|
|
6722
|
+
host.setValue([
|
|
6723
|
+
...(host.getValue() ?? []),
|
|
6724
|
+
...result.map((item) => ({
|
|
6725
|
+
...(item.fileId ?? {}),
|
|
6726
|
+
status: 'uploading',
|
|
6727
|
+
})),
|
|
6728
|
+
]);
|
|
6729
|
+
// Process files based on attachment type
|
|
6730
|
+
for await (const item of result) {
|
|
6731
|
+
if (item.type === 'folder') {
|
|
6732
|
+
continue;
|
|
6733
|
+
}
|
|
6734
|
+
const currentFiles = host.getValue();
|
|
6735
|
+
const fileIndex = currentFiles.findIndex((f) => f.id === (item.fileId?.id ?? ''));
|
|
6736
|
+
if (fileIndex === -1) {
|
|
6737
|
+
continue;
|
|
6738
|
+
}
|
|
6739
|
+
if (attachmentType === 'by-reference') {
|
|
6740
|
+
// By reference: just set documentId
|
|
6741
|
+
const updatedFiles = [...currentFiles];
|
|
6742
|
+
updatedFiles[fileIndex] = {
|
|
6743
|
+
...updatedFiles[fileIndex],
|
|
6744
|
+
status: 'attached',
|
|
6745
|
+
source: {
|
|
6746
|
+
kind: 'reference',
|
|
6747
|
+
value: {
|
|
6748
|
+
id: item.id,
|
|
6749
|
+
type: 'document',
|
|
6750
|
+
},
|
|
6751
|
+
},
|
|
6752
|
+
};
|
|
6753
|
+
host.setValue(updatedFiles);
|
|
6754
|
+
}
|
|
6755
|
+
else {
|
|
6756
|
+
// Clone: get file info and create blob
|
|
6757
|
+
try {
|
|
6758
|
+
const storageInfo = await fileStorageService.getInfo(item.fileId?.id ?? '');
|
|
6759
|
+
if (!storageInfo) {
|
|
6760
|
+
const currentFiles = host.getValue();
|
|
6761
|
+
host.setValue(currentFiles.filter((f) => f.id !== (item.fileId?.id ?? '')));
|
|
6762
|
+
continue;
|
|
6763
|
+
}
|
|
6764
|
+
const updatedFiles = [...currentFiles];
|
|
6765
|
+
updatedFiles[fileIndex] = {
|
|
6766
|
+
...updatedFiles[fileIndex],
|
|
6767
|
+
id: AXPDataGenerator.uuid(),
|
|
6768
|
+
status: 'attached',
|
|
6769
|
+
source: {
|
|
6770
|
+
kind: 'blob',
|
|
6771
|
+
value: new Blob([storageInfo.binary], { type: storageInfo.mimeType }),
|
|
6772
|
+
},
|
|
6773
|
+
};
|
|
6774
|
+
host.setValue(updatedFiles);
|
|
6775
|
+
}
|
|
6776
|
+
catch {
|
|
6777
|
+
const currentFiles = host.getValue();
|
|
6778
|
+
host.setValue(currentFiles.filter((f) => f.id !== (item.fileId?.id ?? '')));
|
|
6779
|
+
}
|
|
6780
|
+
}
|
|
6781
|
+
}
|
|
8264
6782
|
},
|
|
8265
|
-
],
|
|
8266
|
-
},
|
|
8267
|
-
'show-error': {
|
|
8268
|
-
id: 'show-error',
|
|
8269
|
-
action: 'AXPToastAction',
|
|
8270
|
-
input: {
|
|
8271
|
-
color: 'danger',
|
|
8272
|
-
title: 'document-signature.error.title',
|
|
8273
|
-
content: 'document-signature.error.message',
|
|
8274
6783
|
},
|
|
8275
|
-
|
|
8276
|
-
|
|
8277
|
-
id: 'reload-entity',
|
|
8278
|
-
action: 'reload',
|
|
8279
|
-
},
|
|
6784
|
+
];
|
|
6785
|
+
return payload;
|
|
8280
6786
|
},
|
|
8281
6787
|
};
|
|
8282
6788
|
|
|
6789
|
+
class AXMDriveChooseModule {
|
|
6790
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.3.15", ngImport: i0, type: AXMDriveChooseModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule }); }
|
|
6791
|
+
static { this.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "14.0.0", version: "20.3.15", ngImport: i0, type: AXMDriveChooseModule }); }
|
|
6792
|
+
static { this.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "20.3.15", ngImport: i0, type: AXMDriveChooseModule, providers: [
|
|
6793
|
+
{ provide: AXP_DISTRIBUTED_EVENT_LISTENER_PROVIDER, useValue: UploadFromDriveHookProvider, multi: true }
|
|
6794
|
+
] }); }
|
|
6795
|
+
}
|
|
6796
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.15", ngImport: i0, type: AXMDriveChooseModule, decorators: [{
|
|
6797
|
+
type: NgModule,
|
|
6798
|
+
args: [{
|
|
6799
|
+
imports: [],
|
|
6800
|
+
providers: [
|
|
6801
|
+
{ provide: AXP_DISTRIBUTED_EVENT_LISTENER_PROVIDER, useValue: UploadFromDriveHookProvider, multi: true }
|
|
6802
|
+
]
|
|
6803
|
+
}]
|
|
6804
|
+
}] });
|
|
6805
|
+
|
|
8283
6806
|
class AXMCheckDocumentTypeWorkflowAction extends AXPWorkflowAction {
|
|
8284
6807
|
async execute(context) {
|
|
8285
6808
|
const documentType = context.getVariable('documentType');
|
|
@@ -8539,101 +7062,6 @@ const DocumentFileUploaderBeforeFilesAddedProvider = {
|
|
|
8539
7062
|
return payload;
|
|
8540
7063
|
},
|
|
8541
7064
|
};
|
|
8542
|
-
// --------------- Per-File Actions: scaffold to add item-level actions ---------------
|
|
8543
|
-
const DocumentFileUploaderFileItemActionsProvider = {
|
|
8544
|
-
key: 'file-uploader.fileItem.actions',
|
|
8545
|
-
priority: 0,
|
|
8546
|
-
async execute(payload) {
|
|
8547
|
-
const isEnabled = Array.isArray(payload.plugins) && payload.plugins.some((p) => p.name === 'document');
|
|
8548
|
-
const isExcluded = Array.isArray(payload.excludePlugins) && payload.excludePlugins.includes('document');
|
|
8549
|
-
if (!isEnabled || isExcluded)
|
|
8550
|
-
return payload;
|
|
8551
|
-
const actions = [...(payload.actions ?? [])];
|
|
8552
|
-
actions.push({
|
|
8553
|
-
plugin: 'document',
|
|
8554
|
-
global: false,
|
|
8555
|
-
textKey: '@document-management:actions.edit-metadata',
|
|
8556
|
-
icon: 'fa-light fa-pen-to-square',
|
|
8557
|
-
run: async (_ctx) => { },
|
|
8558
|
-
});
|
|
8559
|
-
// Conditionally add Review / Distribute based on document type flags
|
|
8560
|
-
const opts = (payload.plugins.find((p) => p.name === 'document')?.options ?? {});
|
|
8561
|
-
if (opts.docTypeName) {
|
|
8562
|
-
const injector = inject(Injector);
|
|
8563
|
-
const documentManagementService = injector.get(AXPDocumentManagementService);
|
|
8564
|
-
const documentService = injector.get(AXMDocumentService);
|
|
8565
|
-
const workflow = injector.get(AXPWorkflowService);
|
|
8566
|
-
const docType = await documentManagementService.getDocumentTypeByName(opts.docTypeName);
|
|
8567
|
-
const requiresReview = !!docType?.requiresReview;
|
|
8568
|
-
const requiresDistribution = !!docType?.requiresDistribution;
|
|
8569
|
-
// Show review/distribute actions only for uploaded/persisted files
|
|
8570
|
-
const isUploaded = payload.item?.status === 'uploaded' ||
|
|
8571
|
-
(payload.item?.source?.kind === 'fileId' && typeof payload.item?.source?.value === 'string');
|
|
8572
|
-
if (!isUploaded) {
|
|
8573
|
-
payload.actions = actions;
|
|
8574
|
-
return payload;
|
|
8575
|
-
}
|
|
8576
|
-
// Attempt to resolve owning document by fileId (when item is persisted)
|
|
8577
|
-
let document = payload.item?.documentData ?? null;
|
|
8578
|
-
const fileId = payload.item?.source?.kind === 'fileId' ? payload.item?.source?.value : undefined;
|
|
8579
|
-
if (!document && typeof fileId === 'string' && fileId) {
|
|
8580
|
-
const resp = await documentService.query({
|
|
8581
|
-
skip: 0,
|
|
8582
|
-
take: 1,
|
|
8583
|
-
filter: { field: 'fileId', operator: { type: 'equal' }, value: fileId },
|
|
8584
|
-
});
|
|
8585
|
-
document = resp?.items?.[0] ?? null;
|
|
8586
|
-
}
|
|
8587
|
-
const status = document?.status;
|
|
8588
|
-
// Gate actions by current document status when available
|
|
8589
|
-
if (requiresReview && payload.item?.status == 'uploaded') {
|
|
8590
|
-
if (!status || status === 'Draft') {
|
|
8591
|
-
actions.push({
|
|
8592
|
-
plugin: 'document',
|
|
8593
|
-
global: false,
|
|
8594
|
-
textKey: '@document-management:actions.send-to-review',
|
|
8595
|
-
icon: 'fa-light fa-share-from-square',
|
|
8596
|
-
run: async () => {
|
|
8597
|
-
await workflow.execute('send-to-review', {
|
|
8598
|
-
options: { id: document?.id ?? payload.item?.id, title: document?.title ?? payload.item?.name },
|
|
8599
|
-
});
|
|
8600
|
-
},
|
|
8601
|
-
});
|
|
8602
|
-
}
|
|
8603
|
-
else if (status === 'PendingReview') {
|
|
8604
|
-
actions.push({
|
|
8605
|
-
plugin: 'document',
|
|
8606
|
-
global: false,
|
|
8607
|
-
textKey: '@document-management:actions.submit-review',
|
|
8608
|
-
icon: 'fa-light fa-clipboard-check',
|
|
8609
|
-
run: async () => {
|
|
8610
|
-
await workflow.execute('submit-review', {
|
|
8611
|
-
options: { id: document?.reviewRecordId },
|
|
8612
|
-
});
|
|
8613
|
-
},
|
|
8614
|
-
});
|
|
8615
|
-
}
|
|
8616
|
-
}
|
|
8617
|
-
if (requiresDistribution &&
|
|
8618
|
-
(status === 'Reviewed' || status === 'Completed') &&
|
|
8619
|
-
payload.item?.status == 'uploaded') {
|
|
8620
|
-
actions.push({
|
|
8621
|
-
plugin: 'document',
|
|
8622
|
-
global: false,
|
|
8623
|
-
textKey: '@document-management:actions.distribute',
|
|
8624
|
-
icon: 'fa-light fa-diagram-project',
|
|
8625
|
-
run: async () => {
|
|
8626
|
-
await workflow.execute('distributed', {
|
|
8627
|
-
options: { id: document?.id ?? payload.item?.id, title: document?.title ?? payload.item?.name },
|
|
8628
|
-
});
|
|
8629
|
-
},
|
|
8630
|
-
});
|
|
8631
|
-
}
|
|
8632
|
-
}
|
|
8633
|
-
payload.actions = actions;
|
|
8634
|
-
return payload;
|
|
8635
|
-
},
|
|
8636
|
-
};
|
|
8637
7065
|
// --------------- Edit Dialog: inject metadata group after 'form' ---------------
|
|
8638
7066
|
const DocumentFileUploaderEditDialogAfterFormProvider = {
|
|
8639
7067
|
key: 'file-uploader.edit-dialog.groups.after-form',
|
|
@@ -8724,7 +7152,6 @@ const DocumentFileUploaderDownloadReferenceProvider = {
|
|
|
8724
7152
|
const DocumentFileUploaderWidgetPluginProviders = [
|
|
8725
7153
|
DocumentFileUploaderConfigureProvider,
|
|
8726
7154
|
DocumentFileUploaderBeforeFilesAddedProvider,
|
|
8727
|
-
DocumentFileUploaderFileItemActionsProvider,
|
|
8728
7155
|
DocumentFileUploaderEditDialogAfterFormProvider,
|
|
8729
7156
|
DocumentFileUploaderDownloadReferenceProvider,
|
|
8730
7157
|
];
|
|
@@ -8763,16 +7190,9 @@ class AXMDocumentManagementModule {
|
|
|
8763
7190
|
AXMDocumentManagementDocumentTypeEntityModule,
|
|
8764
7191
|
AXMDocumentManagementDocumentEntityModule,
|
|
8765
7192
|
AXMFolderEntityModule,
|
|
8766
|
-
AXMReviewEntityModule,
|
|
8767
|
-
AXMDistributionEntityModule,
|
|
8768
|
-
AXMDistributionInteractionEntityModule, i1$2.AXPWidgetCoreModule, AXMFileTypeModule, i3$1.AXMediaViewerModule, i3$2.AXPWorkflowModule] }); }
|
|
7193
|
+
AXMReviewEntityModule, i6.AXPWidgetCoreModule, AXMFileTypeModule, i3$1.AXMediaViewerModule, i3$2.AXPWorkflowModule] }); }
|
|
8769
7194
|
static { this.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "20.3.15", ngImport: i0, type: AXMDocumentManagementModule, providers: [
|
|
8770
7195
|
// Module-specific providers (not part of manifest system)
|
|
8771
|
-
{
|
|
8772
|
-
provide: AXP_TASK_BADGE_PROVIDERS,
|
|
8773
|
-
useClass: AXMDocumentReviewBadgeProvider,
|
|
8774
|
-
multi: true,
|
|
8775
|
-
},
|
|
8776
7196
|
{ provide: AXP_ENTITY_ACTION_PLUGIN, multi: true, useValue: attachmentsPlugin },
|
|
8777
7197
|
{
|
|
8778
7198
|
provide: ROUTES,
|
|
@@ -8825,8 +7245,6 @@ class AXMDocumentManagementModule {
|
|
|
8825
7245
|
AXMDocumentManagementDocumentEntityModule,
|
|
8826
7246
|
AXMFolderEntityModule,
|
|
8827
7247
|
AXMReviewEntityModule,
|
|
8828
|
-
AXMDistributionEntityModule,
|
|
8829
|
-
AXMDistributionInteractionEntityModule,
|
|
8830
7248
|
AXPWidgetCoreModule.forChild({
|
|
8831
7249
|
widgets: [AXmFileTypeExtensionWidget],
|
|
8832
7250
|
}),
|
|
@@ -8837,20 +7255,9 @@ class AXMDocumentManagementModule {
|
|
|
8837
7255
|
AXMCheckDocumentTypeWorkflowAction,
|
|
8838
7256
|
AXMChooseDocumentTypeWorkflowAction,
|
|
8839
7257
|
AXMChooseFileWorkflowAction,
|
|
8840
|
-
AXMSendToReviewConfirmAction,
|
|
8841
|
-
AXMUpdateDocumentStatusAction,
|
|
8842
|
-
AXMDocumentDistributionPopupAction,
|
|
8843
|
-
AXMCreateDistributionRecordsAction,
|
|
8844
|
-
AXMDocumentSignaturePopupAction,
|
|
8845
|
-
AXMSaveSignatureInteractionAction,
|
|
8846
|
-
AXMChangeEntityAction,
|
|
8847
7258
|
},
|
|
8848
7259
|
workflows: {
|
|
8849
7260
|
'upload-document': AXMUploadWorkflow,
|
|
8850
|
-
'send-to-review': AXMSendToReviewWorkflow,
|
|
8851
|
-
'submit-review': AXMSubmitReviewWorkflow,
|
|
8852
|
-
distributed: AXMDocumentDistributionWorkflow,
|
|
8853
|
-
'document-signature': AXMDocumentSignatureWorkflow,
|
|
8854
7261
|
},
|
|
8855
7262
|
})] }); }
|
|
8856
7263
|
}
|
|
@@ -8867,8 +7274,6 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.15", ngImpo
|
|
|
8867
7274
|
AXMDocumentManagementDocumentEntityModule,
|
|
8868
7275
|
AXMFolderEntityModule,
|
|
8869
7276
|
AXMReviewEntityModule,
|
|
8870
|
-
AXMDistributionEntityModule,
|
|
8871
|
-
AXMDistributionInteractionEntityModule,
|
|
8872
7277
|
AXPWidgetCoreModule.forChild({
|
|
8873
7278
|
widgets: [AXmFileTypeExtensionWidget],
|
|
8874
7279
|
}),
|
|
@@ -8879,31 +7284,15 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.15", ngImpo
|
|
|
8879
7284
|
AXMCheckDocumentTypeWorkflowAction,
|
|
8880
7285
|
AXMChooseDocumentTypeWorkflowAction,
|
|
8881
7286
|
AXMChooseFileWorkflowAction,
|
|
8882
|
-
AXMSendToReviewConfirmAction,
|
|
8883
|
-
AXMUpdateDocumentStatusAction,
|
|
8884
|
-
AXMDocumentDistributionPopupAction,
|
|
8885
|
-
AXMCreateDistributionRecordsAction,
|
|
8886
|
-
AXMDocumentSignaturePopupAction,
|
|
8887
|
-
AXMSaveSignatureInteractionAction,
|
|
8888
|
-
AXMChangeEntityAction,
|
|
8889
7287
|
},
|
|
8890
7288
|
workflows: {
|
|
8891
7289
|
'upload-document': AXMUploadWorkflow,
|
|
8892
|
-
'send-to-review': AXMSendToReviewWorkflow,
|
|
8893
|
-
'submit-review': AXMSubmitReviewWorkflow,
|
|
8894
|
-
distributed: AXMDocumentDistributionWorkflow,
|
|
8895
|
-
'document-signature': AXMDocumentSignatureWorkflow,
|
|
8896
7290
|
},
|
|
8897
7291
|
}),
|
|
8898
7292
|
],
|
|
8899
7293
|
exports: [],
|
|
8900
7294
|
providers: [
|
|
8901
7295
|
// Module-specific providers (not part of manifest system)
|
|
8902
|
-
{
|
|
8903
|
-
provide: AXP_TASK_BADGE_PROVIDERS,
|
|
8904
|
-
useClass: AXMDocumentReviewBadgeProvider,
|
|
8905
|
-
multi: true,
|
|
8906
|
-
},
|
|
8907
7296
|
{ provide: AXP_ENTITY_ACTION_PLUGIN, multi: true, useValue: attachmentsPlugin },
|
|
8908
7297
|
{
|
|
8909
7298
|
provide: ROUTES,
|
|
@@ -8956,7 +7345,7 @@ class AXMDocumentExplorerDetailPanelComponent {
|
|
|
8956
7345
|
this.vm = inject(AXPDocumentExplorerViewModel);
|
|
8957
7346
|
}
|
|
8958
7347
|
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.3.15", ngImport: i0, type: AXMDocumentExplorerDetailPanelComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
|
|
8959
|
-
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "20.3.15", type: AXMDocumentExplorerDetailPanelComponent, isStandalone: true, selector: "axm-document-explorer-detail-panel", ngImport: i0, template: "<!-- Multiple Selected -->\n@if (vm.hasMultipleSelectedItems()) {\n <div class=\"__header\" *translate=\"let t\">\n <div class=\"__title\">\n <i class=\"fa-fw fa-lg fa-solid\"></i>\n <span> {{ vm.selectedCount() }} {{ '@general:terms.items-selected' | translate | async }}</span>\n </div>\n <ax-button [look]=\"'blank'\" class=\"ax-sm ax-rounded-full\" (onClick)=\"vm.closeDetailPanel()\">\n <ax-icon icon=\"fa-solid fa-xmark\"></ax-icon>\n </ax-button>\n </div>\n <div class=\"__content\"></div>\n}\n<!-- Single Selected -->\n@else {\n <!-- Info -->\n @let nodeInfo = vm.getNodeInfo((vm.selectedNode() ?? vm.currentFolder())!);\n <div class=\"__header\">\n <div class=\"__title\">\n <i class=\"fa-fw fa-lg {{ nodeInfo.icon }} fa-solid\"></i>\n <span>{{ nodeInfo.name }}</span>\n </div>\n <ax-button [look]=\"'blank'\" class=\"ax-sm ax-rounded-full\" (onClick)=\"vm.closeDetailPanel()\">\n <ax-icon icon=\"fa-solid fa-xmark\"></ax-icon>\n </ax-button>\n </div>\n <div class=\"__content\">\n @for (section of nodeInfo.sections; track section.title) {\n <div class=\"__section\">\n <div class=\"__title\">\n <span>{{ section.title }}</span>\n </div>\n <div class=\"__content\">\n @for (detail of section.details; track detail.title) {\n <div class=\"__row\">\n <div class=\"__title\">\n <span>{{ detail.title }}</span>\n </div>\n <div class=\"__content\">\n @if (detail.format) {\n <span>{{ detail.content | format: detail.format | async }}</span>\n } @else {\n <span>{{ detail.content ?? '---' }}</span>\n }\n </div>\n </div>\n }\n </div>\n </div>\n }\n </div>\n}\n", styles: ["axm-document-explorer-detail-panel{display:flex;flex-direction:column;border-radius:.5rem;border-width:1px;--tw-shadow: 0 1px 2px 0 rgb(0 0 0 / .05);--tw-shadow-colored: 0 1px 2px 0 var(--tw-shadow-color);box-shadow:var(--tw-ring-offset-shadow, 0 0 #0000),var(--tw-ring-shadow, 0 0 #0000),var(--tw-shadow);background-color:rgb(var(--ax-sys-color-lightest-surface));color:rgb(var(--ax-sys-color-on-lightest-surface));border-color:rgb(var(--ax-sys-color-border-lightest-surface))}@media (min-width: 1024px){axm-document-explorer-detail-panel{min-width:20rem}}axm-document-explorer-detail-panel>.__header{display:flex;flex-direction:row;align-items:center;justify-content:space-between;border-bottom-width:1px;padding:1rem}axm-document-explorer-detail-panel>.__header>.__title{display:flex;width:90%;flex-direction:row;align-items:center;gap:.5rem}axm-document-explorer-detail-panel>.__header>.__title span{overflow:hidden;text-overflow:ellipsis;white-space:nowrap;text-align:start;font-weight:600;line-height:1.625}axm-document-explorer-detail-panel>.__content{display:flex;flex-direction:column}axm-document-explorer-detail-panel>.__content>:not([hidden])~:not([hidden]){--tw-divide-y-reverse: 0;border-top-width:calc(1px * calc(1 - var(--tw-divide-y-reverse)));border-bottom-width:calc(1px * var(--tw-divide-y-reverse))}axm-document-explorer-detail-panel>.__content>.__section{display:flex;flex-direction:column;padding:1rem}axm-document-explorer-detail-panel>.__content>.__section>.__title{margin-bottom:1rem;font-size:.875rem;line-height:1.25rem;font-weight:700}axm-document-explorer-detail-panel>.__content>.__section>.__content{display:flex;flex-direction:column;gap:1rem}axm-document-explorer-detail-panel>.__content>.__section>.__content>.__row{display:flex;flex-direction:column;gap:.25rem}axm-document-explorer-detail-panel>.__content>.__section>.__content>.__row>.__title{display:flex;font-size:.875rem;line-height:1.25rem;font-weight:600;opacity:.9}axm-document-explorer-detail-panel>.__content>.__section>.__content>.__row>.__content{display:flex;flex-direction:row;align-items:center;gap:.5rem}axm-document-explorer-detail-panel>.__content>.__section>.__content>.__row>.__content span{opacity:.7}\n"], dependencies: [{ kind: "ngmodule", type: CommonModule }, { kind: "ngmodule", type: AXDecoratorModule }, { kind: "component", type: i1$1.AXDecoratorIconComponent, selector: "ax-icon", inputs: ["icon"] }, { kind: "ngmodule", type: AXFormatModule }, { kind: "ngmodule", type: AXButtonModule }, { kind: "component", type: i1$
|
|
7348
|
+
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "20.3.15", type: AXMDocumentExplorerDetailPanelComponent, isStandalone: true, selector: "axm-document-explorer-detail-panel", ngImport: i0, template: "<!-- Multiple Selected -->\n@if (vm.hasMultipleSelectedItems()) {\n <div class=\"__header\" *translate=\"let t\">\n <div class=\"__title\">\n <i class=\"fa-fw fa-lg fa-solid\"></i>\n <span> {{ vm.selectedCount() }} {{ '@general:terms.items-selected' | translate | async }}</span>\n </div>\n <ax-button [look]=\"'blank'\" class=\"ax-sm ax-rounded-full\" (onClick)=\"vm.closeDetailPanel()\">\n <ax-icon icon=\"fa-solid fa-xmark\"></ax-icon>\n </ax-button>\n </div>\n <div class=\"__content\"></div>\n}\n<!-- Single Selected -->\n@else {\n <!-- Info -->\n @let nodeInfo = vm.getNodeInfo((vm.selectedNode() ?? vm.currentFolder())!);\n <div class=\"__header\">\n <div class=\"__title\">\n <i class=\"fa-fw fa-lg {{ nodeInfo.icon }} fa-solid\"></i>\n <span>{{ nodeInfo.name }}</span>\n </div>\n <ax-button [look]=\"'blank'\" class=\"ax-sm ax-rounded-full\" (onClick)=\"vm.closeDetailPanel()\">\n <ax-icon icon=\"fa-solid fa-xmark\"></ax-icon>\n </ax-button>\n </div>\n <div class=\"__content\">\n @for (section of nodeInfo.sections; track section.title) {\n <div class=\"__section\">\n <div class=\"__title\">\n <span>{{ section.title }}</span>\n </div>\n <div class=\"__content\">\n @for (detail of section.details; track detail.title) {\n <div class=\"__row\">\n <div class=\"__title\">\n <span>{{ detail.title }}</span>\n </div>\n <div class=\"__content\">\n @if (detail.format) {\n <span>{{ detail.content | format: detail.format | async }}</span>\n } @else {\n <span>{{ detail.content ?? '---' }}</span>\n }\n </div>\n </div>\n }\n </div>\n </div>\n }\n </div>\n}\n", styles: ["axm-document-explorer-detail-panel{display:flex;flex-direction:column;border-radius:.5rem;border-width:1px;--tw-shadow: 0 1px 2px 0 rgb(0 0 0 / .05);--tw-shadow-colored: 0 1px 2px 0 var(--tw-shadow-color);box-shadow:var(--tw-ring-offset-shadow, 0 0 #0000),var(--tw-ring-shadow, 0 0 #0000),var(--tw-shadow);background-color:rgb(var(--ax-sys-color-lightest-surface));color:rgb(var(--ax-sys-color-on-lightest-surface));border-color:rgb(var(--ax-sys-color-border-lightest-surface))}@media (min-width: 1024px){axm-document-explorer-detail-panel{min-width:20rem}}axm-document-explorer-detail-panel>.__header{display:flex;flex-direction:row;align-items:center;justify-content:space-between;border-bottom-width:1px;padding:1rem}axm-document-explorer-detail-panel>.__header>.__title{display:flex;width:90%;flex-direction:row;align-items:center;gap:.5rem}axm-document-explorer-detail-panel>.__header>.__title span{overflow:hidden;text-overflow:ellipsis;white-space:nowrap;text-align:start;font-weight:600;line-height:1.625}axm-document-explorer-detail-panel>.__content{display:flex;flex-direction:column}axm-document-explorer-detail-panel>.__content>:not([hidden])~:not([hidden]){--tw-divide-y-reverse: 0;border-top-width:calc(1px * calc(1 - var(--tw-divide-y-reverse)));border-bottom-width:calc(1px * var(--tw-divide-y-reverse))}axm-document-explorer-detail-panel>.__content>.__section{display:flex;flex-direction:column;padding:1rem}axm-document-explorer-detail-panel>.__content>.__section>.__title{margin-bottom:1rem;font-size:.875rem;line-height:1.25rem;font-weight:700}axm-document-explorer-detail-panel>.__content>.__section>.__content{display:flex;flex-direction:column;gap:1rem}axm-document-explorer-detail-panel>.__content>.__section>.__content>.__row{display:flex;flex-direction:column;gap:.25rem}axm-document-explorer-detail-panel>.__content>.__section>.__content>.__row>.__title{display:flex;font-size:.875rem;line-height:1.25rem;font-weight:600;opacity:.9}axm-document-explorer-detail-panel>.__content>.__section>.__content>.__row>.__content{display:flex;flex-direction:row;align-items:center;gap:.5rem}axm-document-explorer-detail-panel>.__content>.__section>.__content>.__row>.__content span{opacity:.7}\n"], dependencies: [{ kind: "ngmodule", type: CommonModule }, { kind: "ngmodule", type: AXDecoratorModule }, { kind: "component", type: i1$1.AXDecoratorIconComponent, selector: "ax-icon", inputs: ["icon"] }, { kind: "ngmodule", type: AXFormatModule }, { kind: "ngmodule", type: AXButtonModule }, { kind: "component", type: i1$2.AXButtonComponent, selector: "ax-button", inputs: ["disabled", "size", "tabIndex", "color", "look", "text", "toggleable", "selected", "iconOnly", "type", "loadingText"], outputs: ["onBlur", "onFocus", "onClick", "selectedChange", "toggleableChange", "lookChange", "colorChange", "disabledChange", "loadingTextChange"] }, { kind: "ngmodule", type: AXTranslationModule }, { kind: "directive", type: i3$3.AXTranslatorDirective, selector: "[translate]" }, { kind: "pipe", type: i1$3.AsyncPipe, name: "async" }, { kind: "pipe", type: i2$2.AXFormatPipe, name: "format" }, { kind: "pipe", type: i3$3.AXTranslatorPipe, name: "translate" }], encapsulation: i0.ViewEncapsulation.None }); }
|
|
8960
7349
|
}
|
|
8961
7350
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.15", ngImport: i0, type: AXMDocumentExplorerDetailPanelComponent, decorators: [{
|
|
8962
7351
|
type: Component,
|
|
@@ -8985,6 +7374,7 @@ class AXMDocumentDriveComponent extends AXPPageLayoutBaseComponent {
|
|
|
8985
7374
|
this.filterItems = signal([], ...(ngDevMode ? [{ debugName: "filterItems" }] : []));
|
|
8986
7375
|
this.selectedFilter = signal('all', ...(ngDevMode ? [{ debugName: "selectedFilter" }] : []));
|
|
8987
7376
|
this.searchQuery = '';
|
|
7377
|
+
this.previousFolderId = null;
|
|
8988
7378
|
this.sortItems = signal([
|
|
8989
7379
|
{ key: 'name', textKey: 'actions.sort-by-name', icon: 'fa-light fa-font' },
|
|
8990
7380
|
{ key: 'modified', textKey: 'actions.sort-by-date', icon: 'fa-light fa-calendar' },
|
|
@@ -9034,32 +7424,121 @@ class AXMDocumentDriveComponent extends AXPPageLayoutBaseComponent {
|
|
|
9034
7424
|
const snapshot = this.activatedRoute.snapshot;
|
|
9035
7425
|
const routerScope = resolvePlatformScopeKey(snapshot.parent?.paramMap.get('scope')?.trim()?.toLowerCase());
|
|
9036
7426
|
await this.vm.initialize({ browseMode: 'file', scope: routerScope });
|
|
9037
|
-
|
|
9038
|
-
|
|
7427
|
+
// Check for search query in URL on init
|
|
7428
|
+
const searchQuery = snapshot.queryParams['search'];
|
|
7429
|
+
const folderId = snapshot.paramMap.get('id');
|
|
7430
|
+
if (searchQuery) {
|
|
7431
|
+
this.searchQuery = searchQuery;
|
|
7432
|
+
// If we have a folderId, save it as previousFolderId before performing search
|
|
7433
|
+
if (folderId) {
|
|
7434
|
+
this.previousFolderId = folderId;
|
|
7435
|
+
// Load the folder first to establish context
|
|
7436
|
+
await this.vm.loadFolderContents(folderId);
|
|
7437
|
+
}
|
|
7438
|
+
// Perform search
|
|
7439
|
+
await this.performSearch(searchQuery);
|
|
7440
|
+
}
|
|
7441
|
+
else {
|
|
7442
|
+
// Normal load - watch for param changes
|
|
7443
|
+
this.activatedRoute.paramMap.subscribe(async () => {
|
|
7444
|
+
this.loadDrive();
|
|
7445
|
+
});
|
|
7446
|
+
}
|
|
7447
|
+
// Watch for query param changes (e.g., when user clears search)
|
|
7448
|
+
this.activatedRoute.queryParams.subscribe(async (params) => {
|
|
7449
|
+
if (!params['search'] && this.vm.isVirtual() && this.searchQuery) {
|
|
7450
|
+
// Search was cleared from URL, clear the virtual folder
|
|
7451
|
+
this.searchQuery = null;
|
|
7452
|
+
const currentNode = this.vm.currentNode();
|
|
7453
|
+
const targetFolderId = this.previousFolderId
|
|
7454
|
+
?? (currentNode?.parentId && currentNode.parentId !== 'virtual' ? currentNode.parentId : null);
|
|
7455
|
+
if (targetFolderId) {
|
|
7456
|
+
await this.vm.loadFolderContents(targetFolderId);
|
|
7457
|
+
this.previousFolderId = null;
|
|
7458
|
+
}
|
|
7459
|
+
else {
|
|
7460
|
+
this.vm.navigateToUp();
|
|
7461
|
+
}
|
|
7462
|
+
}
|
|
9039
7463
|
});
|
|
9040
7464
|
}
|
|
9041
7465
|
//#endregion
|
|
9042
7466
|
//#region ---------------- Event Handlers ----------------
|
|
9043
7467
|
async handleSearchChange(event) {
|
|
9044
|
-
|
|
9045
|
-
|
|
9046
|
-
|
|
9047
|
-
|
|
9048
|
-
const
|
|
9049
|
-
|
|
9050
|
-
|
|
9051
|
-
|
|
9052
|
-
|
|
9053
|
-
|
|
9054
|
-
|
|
9055
|
-
parentId: this.vm.currentNode()?.id == 'virtual'
|
|
9056
|
-
? (this.vm.currentNode()?.parentId ?? undefined)
|
|
9057
|
-
: this.vm.currentNode()?.id,
|
|
7468
|
+
// Handle null/undefined by treating as empty string (clear search)
|
|
7469
|
+
const searchValue = event.value ?? '';
|
|
7470
|
+
if (searchValue.length > 0) {
|
|
7471
|
+
// Update URL with search query parameter
|
|
7472
|
+
const folderId = this.activatedRoute.snapshot.paramMap.get('id');
|
|
7473
|
+
const currentUrl = folderId
|
|
7474
|
+
? `${this.sessionService.application?.name}/drive/${resolvePlatformScopeName(this.vm.scope())}/${folderId}`
|
|
7475
|
+
: `${this.sessionService.application?.name}/drive/${resolvePlatformScopeName(this.vm.scope())}`;
|
|
7476
|
+
await this.router.navigate([currentUrl], {
|
|
7477
|
+
queryParams: { search: searchValue },
|
|
7478
|
+
queryParamsHandling: 'merge',
|
|
9058
7479
|
});
|
|
7480
|
+
// Perform the search
|
|
7481
|
+
await this.performSearch(searchValue);
|
|
9059
7482
|
}
|
|
9060
7483
|
else {
|
|
9061
|
-
|
|
7484
|
+
// Clear search query immediately
|
|
7485
|
+
this.searchQuery = null;
|
|
7486
|
+
// Remove search query parameter from URL
|
|
7487
|
+
const folderId = this.activatedRoute.snapshot.paramMap.get('id');
|
|
7488
|
+
const currentUrl = folderId
|
|
7489
|
+
? `${this.sessionService.application?.name}/drive/${resolvePlatformScopeName(this.vm.scope())}/${folderId}`
|
|
7490
|
+
: `${this.sessionService.application?.name}/drive/${resolvePlatformScopeName(this.vm.scope())}`;
|
|
7491
|
+
await this.router.navigate([currentUrl], {
|
|
7492
|
+
queryParams: { search: null },
|
|
7493
|
+
queryParamsHandling: 'merge',
|
|
7494
|
+
});
|
|
7495
|
+
// Clear search - navigate back to previous folder
|
|
7496
|
+
if (this.vm.isVirtual()) {
|
|
7497
|
+
const currentNode = this.vm.currentNode();
|
|
7498
|
+
// Priority: 1) previousFolderId (saved before search), 2) parentId from virtual folder, 3) navigateToUp
|
|
7499
|
+
const targetFolderId = this.previousFolderId
|
|
7500
|
+
?? (currentNode?.parentId && currentNode.parentId !== 'virtual' ? currentNode.parentId : null);
|
|
7501
|
+
if (targetFolderId) {
|
|
7502
|
+
// Navigate to target folder - update router and load folder contents directly
|
|
7503
|
+
this.router.navigate([
|
|
7504
|
+
`${this.sessionService.application?.name}/drive/${resolvePlatformScopeName(this.vm.scope())}/${targetFolderId}`,
|
|
7505
|
+
]);
|
|
7506
|
+
// Load folder contents directly to ensure virtual folder is cleared
|
|
7507
|
+
await this.vm.loadFolderContents(targetFolderId);
|
|
7508
|
+
this.previousFolderId = null;
|
|
7509
|
+
}
|
|
7510
|
+
else {
|
|
7511
|
+
// Last resort: try navigateToUp
|
|
7512
|
+
this.vm.navigateToUp();
|
|
7513
|
+
}
|
|
7514
|
+
}
|
|
7515
|
+
else {
|
|
7516
|
+
// Not in virtual folder, just clear the search
|
|
7517
|
+
this.previousFolderId = null;
|
|
7518
|
+
}
|
|
7519
|
+
}
|
|
7520
|
+
}
|
|
7521
|
+
async performSearch(searchValue) {
|
|
7522
|
+
// Save the current folder ID before searching (if not already in virtual folder)
|
|
7523
|
+
if (!this.vm.isVirtual()) {
|
|
7524
|
+
const currentNode = this.vm.currentNode();
|
|
7525
|
+
this.previousFolderId = currentNode?.id ?? null;
|
|
9062
7526
|
}
|
|
7527
|
+
const result = await this.driveService.searchNodes(searchValue, this.vm.scope(), {
|
|
7528
|
+
tenantId: this.sessionService.tenant?.id,
|
|
7529
|
+
userId: this.sessionService.user?.id,
|
|
7530
|
+
folderId: this.vm.isVirtual() ? (this.previousFolderId ?? undefined) : (this.vm.currentNode()?.id ?? undefined),
|
|
7531
|
+
});
|
|
7532
|
+
// Get the folder ID to use as parentId for the virtual folder
|
|
7533
|
+
// If we're already in a virtual folder, use its parentId, otherwise use current folder ID
|
|
7534
|
+
const currentNode = this.vm.currentNode();
|
|
7535
|
+
const folderIdForParent = this.vm.isVirtual()
|
|
7536
|
+
? (currentNode?.parentId ?? this.previousFolderId ?? undefined)
|
|
7537
|
+
: (currentNode?.id ?? this.previousFolderId ?? undefined);
|
|
7538
|
+
this.vm.virtualFolder(result, {
|
|
7539
|
+
name: 'Search Result',
|
|
7540
|
+
parentId: folderIdForParent,
|
|
7541
|
+
});
|
|
9063
7542
|
}
|
|
9064
7543
|
handleCtrlKey(e) {
|
|
9065
7544
|
this.selectionMode.set('multiple');
|
|
@@ -9068,17 +7547,17 @@ class AXMDocumentDriveComponent extends AXPPageLayoutBaseComponent {
|
|
|
9068
7547
|
this.selectionMode.set('single');
|
|
9069
7548
|
}
|
|
9070
7549
|
handleNavigateToFolder(folderId) {
|
|
9071
|
-
this.
|
|
9072
|
-
|
|
9073
|
-
|
|
9074
|
-
|
|
9075
|
-
|
|
9076
|
-
}, 200);
|
|
7550
|
+
const queryParams = this.activatedRoute.snapshot.queryParams;
|
|
7551
|
+
this.router.navigate([`${this.sessionService.application?.name}/drive/${resolvePlatformScopeName(this.vm.scope())}/${folderId}`], {
|
|
7552
|
+
queryParams: queryParams, // Preserve query params (e.g., search)
|
|
7553
|
+
queryParamsHandling: 'merge',
|
|
7554
|
+
});
|
|
9077
7555
|
}
|
|
9078
7556
|
//#endregion
|
|
9079
7557
|
//#region ---------------- Data Loading Methods ----------------
|
|
9080
7558
|
async loadDrive() {
|
|
9081
7559
|
const folderId = this.activatedRoute.snapshot.paramMap.get('id');
|
|
7560
|
+
const queryParams = this.activatedRoute.snapshot.queryParams;
|
|
9082
7561
|
if (folderId) {
|
|
9083
7562
|
await this.vm.loadFolderContents(folderId);
|
|
9084
7563
|
}
|
|
@@ -9093,6 +7572,8 @@ class AXMDocumentDriveComponent extends AXPPageLayoutBaseComponent {
|
|
|
9093
7572
|
`${this.sessionService.application?.name}/drive/${resolvePlatformScopeName(this.vm.scope())}/${root.result.id}`,
|
|
9094
7573
|
], {
|
|
9095
7574
|
replaceUrl: true,
|
|
7575
|
+
queryParams: queryParams, // Preserve query params (e.g., search)
|
|
7576
|
+
queryParamsHandling: 'merge',
|
|
9096
7577
|
});
|
|
9097
7578
|
}
|
|
9098
7579
|
}
|
|
@@ -9259,11 +7740,11 @@ class AXMDocumentDriveComponent extends AXPPageLayoutBaseComponent {
|
|
|
9259
7740
|
},
|
|
9260
7741
|
], viewQueries: [{ propertyName: "documentExplorer", first: true, predicate: AXMDocumentExplorerComponent, descendants: true, isSignal: true }], usesInheritance: true, ngImport: i0, template: "<!-- Main Layout -->\n<axp-page-layout *translate=\"let t\">\n <axp-page-toolbar>\n <!-- Left Side Toolbar -->\n <axp-layout-prefix>\n @if (vm.hasMultipleSelectedItems()) {\n <div class=\"ax-flex ax-gap-3 ax-items-center ax-h-10\">\n <span class=\"ax-text-xl ax-font-bold\">\n {{ vm.selectedCount() }} {{ '@general:terms.items-selected' | translate | async }}\n </span>\n <span (click)=\"vm.deselectAll()\" class=\"ax-text-sm ax-text-secondary ax-underline ax-cursor-pointer\">{{\n '@general:actions.unselect.title' | translate | async\n }}</span>\n </div>\n }\n <!---------->\n @else {\n <!-- Filter Dropdown -->\n <ax-button [text]=\"t(getFilterText(), { scope: rootConfig.config.i18n }) | async\">\n <ax-prefix>\n <ax-icon [icon]=\"getFilterIcon()\"></ax-icon>\n </ax-prefix>\n\n <ax-dropdown-panel>\n <ax-button-item-list class=\"ax-p-2\">\n @for (item of filterItems(); track item.key) {\n <ax-button-item\n (onClick)=\"setFilter(item.key)\"\n [text]=\"(t(item.textKey, { scope: rootConfig.config.i18n }) | async)!\"\n >\n <ax-prefix>\n <ax-icon [icon]=\"item.icon\"></ax-icon>\n </ax-prefix>\n </ax-button-item>\n }\n </ax-button-item-list>\n </ax-dropdown-panel>\n </ax-button>\n <!-- Search Box -->\n <ax-search-box\n [(value)]=\"searchQuery\"\n (onValueChanged)=\"handleSearchChange($event)\"\n class=\"ax-w-72 ax-hidden md:ax-flex\"\n [placeholder]=\"t('actions.search', { scope: rootConfig.config.i18n }) | async\"\n ><ax-clear-button></ax-clear-button\n ></ax-search-box>\n }\n </axp-layout-prefix>\n\n <!-- Right Side Toolbar -->\n <axp-layout-suffix>\n <!-- Sort Dropdown -->\n <ax-button>\n <ax-icon\n [icon]=\"'fa-light fa-arrow-' + (vm.sortDirection() === 'asc' ? 'up' : 'down') + '-wide-short'\"\n ></ax-icon>\n <ax-dropdown-panel>\n <ax-button-item-list>\n <!-- Sort By Options -->\n @for (item of sortItems(); track item.key) {\n <ax-button-item\n [text]=\"(t(item.textKey, { scope: rootConfig.config.i18n }) | async)!\"\n (onClick)=\"vm.setSortField(item.key)\"\n [selected]=\"vm.sortField() === item.key\"\n >\n <ax-prefix>\n <ax-icon [icon]=\"item.icon\"></ax-icon>\n </ax-prefix>\n </ax-button-item>\n }\n <ax-divider></ax-divider>\n <!-- Sort Direction Options -->\n <ax-button-item\n [text]=\"(t('actions.sort-ascending', { scope: rootConfig.config.i18n }) | async)!\"\n [selected]=\"vm.sortDirection() === 'asc'\"\n (onClick)=\"vm.setSortDirection('asc')\"\n >\n <ax-prefix>\n <ax-icon icon=\"fa-light fa-arrow-up-wide-short\"></ax-icon>\n </ax-prefix>\n </ax-button-item>\n <ax-button-item\n [text]=\"(t('actions.sort-descending', { scope: rootConfig.config.i18n }) | async)!\"\n [selected]=\"vm.sortDirection() === 'desc'\"\n (onClick)=\"vm.setSortDirection('desc')\"\n >\n <ax-prefix>\n <ax-icon icon=\"fa-light fa-arrow-down-wide-short\"></ax-icon>\n </ax-prefix>\n </ax-button-item>\n </ax-button-item-list>\n </ax-dropdown-panel>\n </ax-button>\n\n <!-- View Mode Toggle -->\n <ax-button>\n <ax-icon icon=\"fa-light {{ selectedViewMode().icon }}\"></ax-icon>\n <ax-dropdown-panel>\n <ax-button-item-list>\n @for (item of viewsItems(); track item.key) {\n <!-- view mode items -->\n <ax-button-item\n [text]=\"(t('view-modes.' + item.key, { scope: rootConfig.config.i18n }) | async)!\"\n [selected]=\"vm.isViewMode(item.key)\"\n (onClick)=\"vm.setViewMode(item.key)\"\n >\n <ax-prefix>\n <ax-icon icon=\"fa-light {{ item.icon }}\"></ax-icon>\n </ax-prefix>\n </ax-button-item>\n @if (item.break) {\n <ax-divider></ax-divider>\n }\n <!-- end of view mode items -->\n }\n </ax-button-item-list>\n </ax-dropdown-panel>\n </ax-button>\n\n @if (deviceService.isLarge()) {\n <!-- Detail Panel Toggle -->\n <ax-button (onClick)=\"vm.toggleDetailPanel()\">\n <ax-icon\n icon=\"{{ vm.isDetailPanelOpen() ? 'fa-solid fa-square-info' : 'fa-light fa-square-info' }}\"\n ></ax-icon>\n </ax-button>\n }\n </axp-layout-suffix>\n </axp-page-toolbar>\n\n <!-- Content Section -->\n <axp-page-content class=\"ax-overflow-auto ax-flex ax-flex-row ax-gap-4\">\n <axm-document-explorer [selectionMode]=\"selectionMode()\"></axm-document-explorer>\n @if (vm.isDetailPanelOpen() && deviceService.isLarge()) {\n <axm-document-explorer-detail-panel class=\"ax-sticky ax-top-0 ax-z-50\"></axm-document-explorer-detail-panel>\n }\n </axp-page-content>\n\n <!-- Footer Section removed: breadcrumbs are now provided via page-level breadcrumbs -->\n</axp-page-layout>\n", styles: [""], dependencies: [{ kind: "ngmodule", type: CommonModule }, { kind: "ngmodule", type: RouterModule }, { kind: "ngmodule", type:
|
|
9261
7742
|
//
|
|
9262
|
-
AXMenuModule }, { kind: "ngmodule", type: AXButtonModule }, { kind: "component", type: i1$
|
|
7743
|
+
AXMenuModule }, { kind: "ngmodule", type: AXButtonModule }, { kind: "component", type: i1$2.AXButtonComponent, selector: "ax-button", inputs: ["disabled", "size", "tabIndex", "color", "look", "text", "toggleable", "selected", "iconOnly", "type", "loadingText"], outputs: ["onBlur", "onFocus", "onClick", "selectedChange", "toggleableChange", "lookChange", "colorChange", "disabledChange", "loadingTextChange"] }, { kind: "component", type: i1$2.AXButtonItemComponent, selector: "ax-button-item", inputs: ["color", "disabled", "text", "selected", "divided", "data", "name"], outputs: ["onClick", "onFocus", "onBlur", "disabledChange"] }, { kind: "component", type: i1$2.AXButtonItemListComponent, selector: "ax-button-item-list", inputs: ["items", "closeParentOnClick", "lockOnLoading"], outputs: ["onItemClick"] }, { kind: "ngmodule", type: AXButtonGroupModule }, { kind: "ngmodule", type: AXDropdownButtonModule }, { kind: "ngmodule", type: AXDropdownModule }, { kind: "component", type: i2$3.AXDropdownPanelComponent, selector: "ax-dropdown-panel", inputs: ["isOpen", "fitParent", "dropdownWidth", "position", "placement", "_target", "adaptivityEnabled"], outputs: ["onOpened", "onClosed"] }, { kind: "ngmodule", type: AXTranslationModule }, { kind: "directive", type: i3$3.AXTranslatorDirective, selector: "[translate]" }, { kind: "ngmodule", type: AXDecoratorModule }, { kind: "component", type: i1$1.AXDecoratorIconComponent, selector: "ax-icon", inputs: ["icon"] }, { kind: "component", type: i1$1.AXDecoratorClearButtonComponent, selector: "ax-clear-button", inputs: ["icon"] }, { kind: "component", type: i1$1.AXDecoratorGenericComponent, selector: "ax-footer, ax-header, ax-content, ax-divider, ax-form-hint, ax-prefix, ax-suffix, ax-text, ax-title, ax-subtitle, ax-placeholder, ax-overlay" }, { kind: "ngmodule", type: AXLoadingModule }, { kind: "ngmodule", type: AXBreadcrumbsModule }, { kind: "ngmodule", type: AXBadgeModule }, { kind: "ngmodule", type: AXSearchBoxModule }, { kind: "component", type: i5.AXSearchBoxComponent, selector: "ax-search-box", inputs: ["disabled", "readonly", "tabIndex", "placeholder", "value", "state", "name", "id", "look", "class", "delayTime", "type", "autoSearch"], outputs: ["valueChange", "stateChange", "onValueChanged", "onBlur", "onFocus", "readonlyChange", "disabledChange", "onKeyDown", "onKeyUp", "onKeyPress"] }, { kind: "ngmodule", type: AXFormatModule }, { kind: "ngmodule", type: AXFileModule }, { kind: "ngmodule", type: AXDateTimeModule }, { kind: "component", type:
|
|
9263
7744
|
//
|
|
9264
7745
|
AXPPageLayoutComponent, selector: "axp-page-layout" }, { kind: "component", type: AXPThemeLayoutBlockComponent, selector: " axp-page-content, axp-page-footer-container, axp-page-footer, axp-page-header, axp-page-header-container, axp-page-toolbar, axp-layout-content, axp-layout-page-content, axp-layout-sections, axp-layout-body, axp-layout-page-body, axp-layout-prefix, axp-layout-suffix, axp-layout-title-bar, axp-layout-title, axp-layout-title-actions, axp-layout-nav-button, axp-layout-description, axp-layout-breadcrumbs, axp-layout-list-action, " }, { kind: "component", type:
|
|
9265
7746
|
//
|
|
9266
|
-
AXMDocumentExplorerComponent, selector: "axm-document-explorer", inputs: ["browseMode", "viewMode", "selectionMode", "showContextMenu"] }, { kind: "component", type: AXMDocumentExplorerDetailPanelComponent, selector: "axm-document-explorer-detail-panel" }, { kind: "pipe", type: i1$
|
|
7747
|
+
AXMDocumentExplorerComponent, selector: "axm-document-explorer", inputs: ["browseMode", "viewMode", "selectionMode", "showContextMenu"] }, { kind: "component", type: AXMDocumentExplorerDetailPanelComponent, selector: "axm-document-explorer-detail-panel" }, { kind: "pipe", type: i1$3.AsyncPipe, name: "async" }, { kind: "pipe", type: i3$3.AXTranslatorPipe, name: "translate" }], changeDetection: i0.ChangeDetectionStrategy.OnPush, encapsulation: i0.ViewEncapsulation.None }); }
|
|
9267
7748
|
}
|
|
9268
7749
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.15", ngImport: i0, type: AXMDocumentDriveComponent, decorators: [{
|
|
9269
7750
|
type: Component,
|
|
@@ -9325,5 +7806,5 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.15", ngImpo
|
|
|
9325
7806
|
* Generated bundle index. Do not edit.
|
|
9326
7807
|
*/
|
|
9327
7808
|
|
|
9328
|
-
export { AXMArchiveFileTypeProvider, AXMAudioFileTypeProvider, AXMCodeFileTypeProvider,
|
|
7809
|
+
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, AXMFileTypeExtensionWidgetColumnComponent, AXMFileTypeExtensionWidgetDesignerComponent, AXMFileTypeExtensionWidgetEditComponent, AXMFileTypeExtensionWidgetViewComponent, AXMFileViewerPopupComponent, 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 };
|
|
9329
7810
|
//# sourceMappingURL=acorex-modules-document-management.mjs.map
|