@acorex-platform/module-document-management-client 0.0.38 → 0.0.48

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (87) hide show
  1. 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
  2. package/fesm2022/acorex-platform-module-document-management-client-acorex-platform-module-document-management-client-DhDRtALE.mjs.map +1 -0
  3. 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
  4. 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
  5. 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
  6. package/fesm2022/acorex-platform-module-document-management-client-attachment-widget.component-DVm7a1d2.mjs.map +1 -0
  7. package/fesm2022/acorex-platform-module-document-management-client-contracts-entities-document-shortcut.mjs +20 -0
  8. package/fesm2022/acorex-platform-module-document-management-client-contracts-entities-document-shortcut.mjs.map +1 -1
  9. package/fesm2022/acorex-platform-module-document-management-client-contracts-entities-document-type.mjs +65 -10
  10. package/fesm2022/acorex-platform-module-document-management-client-contracts-entities-document-type.mjs.map +1 -1
  11. package/fesm2022/acorex-platform-module-document-management-client-contracts-entities-document-version.mjs +270 -0
  12. package/fesm2022/acorex-platform-module-document-management-client-contracts-entities-document-version.mjs.map +1 -0
  13. package/fesm2022/acorex-platform-module-document-management-client-contracts-entities-document.mjs +61 -1
  14. package/fesm2022/acorex-platform-module-document-management-client-contracts-entities-document.mjs.map +1 -1
  15. package/fesm2022/acorex-platform-module-document-management-client-contracts-entities-folder.mjs +21 -0
  16. package/fesm2022/acorex-platform-module-document-management-client-contracts-entities-folder.mjs.map +1 -1
  17. 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
  18. 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
  19. 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
  20. package/fesm2022/acorex-platform-module-document-management-client-contracts-entity-catalog-document-shortcut.entity-D-hEBLFT.mjs.map +1 -0
  21. 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
  22. package/fesm2022/acorex-platform-module-document-management-client-contracts-entity-catalog-document-type.entity-CBMUwrc-.mjs.map +1 -0
  23. package/fesm2022/acorex-platform-module-document-management-client-contracts-entity-catalog-document-version.entity-hATC_iAQ.mjs +200 -0
  24. package/fesm2022/acorex-platform-module-document-management-client-contracts-entity-catalog-document-version.entity-hATC_iAQ.mjs.map +1 -0
  25. 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
  26. package/fesm2022/acorex-platform-module-document-management-client-contracts-entity-catalog-document.entity-DOvhTOtO.mjs.map +1 -0
  27. 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
  28. package/fesm2022/acorex-platform-module-document-management-client-contracts-entity-catalog-folder.entity-cNSFyJoY.mjs.map +1 -0
  29. package/fesm2022/acorex-platform-module-document-management-client-contracts-entity-catalog.mjs +1 -1
  30. package/fesm2022/acorex-platform-module-document-management-client-contracts.mjs +91 -1
  31. package/fesm2022/acorex-platform-module-document-management-client-contracts.mjs.map +1 -1
  32. package/fesm2022/acorex-platform-module-document-management-client-distribute-document.command-Bw6xDrJ4.mjs +445 -0
  33. package/fesm2022/acorex-platform-module-document-management-client-distribute-document.command-Bw6xDrJ4.mjs.map +1 -0
  34. package/fesm2022/acorex-platform-module-document-management-client-distribute-document.command.util-Bnw0rh94.mjs +78 -0
  35. package/fesm2022/acorex-platform-module-document-management-client-distribute-document.command.util-Bnw0rh94.mjs.map +1 -0
  36. 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
  37. package/fesm2022/acorex-platform-module-document-management-client-drive-choose.component-BHiNuDvr.mjs.map +1 -0
  38. 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
  39. 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
  40. package/fesm2022/acorex-platform-module-document-management-client-large-icons-view.component-Dx95E_1P.mjs +31 -0
  41. package/fesm2022/acorex-platform-module-document-management-client-large-icons-view.component-Dx95E_1P.mjs.map +1 -0
  42. package/fesm2022/acorex-platform-module-document-management-client-large-tiles-view.component-VNDRhDNx.mjs +36 -0
  43. package/fesm2022/acorex-platform-module-document-management-client-large-tiles-view.component-VNDRhDNx.mjs.map +1 -0
  44. 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
  45. 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
  46. package/fesm2022/acorex-platform-module-document-management-client-list-view.component-yHeNWSJC.mjs +31 -0
  47. package/fesm2022/acorex-platform-module-document-management-client-list-view.component-yHeNWSJC.mjs.map +1 -0
  48. package/fesm2022/acorex-platform-module-document-management-client-local-entities.mjs +1 -0
  49. package/fesm2022/acorex-platform-module-document-management-client-local-entities.mjs.map +1 -1
  50. 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
  51. package/fesm2022/acorex-platform-module-document-management-client-open-document.command-By0k8BgV.mjs.map +1 -0
  52. package/fesm2022/acorex-platform-module-document-management-client-sign-distributed-document.command-DpQ-Un7q.mjs +124 -0
  53. package/fesm2022/acorex-platform-module-document-management-client-sign-distributed-document.command-DpQ-Un7q.mjs.map +1 -0
  54. 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
  55. 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
  56. package/fesm2022/acorex-platform-module-document-management-client-small-icons-view.component-CoEYTcd9.mjs +31 -0
  57. package/fesm2022/acorex-platform-module-document-management-client-small-icons-view.component-CoEYTcd9.mjs.map +1 -0
  58. 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
  59. 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
  60. package/fesm2022/acorex-platform-module-document-management-client-small-tiles-view.component-C4wnLgWR.mjs +36 -0
  61. package/fesm2022/acorex-platform-module-document-management-client-small-tiles-view.component-C4wnLgWR.mjs.map +1 -0
  62. 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
  63. 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
  64. package/fesm2022/acorex-platform-module-document-management-client.mjs +1 -1
  65. package/package.json +6 -2
  66. package/types/acorex-platform-module-document-management-client-contracts-entities-document-version.d.ts +8 -0
  67. package/types/acorex-platform-module-document-management-client-contracts.d.ts +85 -4
  68. package/types/acorex-platform-module-document-management-client.d.ts +98 -7
  69. package/fesm2022/acorex-platform-module-document-management-client-acorex-platform-module-document-management-client-DHcNgw3P.mjs.map +0 -1
  70. package/fesm2022/acorex-platform-module-document-management-client-attachment-widget.component-nGSM4SLU.mjs.map +0 -1
  71. 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
  72. package/fesm2022/acorex-platform-module-document-management-client-contracts-entity-catalog-document-shortcut.entity-BpGBX1CD.mjs.map +0 -1
  73. package/fesm2022/acorex-platform-module-document-management-client-contracts-entity-catalog-document-type.entity-D0-wHSOd.mjs.map +0 -1
  74. package/fesm2022/acorex-platform-module-document-management-client-contracts-entity-catalog-document.entity-BB3250Gc.mjs.map +0 -1
  75. package/fesm2022/acorex-platform-module-document-management-client-contracts-entity-catalog-folder.entity-BWplP1j6.mjs.map +0 -1
  76. package/fesm2022/acorex-platform-module-document-management-client-drive-choose.component-ByxmDInD.mjs.map +0 -1
  77. package/fesm2022/acorex-platform-module-document-management-client-large-icons-view.component-CBk1WOVb.mjs +0 -30
  78. package/fesm2022/acorex-platform-module-document-management-client-large-icons-view.component-CBk1WOVb.mjs.map +0 -1
  79. package/fesm2022/acorex-platform-module-document-management-client-large-tiles-view.component-m-UkV_QT.mjs +0 -35
  80. package/fesm2022/acorex-platform-module-document-management-client-large-tiles-view.component-m-UkV_QT.mjs.map +0 -1
  81. package/fesm2022/acorex-platform-module-document-management-client-list-view.component-CVF0Lkii.mjs +0 -30
  82. package/fesm2022/acorex-platform-module-document-management-client-list-view.component-CVF0Lkii.mjs.map +0 -1
  83. package/fesm2022/acorex-platform-module-document-management-client-open-document.command-Deqs3cEg.mjs.map +0 -1
  84. package/fesm2022/acorex-platform-module-document-management-client-small-icons-view.component-5XaGmpoN.mjs +0 -30
  85. package/fesm2022/acorex-platform-module-document-management-client-small-icons-view.component-5XaGmpoN.mjs.map +0 -1
  86. package/fesm2022/acorex-platform-module-document-management-client-small-tiles-view.component-07tFnkqV.mjs +0 -35
  87. 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, AXP_MODULE_MANIFEST_PROVIDER, AXP_FEATURE_DEFINITION_PROVIDER, AXP_DISTRIBUTED_EVENT_LISTENER_PROVIDER } from '@acorex-platform/framework-client/core';
