@acorex-platform/module-document-management-client 0.0.38 → 0.0.46
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/fesm2022/{acorex-platform-module-document-management-client-acorex-platform-module-document-management-client-DHcNgw3P.mjs → acorex-platform-module-document-management-client-acorex-platform-module-document-management-client-DhDRtALE.mjs} +477 -163
- package/fesm2022/acorex-platform-module-document-management-client-acorex-platform-module-document-management-client-DhDRtALE.mjs.map +1 -0
- package/fesm2022/{acorex-platform-module-document-management-client-attachment-view-skeleton.component-lm3X8cQr.mjs → acorex-platform-module-document-management-client-attachment-view-skeleton.component-Dvvp7Dje.mjs} +2 -2
- package/fesm2022/{acorex-platform-module-document-management-client-attachment-view-skeleton.component-lm3X8cQr.mjs.map → acorex-platform-module-document-management-client-attachment-view-skeleton.component-Dvvp7Dje.mjs.map} +1 -1
- package/fesm2022/{acorex-platform-module-document-management-client-attachment-widget.component-nGSM4SLU.mjs → acorex-platform-module-document-management-client-attachment-widget.component-DVm7a1d2.mjs} +5 -4
- package/fesm2022/acorex-platform-module-document-management-client-attachment-widget.component-DVm7a1d2.mjs.map +1 -0
- package/fesm2022/acorex-platform-module-document-management-client-contracts-entities-document-shortcut.mjs +20 -0
- package/fesm2022/acorex-platform-module-document-management-client-contracts-entities-document-shortcut.mjs.map +1 -1
- package/fesm2022/acorex-platform-module-document-management-client-contracts-entities-document-type.mjs +65 -10
- package/fesm2022/acorex-platform-module-document-management-client-contracts-entities-document-type.mjs.map +1 -1
- package/fesm2022/acorex-platform-module-document-management-client-contracts-entities-document-version.mjs +270 -0
- package/fesm2022/acorex-platform-module-document-management-client-contracts-entities-document-version.mjs.map +1 -0
- package/fesm2022/acorex-platform-module-document-management-client-contracts-entities-document.mjs +61 -1
- package/fesm2022/acorex-platform-module-document-management-client-contracts-entities-document.mjs.map +1 -1
- package/fesm2022/acorex-platform-module-document-management-client-contracts-entities-folder.mjs +21 -0
- package/fesm2022/acorex-platform-module-document-management-client-contracts-entities-folder.mjs.map +1 -1
- package/fesm2022/{acorex-platform-module-document-management-client-contracts-entity-catalog-acorex-platform-module-document-management-client-contracts-entity-catalog-Bl6_lO9-.mjs → acorex-platform-module-document-management-client-contracts-entity-catalog-acorex-platform-module-document-management-client-contracts-entity-catalog-BxwUMlCE.mjs} +12 -5
- package/fesm2022/acorex-platform-module-document-management-client-contracts-entity-catalog-acorex-platform-module-document-management-client-contracts-entity-catalog-BxwUMlCE.mjs.map +1 -0
- package/fesm2022/{acorex-platform-module-document-management-client-contracts-entity-catalog-document-shortcut.entity-BpGBX1CD.mjs → acorex-platform-module-document-management-client-contracts-entity-catalog-document-shortcut.entity-D-hEBLFT.mjs} +16 -2
- package/fesm2022/acorex-platform-module-document-management-client-contracts-entity-catalog-document-shortcut.entity-D-hEBLFT.mjs.map +1 -0
- package/fesm2022/{acorex-platform-module-document-management-client-contracts-entity-catalog-document-type.entity-D0-wHSOd.mjs → acorex-platform-module-document-management-client-contracts-entity-catalog-document-type.entity-CBMUwrc-.mjs} +61 -12
- package/fesm2022/acorex-platform-module-document-management-client-contracts-entity-catalog-document-type.entity-CBMUwrc-.mjs.map +1 -0
- package/fesm2022/acorex-platform-module-document-management-client-contracts-entity-catalog-document-version.entity-hATC_iAQ.mjs +200 -0
- package/fesm2022/acorex-platform-module-document-management-client-contracts-entity-catalog-document-version.entity-hATC_iAQ.mjs.map +1 -0
- package/fesm2022/{acorex-platform-module-document-management-client-contracts-entity-catalog-document.entity-BB3250Gc.mjs → acorex-platform-module-document-management-client-contracts-entity-catalog-document.entity-DOvhTOtO.mjs} +57 -3
- package/fesm2022/acorex-platform-module-document-management-client-contracts-entity-catalog-document.entity-DOvhTOtO.mjs.map +1 -0
- package/fesm2022/{acorex-platform-module-document-management-client-contracts-entity-catalog-folder.entity-BWplP1j6.mjs → acorex-platform-module-document-management-client-contracts-entity-catalog-folder.entity-cNSFyJoY.mjs} +17 -2
- package/fesm2022/acorex-platform-module-document-management-client-contracts-entity-catalog-folder.entity-cNSFyJoY.mjs.map +1 -0
- package/fesm2022/acorex-platform-module-document-management-client-contracts-entity-catalog.mjs +1 -1
- package/fesm2022/acorex-platform-module-document-management-client-contracts.mjs +91 -1
- package/fesm2022/acorex-platform-module-document-management-client-contracts.mjs.map +1 -1
- package/fesm2022/acorex-platform-module-document-management-client-distribute-document.command-Bw6xDrJ4.mjs +445 -0
- package/fesm2022/acorex-platform-module-document-management-client-distribute-document.command-Bw6xDrJ4.mjs.map +1 -0
- package/fesm2022/acorex-platform-module-document-management-client-distribute-document.command.util-Bnw0rh94.mjs +78 -0
- package/fesm2022/acorex-platform-module-document-management-client-distribute-document.command.util-Bnw0rh94.mjs.map +1 -0
- package/fesm2022/{acorex-platform-module-document-management-client-drive-choose.component-ByxmDInD.mjs → acorex-platform-module-document-management-client-drive-choose.component-BHiNuDvr.mjs} +17 -6
- package/fesm2022/acorex-platform-module-document-management-client-drive-choose.component-BHiNuDvr.mjs.map +1 -0
- package/fesm2022/{acorex-platform-module-document-management-client-large-icons-view-skeleton.component-B64PFFtO.mjs → acorex-platform-module-document-management-client-large-icons-view-skeleton.component-DmYeUizg.mjs} +2 -2
- package/fesm2022/{acorex-platform-module-document-management-client-large-icons-view-skeleton.component-B64PFFtO.mjs.map → acorex-platform-module-document-management-client-large-icons-view-skeleton.component-DmYeUizg.mjs.map} +1 -1
- package/fesm2022/acorex-platform-module-document-management-client-large-icons-view.component-Dx95E_1P.mjs +31 -0
- package/fesm2022/acorex-platform-module-document-management-client-large-icons-view.component-Dx95E_1P.mjs.map +1 -0
- package/fesm2022/acorex-platform-module-document-management-client-large-tiles-view.component-VNDRhDNx.mjs +36 -0
- package/fesm2022/acorex-platform-module-document-management-client-large-tiles-view.component-VNDRhDNx.mjs.map +1 -0
- package/fesm2022/{acorex-platform-module-document-management-client-list-view-skeleton.component-K22Zof-0.mjs → acorex-platform-module-document-management-client-list-view-skeleton.component-C9rbuY5b.mjs} +2 -2
- package/fesm2022/{acorex-platform-module-document-management-client-list-view-skeleton.component-K22Zof-0.mjs.map → acorex-platform-module-document-management-client-list-view-skeleton.component-C9rbuY5b.mjs.map} +1 -1
- package/fesm2022/acorex-platform-module-document-management-client-list-view.component-yHeNWSJC.mjs +31 -0
- package/fesm2022/acorex-platform-module-document-management-client-list-view.component-yHeNWSJC.mjs.map +1 -0
- package/fesm2022/acorex-platform-module-document-management-client-local-entities.mjs +1 -0
- package/fesm2022/acorex-platform-module-document-management-client-local-entities.mjs.map +1 -1
- package/fesm2022/{acorex-platform-module-document-management-client-open-document.command-Deqs3cEg.mjs → acorex-platform-module-document-management-client-open-document.command-By0k8BgV.mjs} +27 -14
- package/fesm2022/acorex-platform-module-document-management-client-open-document.command-By0k8BgV.mjs.map +1 -0
- package/fesm2022/acorex-platform-module-document-management-client-sign-distributed-document.command-DpQ-Un7q.mjs +124 -0
- package/fesm2022/acorex-platform-module-document-management-client-sign-distributed-document.command-DpQ-Un7q.mjs.map +1 -0
- package/fesm2022/{acorex-platform-module-document-management-client-small-icons-view-skeleton.component-BFuFFUax.mjs → acorex-platform-module-document-management-client-small-icons-view-skeleton.component-d0LTdcBY.mjs} +2 -2
- package/fesm2022/{acorex-platform-module-document-management-client-small-icons-view-skeleton.component-BFuFFUax.mjs.map → acorex-platform-module-document-management-client-small-icons-view-skeleton.component-d0LTdcBY.mjs.map} +1 -1
- package/fesm2022/acorex-platform-module-document-management-client-small-icons-view.component-CoEYTcd9.mjs +31 -0
- package/fesm2022/acorex-platform-module-document-management-client-small-icons-view.component-CoEYTcd9.mjs.map +1 -0
- package/fesm2022/{acorex-platform-module-document-management-client-small-tiles-view-skeleton.component-6EgbuXTv.mjs → acorex-platform-module-document-management-client-small-tiles-view-skeleton.component-rZAAx-ns.mjs} +2 -2
- package/fesm2022/{acorex-platform-module-document-management-client-small-tiles-view-skeleton.component-6EgbuXTv.mjs.map → acorex-platform-module-document-management-client-small-tiles-view-skeleton.component-rZAAx-ns.mjs.map} +1 -1
- package/fesm2022/acorex-platform-module-document-management-client-small-tiles-view.component-C4wnLgWR.mjs +36 -0
- package/fesm2022/acorex-platform-module-document-management-client-small-tiles-view.component-C4wnLgWR.mjs.map +1 -0
- package/fesm2022/{acorex-platform-module-document-management-client-upload-document.command-D6J57Ha5.mjs → acorex-platform-module-document-management-client-upload-document.command-JDYYMckB.mjs} +2 -2
- package/fesm2022/{acorex-platform-module-document-management-client-upload-document.command-D6J57Ha5.mjs.map → acorex-platform-module-document-management-client-upload-document.command-JDYYMckB.mjs.map} +1 -1
- package/fesm2022/acorex-platform-module-document-management-client.mjs +1 -1
- package/package.json +6 -2
- package/types/acorex-platform-module-document-management-client-contracts-entities-document-version.d.ts +8 -0
- package/types/acorex-platform-module-document-management-client-contracts.d.ts +85 -4
- package/types/acorex-platform-module-document-management-client.d.ts +98 -7
- package/fesm2022/acorex-platform-module-document-management-client-acorex-platform-module-document-management-client-DHcNgw3P.mjs.map +0 -1
- package/fesm2022/acorex-platform-module-document-management-client-attachment-widget.component-nGSM4SLU.mjs.map +0 -1
- package/fesm2022/acorex-platform-module-document-management-client-contracts-entity-catalog-acorex-platform-module-document-management-client-contracts-entity-catalog-Bl6_lO9-.mjs.map +0 -1
- package/fesm2022/acorex-platform-module-document-management-client-contracts-entity-catalog-document-shortcut.entity-BpGBX1CD.mjs.map +0 -1
- package/fesm2022/acorex-platform-module-document-management-client-contracts-entity-catalog-document-type.entity-D0-wHSOd.mjs.map +0 -1
- package/fesm2022/acorex-platform-module-document-management-client-contracts-entity-catalog-document.entity-BB3250Gc.mjs.map +0 -1
- package/fesm2022/acorex-platform-module-document-management-client-contracts-entity-catalog-folder.entity-BWplP1j6.mjs.map +0 -1
- package/fesm2022/acorex-platform-module-document-management-client-drive-choose.component-ByxmDInD.mjs.map +0 -1
- package/fesm2022/acorex-platform-module-document-management-client-large-icons-view.component-CBk1WOVb.mjs +0 -30
- package/fesm2022/acorex-platform-module-document-management-client-large-icons-view.component-CBk1WOVb.mjs.map +0 -1
- package/fesm2022/acorex-platform-module-document-management-client-large-tiles-view.component-m-UkV_QT.mjs +0 -35
- package/fesm2022/acorex-platform-module-document-management-client-large-tiles-view.component-m-UkV_QT.mjs.map +0 -1
- package/fesm2022/acorex-platform-module-document-management-client-list-view.component-CVF0Lkii.mjs +0 -30
- package/fesm2022/acorex-platform-module-document-management-client-list-view.component-CVF0Lkii.mjs.map +0 -1
- package/fesm2022/acorex-platform-module-document-management-client-open-document.command-Deqs3cEg.mjs.map +0 -1
- package/fesm2022/acorex-platform-module-document-management-client-small-icons-view.component-5XaGmpoN.mjs +0 -30
- package/fesm2022/acorex-platform-module-document-management-client-small-icons-view.component-5XaGmpoN.mjs.map +0 -1
- package/fesm2022/acorex-platform-module-document-management-client-small-tiles-view.component-07tFnkqV.mjs +0 -35
- package/fesm2022/acorex-platform-module-document-management-client-small-tiles-view.component-07tFnkqV.mjs.map +0 -1
|
@@ -1,12 +1,12 @@
|
|
|
1
|
-
import { AXPTaskBadgeProvider, resolveFileChooserExtension, AXPFileChooserService, AXPFileViewerService, AXPFileViewerFallbackContentComponent, AXP_FILE_CHOOSER_PROVIDERS, AXP_FILE_UPLOADER_PROVIDERS, AXPStateMessageComponent, AXPLayoutSideDetailPanelComponent, AXPLayoutSideDetailPanelSectionDirective, AXP_PAGE_COMPONENT_PROVIDER, AXP_TASK_BADGE_PROVIDERS, provideFileViewer, AXPThemeLayoutBlockComponent, AXPQueryFiltersComponent } from '@acorex-platform/framework-client/layout/components';
|
|
1
|
+
import { AXPTaskBadgeProvider, resolveFileChooserExtension, AXPFileChooserService, AXPFileViewerService, AXPFileViewerFallbackContentComponent, AXP_FILE_CHOOSER_PROVIDERS, AXP_FILE_UPLOADER_PROVIDERS, isUnrestrictedFileAccept, fileNameMatchesAccept, AXPStateMessageComponent, AXPLayoutSideDetailPanelComponent, AXPLayoutSideDetailPanelSectionDirective, AXP_PAGE_COMPONENT_PROVIDER, AXP_TASK_BADGE_PROVIDERS, provideFileViewer, AXPThemeLayoutBlockComponent, AXPQueryFiltersComponent } from '@acorex-platform/framework-client/layout/components';
|
|
2
2
|
import { AXPEntityService, resolveEntityPluginDetailPageOrder, ensureListActions, AXPEntityDefinitionRegistryService, AXPMiddlewareAbortError, AXP_ENTITY_CONFIG_TOKEN, AXP_ENTITY_ACTION_PLUGIN, AXP_ENTITY_STORAGE_MIDDLEWARE } from '@acorex-platform/framework-client/layout/entity';
|
|
3
|
-
import { AXPEntityBroadcastService, AXPHookService, AXPDataGenerator as AXPDataGenerator$1, AXPDeviceService, AXPExpressionEvaluatorService, AXPDebugService,
|
|
4
|
-
import {
|
|
5
|
-
import { AXPSearchCommandProvider, createEntitySearchCommand, AXPFileTypeProviderService, AXP_FILE_TYPE_INFO_PROVIDER, extractRequestErrorInfo, platformErrorI18nKey, AXPFileStorageService, AXPFilterOperatorMiddlewareService, resolveExplorerFileDisplayName, tryOpenFileByCatalogType, createFileTypeOpenContext, FILE_VIEWER_PREVIEW_EXTENSIONS, isFileNameShownInViewer, normalizeDocumentToFileListItem, UploadFromComputerActionProvider, AXP_FILE_ACTION_PROVIDER, hasFileTypeOpenHandler, resolveFileTypeDisplay, AXPSettingsService, AXPLockService, AXP_PROTECTED_ROUTE_GUARDS, AXP_STATUS_PROVIDERS, AXP_MENU_PROVIDER, AXP_SEARCH_PROVIDER, AXP_SETTING_DEFINITION_PROVIDER } from '@acorex-platform/framework-client/common';
|
|
3
|
+
import { AXPEntityBroadcastService, AXPHookService, AXPDataGenerator as AXPDataGenerator$1, AXPDeviceService, AXPExpressionEvaluatorService, AXPDebugService, AXP_FEATURE_DEFINITION_PROVIDER, AXP_HOOK_PROVIDER } from '@acorex-platform/framework-client/core';
|
|
4
|
+
import { AXPSearchCommandProvider, createEntitySearchCommand, AXPFileTypeProviderService, AXP_FILE_TYPE_INFO_PROVIDER, extractRequestErrorInfo, platformErrorI18nKey, AXPFileStorageService, resolveExplorerFileDisplayName, tryOpenFileByCatalogType, createFileTypeOpenContext, FILE_VIEWER_PREVIEW_EXTENSIONS, isFileNameShownInViewer, normalizeDocumentToFileListItem, UploadFromComputerActionProvider, AXP_FILE_ACTION_PROVIDER, hasFileTypeOpenHandler, resolveFileTypeDisplay, AXPSettingsService, AXPLockService, AXP_PROTECTED_ROUTE_GUARDS, AXP_STATUS_PROVIDERS, AXP_MENU_PROVIDER, AXP_SEARCH_PROVIDER, AXP_SETTING_DEFINITION_PROVIDER } from '@acorex-platform/framework-client/common';
|
|
6
5
|
import { AXPSessionService, AXP_PERMISSION_DEFINITION_PROVIDER } from '@acorex-platform/framework-client/auth';
|
|
7
6
|
import * as i0 from '@angular/core';
|
|
8
7
|
import { Injectable, inject, DestroyRef, signal, ChangeDetectionStrategy, Component, NgModule, viewChild, computed, Injector, PLATFORM_ID, input, effect, ViewEncapsulation, untracked, HostListener } from '@angular/core';
|
|
9
|
-
import {
|
|
8
|
+
import { AXPDocumentManagementFeatureKeys, AXPContentDocumentsPermissionKeys, RootConfig, AXPDocumentManagementMenuKeys, AXPDocumentManagementSettings, AXMDocumentManagementCommandKeys } from '@acorex-platform/module-document-management-client/contracts';
|
|
9
|
+
import { AXPCommonPermissionGroupKeys, AXPCommonMenuKeys, AXP_VERSIONING_ERROR_I18N, AXPVersioningField, AXPVersioningStatus, AXPCommonCommandKeys } from '@acorex-platform/module-common-client/contracts';
|
|
10
10
|
import { firstValueFrom, combineLatest } from 'rxjs';
|
|
11
11
|
import { AXPCommandEventsService, AXPCommandService, AXPQueryService, provideCommandSetups } from '@acorex-platform/framework-client/runtime';
|
|
12
12
|
import { AXPWidgetsList, AXPSystemStatusType, AXPStatusProvider, systemStatusToDefinition, AXPPlatformScope, AXPDataGenerator, AXP_QUERY_QUICK_SEARCH_FIELD, runtimeCommandPayloadData, runtimeQueryPayloadData, runtimeQueryCollectionData, AXPRegionalSetting, getSmart, AXP_PLATFORM_ERROR_CODES, resolvePlatformScopeKey, resolvePlatformScopeName } from '@acorex-platform/framework-shared/core';
|
|
@@ -41,7 +41,7 @@ import { AXDialogService } from '@acorex/components/dialog';
|
|
|
41
41
|
import { AXPopupService } from '@acorex/components/popup';
|
|
42
42
|
import { AXPLayoutBuilderService } from '@acorex-platform/framework-client/layout/builder';
|
|
43
43
|
import { unset, castArray, isArray, defaultTo, isEmpty as isEmpty$1, set, get as get$1, isString as isString$1 } from 'lodash';
|
|
44
|
-
import { toDocumentExpirationDate, AXM_DOCUMENT_EXPIRATION_NEAR_DAYS, getDocumentExpirationRemainingDays, AXMDocumentManagementQueryKeys } from '@acorex-platform/module-document-management-client/contracts';
|
|
44
|
+
import { toDocumentExpirationDate, AXM_DOCUMENT_EXPIRATION_NEAR_DAYS, getDocumentExpirationRemainingDays, extractDocumentTypeFileKindNames, AXMDocumentManagementQueryKeys } from '@acorex-platform/module-document-management-client/contracts';
|
|
45
45
|
import { AXToastService } from '@acorex/components/toast';
|
|
46
46
|
import { AXPPageLayoutBaseComponent, AXPPageLayoutBase, AXPPageLayoutComponent } from '@acorex-platform/framework-client/layout/views';
|
|
47
47
|
import * as i1$4 from '@acorex/components/badge';
|
|
@@ -66,26 +66,6 @@ import { AXTooltipModule } from '@acorex/components/tooltip';
|
|
|
66
66
|
import { AXBreadcrumbsModule } from '@acorex/components/breadcrumbs';
|
|
67
67
|
import { takeUntilDestroyed } from '@angular/core/rxjs-interop';
|
|
68
68
|
|
|
69
|
-
//#region ---- Imports ----
|
|
70
|
-
//#endregion
|
|
71
|
-
//#region ---- Manifest Definition ----
|
|
72
|
-
/**
|
|
73
|
-
* Document Management Module Manifest.
|
|
74
|
-
* Defines module metadata, features, and provider references.
|
|
75
|
-
*/
|
|
76
|
-
const DocumentManagementManifest = {
|
|
77
|
-
name: RootConfig.module.name,
|
|
78
|
-
version: '1.0.0',
|
|
79
|
-
title: RootConfig.module.title,
|
|
80
|
-
icon: RootConfig.module.icon,
|
|
81
|
-
i18n: RootConfig.config.i18n,
|
|
82
|
-
type: 'domain',
|
|
83
|
-
domain: 'content-documents',
|
|
84
|
-
// Module dependencies
|
|
85
|
-
dependencies: ['DataManagement'],
|
|
86
|
-
};
|
|
87
|
-
//#endregion
|
|
88
|
-
|
|
89
69
|
//#endregion
|
|
90
70
|
//#region ---- Feature Definition Provider ----
|
|
91
71
|
/**
|
|
@@ -136,6 +116,8 @@ class AXMPermissionDefinitionProvider {
|
|
|
136
116
|
.endPermission()
|
|
137
117
|
.addPermission(keys.MaintainDocuments, `${P}.maintain-documents.title`, `${P}.maintain-documents.description`)
|
|
138
118
|
.endPermission()
|
|
119
|
+
.addPermission(keys.DistributeDocuments, `${P}.distribute-documents.title`, `${P}.distribute-documents.description`)
|
|
120
|
+
.endPermission()
|
|
139
121
|
.addPermission(keys.Setup, `${P}.setup.title`, `${P}.setup.description`)
|
|
140
122
|
.endPermission()
|
|
141
123
|
.endGroup();
|
|
@@ -1345,30 +1327,17 @@ function folderColorToRgbChannels(color) {
|
|
|
1345
1327
|
|
|
1346
1328
|
//#region ---- Document type accept helpers ----
|
|
1347
1329
|
/**
|
|
1348
|
-
* Extracts logical file type names from a document type's `type.
|
|
1349
|
-
* Supports
|
|
1330
|
+
* Extracts logical file type names from a document type's `type` field.
|
|
1331
|
+
* Supports name arrays, select option rows, and legacy `{ selectedItems, context }`.
|
|
1350
1332
|
*/
|
|
1351
1333
|
function buildFileTypeNamesFromDocumentType(documentType) {
|
|
1352
|
-
|
|
1353
|
-
?.selectedItems ?? [];
|
|
1354
|
-
return Array.from(new Set(selectedItems
|
|
1355
|
-
.map((item) => item?.name)
|
|
1356
|
-
.filter((name) => typeof name === 'string' && name.trim().length > 0)
|
|
1357
|
-
.map((name) => {
|
|
1358
|
-
const dot = name.indexOf('.');
|
|
1359
|
-
return dot > 0 ? name.slice(0, dot) : name;
|
|
1360
|
-
})
|
|
1361
|
-
.filter((name) => !name.startsWith('conversation-'))));
|
|
1334
|
+
return extractDocumentTypeFileKindNames(documentType);
|
|
1362
1335
|
}
|
|
1363
1336
|
/**
|
|
1364
1337
|
* Legacy extension-based accept string (fallback when file type catalog is unavailable).
|
|
1365
1338
|
*/
|
|
1366
1339
|
function buildAcceptFromDocumentTypeExtensions(documentType) {
|
|
1367
|
-
const
|
|
1368
|
-
?.selectedItems ?? [];
|
|
1369
|
-
const extensions = Array.from(new Set(selectedItems
|
|
1370
|
-
.map((item) => item?.name)
|
|
1371
|
-
.filter((name) => typeof name === 'string' && name.trim().length > 0)
|
|
1340
|
+
const extensions = Array.from(new Set(buildFileTypeNamesFromDocumentType(documentType)
|
|
1372
1341
|
.map((name) => {
|
|
1373
1342
|
const ext = resolveFileChooserExtension(name);
|
|
1374
1343
|
return ext ? `.${ext}` : '';
|
|
@@ -1393,6 +1362,30 @@ function buildAcceptFromDocumentType(documentType) {
|
|
|
1393
1362
|
}
|
|
1394
1363
|
//#endregion
|
|
1395
1364
|
|
|
1365
|
+
//#region ----- Helpers -----
|
|
1366
|
+
function isTruthyFlag(value) {
|
|
1367
|
+
return value === true || value === 'true' || value === 1 || value === '1';
|
|
1368
|
+
}
|
|
1369
|
+
function initialDocumentLifecycleStatus(documentType) {
|
|
1370
|
+
if (isTruthyFlag(documentType?.requiresReview)) {
|
|
1371
|
+
return {
|
|
1372
|
+
statusId: 'draft',
|
|
1373
|
+
status: { id: 'draft', title: '@general:statuses.draft.title' },
|
|
1374
|
+
};
|
|
1375
|
+
}
|
|
1376
|
+
return {
|
|
1377
|
+
statusId: 'approved',
|
|
1378
|
+
status: { id: 'approved', title: '@general:statuses.approved.title' },
|
|
1379
|
+
};
|
|
1380
|
+
}
|
|
1381
|
+
function folderParentId(parentId) {
|
|
1382
|
+
if (typeof parentId !== 'string') {
|
|
1383
|
+
return undefined;
|
|
1384
|
+
}
|
|
1385
|
+
const trimmed = parentId.trim();
|
|
1386
|
+
return trimmed && trimmed !== 'virtual' ? trimmed : undefined;
|
|
1387
|
+
}
|
|
1388
|
+
//#endregion
|
|
1396
1389
|
//#region ---- Document dialog service ----
|
|
1397
1390
|
class AXMDocumentDialogService {
|
|
1398
1391
|
constructor() {
|
|
@@ -1405,12 +1398,15 @@ class AXMDocumentDialogService {
|
|
|
1405
1398
|
this.documentData = this.entityService
|
|
1406
1399
|
.withEntity(RootConfig.module.name, RootConfig.entities.document.name)
|
|
1407
1400
|
.data();
|
|
1401
|
+
this.documentVersionData = this.entityService
|
|
1402
|
+
.withEntity(RootConfig.module.name, RootConfig.entities.documentVersion.name)
|
|
1403
|
+
.data();
|
|
1408
1404
|
this.documentTypeService = this.entityService.withEntity(RootConfig.module.name, RootConfig.entities.documentType.name).data();
|
|
1409
1405
|
}
|
|
1410
1406
|
//#endregion
|
|
1411
1407
|
//#region ---- Public API ----
|
|
1412
1408
|
async openAttachmentDialog(title, data) {
|
|
1413
|
-
const { documentType, files, parentId, metaData, documentId, version, showMeta = true } = data ?? {};
|
|
1409
|
+
const { documentType, files, parentId, metaData, documentId, versionDraftId, version, showMeta = true } = data ?? {};
|
|
1414
1410
|
const { accept } = await buildFileChooserOptionsFromDocumentType(documentType, this.fileService);
|
|
1415
1411
|
const fileList = Array.isArray(files) ? files : [];
|
|
1416
1412
|
const enableExpiration = !!documentType?.enableExpiration;
|
|
@@ -1504,15 +1500,29 @@ class AXMDocumentDialogService {
|
|
|
1504
1500
|
if (documentId) {
|
|
1505
1501
|
dialogRef.setLoading(true);
|
|
1506
1502
|
try {
|
|
1507
|
-
const
|
|
1508
|
-
if (
|
|
1509
|
-
const
|
|
1510
|
-
|
|
1511
|
-
|
|
1512
|
-
|
|
1503
|
+
const meta = showMeta ? metaDataFormWithExpiration(ctx, 0) : undefined;
|
|
1504
|
+
if (versionDraftId) {
|
|
1505
|
+
const draftPayload = {};
|
|
1506
|
+
if (meta) {
|
|
1507
|
+
draftPayload.metaDataForm = meta;
|
|
1508
|
+
if (meta.expirationDate != null) {
|
|
1509
|
+
draftPayload.expirationDate = meta.expirationDate;
|
|
1510
|
+
}
|
|
1513
1511
|
}
|
|
1512
|
+
await this.documentVersionData.update(String(versionDraftId), draftPayload);
|
|
1513
|
+
}
|
|
1514
|
+
else {
|
|
1515
|
+
const hostPayload = {
|
|
1516
|
+
version: (version ?? 0) + 1,
|
|
1517
|
+
};
|
|
1518
|
+
if (meta) {
|
|
1519
|
+
hostPayload.metaDataForm = meta;
|
|
1520
|
+
if (meta.expirationDate != null) {
|
|
1521
|
+
hostPayload.expirationDate = meta.expirationDate;
|
|
1522
|
+
}
|
|
1523
|
+
}
|
|
1524
|
+
await this.documentData.update(documentId, hostPayload);
|
|
1514
1525
|
}
|
|
1515
|
-
await this.documentData.update(documentId, updatePayload);
|
|
1516
1526
|
return {
|
|
1517
1527
|
data: {
|
|
1518
1528
|
cancel: false,
|
|
@@ -1540,9 +1550,10 @@ class AXMDocumentDialogService {
|
|
|
1540
1550
|
title: f?.title ?? f?.name,
|
|
1541
1551
|
description: f?.description,
|
|
1542
1552
|
documentType,
|
|
1543
|
-
parentId,
|
|
1544
|
-
|
|
1545
|
-
|
|
1553
|
+
parentId: folderParentId(parentId) ?? parentId,
|
|
1554
|
+
...initialDocumentLifecycleStatus(documentType),
|
|
1555
|
+
versioningEnabled: isTruthyFlag(documentType?.enableVersioning),
|
|
1556
|
+
distributionEnabled: isTruthyFlag(documentType?.enableDistributionCapability),
|
|
1546
1557
|
version: (version ?? 0) + 1,
|
|
1547
1558
|
metaDataForm: meta,
|
|
1548
1559
|
...(meta?.expirationDate != null ? { expirationDate: meta.expirationDate } : {}),
|
|
@@ -1708,7 +1719,8 @@ class AXMDocumentDialogService {
|
|
|
1708
1719
|
//#region ---- Private helpers ----
|
|
1709
1720
|
async notifyAttachFailed(error) {
|
|
1710
1721
|
const info = extractRequestErrorInfo(error);
|
|
1711
|
-
const contentKey =
|
|
1722
|
+
const contentKey = (info?.code ? AXP_VERSIONING_ERROR_I18N[info.code] : undefined) ??
|
|
1723
|
+
platformErrorI18nKey(info?.code) ??
|
|
1712
1724
|
'@document-management:dialogs.attach-file.messages.upload-failed';
|
|
1713
1725
|
const title = await this.translateService.translateAsync('@general:messages.generic.error.title');
|
|
1714
1726
|
const content = await this.translateService.translateAsync(contentKey);
|
|
@@ -1733,6 +1745,10 @@ class DocumentAttachmentsService {
|
|
|
1733
1745
|
.data();
|
|
1734
1746
|
this.documentDialog = inject(AXMDocumentDialogService);
|
|
1735
1747
|
this.translateService = inject(AXTranslationService);
|
|
1748
|
+
this.toastService = inject(AXToastService);
|
|
1749
|
+
this.documentVersionData = this.entityService
|
|
1750
|
+
.withEntity(RootConfig.module.name, RootConfig.entities.documentVersion.name)
|
|
1751
|
+
.data();
|
|
1736
1752
|
}
|
|
1737
1753
|
async attachFile(fileType, options) {
|
|
1738
1754
|
// Validate input data
|
|
@@ -1760,6 +1776,25 @@ class DocumentAttachmentsService {
|
|
|
1760
1776
|
throw new Error('File not found');
|
|
1761
1777
|
}
|
|
1762
1778
|
const documentTypeEntity = await this.resolveFileType(file.documentType);
|
|
1779
|
+
if (file.versioningEnabled) {
|
|
1780
|
+
const draft = await this.findOpenVersionDraft(fileId);
|
|
1781
|
+
if (!draft) {
|
|
1782
|
+
await this.notifyHostContentLocked();
|
|
1783
|
+
return false;
|
|
1784
|
+
}
|
|
1785
|
+
const draftRow = await this.documentVersionData.byKey(draft.id);
|
|
1786
|
+
const popupData = {
|
|
1787
|
+
documentType: documentTypeEntity,
|
|
1788
|
+
files: [draftRow?.fileInfo ?? file.fileInfo],
|
|
1789
|
+
parentId: options?.folderId ?? '',
|
|
1790
|
+
metaData: draftRow?.metaDataForm ?? file.metaDataForm,
|
|
1791
|
+
documentId: fileId,
|
|
1792
|
+
versionDraftId: draft.id,
|
|
1793
|
+
version: file.version,
|
|
1794
|
+
};
|
|
1795
|
+
const result = await this.documentDialog.openAttachmentDialog(`Edit ${file.name}`, popupData);
|
|
1796
|
+
return this.handlePopupResult(result);
|
|
1797
|
+
}
|
|
1763
1798
|
const popupData = {
|
|
1764
1799
|
documentType: documentTypeEntity,
|
|
1765
1800
|
files: [file.fileInfo],
|
|
@@ -1772,8 +1807,8 @@ class DocumentAttachmentsService {
|
|
|
1772
1807
|
return this.handlePopupResult(result);
|
|
1773
1808
|
}
|
|
1774
1809
|
/**
|
|
1775
|
-
*
|
|
1776
|
-
*
|
|
1810
|
+
* When versioning is on, writes the new file onto the open draft (creates one if needed).
|
|
1811
|
+
* When versioning is off, overwrites the host in place (Published v1 is synced by middleware).
|
|
1777
1812
|
*/
|
|
1778
1813
|
async uploadNewVersion(fileId, options) {
|
|
1779
1814
|
const document = await this.documentData.byKey(fileId);
|
|
@@ -1788,7 +1823,6 @@ class DocumentAttachmentsService {
|
|
|
1788
1823
|
if (fileItems.length === 0) {
|
|
1789
1824
|
return false;
|
|
1790
1825
|
}
|
|
1791
|
-
// Open a lightweight dialog to edit metadata (no auto-save); then apply update with new file
|
|
1792
1826
|
const result = await this.documentDialog.openAttachmentDialogWithoutSave('@document-management:dialogs.manage-version.upload-new-version', {
|
|
1793
1827
|
documentType: documentTypeEntity,
|
|
1794
1828
|
files: fileItems,
|
|
@@ -1799,18 +1833,57 @@ class DocumentAttachmentsService {
|
|
|
1799
1833
|
if (result?.data?.cancel) {
|
|
1800
1834
|
return false;
|
|
1801
1835
|
}
|
|
1802
|
-
// When metadata is hidden, do not change it
|
|
1803
1836
|
const metaDataForm = document.metaDataForm;
|
|
1804
1837
|
const newName = fileItems[0]?.name ?? document.name;
|
|
1805
|
-
|
|
1838
|
+
const payload = {
|
|
1806
1839
|
fileInfo: fileItems[0],
|
|
1807
|
-
version: (document.version ?? 0) + 1,
|
|
1808
1840
|
metaDataForm,
|
|
1809
1841
|
name: newName,
|
|
1810
1842
|
title: newName,
|
|
1843
|
+
};
|
|
1844
|
+
if (document.versioningEnabled) {
|
|
1845
|
+
let draft = await this.findOpenVersionDraft(fileId);
|
|
1846
|
+
if (!draft) {
|
|
1847
|
+
const createdId = await this.documentVersionData.create({
|
|
1848
|
+
sourceId: fileId,
|
|
1849
|
+
});
|
|
1850
|
+
draft = { id: String(createdId) };
|
|
1851
|
+
}
|
|
1852
|
+
await this.documentVersionData.update(draft.id, payload);
|
|
1853
|
+
return true;
|
|
1854
|
+
}
|
|
1855
|
+
await this.documentData.update(fileId, {
|
|
1856
|
+
...payload,
|
|
1857
|
+
version: (document.version ?? 0) + 1,
|
|
1811
1858
|
});
|
|
1812
1859
|
return true;
|
|
1813
1860
|
}
|
|
1861
|
+
async findOpenVersionDraft(documentId) {
|
|
1862
|
+
const result = await this.documentVersionData.query({
|
|
1863
|
+
skip: 0,
|
|
1864
|
+
take: 1,
|
|
1865
|
+
filter: {
|
|
1866
|
+
logic: 'and',
|
|
1867
|
+
filters: [
|
|
1868
|
+
{ field: AXPVersioningField.SourceId, operator: { type: 'equal' }, value: documentId },
|
|
1869
|
+
{
|
|
1870
|
+
field: AXPVersioningField.VersioningStatus,
|
|
1871
|
+
operator: { type: 'equal' },
|
|
1872
|
+
value: AXPVersioningStatus.Draft,
|
|
1873
|
+
},
|
|
1874
|
+
],
|
|
1875
|
+
},
|
|
1876
|
+
});
|
|
1877
|
+
const row = result?.items?.[0];
|
|
1878
|
+
return row?.id ? { id: String(row.id) } : null;
|
|
1879
|
+
}
|
|
1880
|
+
async notifyHostContentLocked() {
|
|
1881
|
+
this.toastService.show({
|
|
1882
|
+
color: 'warning',
|
|
1883
|
+
title: await this.translateService.translateAsync('@general:messages.generic.error.title'),
|
|
1884
|
+
content: await this.translateService.translateAsync('@general:errors.versioning.host-content-locked'),
|
|
1885
|
+
});
|
|
1886
|
+
}
|
|
1814
1887
|
validateAttachmentOptions(options) {
|
|
1815
1888
|
if (!((options?.entityId && options?.entityRecordId) || options?.folderId)) {
|
|
1816
1889
|
throw new Error('You must provide either both entityId and entityRecordId, or folderId.');
|
|
@@ -1908,7 +1981,6 @@ class AXMDocumentManagerServiceImpl extends AXMDocumentManagerService {
|
|
|
1908
1981
|
this.layoutBuilder = inject(AXPLayoutBuilderService);
|
|
1909
1982
|
this.fileViewerService = inject(AXPFileViewerService);
|
|
1910
1983
|
this.attachmentsService = inject(DocumentAttachmentsService);
|
|
1911
|
-
this.filterMiddlewareService = inject(AXPFilterOperatorMiddlewareService);
|
|
1912
1984
|
this.hooks = inject(AXPHookService, { optional: true });
|
|
1913
1985
|
//#endregion
|
|
1914
1986
|
//#region ---- Private Properties ----
|
|
@@ -2022,6 +2094,13 @@ class AXMDocumentManagerServiceImpl extends AXMDocumentManagerService {
|
|
|
2022
2094
|
metaDataForm: file.metaDataForm ?? undefined,
|
|
2023
2095
|
documentTypes: file.documentType ? [file.documentType] : [],
|
|
2024
2096
|
expirationDate: toDocumentExpirationDate(file.expirationDate),
|
|
2097
|
+
version: file.version,
|
|
2098
|
+
versionId: file.versionId,
|
|
2099
|
+
versioningEnabled: file.versioningEnabled === true ||
|
|
2100
|
+
file.versioningEnabled === 'true',
|
|
2101
|
+
distributionEnabled: file.distributionEnabled === true ||
|
|
2102
|
+
file.distributionEnabled === 'true' ||
|
|
2103
|
+
file.documentType?.enableDistributionCapability === true,
|
|
2025
2104
|
};
|
|
2026
2105
|
return node;
|
|
2027
2106
|
}
|
|
@@ -2596,9 +2675,12 @@ class AXMDocumentManagerServiceImpl extends AXMDocumentManagerService {
|
|
|
2596
2675
|
name = rawTitle != null && rawTitle !== '' ? this.translate.resolve(rawTitle) : 'Folder';
|
|
2597
2676
|
}
|
|
2598
2677
|
}
|
|
2678
|
+
const displayName = typeof name === 'string' && name.trim()
|
|
2679
|
+
? name.trim()
|
|
2680
|
+
: this.translate.resolve(name)?.trim() || (targetType === 'file' ? 'Document' : 'Folder');
|
|
2599
2681
|
const payload = {
|
|
2600
2682
|
folderId,
|
|
2601
|
-
name,
|
|
2683
|
+
name: displayName,
|
|
2602
2684
|
};
|
|
2603
2685
|
if (targetType === 'file') {
|
|
2604
2686
|
payload['targetDocumentId'] = targetId;
|
|
@@ -2608,10 +2690,21 @@ class AXMDocumentManagerServiceImpl extends AXMDocumentManagerService {
|
|
|
2608
2690
|
}
|
|
2609
2691
|
const created = this.unwrapBackendPayload(await this.shortcutData.create(payload));
|
|
2610
2692
|
const createdId = this.resolveCreatedEntityId(created);
|
|
2611
|
-
|
|
2612
|
-
|
|
2613
|
-
|
|
2614
|
-
|
|
2693
|
+
try {
|
|
2694
|
+
const shortcut = this.unwrapBackendPayload(await this.shortcutData.byKey(createdId));
|
|
2695
|
+
if (shortcut) {
|
|
2696
|
+
return this.mapShortcutToNode(shortcut);
|
|
2697
|
+
}
|
|
2698
|
+
}
|
|
2699
|
+
catch {
|
|
2700
|
+
// Insert succeeded; a follow-up getOne can be null (folder-id probe middleware).
|
|
2701
|
+
}
|
|
2702
|
+
return this.mapShortcutToNode({
|
|
2703
|
+
id: createdId,
|
|
2704
|
+
folderId,
|
|
2705
|
+
name: displayName,
|
|
2706
|
+
...(targetType === 'file' ? { targetDocumentId: targetId } : { targetFolderId: targetId }),
|
|
2707
|
+
});
|
|
2615
2708
|
}
|
|
2616
2709
|
/**
|
|
2617
2710
|
* Deletes a shortcut by its entity id.
|
|
@@ -2692,7 +2785,7 @@ class AXMDocumentManagerServiceImpl extends AXMDocumentManagerService {
|
|
|
2692
2785
|
* Opens the drive picker popup with consistent layout (large dialog, optional embedded header).
|
|
2693
2786
|
*/
|
|
2694
2787
|
async openDriveFolderPicker(options) {
|
|
2695
|
-
const comp = (await import('./acorex-platform-module-document-management-client-drive-choose.component-
|
|
2788
|
+
const comp = (await import('./acorex-platform-module-document-management-client-drive-choose.component-BHiNuDvr.mjs')).AXMDocumentDriveChooseComponent;
|
|
2696
2789
|
const popup = await this.popupService.open(comp, {
|
|
2697
2790
|
title: await this.translate.translateAsync(options.titleKey),
|
|
2698
2791
|
size: 'lg',
|
|
@@ -2773,8 +2866,13 @@ class AXMDocumentManagerServiceImpl extends AXMDocumentManagerService {
|
|
|
2773
2866
|
parentId: selectedFolder.id,
|
|
2774
2867
|
fileInfo: fileListItem,
|
|
2775
2868
|
documentType: options.node.documentTypes[0],
|
|
2776
|
-
statusId: '
|
|
2777
|
-
status:
|
|
2869
|
+
statusId: originalFile.statusId ?? 'approved',
|
|
2870
|
+
status: originalFile.status ?? {
|
|
2871
|
+
id: originalFile.statusId ?? 'approved',
|
|
2872
|
+
title: '@general:statuses.approved.title',
|
|
2873
|
+
},
|
|
2874
|
+
versioningEnabled: originalFile.versioningEnabled === true,
|
|
2875
|
+
distributionEnabled: originalFile.distributionEnabled === true,
|
|
2778
2876
|
});
|
|
2779
2877
|
}
|
|
2780
2878
|
return true;
|
|
@@ -2910,6 +3008,33 @@ class AXMDocumentManagerServiceImpl extends AXMDocumentManagerService {
|
|
|
2910
3008
|
async uploadNewVersion(node) {
|
|
2911
3009
|
return await this.attachmentsService.uploadNewVersion(node.id);
|
|
2912
3010
|
}
|
|
3011
|
+
async runNewVersionFlow(node) {
|
|
3012
|
+
const created = await this.commandService.execute(AXPCommonCommandKeys.Versioning.CreateDraft, {
|
|
3013
|
+
...this.documentVersioningInput(node),
|
|
3014
|
+
});
|
|
3015
|
+
if (!created?.success) {
|
|
3016
|
+
return;
|
|
3017
|
+
}
|
|
3018
|
+
const uploadNext = await this.confirmVersioningContinue('@document-management:dialogs.manage-version.continue-upload.title', '@document-management:dialogs.manage-version.continue-upload.message');
|
|
3019
|
+
if (!uploadNext) {
|
|
3020
|
+
return;
|
|
3021
|
+
}
|
|
3022
|
+
const uploaded = await this.uploadNewVersion(node);
|
|
3023
|
+
if (!uploaded) {
|
|
3024
|
+
return;
|
|
3025
|
+
}
|
|
3026
|
+
await this.continueToPublishVersion(node);
|
|
3027
|
+
}
|
|
3028
|
+
async runUploadNewVersionFlow(node) {
|
|
3029
|
+
const uploaded = await this.uploadNewVersion(node);
|
|
3030
|
+
if (!uploaded) {
|
|
3031
|
+
return;
|
|
3032
|
+
}
|
|
3033
|
+
await this.continueToPublishVersion(node);
|
|
3034
|
+
}
|
|
3035
|
+
async findOpenVersionDraft(documentId) {
|
|
3036
|
+
return this.attachmentsService.findOpenVersionDraft(documentId);
|
|
3037
|
+
}
|
|
2913
3038
|
/**
|
|
2914
3039
|
* Opens version history popup using common version-history command.
|
|
2915
3040
|
* For shortcut nodes, shows history of the target document.
|
|
@@ -2922,6 +3047,29 @@ class AXMDocumentManagerServiceImpl extends AXMDocumentManagerService {
|
|
|
2922
3047
|
},
|
|
2923
3048
|
});
|
|
2924
3049
|
}
|
|
3050
|
+
async continueToPublishVersion(node) {
|
|
3051
|
+
if (!node.versioningEnabled) {
|
|
3052
|
+
return;
|
|
3053
|
+
}
|
|
3054
|
+
const publishNext = await this.confirmVersioningContinue('@document-management:dialogs.manage-version.continue-publish.title', '@document-management:dialogs.manage-version.continue-publish.message');
|
|
3055
|
+
if (!publishNext) {
|
|
3056
|
+
return;
|
|
3057
|
+
}
|
|
3058
|
+
await this.commandService.execute(AXPCommonCommandKeys.Versioning.Publish, {
|
|
3059
|
+
...this.documentVersioningInput(node),
|
|
3060
|
+
skipConfirm: true,
|
|
3061
|
+
});
|
|
3062
|
+
}
|
|
3063
|
+
async confirmVersioningContinue(titleKey, messageKey) {
|
|
3064
|
+
const dialogResult = await this.dialogService.confirm(await this.translate.translateAsync(titleKey), await this.translate.translateAsync(messageKey), 'primary', 'horizontal', false, 'cancel');
|
|
3065
|
+
return dialogResult.result === true;
|
|
3066
|
+
}
|
|
3067
|
+
documentVersioningInput(node) {
|
|
3068
|
+
return {
|
|
3069
|
+
refId: node.id,
|
|
3070
|
+
refType: `${RootConfig.module.name}.${RootConfig.entities.document.name}`,
|
|
3071
|
+
};
|
|
3072
|
+
}
|
|
2925
3073
|
//#region ---- Dialog Operations ----
|
|
2926
3074
|
/**
|
|
2927
3075
|
* Shows share dialog for a node
|
|
@@ -2998,6 +3146,26 @@ class AXMDocumentManagerServiceImpl extends AXMDocumentManagerService {
|
|
|
2998
3146
|
mapDocumentTypesForPicker(items) {
|
|
2999
3147
|
return castArray(items ?? []).map((it) => this.toDocumentTypePickerRow(it));
|
|
3000
3148
|
}
|
|
3149
|
+
/** Folder dialogs need a dense array; AXDataSource cache slots are undefined and break `pickerKey`. */
|
|
3150
|
+
async loadDocumentTypesForFolderDialog(allowedNames) {
|
|
3151
|
+
if (isArray(allowedNames) && allowedNames.length === 0) {
|
|
3152
|
+
return [];
|
|
3153
|
+
}
|
|
3154
|
+
const res = await this.documentTypeService.query({
|
|
3155
|
+
skip: 0,
|
|
3156
|
+
take: 1000,
|
|
3157
|
+
...(isArray(allowedNames)
|
|
3158
|
+
? {
|
|
3159
|
+
filter: {
|
|
3160
|
+
field: 'name',
|
|
3161
|
+
operator: { type: 'in' },
|
|
3162
|
+
value: allowedNames,
|
|
3163
|
+
},
|
|
3164
|
+
}
|
|
3165
|
+
: {}),
|
|
3166
|
+
});
|
|
3167
|
+
return this.mapDocumentTypesForPicker(res?.items ?? []);
|
|
3168
|
+
}
|
|
3001
3169
|
toDocumentTypePickerRow(item) {
|
|
3002
3170
|
const row = (item != null && typeof item === 'object' ? item : { name: item, id: item });
|
|
3003
3171
|
return {
|
|
@@ -3039,7 +3207,7 @@ class AXMDocumentManagerServiceImpl extends AXMDocumentManagerService {
|
|
|
3039
3207
|
* the catalog are appended to the data source so the select still shows them as selected instead
|
|
3040
3208
|
* of silently dropping them.
|
|
3041
3209
|
*
|
|
3042
|
-
* With no assignment
|
|
3210
|
+
* With no assignment the catalog entry named `any` is preselected when present (edit fallback).
|
|
3043
3211
|
*/
|
|
3044
3212
|
resolveFolderDialogDocumentTypes(catalog, assigned) {
|
|
3045
3213
|
if (!isArray(assigned) || assigned.length === 0) {
|
|
@@ -3050,8 +3218,8 @@ class AXMDocumentManagerServiceImpl extends AXMDocumentManagerService {
|
|
|
3050
3218
|
const selected = assigned.map((entry) => {
|
|
3051
3219
|
const row = this.toDocumentTypePickerRow(entry);
|
|
3052
3220
|
const id = row['id'] ?? row['documentTypeId'];
|
|
3053
|
-
const match = dataSource.find((it) => (row.pickerKey !== '' && it
|
|
3054
|
-
(id != null && it['id'] != null && String(it['id']) === String(id)));
|
|
3221
|
+
const match = dataSource.find((it) => (row.pickerKey !== '' && it?.pickerKey === row.pickerKey) ||
|
|
3222
|
+
(id != null && it?.['id'] != null && String(it['id']) === String(id)));
|
|
3055
3223
|
if (match) {
|
|
3056
3224
|
return match;
|
|
3057
3225
|
}
|
|
@@ -3075,7 +3243,7 @@ class AXMDocumentManagerServiceImpl extends AXMDocumentManagerService {
|
|
|
3075
3243
|
if (value != null && typeof value === 'object') {
|
|
3076
3244
|
return this.toDocumentTypePayload(value);
|
|
3077
3245
|
}
|
|
3078
|
-
const match = dataSource.find((it) => it
|
|
3246
|
+
const match = dataSource.find((it) => it?.pickerKey === String(value));
|
|
3079
3247
|
return this.toDocumentTypePayload(match ?? { name: value, title: value, id: value });
|
|
3080
3248
|
}
|
|
3081
3249
|
/**
|
|
@@ -3196,19 +3364,9 @@ class AXMDocumentManagerServiceImpl extends AXMDocumentManagerService {
|
|
|
3196
3364
|
* @param options.allowedDocumentTypeNames When set, only these document type names can be selected
|
|
3197
3365
|
*/
|
|
3198
3366
|
async showCreateFolderDialog(parentId, options) {
|
|
3199
|
-
const res = await this.documentTypeService.query({ skip: 0, take: 1000 });
|
|
3200
|
-
let items = this.mapDocumentTypesForPicker(res?.items ?? []);
|
|
3201
3367
|
const allowedNames = options?.allowedDocumentTypeNames;
|
|
3202
|
-
|
|
3203
|
-
|
|
3204
|
-
items = [];
|
|
3205
|
-
}
|
|
3206
|
-
else {
|
|
3207
|
-
const set = new Set(allowedNames);
|
|
3208
|
-
items = items.filter((it) => it.pickerKey !== '' && set.has(it.pickerKey));
|
|
3209
|
-
}
|
|
3210
|
-
}
|
|
3211
|
-
const { selected: defaultDocumentTypes } = this.resolveFolderDialogDocumentTypes(items, []);
|
|
3368
|
+
const catalog = await this.loadDocumentTypesForFolderDialog(allowedNames);
|
|
3369
|
+
const { selected: defaultDocumentTypes } = this.resolveFolderDialogDocumentTypes(catalog, null);
|
|
3212
3370
|
const result = await this.layoutBuilder
|
|
3213
3371
|
.create()
|
|
3214
3372
|
.dialog((dialog) => {
|
|
@@ -3249,7 +3407,7 @@ class AXMDocumentManagerServiceImpl extends AXMDocumentManagerService {
|
|
|
3249
3407
|
field.selectBox({
|
|
3250
3408
|
valueField: 'pickerKey',
|
|
3251
3409
|
textField: 'displayTitle',
|
|
3252
|
-
dataSource:
|
|
3410
|
+
dataSource: catalog,
|
|
3253
3411
|
multiple: true,
|
|
3254
3412
|
allowSearch: true,
|
|
3255
3413
|
validations: [{ rule: 'required' }],
|
|
@@ -3274,7 +3432,7 @@ class AXMDocumentManagerServiceImpl extends AXMDocumentManagerService {
|
|
|
3274
3432
|
if (selectedTypesRaw.length === 0) {
|
|
3275
3433
|
return null;
|
|
3276
3434
|
}
|
|
3277
|
-
const selectedTypes = selectedTypesRaw.map((v) => this.resolveSelectedDocumentType(v,
|
|
3435
|
+
const selectedTypes = selectedTypesRaw.map((v) => this.resolveSelectedDocumentType(v, catalog));
|
|
3278
3436
|
try {
|
|
3279
3437
|
const folder = await this.createFolder({
|
|
3280
3438
|
title: form.title,
|
|
@@ -3703,7 +3861,8 @@ const AXM_DRIVE_FILE_CHOOSER_PROVIDER = {
|
|
|
3703
3861
|
const scope = defaultTo(context.options['scope'], AXPPlatformScope.Tenant);
|
|
3704
3862
|
const multiple = Boolean(context.options['multiple']);
|
|
3705
3863
|
const browseMode = defaultTo(context.options['browseMode'], 'file');
|
|
3706
|
-
const
|
|
3864
|
+
const accept = context.options['accept'];
|
|
3865
|
+
const component = (await import('./acorex-platform-module-document-management-client-drive-choose.component-BHiNuDvr.mjs')).AXMDocumentDriveChooseComponent;
|
|
3707
3866
|
const popup = await popupService.open(component, {
|
|
3708
3867
|
title: await translate.translateAsync('@document-management:actions.choose-from-drive'),
|
|
3709
3868
|
size: 'lg',
|
|
@@ -3712,6 +3871,7 @@ const AXM_DRIVE_FILE_CHOOSER_PROVIDER = {
|
|
|
3712
3871
|
selectionMode: multiple ? 'multiple' : 'single',
|
|
3713
3872
|
browseMode,
|
|
3714
3873
|
hideHeader: true,
|
|
3874
|
+
accept,
|
|
3715
3875
|
},
|
|
3716
3876
|
});
|
|
3717
3877
|
if (!popup.data?.result) {
|
|
@@ -3973,6 +4133,7 @@ const UploadFromDriveActionProvider = {
|
|
|
3973
4133
|
multiple: payload.options?.multiple ?? true,
|
|
3974
4134
|
scope: AXPPlatformScope.Tenant,
|
|
3975
4135
|
browseMode: 'file',
|
|
4136
|
+
accept: payload.options?.accept,
|
|
3976
4137
|
},
|
|
3977
4138
|
items: [],
|
|
3978
4139
|
});
|
|
@@ -4331,6 +4492,28 @@ const documentPlugin = {
|
|
|
4331
4492
|
},
|
|
4332
4493
|
};
|
|
4333
4494
|
|
|
4495
|
+
//#region ----- Types -----
|
|
4496
|
+
//#endregion
|
|
4497
|
+
//#region ----- Public API -----
|
|
4498
|
+
/**
|
|
4499
|
+
* Published host version for explorer display. Only when versioning is on.
|
|
4500
|
+
* Missing/invalid numbers fall back to 1 (middleware stamps v1 on create).
|
|
4501
|
+
*/
|
|
4502
|
+
function resolveDocumentVersionNumber(source) {
|
|
4503
|
+
if (source.type !== 'file' || source.storageType === 'shortcut' || source.isShortcut) {
|
|
4504
|
+
return null;
|
|
4505
|
+
}
|
|
4506
|
+
if (source.versioningEnabled !== true) {
|
|
4507
|
+
return null;
|
|
4508
|
+
}
|
|
4509
|
+
const n = Number(source.version);
|
|
4510
|
+
if (Number.isFinite(n) && n > 0) {
|
|
4511
|
+
return n;
|
|
4512
|
+
}
|
|
4513
|
+
return 1;
|
|
4514
|
+
}
|
|
4515
|
+
//#endregion
|
|
4516
|
+
|
|
4334
4517
|
function withMenuItemCheck(item, isSelected) {
|
|
4335
4518
|
return isSelected ? { ...item, suffix: { text: '✓' } } : item;
|
|
4336
4519
|
}
|
|
@@ -4342,6 +4525,16 @@ function nodeModifiedTime(node) {
|
|
|
4342
4525
|
const time = raw instanceof Date ? raw.getTime() : new Date(raw).getTime();
|
|
4343
4526
|
return Number.isNaN(time) ? 0 : time;
|
|
4344
4527
|
}
|
|
4528
|
+
/**
|
|
4529
|
+
* User/tenant drive roots are system (cannot be deleted or moved) but users may create
|
|
4530
|
+
* children under those roots. Other system folders (Users, Entity, type folders) stay closed.
|
|
4531
|
+
*/
|
|
4532
|
+
function canCreateFolderUnder(folder, scopeRootId) {
|
|
4533
|
+
if (!folder?.isSystem) {
|
|
4534
|
+
return true;
|
|
4535
|
+
}
|
|
4536
|
+
return Boolean(scopeRootId && folder.id === scopeRootId);
|
|
4537
|
+
}
|
|
4345
4538
|
/** Explorer toolbar layout prefs are per-user UI state (IndexedDB user scope). */
|
|
4346
4539
|
const DOCUMENT_EXPLORER_LAYOUT_SETTINGS_SCOPE = AXPPlatformScope.User;
|
|
4347
4540
|
const AXPDocumentExplorerViewModel = signalStore({ providedIn: 'root' }, withState(() => ({
|
|
@@ -4376,6 +4569,8 @@ const AXPDocumentExplorerViewModel = signalStore({ providedIn: 'root' }, withSta
|
|
|
4376
4569
|
fileTypes: [],
|
|
4377
4570
|
/** Current file type filter key: 'all' or a file type name from fileTypes. */
|
|
4378
4571
|
fileTypeFilter: 'all',
|
|
4572
|
+
/** Optional HTML accept string (same as device file input) to hide non-matching files. */
|
|
4573
|
+
acceptFilter: '',
|
|
4379
4574
|
// Detail Panel State
|
|
4380
4575
|
detailPanel: false,
|
|
4381
4576
|
/** When true, folders and files render in separate labeled sections. */
|
|
@@ -4401,18 +4596,23 @@ const AXPDocumentExplorerViewModel = signalStore({ providedIn: 'root' }, withSta
|
|
|
4401
4596
|
/** Files to display: all files when filter is 'all', otherwise only files whose extension matches the selected type. */
|
|
4402
4597
|
filteredFiles: computed(() => {
|
|
4403
4598
|
const filter = store.fileTypeFilter();
|
|
4404
|
-
const
|
|
4405
|
-
|
|
4406
|
-
|
|
4407
|
-
|
|
4408
|
-
|
|
4409
|
-
|
|
4410
|
-
|
|
4411
|
-
|
|
4412
|
-
|
|
4413
|
-
|
|
4414
|
-
|
|
4415
|
-
|
|
4599
|
+
const accept = store.acceptFilter();
|
|
4600
|
+
let files = store.files();
|
|
4601
|
+
if (filter !== 'all') {
|
|
4602
|
+
const type = store.fileTypes().find((t) => t.name === filter);
|
|
4603
|
+
if (type?.extensions?.length) {
|
|
4604
|
+
const extSet = new Set(type.extensions.map((e) => e.name.toLowerCase()));
|
|
4605
|
+
files = files.filter((f) => {
|
|
4606
|
+
const displayName = resolveExplorerFileDisplayName(f.name, f.fileId);
|
|
4607
|
+
const ext = displayName.split('.').pop()?.toLowerCase() ?? '';
|
|
4608
|
+
return extSet.has(ext);
|
|
4609
|
+
});
|
|
4610
|
+
}
|
|
4611
|
+
}
|
|
4612
|
+
if (!isUnrestrictedFileAccept(accept)) {
|
|
4613
|
+
files = files.filter((f) => fileNameMatchesAccept(resolveExplorerFileDisplayName(f.name, f.fileId), accept));
|
|
4614
|
+
}
|
|
4615
|
+
return files;
|
|
4416
4616
|
}),
|
|
4417
4617
|
isLargeTilesView: computed(() => store.viewMode() === 'large-tiles'),
|
|
4418
4618
|
isSmallTilesView: computed(() => store.viewMode() === 'small-tiles'),
|
|
@@ -4432,7 +4632,7 @@ const AXPDocumentExplorerViewModel = signalStore({ providedIn: 'root' }, withSta
|
|
|
4432
4632
|
selectedNode: computed(() => store.selectedNodes()[0] ?? null),
|
|
4433
4633
|
isDetailPanelOpen: computed(() => store.detailPanel()),
|
|
4434
4634
|
// groupByType: computed(() => store.groupByType()),
|
|
4435
|
-
})), withMethods((store, fileTypeService = inject(AXPFileTypeProviderService), fileService = inject(AXFileService), driveService = inject(AXMDocumentManagerService), commandService = inject(AXPCommandService), settingsService = inject(AXPSettingsService), translateService = inject(AXTranslationService), lockService = inject(AXPLockService)) => {
|
|
4635
|
+
})), withMethods((store, fileTypeService = inject(AXPFileTypeProviderService), fileService = inject(AXFileService), driveService = inject(AXMDocumentManagerService), commandService = inject(AXPCommandService), settingsService = inject(AXPSettingsService), translateService = inject(AXTranslationService), lockService = inject(AXPLockService), sessionService = inject(AXPSessionService)) => {
|
|
4436
4636
|
/** In-flight folder load; duplicate requests for the same folder reuse the same promise. */
|
|
4437
4637
|
let inflightLoad = null;
|
|
4438
4638
|
const applyExplorerNode = (node) => {
|
|
@@ -4620,6 +4820,10 @@ const AXPDocumentExplorerViewModel = signalStore({ providedIn: 'root' }, withSta
|
|
|
4620
4820
|
setFileTypeFilter(key) {
|
|
4621
4821
|
patchState(store, { fileTypeFilter: key ?? 'all' });
|
|
4622
4822
|
},
|
|
4823
|
+
/** Restricts visible files to the same accept list as the device file picker. */
|
|
4824
|
+
setAcceptFilter(accept) {
|
|
4825
|
+
patchState(store, { acceptFilter: (accept ?? '').trim() });
|
|
4826
|
+
},
|
|
4623
4827
|
/** Toggles the explorer loading state (e.g. while a drive search/filter request is in flight). */
|
|
4624
4828
|
setLoading(isLoading) {
|
|
4625
4829
|
patchState(store, {
|
|
@@ -4680,6 +4884,7 @@ const AXPDocumentExplorerViewModel = signalStore({ providedIn: 'root' }, withSta
|
|
|
4680
4884
|
if (node.type === 'file') {
|
|
4681
4885
|
const displayName = resolveExplorerFileDisplayName(node.name, node.fileId);
|
|
4682
4886
|
const display = resolveFileTypeDisplay(displayName, store.fileTypes());
|
|
4887
|
+
const versionNumber = resolveDocumentVersionNumber(node);
|
|
4683
4888
|
const details = [
|
|
4684
4889
|
{
|
|
4685
4890
|
title: 'Description',
|
|
@@ -4714,6 +4919,16 @@ const AXPDocumentExplorerViewModel = signalStore({ providedIn: 'root' }, withSta
|
|
|
4714
4919
|
format: 'datetime',
|
|
4715
4920
|
icon: 'fa-solid fa-calendar-days',
|
|
4716
4921
|
},
|
|
4922
|
+
...(versionNumber != null
|
|
4923
|
+
? [
|
|
4924
|
+
{
|
|
4925
|
+
title: 'Version',
|
|
4926
|
+
content: versionNumber,
|
|
4927
|
+
format: 'number',
|
|
4928
|
+
icon: 'fa-solid fa-code-branch',
|
|
4929
|
+
},
|
|
4930
|
+
]
|
|
4931
|
+
: []),
|
|
4717
4932
|
];
|
|
4718
4933
|
if (node.storageType === 'shortcut' || node.isShortcut) {
|
|
4719
4934
|
details.unshift({
|
|
@@ -4976,7 +5191,7 @@ const AXPDocumentExplorerViewModel = signalStore({ providedIn: 'root' }, withSta
|
|
|
4976
5191
|
? folderTypes.filter((t) => t?.name && allowedNames.includes(t.name))
|
|
4977
5192
|
: []
|
|
4978
5193
|
: folderTypes;
|
|
4979
|
-
const allowCreateFolder = canAddFolder &&
|
|
5194
|
+
const allowCreateFolder = canAddFolder && canCreateFolderUnder(store.currentFolder(), store.scopeRootId());
|
|
4980
5195
|
return [
|
|
4981
5196
|
...(allowCreateFolder
|
|
4982
5197
|
? [
|
|
@@ -5188,6 +5403,46 @@ const AXPDocumentExplorerViewModel = signalStore({ providedIn: 'root' }, withSta
|
|
|
5188
5403
|
},
|
|
5189
5404
|
//#endregion
|
|
5190
5405
|
//#region ---- Menu Items ----
|
|
5406
|
+
async buildFileVersioningContextMenu(node, trans) {
|
|
5407
|
+
if (!node.versioningEnabled || node.type !== 'file' || node.storageType === 'shortcut') {
|
|
5408
|
+
return null;
|
|
5409
|
+
}
|
|
5410
|
+
const draft = await driveService.findOpenVersionDraft(node.id);
|
|
5411
|
+
const versionItems = [];
|
|
5412
|
+
if (!draft) {
|
|
5413
|
+
versionItems.push({
|
|
5414
|
+
name: 'create-version-draft',
|
|
5415
|
+
text: await trans('menus.context.new-version'),
|
|
5416
|
+
icon: 'fa-light fa-code-branch',
|
|
5417
|
+
data: node,
|
|
5418
|
+
});
|
|
5419
|
+
}
|
|
5420
|
+
else {
|
|
5421
|
+
versionItems.push({
|
|
5422
|
+
name: 'upload-new-version',
|
|
5423
|
+
text: await trans('menus.context.upload-new-version'),
|
|
5424
|
+
icon: 'fa-light fa-file-circle-plus',
|
|
5425
|
+
data: node,
|
|
5426
|
+
}, {
|
|
5427
|
+
name: 'publish-version',
|
|
5428
|
+
text: await trans('menus.context.publish-version'),
|
|
5429
|
+
icon: 'fa-light fa-cloud-arrow-up',
|
|
5430
|
+
data: node,
|
|
5431
|
+
}, {
|
|
5432
|
+
name: 'delete-version-draft',
|
|
5433
|
+
text: await trans('menus.context.delete-draft'),
|
|
5434
|
+
icon: 'fa-light fa-trash',
|
|
5435
|
+
data: node,
|
|
5436
|
+
});
|
|
5437
|
+
}
|
|
5438
|
+
return {
|
|
5439
|
+
name: 'manage-versions',
|
|
5440
|
+
text: await trans('menus.context.manage-versions'),
|
|
5441
|
+
icon: 'fa-light fa-code-branch',
|
|
5442
|
+
items: versionItems,
|
|
5443
|
+
break: true,
|
|
5444
|
+
};
|
|
5445
|
+
},
|
|
5191
5446
|
/**
|
|
5192
5447
|
* Returns menu items for file context menu
|
|
5193
5448
|
*/
|
|
@@ -5204,6 +5459,22 @@ const AXPDocumentExplorerViewModel = signalStore({ providedIn: 'root' }, withSta
|
|
|
5204
5459
|
payload: node,
|
|
5205
5460
|
});
|
|
5206
5461
|
const canShowInViewer = isFileNameShownInViewer(displayName, catalog);
|
|
5462
|
+
const versionMenu = await this.buildFileVersioningContextMenu(node, trans);
|
|
5463
|
+
const canDistribute = (node.distributionEnabled === true ||
|
|
5464
|
+
node.documentTypes?.some((type) => type.enableDistributionCapability === true) === true) &&
|
|
5465
|
+
node.type === 'file' &&
|
|
5466
|
+
node.storageType !== 'shortcut' &&
|
|
5467
|
+
!node.isShortcut &&
|
|
5468
|
+
sessionService.authorize(AXPContentDocumentsPermissionKeys.DistributeDocuments);
|
|
5469
|
+
const actionItems = [];
|
|
5470
|
+
if (canDistribute) {
|
|
5471
|
+
actionItems.push({
|
|
5472
|
+
name: 'distribute',
|
|
5473
|
+
text: await trans('menus.context.distribute'),
|
|
5474
|
+
icon: 'fa-light fa-paper-plane',
|
|
5475
|
+
data: node,
|
|
5476
|
+
});
|
|
5477
|
+
}
|
|
5207
5478
|
const menuItems = [
|
|
5208
5479
|
...(canOpen
|
|
5209
5480
|
? [
|
|
@@ -5225,6 +5496,17 @@ const AXPDocumentExplorerViewModel = signalStore({ providedIn: 'root' }, withSta
|
|
|
5225
5496
|
},
|
|
5226
5497
|
]
|
|
5227
5498
|
: []),
|
|
5499
|
+
...(versionMenu ? [versionMenu] : []),
|
|
5500
|
+
...(actionItems.length
|
|
5501
|
+
? [
|
|
5502
|
+
{
|
|
5503
|
+
name: 'actions',
|
|
5504
|
+
text: await trans('menus.context.actions'),
|
|
5505
|
+
icon: 'fa-light fa-bolt',
|
|
5506
|
+
items: actionItems,
|
|
5507
|
+
},
|
|
5508
|
+
]
|
|
5509
|
+
: []),
|
|
5228
5510
|
{
|
|
5229
5511
|
name: 'download',
|
|
5230
5512
|
text: await trans('menus.context.download'),
|
|
@@ -5268,31 +5550,6 @@ const AXPDocumentExplorerViewModel = signalStore({ providedIn: 'root' }, withSta
|
|
|
5268
5550
|
break: true,
|
|
5269
5551
|
},
|
|
5270
5552
|
];
|
|
5271
|
-
// Manage versions (only if document type has versioning enabled)
|
|
5272
|
-
// const docType = node.documentTypes?.[0];
|
|
5273
|
-
//TODO handle versioning
|
|
5274
|
-
// if (docType?.enableVersioning) {
|
|
5275
|
-
// menuItems.push({
|
|
5276
|
-
// name: 'manage-versions',
|
|
5277
|
-
// text: await trans('menus.context.manage-versions'),
|
|
5278
|
-
// icon: 'fa-light fa-clock-rotate-left',
|
|
5279
|
-
// items: [
|
|
5280
|
-
// {
|
|
5281
|
-
// name: 'upload-new-version',
|
|
5282
|
-
// text: await trans('menus.context.upload-new-version'),
|
|
5283
|
-
// icon: 'fa-light fa-file-circle-plus',
|
|
5284
|
-
// data: node,
|
|
5285
|
-
// },
|
|
5286
|
-
// {
|
|
5287
|
-
// name: 'show-version-history',
|
|
5288
|
-
// text: await trans('menus.context.show-version-history'),
|
|
5289
|
-
// icon: 'fa-light fa-timeline',
|
|
5290
|
-
// data: node,
|
|
5291
|
-
// },
|
|
5292
|
-
// ],
|
|
5293
|
-
// break: true,
|
|
5294
|
-
// });
|
|
5295
|
-
// }
|
|
5296
5553
|
// Information submenu items
|
|
5297
5554
|
const infoSubItems = [
|
|
5298
5555
|
{
|
|
@@ -5583,9 +5840,33 @@ const AXPDocumentExplorerViewModel = signalStore({ providedIn: 'root' }, withSta
|
|
|
5583
5840
|
this.setViewMode(name.replace('view.', ''));
|
|
5584
5841
|
break;
|
|
5585
5842
|
case 'upload-new-version':
|
|
5586
|
-
await driveService.
|
|
5843
|
+
await driveService.runUploadNewVersionFlow(node);
|
|
5844
|
+
await this.refresh();
|
|
5845
|
+
break;
|
|
5846
|
+
case 'create-version-draft':
|
|
5847
|
+
await driveService.runNewVersionFlow(node);
|
|
5848
|
+
await this.refresh();
|
|
5849
|
+
break;
|
|
5850
|
+
case 'publish-version':
|
|
5851
|
+
await commandService.execute(AXPCommonCommandKeys.Versioning.Publish, {
|
|
5852
|
+
refId: node.id,
|
|
5853
|
+
refType: `${RootConfig.module.name}.${RootConfig.entities.document.name}`,
|
|
5854
|
+
});
|
|
5855
|
+
await this.refresh();
|
|
5856
|
+
break;
|
|
5857
|
+
case 'delete-version-draft':
|
|
5858
|
+
await commandService.execute(AXPCommonCommandKeys.Versioning.DeleteDraft, {
|
|
5859
|
+
refId: node.id,
|
|
5860
|
+
refType: `${RootConfig.module.name}.${RootConfig.entities.document.name}`,
|
|
5861
|
+
});
|
|
5587
5862
|
await this.refresh();
|
|
5588
5863
|
break;
|
|
5864
|
+
case 'distribute':
|
|
5865
|
+
await commandService.execute(AXMDocumentManagementCommandKeys.DocumentDistribute, {
|
|
5866
|
+
data: node,
|
|
5867
|
+
documentId: node.id,
|
|
5868
|
+
});
|
|
5869
|
+
break;
|
|
5589
5870
|
case 'show-version-history':
|
|
5590
5871
|
await driveService.showVersionHistory(node);
|
|
5591
5872
|
break;
|
|
@@ -5652,7 +5933,7 @@ const AXPDocumentExplorerViewModel = signalStore({ providedIn: 'root' }, withSta
|
|
|
5652
5933
|
*/
|
|
5653
5934
|
async createFolder(node) {
|
|
5654
5935
|
const parent = node ?? store.currentFolder() ?? store.currentNode();
|
|
5655
|
-
if (parent
|
|
5936
|
+
if (!canCreateFolderUnder(parent, store.scopeRootId())) {
|
|
5656
5937
|
return;
|
|
5657
5938
|
}
|
|
5658
5939
|
const parentId = parent?.id ?? store.currentNode()?.id;
|
|
@@ -5838,28 +6119,28 @@ class AXMDocumentExplorerComponent {
|
|
|
5838
6119
|
/** Drops stale async open results when the user right-clicks again before items resolve. */
|
|
5839
6120
|
this.contextMenuOpenToken = 0;
|
|
5840
6121
|
this.viewMap = {
|
|
5841
|
-
list: async () => (await import('./acorex-platform-module-document-management-client-list-view.component-
|
|
5842
|
-
'small-tiles': async () => (await import('./acorex-platform-module-document-management-client-small-tiles-view.component-
|
|
5843
|
-
'large-tiles': async () => (await import('./acorex-platform-module-document-management-client-large-tiles-view.component-
|
|
6122
|
+
list: async () => (await import('./acorex-platform-module-document-management-client-list-view.component-yHeNWSJC.mjs')).AXMDocumentExplorerListViewComponent,
|
|
6123
|
+
'small-tiles': async () => (await import('./acorex-platform-module-document-management-client-small-tiles-view.component-C4wnLgWR.mjs')).AXMDocumentExplorerSmallTilesViewComponent,
|
|
6124
|
+
'large-tiles': async () => (await import('./acorex-platform-module-document-management-client-large-tiles-view.component-VNDRhDNx.mjs')).AXMDocumentExplorerLargeTilesViewComponent,
|
|
5844
6125
|
// details: async () =>
|
|
5845
6126
|
// (await import('./views/details/details-view.component')).AXMDocumentExplorerDetailsViewComponent,
|
|
5846
|
-
'large-icons': async () => (await import('./acorex-platform-module-document-management-client-large-icons-view.component-
|
|
5847
|
-
'small-icons': async () => (await import('./acorex-platform-module-document-management-client-small-icons-view.component-
|
|
5848
|
-
'attachment': async () => (await import('./acorex-platform-module-document-management-client-attachment-widget.component-
|
|
6127
|
+
'large-icons': async () => (await import('./acorex-platform-module-document-management-client-large-icons-view.component-Dx95E_1P.mjs')).AXMDocumentExplorerLargeIconsViewComponent,
|
|
6128
|
+
'small-icons': async () => (await import('./acorex-platform-module-document-management-client-small-icons-view.component-CoEYTcd9.mjs')).AXMDocumentExplorerSmallIconsViewComponent,
|
|
6129
|
+
'attachment': async () => (await import('./acorex-platform-module-document-management-client-attachment-widget.component-DVm7a1d2.mjs')).AXMDocumentExplorerAttachmentComponent,
|
|
5849
6130
|
};
|
|
5850
6131
|
this.skeletonViewMap = {
|
|
5851
|
-
list: async () => (await import('./acorex-platform-module-document-management-client-list-view-skeleton.component-
|
|
5852
|
-
'small-tiles': async () => (await import('./acorex-platform-module-document-management-client-small-tiles-view-skeleton.component-
|
|
6132
|
+
list: async () => (await import('./acorex-platform-module-document-management-client-list-view-skeleton.component-C9rbuY5b.mjs')).AXMDocumentExplorerListViewSkeletonComponent,
|
|
6133
|
+
'small-tiles': async () => (await import('./acorex-platform-module-document-management-client-small-tiles-view-skeleton.component-rZAAx-ns.mjs'))
|
|
5853
6134
|
.AXMDocumentExplorerSmallTilesViewSkeletonComponent,
|
|
5854
6135
|
'large-tiles': async () => (await Promise.resolve().then(function () { return largeTilesViewSkeleton_component; }))
|
|
5855
6136
|
.AXMDocumentExplorerLargeTilesViewSkeletonComponent,
|
|
5856
6137
|
// details: async () =>
|
|
5857
6138
|
// (await import('./views/details/details-view-skeleton.component')).AXMDocumentExplorerDetailsViewSkeletonComponent,
|
|
5858
|
-
'large-icons': async () => (await import('./acorex-platform-module-document-management-client-large-icons-view-skeleton.component-
|
|
6139
|
+
'large-icons': async () => (await import('./acorex-platform-module-document-management-client-large-icons-view-skeleton.component-DmYeUizg.mjs'))
|
|
5859
6140
|
.AXMDocumentExplorerLargeIconsViewSkeletonComponent,
|
|
5860
|
-
'small-icons': async () => (await import('./acorex-platform-module-document-management-client-small-icons-view-skeleton.component-
|
|
6141
|
+
'small-icons': async () => (await import('./acorex-platform-module-document-management-client-small-icons-view-skeleton.component-d0LTdcBY.mjs'))
|
|
5861
6142
|
.AXMDocumentExplorerSmallIconsViewSkeletonComponent,
|
|
5862
|
-
attachment: async () => (await import('./acorex-platform-module-document-management-client-attachment-view-skeleton.component-
|
|
6143
|
+
attachment: async () => (await import('./acorex-platform-module-document-management-client-attachment-view-skeleton.component-Dvvp7Dje.mjs'))
|
|
5863
6144
|
.AXMDocumentExplorerAttachmentViewSkeletonComponent,
|
|
5864
6145
|
};
|
|
5865
6146
|
this.#effect2 = effect(() => {
|
|
@@ -6181,6 +6462,35 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "22.0.8", ngImpor
|
|
|
6181
6462
|
}, imports: [AXBadgeModule, AXTooltipModule, AXTranslationModule, AsyncPipe], template: "@if (badge(); as b) {\n <!-- ----- Expiration status badge (expired = danger, near = warning) ----- -->\n <span\n class=\"axm-document-expiration-badge__host inline-flex shrink-0 cursor-help\"\n [axTooltip]=\"tooltipText()\"\n axTooltipPlacement=\"top\"\n [attr.aria-label]=\"tooltipText()\"\n >\n <ax-badge size=\"sm\" look=\"twotone\" [color]=\"b.color\" [text]=\"(b.textKey | translate | async) ?? ''\"></ax-badge>\n </span>\n}\n", styles: [".axm-document-expiration-badge{display:inline-flex;flex-shrink:0;align-items:center}\n/*! tailwindcss v4.3.3 | MIT License | https://tailwindcss.com */\n"] }]
|
|
6182
6463
|
}], ctorParameters: () => [], propDecorators: { node: [{ type: i0.Input, args: [{ isSignal: true, alias: "node", required: true }] }] } });
|
|
6183
6464
|
|
|
6465
|
+
//#region ----- Imports -----
|
|
6466
|
+
//#endregion
|
|
6467
|
+
//#region ----- Constants -----
|
|
6468
|
+
const VERSION_BADGE_I18N = '@document-management:terms.document.version-badge';
|
|
6469
|
+
//#endregion
|
|
6470
|
+
//#region ----- Component -----
|
|
6471
|
+
class AXMDocumentVersionBadgeComponent {
|
|
6472
|
+
constructor() {
|
|
6473
|
+
//#region ----- Inputs -----
|
|
6474
|
+
this.node = input.required(/* @ts-ignore */
|
|
6475
|
+
...(ngDevMode ? [{ debugName: "node" }] : /* istanbul ignore next */ []));
|
|
6476
|
+
//#endregion
|
|
6477
|
+
//#region ----- Computed Properties -----
|
|
6478
|
+
this.versionNumber = computed(() => resolveDocumentVersionNumber(this.node()), /* @ts-ignore */
|
|
6479
|
+
...(ngDevMode ? [{ debugName: "versionNumber" }] : /* istanbul ignore next */ []));
|
|
6480
|
+
this.textKey = `${VERSION_BADGE_I18N}.text`;
|
|
6481
|
+
this.tooltipKey = `${VERSION_BADGE_I18N}.tooltip`;
|
|
6482
|
+
}
|
|
6483
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "22.0.8", ngImport: i0, type: AXMDocumentVersionBadgeComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
|
|
6484
|
+
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "22.0.8", type: AXMDocumentVersionBadgeComponent, isStandalone: true, selector: "axm-document-version-badge", inputs: { node: { classPropertyName: "node", publicName: "node", isSignal: true, isRequired: true, transformFunction: null } }, host: { properties: { "hidden": "versionNumber() == null" }, classAttribute: "axm-document-version-badge" }, ngImport: i0, template: "@if (versionNumber(); as version) {\n <!-- ----- Version number when versioning is enabled ----- -->\n <span\n class=\"axm-document-version-badge__chip\"\n [axTooltip]=\"(tooltipKey | translate: { params: { version } } | async) ?? ''\"\n axTooltipPlacement=\"top\"\n [attr.aria-label]=\"(tooltipKey | translate: { params: { version } } | async) ?? ''\"\n >\n <i class=\"fa-light fa-code-branch\" aria-hidden=\"true\"></i>\n <span class=\"axm-document-version-badge__text\">{{\n (textKey | translate: { params: { version } } | async) ?? ''\n }}</span>\n </span>\n}\n", styles: ["@layer properties;.axm-document-version-badge{display:inline-flex;flex-shrink:0;align-items:center}.axm-document-version-badge__chip{display:inline-flex;align-items:center;gap:calc(var(--spacing, .25rem) * .5);border-radius:calc(infinity * 1px);border-style:var(--tw-border-style);border-width:1px;padding-inline:calc(var(--spacing, .25rem) * 1.5);padding-block:1px;background-color:var(--color-primary-lightest);color:var(--color-on-primary-lightest);border-color:var(--color-border-primary-lightest);border-color:rgba(var(--ax-sys-color-primary-200));color:rgba(var(--ax-sys-color-primary-surface));--tw-shadow: 0 1px 3px 0 var(--tw-shadow-color, rgb(0 0 0 / .1)), 0 1px 2px -1px var(--tw-shadow-color, rgb(0 0 0 / .1));box-shadow:var(--tw-inset-shadow),var(--tw-inset-ring-shadow),var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow);cursor:help;font-size:10px;--tw-leading: 1;line-height:1;--tw-font-weight: var(--font-weight-semibold, 600);font-weight:var(--font-weight-semibold, 600);--tw-tracking: var(--tracking-wide, .025em);letter-spacing:var(--tracking-wide, .025em)}.axm-document-version-badge__chip i{font-size:9px;opacity:75%}.axm-document-version-badge__text{--tw-numeric-spacing: tabular-nums;font-variant-numeric:var(--tw-ordinal,) var(--tw-slashed-zero,) var(--tw-numeric-figure,) var(--tw-numeric-spacing,) var(--tw-numeric-fraction,)}@property --tw-border-style{syntax: \"*\"; inherits: false; initial-value: solid;}@property --tw-shadow{syntax: \"*\"; inherits: false; initial-value: 0 0 #0000;}@property --tw-shadow-color{syntax: \"*\"; inherits: false;}@property --tw-shadow-alpha{syntax: \"<percentage>\"; inherits: false; initial-value: 100%;}@property --tw-inset-shadow{syntax: \"*\"; inherits: false; initial-value: 0 0 #0000;}@property --tw-inset-shadow-color{syntax: \"*\"; inherits: false;}@property --tw-inset-shadow-alpha{syntax: \"<percentage>\"; inherits: false; initial-value: 100%;}@property --tw-ring-color{syntax: \"*\"; inherits: false;}@property --tw-ring-shadow{syntax: \"*\"; inherits: false; initial-value: 0 0 #0000;}@property --tw-inset-ring-color{syntax: \"*\"; inherits: false;}@property --tw-inset-ring-shadow{syntax: \"*\"; inherits: false; initial-value: 0 0 #0000;}@property --tw-ring-inset{syntax: \"*\"; inherits: false;}@property --tw-ring-offset-width{syntax: \"<length>\"; inherits: false; initial-value: 0px;}@property --tw-ring-offset-color{syntax: \"*\"; inherits: false; initial-value: #fff;}@property --tw-ring-offset-shadow{syntax: \"*\"; inherits: false; initial-value: 0 0 #0000;}@property --tw-leading{syntax: \"*\"; inherits: false;}@property --tw-font-weight{syntax: \"*\"; inherits: false;}@property --tw-tracking{syntax: \"*\"; inherits: false;}@property --tw-ordinal{syntax: \"*\"; inherits: false;}@property --tw-slashed-zero{syntax: \"*\"; inherits: false;}@property --tw-numeric-figure{syntax: \"*\"; inherits: false;}@property --tw-numeric-spacing{syntax: \"*\"; inherits: false;}@property --tw-numeric-fraction{syntax: \"*\"; inherits: false;}@layer properties{@supports ((-webkit-hyphens: none) and (not (margin-trim: inline))) or ((-moz-orient: inline) and (not (color:rgb(from red r g b)))){*,:before,:after,::backdrop{--tw-border-style: solid;--tw-shadow: 0 0 #0000;--tw-shadow-color: initial;--tw-shadow-alpha: 100%;--tw-inset-shadow: 0 0 #0000;--tw-inset-shadow-color: initial;--tw-inset-shadow-alpha: 100%;--tw-ring-color: initial;--tw-ring-shadow: 0 0 #0000;--tw-inset-ring-color: initial;--tw-inset-ring-shadow: 0 0 #0000;--tw-ring-inset: initial;--tw-ring-offset-width: 0px;--tw-ring-offset-color: #fff;--tw-ring-offset-shadow: 0 0 #0000;--tw-leading: initial;--tw-font-weight: initial;--tw-tracking: initial;--tw-ordinal: initial;--tw-slashed-zero: initial;--tw-numeric-figure: initial;--tw-numeric-spacing: initial;--tw-numeric-fraction: initial}}}\n/*! tailwindcss v4.3.3 | MIT License | https://tailwindcss.com */\n"], dependencies: [{ kind: "ngmodule", type: AXTooltipModule }, { kind: "directive", type: i2$2.AXTooltipDirective, selector: "[axTooltip]", inputs: ["axTooltipDisabled", "axTooltip", "axTooltipContext", "axTooltipPlacement", "axTooltipOffsetX", "axTooltipOffsetY", "axTooltipOpenAfter", "axTooltipCloseAfter"] }, { kind: "ngmodule", type: AXTranslationModule }, { kind: "pipe", type: i3$2.AXTranslatorPipe, name: "translate" }, { kind: "pipe", type: AsyncPipe, name: "async" }], changeDetection: i0.ChangeDetectionStrategy.OnPush, encapsulation: i0.ViewEncapsulation.None }); }
|
|
6485
|
+
}
|
|
6486
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "22.0.8", ngImport: i0, type: AXMDocumentVersionBadgeComponent, decorators: [{
|
|
6487
|
+
type: Component,
|
|
6488
|
+
args: [{ selector: 'axm-document-version-badge', changeDetection: ChangeDetectionStrategy.OnPush, encapsulation: ViewEncapsulation.None, host: {
|
|
6489
|
+
class: 'axm-document-version-badge',
|
|
6490
|
+
'[hidden]': 'versionNumber() == null',
|
|
6491
|
+
}, imports: [AXTooltipModule, AXTranslationModule, AsyncPipe], template: "@if (versionNumber(); as version) {\n <!-- ----- Version number when versioning is enabled ----- -->\n <span\n class=\"axm-document-version-badge__chip\"\n [axTooltip]=\"(tooltipKey | translate: { params: { version } } | async) ?? ''\"\n axTooltipPlacement=\"top\"\n [attr.aria-label]=\"(tooltipKey | translate: { params: { version } } | async) ?? ''\"\n >\n <i class=\"fa-light fa-code-branch\" aria-hidden=\"true\"></i>\n <span class=\"axm-document-version-badge__text\">{{\n (textKey | translate: { params: { version } } | async) ?? ''\n }}</span>\n </span>\n}\n", styles: ["@layer properties;.axm-document-version-badge{display:inline-flex;flex-shrink:0;align-items:center}.axm-document-version-badge__chip{display:inline-flex;align-items:center;gap:calc(var(--spacing, .25rem) * .5);border-radius:calc(infinity * 1px);border-style:var(--tw-border-style);border-width:1px;padding-inline:calc(var(--spacing, .25rem) * 1.5);padding-block:1px;background-color:var(--color-primary-lightest);color:var(--color-on-primary-lightest);border-color:var(--color-border-primary-lightest);border-color:rgba(var(--ax-sys-color-primary-200));color:rgba(var(--ax-sys-color-primary-surface));--tw-shadow: 0 1px 3px 0 var(--tw-shadow-color, rgb(0 0 0 / .1)), 0 1px 2px -1px var(--tw-shadow-color, rgb(0 0 0 / .1));box-shadow:var(--tw-inset-shadow),var(--tw-inset-ring-shadow),var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow);cursor:help;font-size:10px;--tw-leading: 1;line-height:1;--tw-font-weight: var(--font-weight-semibold, 600);font-weight:var(--font-weight-semibold, 600);--tw-tracking: var(--tracking-wide, .025em);letter-spacing:var(--tracking-wide, .025em)}.axm-document-version-badge__chip i{font-size:9px;opacity:75%}.axm-document-version-badge__text{--tw-numeric-spacing: tabular-nums;font-variant-numeric:var(--tw-ordinal,) var(--tw-slashed-zero,) var(--tw-numeric-figure,) var(--tw-numeric-spacing,) var(--tw-numeric-fraction,)}@property --tw-border-style{syntax: \"*\"; inherits: false; initial-value: solid;}@property --tw-shadow{syntax: \"*\"; inherits: false; initial-value: 0 0 #0000;}@property --tw-shadow-color{syntax: \"*\"; inherits: false;}@property --tw-shadow-alpha{syntax: \"<percentage>\"; inherits: false; initial-value: 100%;}@property --tw-inset-shadow{syntax: \"*\"; inherits: false; initial-value: 0 0 #0000;}@property --tw-inset-shadow-color{syntax: \"*\"; inherits: false;}@property --tw-inset-shadow-alpha{syntax: \"<percentage>\"; inherits: false; initial-value: 100%;}@property --tw-ring-color{syntax: \"*\"; inherits: false;}@property --tw-ring-shadow{syntax: \"*\"; inherits: false; initial-value: 0 0 #0000;}@property --tw-inset-ring-color{syntax: \"*\"; inherits: false;}@property --tw-inset-ring-shadow{syntax: \"*\"; inherits: false; initial-value: 0 0 #0000;}@property --tw-ring-inset{syntax: \"*\"; inherits: false;}@property --tw-ring-offset-width{syntax: \"<length>\"; inherits: false; initial-value: 0px;}@property --tw-ring-offset-color{syntax: \"*\"; inherits: false; initial-value: #fff;}@property --tw-ring-offset-shadow{syntax: \"*\"; inherits: false; initial-value: 0 0 #0000;}@property --tw-leading{syntax: \"*\"; inherits: false;}@property --tw-font-weight{syntax: \"*\"; inherits: false;}@property --tw-tracking{syntax: \"*\"; inherits: false;}@property --tw-ordinal{syntax: \"*\"; inherits: false;}@property --tw-slashed-zero{syntax: \"*\"; inherits: false;}@property --tw-numeric-figure{syntax: \"*\"; inherits: false;}@property --tw-numeric-spacing{syntax: \"*\"; inherits: false;}@property --tw-numeric-fraction{syntax: \"*\"; inherits: false;}@layer properties{@supports ((-webkit-hyphens: none) and (not (margin-trim: inline))) or ((-moz-orient: inline) and (not (color:rgb(from red r g b)))){*,:before,:after,::backdrop{--tw-border-style: solid;--tw-shadow: 0 0 #0000;--tw-shadow-color: initial;--tw-shadow-alpha: 100%;--tw-inset-shadow: 0 0 #0000;--tw-inset-shadow-color: initial;--tw-inset-shadow-alpha: 100%;--tw-ring-color: initial;--tw-ring-shadow: 0 0 #0000;--tw-inset-ring-color: initial;--tw-inset-ring-shadow: 0 0 #0000;--tw-ring-inset: initial;--tw-ring-offset-width: 0px;--tw-ring-offset-color: #fff;--tw-ring-offset-shadow: 0 0 #0000;--tw-leading: initial;--tw-font-weight: initial;--tw-tracking: initial;--tw-ordinal: initial;--tw-slashed-zero: initial;--tw-numeric-figure: initial;--tw-numeric-spacing: initial;--tw-numeric-fraction: initial}}}\n/*! tailwindcss v4.3.3 | MIT License | https://tailwindcss.com */\n"] }]
|
|
6492
|
+
}], propDecorators: { node: [{ type: i0.Input, args: [{ isSignal: true, alias: "node", required: true }] }] } });
|
|
6493
|
+
|
|
6184
6494
|
//#region ----- Imports -----
|
|
6185
6495
|
//#endregion
|
|
6186
6496
|
//#region ----- Component -----
|
|
@@ -6935,7 +7245,7 @@ async function uploadBlobFileInfo(fileInfo, refId, refType, storage) {
|
|
|
6935
7245
|
*/
|
|
6936
7246
|
const documentFileInfoUploadMiddleware = {
|
|
6937
7247
|
target: {
|
|
6938
|
-
entity: /^DocumentManagement\.Document
|
|
7248
|
+
entity: /^DocumentManagement\.Document(Version)?$/,
|
|
6939
7249
|
ops: ['create', 'update'],
|
|
6940
7250
|
order: 20,
|
|
6941
7251
|
},
|
|
@@ -7026,7 +7336,7 @@ class AXMDocumentManagementModule {
|
|
|
7026
7336
|
useFactory: routesFacory,
|
|
7027
7337
|
},
|
|
7028
7338
|
...DocumentFileUploaderWidgetPluginProviders.map((p) => ({
|
|
7029
|
-
provide:
|
|
7339
|
+
provide: AXP_HOOK_PROVIDER,
|
|
7030
7340
|
useValue: p,
|
|
7031
7341
|
multi: true,
|
|
7032
7342
|
})),
|
|
@@ -7035,12 +7345,6 @@ class AXMDocumentManagementModule {
|
|
|
7035
7345
|
useValue: DocumentFileUploaderActionsByTypeProvider,
|
|
7036
7346
|
multi: true,
|
|
7037
7347
|
},
|
|
7038
|
-
// Module Manifest Provider
|
|
7039
|
-
{
|
|
7040
|
-
provide: AXP_MODULE_MANIFEST_PROVIDER,
|
|
7041
|
-
useValue: DocumentManagementManifest,
|
|
7042
|
-
multi: true,
|
|
7043
|
-
},
|
|
7044
7348
|
// Provider references (now using tokens)
|
|
7045
7349
|
{
|
|
7046
7350
|
provide: AXP_FEATURE_DEFINITION_PROVIDER,
|
|
@@ -7079,11 +7383,19 @@ class AXMDocumentManagementModule {
|
|
|
7079
7383
|
provideCommandSetups([
|
|
7080
7384
|
{
|
|
7081
7385
|
key: 'DocumentManagement.Document:Upload',
|
|
7082
|
-
command: () => import('./acorex-platform-module-document-management-client-upload-document.command-
|
|
7386
|
+
command: () => import('./acorex-platform-module-document-management-client-upload-document.command-JDYYMckB.mjs').then((c) => c.AXMUploadDocumentCommand),
|
|
7083
7387
|
},
|
|
7084
7388
|
{
|
|
7085
7389
|
key: 'DocumentManagement.Document:Open',
|
|
7086
|
-
command: () => import('./acorex-platform-module-document-management-client-open-document.command-
|
|
7390
|
+
command: () => import('./acorex-platform-module-document-management-client-open-document.command-By0k8BgV.mjs').then((c) => c.AXMOpenDocumentCommand),
|
|
7391
|
+
},
|
|
7392
|
+
{
|
|
7393
|
+
key: 'DocumentManagement.Document:Distribute',
|
|
7394
|
+
command: () => import('./acorex-platform-module-document-management-client-distribute-document.command-Bw6xDrJ4.mjs').then((c) => c.AXMDistributeDocumentCommand),
|
|
7395
|
+
},
|
|
7396
|
+
{
|
|
7397
|
+
key: 'DocumentManagement.DocumentDistribution:SignOff',
|
|
7398
|
+
command: () => import('./acorex-platform-module-document-management-client-sign-distributed-document.command-DpQ-Un7q.mjs').then((c) => c.AXMSignDistributedDocumentCommand),
|
|
7087
7399
|
},
|
|
7088
7400
|
]),
|
|
7089
7401
|
], imports: [AXMDriveChooseModule,
|
|
@@ -7123,7 +7435,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "22.0.8", ngImpor
|
|
|
7123
7435
|
useFactory: routesFacory,
|
|
7124
7436
|
},
|
|
7125
7437
|
...DocumentFileUploaderWidgetPluginProviders.map((p) => ({
|
|
7126
|
-
provide:
|
|
7438
|
+
provide: AXP_HOOK_PROVIDER,
|
|
7127
7439
|
useValue: p,
|
|
7128
7440
|
multi: true,
|
|
7129
7441
|
})),
|
|
@@ -7132,12 +7444,6 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "22.0.8", ngImpor
|
|
|
7132
7444
|
useValue: DocumentFileUploaderActionsByTypeProvider,
|
|
7133
7445
|
multi: true,
|
|
7134
7446
|
},
|
|
7135
|
-
// Module Manifest Provider
|
|
7136
|
-
{
|
|
7137
|
-
provide: AXP_MODULE_MANIFEST_PROVIDER,
|
|
7138
|
-
useValue: DocumentManagementManifest,
|
|
7139
|
-
multi: true,
|
|
7140
|
-
},
|
|
7141
7447
|
// Provider references (now using tokens)
|
|
7142
7448
|
{
|
|
7143
7449
|
provide: AXP_FEATURE_DEFINITION_PROVIDER,
|
|
@@ -7176,11 +7482,19 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "22.0.8", ngImpor
|
|
|
7176
7482
|
provideCommandSetups([
|
|
7177
7483
|
{
|
|
7178
7484
|
key: 'DocumentManagement.Document:Upload',
|
|
7179
|
-
command: () => import('./acorex-platform-module-document-management-client-upload-document.command-
|
|
7485
|
+
command: () => import('./acorex-platform-module-document-management-client-upload-document.command-JDYYMckB.mjs').then((c) => c.AXMUploadDocumentCommand),
|
|
7180
7486
|
},
|
|
7181
7487
|
{
|
|
7182
7488
|
key: 'DocumentManagement.Document:Open',
|
|
7183
|
-
command: () => import('./acorex-platform-module-document-management-client-open-document.command-
|
|
7489
|
+
command: () => import('./acorex-platform-module-document-management-client-open-document.command-By0k8BgV.mjs').then((c) => c.AXMOpenDocumentCommand),
|
|
7490
|
+
},
|
|
7491
|
+
{
|
|
7492
|
+
key: 'DocumentManagement.Document:Distribute',
|
|
7493
|
+
command: () => import('./acorex-platform-module-document-management-client-distribute-document.command-Bw6xDrJ4.mjs').then((c) => c.AXMDistributeDocumentCommand),
|
|
7494
|
+
},
|
|
7495
|
+
{
|
|
7496
|
+
key: 'DocumentManagement.DocumentDistribution:SignOff',
|
|
7497
|
+
command: () => import('./acorex-platform-module-document-management-client-sign-distributed-document.command-DpQ-Un7q.mjs').then((c) => c.AXMSignDistributedDocumentCommand),
|
|
7184
7498
|
},
|
|
7185
7499
|
]),
|
|
7186
7500
|
],
|
|
@@ -7917,7 +8231,7 @@ class AXMDocumentDriveComponent extends AXPPageLayoutBaseComponent {
|
|
|
7917
8231
|
//
|
|
7918
8232
|
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:
|
|
7919
8233
|
//
|
|
7920
|
-
AXMDocumentExplorerComponent, selector: "axm-document-explorer", inputs: ["browseMode", "viewMode", "selectionMode", "showContextMenu"] }, { kind: "component", type: AXMDocumentExplorerDetailPanelComponent, selector: "axm-document-explorer-detail-panel" }, { kind: "component", type: AXPQueryFiltersComponent, selector: "axp-query-filters", inputs: ["filtersDefinitions", "initialFilters", "quickSearch"], outputs: ["onFiltersChanged"] }, { kind: "pipe", type: i1$2.AsyncPipe, name: "async" }, { kind: "pipe", type: i3$2.AXTranslatorPipe, name: "translate" }], changeDetection: i0.ChangeDetectionStrategy.OnPush, encapsulation: i0.ViewEncapsulation.None }); }
|
|
8234
|
+
AXMDocumentExplorerComponent, selector: "axm-document-explorer", inputs: ["browseMode", "viewMode", "selectionMode", "showContextMenu"] }, { kind: "component", type: AXMDocumentExplorerDetailPanelComponent, selector: "axm-document-explorer-detail-panel" }, { kind: "component", type: AXPQueryFiltersComponent, selector: "axp-query-filters", inputs: ["filtersDefinitions", "initialFilters", "mode", "quickSearch", "sortPresets", "activeSortPresetName"], outputs: ["onFiltersChanged", "onSortPresetSelected"] }, { kind: "pipe", type: i1$2.AsyncPipe, name: "async" }, { kind: "pipe", type: i3$2.AXTranslatorPipe, name: "translate" }], changeDetection: i0.ChangeDetectionStrategy.OnPush, encapsulation: i0.ViewEncapsulation.None }); }
|
|
7921
8235
|
}
|
|
7922
8236
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "22.0.8", ngImport: i0, type: AXMDocumentDriveComponent, decorators: [{
|
|
7923
8237
|
type: Component,
|
|
@@ -7969,5 +8283,5 @@ var drive_component = /*#__PURE__*/Object.freeze({
|
|
|
7969
8283
|
* Generated bundle index. Do not edit.
|
|
7970
8284
|
*/
|
|
7971
8285
|
|
|
7972
|
-
export { AXPDocumentExplorerViewModel as A,
|
|
7973
|
-
//# sourceMappingURL=acorex-platform-module-document-management-client-acorex-platform-module-document-management-client-
|
|
8286
|
+
export { AXPDocumentExplorerViewModel as A, AXM_DOCUMENT_EXPIRATION_STATUS as B, AXM_DOCUMENT_EXPIRATION_STATUS_DEFINITION_KEY as C, AXPDocumentManagementService as D, AXPDocumentManagementSettingProvider as E, AXmFileTypeExtensionWidget as F, DM_AUDIO_EXTENSION_ICONS as G, DM_DOCUMENT_EXTENSION_ICONS as H, DM_FILE_EXTENSION_ICONS as I, DM_FILE_TYPE_ICONS as J, DM_VIDEO_EXTENSION_ICONS as K, DOCUMENT_DRIVE_PAGE_COMPONENT_KEY as L, buildDocumentManagementFileTypeCatalog as M, documentPlugin as N, resolveDocumentExpirationBadge as O, resolveDocumentVersionNumber as P, resolveFolderExpirationCountBadges as Q, ScopedDriveService as S, AXMDocumentExpirationBadgeComponent as a, AXMDocumentVersionBadgeComponent as b, AXMFolderExpirationBadgesComponent as c, AXMDocumentManagerService as d, AXMDocumentDialogService as e, buildFileChooserOptionsFromDocumentType as f, AXMDocumentExplorerComponent as g, AXMFolderPathBreadcrumbsComponent as h, AXMDocumentDriveComponent as i, AXMDocumentDrivePageComponent as j, AXMDocumentDrivePageComponentProvider as k, AXMDocumentExpirationStatusProvider as l, AXMDocumentManagementApiService as m, AXMDocumentManagementFileTypeProvider as n, AXMDocumentManagementModule as o, AXMDocumentManagerServiceImpl as p, AXMFileTypeExtensionWidgetColumnComponent as q, AXMFileTypeExtensionWidgetDesignerComponent as r, AXMFileTypeExtensionWidgetEditComponent as s, AXMFileTypeExtensionWidgetViewComponent as t, AXMFileTypeModule as u, AXMMenuProvider as v, AXMSearchCommandProvider as w, AXM_DOCUMENT_ATTACHMENT_DIALOG_ON_ACTION_HOOK_KEY as x, AXM_DOCUMENT_DIALOG_SURFACE_ATTACHMENT as y, AXM_DOCUMENT_DIALOG_SURFACE_ATTACHMENT_NO_SAVE as z };
|
|
8287
|
+
//# sourceMappingURL=acorex-platform-module-document-management-client-acorex-platform-module-document-management-client-DhDRtALE.mjs.map
|