4
- import { RootConfig, AXPDocumentManagementFeatureKeys, AXPContentDocumentsPermissionKeys, AXPDocumentManagementMenuKeys, AXPDocumentManagementSettings } from '@acorex-platform/module-document-management-client/contracts';
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 { AXPCommonPermissionGroupKeys, AXPCommonMenuKeys, AXPCommonCommandKeys } from '@acorex-platform/module-common-client/contracts';
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.selectedItems`.
1349
- * Supports legacy `type.extension` keys (e.g. `image.jpg` → `image`).
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
- const selectedItems = documentType?.type
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 selectedItems = documentType?.type
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 updatePayload = { version: (version ?? 0) + 1 };
1508
- if (showMeta) {
1509
- const meta = metaDataFormWithExpiration(ctx, 0);
1510
- updatePayload.metaDataForm = meta;
1511
- if (meta?.expirationDate != null) {
1512
- updatePayload.expirationDate = meta.expirationDate;
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
- statusId: 'draft',
1545
- status: { id: 'draft', title: '@general:statuses.draft.title' },
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 = platformErrorI18nKey(info?.code) ??
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
- * Upload a new version for an existing document. Lets user choose a new file, edit metadata, and updates the document
1776
- * with incremented version number while keeping the same document identity.
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
- await this.documentData.update(fileId, {
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
- const shortcut = this.unwrapBackendPayload(await this.shortcutData.byKey(createdId));
2612
- if (!shortcut)
2613
- throw new Error('Failed to load created shortcut');
2614
- return this.mapShortcutToNode(shortcut);
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-ByxmDInD.mjs')).AXMDocumentDriveChooseComponent;
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: 'draft',
2777
- status: { id: 'draft', title: '@general:statuses.draft.title' },
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 (create dialog) the catalog entry named `any` is preselected when present.
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.pickerKey === row.pickerKey) ||
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.pickerKey === String(value));
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
- if (isArray(allowedNames)) {
3203
- if (allowedNames.length === 0) {
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: items,
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, items));
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 component = (await import('./acorex-platform-module-document-management-client-drive-choose.component-ByxmDInD.mjs')).AXMDocumentDriveChooseComponent;
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 files = store.files();
4405
- if (filter === 'all')
4406
- return files;
4407
- const type = store.fileTypes().find((t) => t.name === filter);
4408
- if (!type?.extensions?.length)
4409
- return files;
4410
- const extSet = new Set(type.extensions.map((e) => e.name.toLowerCase()));
4411
- return files.filter((f) => {
4412
- const displayName = resolveExplorerFileDisplayName(f.name, f.fileId);
4413
- const ext = displayName.split('.').pop()?.toLowerCase() ?? '';
4414
- return extSet.has(ext);
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 && !store.currentFolder()?.isSystem;
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.uploadNewVersion(node);
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?.isSystem) {
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-CVF0Lkii.mjs')).AXMDocumentExplorerListViewComponent,
5842
- 'small-tiles': async () => (await import('./acorex-platform-module-document-management-client-small-tiles-view.component-07tFnkqV.mjs')).AXMDocumentExplorerSmallTilesViewComponent,
5843
- 'large-tiles': async () => (await import('./acorex-platform-module-document-management-client-large-tiles-view.component-m-UkV_QT.mjs')).AXMDocumentExplorerLargeTilesViewComponent,
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-CBk1WOVb.mjs')).AXMDocumentExplorerLargeIconsViewComponent,
5847
- 'small-icons': async () => (await import('./acorex-platform-module-document-management-client-small-icons-view.component-5XaGmpoN.mjs')).AXMDocumentExplorerSmallIconsViewComponent,
5848
- 'attachment': async () => (await import('./acorex-platform-module-document-management-client-attachment-widget.component-nGSM4SLU.mjs')).AXMDocumentExplorerAttachmentComponent,
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-K22Zof-0.mjs')).AXMDocumentExplorerListViewSkeletonComponent,
5852
- 'small-tiles': async () => (await import('./acorex-platform-module-document-management-client-small-tiles-view-skeleton.component-6EgbuXTv.mjs'))
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-B64PFFtO.mjs'))
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-BFuFFUax.mjs'))
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-lm3X8cQr.mjs'))
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: AXP_DISTRIBUTED_EVENT_LISTENER_PROVIDER,
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-D6J57Ha5.mjs').then((c) => c.AXMUploadDocumentCommand),
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-Deqs3cEg.mjs').then((c) => c.AXMOpenDocumentCommand),
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: AXP_DISTRIBUTED_EVENT_LISTENER_PROVIDER,
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-D6J57Ha5.mjs').then((c) => c.AXMUploadDocumentCommand),
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-Deqs3cEg.mjs').then((c) => c.AXMOpenDocumentCommand),
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, AXM_DOCUMENT_EXPIRATION_STATUS_DEFINITION_KEY as B, AXPDocumentManagementService as C, AXPDocumentManagementSettingProvider as D, AXmFileTypeExtensionWidget as E, DM_AUDIO_EXTENSION_ICONS as F, DM_DOCUMENT_EXTENSION_ICONS as G, DM_FILE_EXTENSION_ICONS as H, DM_FILE_TYPE_ICONS as I, DM_VIDEO_EXTENSION_ICONS as J, DOCUMENT_DRIVE_PAGE_COMPONENT_KEY as K, buildDocumentManagementFileTypeCatalog as L, documentPlugin as M, resolveDocumentExpirationBadge as N, resolveFolderExpirationCountBadges as O, ScopedDriveService as S, AXMDocumentExpirationBadgeComponent as a, AXMFolderExpirationBadgesComponent as b, AXMDocumentManagerService as c, AXMDocumentDialogService as d, buildFileChooserOptionsFromDocumentType as e, AXMDocumentExplorerComponent as f, AXMFolderPathBreadcrumbsComponent as g, AXMDocumentDriveComponent as h, AXMDocumentDrivePageComponent as i, AXMDocumentDrivePageComponentProvider as j, AXMDocumentExpirationStatusProvider as k, AXMDocumentManagementApiService as l, AXMDocumentManagementFileTypeProvider as m, AXMDocumentManagementModule as n, AXMDocumentManagerServiceImpl as o, AXMFileTypeExtensionWidgetColumnComponent as p, AXMFileTypeExtensionWidgetDesignerComponent as q, AXMFileTypeExtensionWidgetEditComponent as r, AXMFileTypeExtensionWidgetViewComponent as s, AXMFileTypeModule as t, AXMMenuProvider as u, AXMSearchCommandProvider as v, AXM_DOCUMENT_ATTACHMENT_DIALOG_ON_ACTION_HOOK_KEY as w, AXM_DOCUMENT_DIALOG_SURFACE_ATTACHMENT as x, AXM_DOCUMENT_DIALOG_SURFACE_ATTACHMENT_NO_SAVE as y, AXM_DOCUMENT_EXPIRATION_STATUS as z };
7973
- //# sourceMappingURL=acorex-platform-module-document-management-client-acorex-platform-module-document-management-client-DHcNgw3P.mjs.map
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