@acorex-platform/module-document-management-client 2.0.0-next.4 → 2.0.0-next.6
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-BvSJUZE-.mjs → acorex-platform-module-document-management-client-acorex-platform-module-document-management-client-D0DTP3BN.mjs} +79 -29
- package/fesm2022/acorex-platform-module-document-management-client-acorex-platform-module-document-management-client-D0DTP3BN.mjs.map +1 -0
- package/fesm2022/{acorex-platform-module-document-management-client-attachment-view-skeleton.component-DgjIypl7.mjs → acorex-platform-module-document-management-client-attachment-view-skeleton.component-D36_0xXy.mjs} +2 -2
- package/fesm2022/{acorex-platform-module-document-management-client-attachment-view-skeleton.component-DgjIypl7.mjs.map → acorex-platform-module-document-management-client-attachment-view-skeleton.component-D36_0xXy.mjs.map} +1 -1
- package/fesm2022/acorex-platform-module-document-management-client-attachment-widget.component-CReChWJw.mjs +37 -0
- package/fesm2022/acorex-platform-module-document-management-client-attachment-widget.component-CReChWJw.mjs.map +1 -0
- package/fesm2022/acorex-platform-module-document-management-client-contracts.mjs +12 -1
- package/fesm2022/acorex-platform-module-document-management-client-contracts.mjs.map +1 -1
- package/fesm2022/{acorex-platform-module-document-management-client-details-view.component-PfKcPBmu.mjs → acorex-platform-module-document-management-client-details-view.component-Cyy5ihGW.mjs} +3 -3
- package/fesm2022/acorex-platform-module-document-management-client-details-view.component-Cyy5ihGW.mjs.map +1 -0
- package/fesm2022/{acorex-platform-module-document-management-client-distribute-document.command-Dx9YD_mL.mjs → acorex-platform-module-document-management-client-distribute-document.command-CSFadKvh.mjs} +2 -2
- package/fesm2022/{acorex-platform-module-document-management-client-distribute-document.command-Dx9YD_mL.mjs.map → acorex-platform-module-document-management-client-distribute-document.command-CSFadKvh.mjs.map} +1 -1
- package/fesm2022/{acorex-platform-module-document-management-client-drive-choose.component-OhAugc6r.mjs → acorex-platform-module-document-management-client-drive-choose.component-BMulQpg-.mjs} +2 -2
- package/fesm2022/{acorex-platform-module-document-management-client-drive-choose.component-OhAugc6r.mjs.map → acorex-platform-module-document-management-client-drive-choose.component-BMulQpg-.mjs.map} +1 -1
- package/fesm2022/{acorex-platform-module-document-management-client-large-icons-view-skeleton.component-DpBUfDxO.mjs → acorex-platform-module-document-management-client-large-icons-view-skeleton.component-SQeg1CLI.mjs} +2 -2
- package/fesm2022/{acorex-platform-module-document-management-client-large-icons-view-skeleton.component-DpBUfDxO.mjs.map → acorex-platform-module-document-management-client-large-icons-view-skeleton.component-SQeg1CLI.mjs.map} +1 -1
- package/fesm2022/acorex-platform-module-document-management-client-large-icons-view.component-AGlhAtYv.mjs +31 -0
- package/fesm2022/acorex-platform-module-document-management-client-large-icons-view.component-AGlhAtYv.mjs.map +1 -0
- package/fesm2022/acorex-platform-module-document-management-client-large-tiles-view.component-D97jwBeB.mjs +36 -0
- package/fesm2022/acorex-platform-module-document-management-client-large-tiles-view.component-D97jwBeB.mjs.map +1 -0
- package/fesm2022/{acorex-platform-module-document-management-client-list-view-skeleton.component-BBvqBQNf.mjs → acorex-platform-module-document-management-client-list-view-skeleton.component-C2HQ4GiV.mjs} +2 -2
- package/fesm2022/{acorex-platform-module-document-management-client-list-view-skeleton.component-BBvqBQNf.mjs.map → acorex-platform-module-document-management-client-list-view-skeleton.component-C2HQ4GiV.mjs.map} +1 -1
- package/fesm2022/acorex-platform-module-document-management-client-list-view.component-D7ZY-Uxu.mjs +31 -0
- package/fesm2022/acorex-platform-module-document-management-client-list-view.component-D7ZY-Uxu.mjs.map +1 -0
- package/fesm2022/{acorex-platform-module-document-management-client-open-document.command-CXGPoHxG.mjs → acorex-platform-module-document-management-client-open-document.command-Cc_SSbPP.mjs} +2 -2
- package/fesm2022/{acorex-platform-module-document-management-client-open-document.command-CXGPoHxG.mjs.map → acorex-platform-module-document-management-client-open-document.command-Cc_SSbPP.mjs.map} +1 -1
- package/fesm2022/{acorex-platform-module-document-management-client-request-document-review.command-DeKBAiDg.mjs → acorex-platform-module-document-management-client-request-document-review.command-BPNCRHDN.mjs} +2 -2
- package/fesm2022/{acorex-platform-module-document-management-client-request-document-review.command-DeKBAiDg.mjs.map → acorex-platform-module-document-management-client-request-document-review.command-BPNCRHDN.mjs.map} +1 -1
- package/fesm2022/{acorex-platform-module-document-management-client-small-icons-view-skeleton.component-CXwTiSk5.mjs → acorex-platform-module-document-management-client-small-icons-view-skeleton.component-sCp4SVqI.mjs} +2 -2
- package/fesm2022/{acorex-platform-module-document-management-client-small-icons-view-skeleton.component-CXwTiSk5.mjs.map → acorex-platform-module-document-management-client-small-icons-view-skeleton.component-sCp4SVqI.mjs.map} +1 -1
- package/fesm2022/acorex-platform-module-document-management-client-small-icons-view.component-DEiUdVXD.mjs +31 -0
- package/fesm2022/acorex-platform-module-document-management-client-small-icons-view.component-DEiUdVXD.mjs.map +1 -0
- package/fesm2022/{acorex-platform-module-document-management-client-small-tiles-view-skeleton.component--4le59Nv.mjs → acorex-platform-module-document-management-client-small-tiles-view-skeleton.component-BsBW019A.mjs} +2 -2
- package/fesm2022/{acorex-platform-module-document-management-client-small-tiles-view-skeleton.component--4le59Nv.mjs.map → acorex-platform-module-document-management-client-small-tiles-view-skeleton.component-BsBW019A.mjs.map} +1 -1
- package/fesm2022/acorex-platform-module-document-management-client-small-tiles-view.component-CDPQf0bw.mjs +36 -0
- package/fesm2022/acorex-platform-module-document-management-client-small-tiles-view.component-CDPQf0bw.mjs.map +1 -0
- package/fesm2022/{acorex-platform-module-document-management-client-upload-document.command-Cq4ewNtw.mjs → acorex-platform-module-document-management-client-upload-document.command-DtDIxNtg.mjs} +2 -2
- package/fesm2022/{acorex-platform-module-document-management-client-upload-document.command-Cq4ewNtw.mjs.map → acorex-platform-module-document-management-client-upload-document.command-DtDIxNtg.mjs.map} +1 -1
- package/fesm2022/acorex-platform-module-document-management-client.mjs +1 -1
- package/i18n/en-AU/document-management.json +9 -0
- package/i18n/en-US/document-management.json +9 -0
- package/i18n/fa-IR/document-management.json +9 -0
- package/package.json +2 -2
- package/types/acorex-platform-module-document-management-client-contracts.d.ts +11 -3
- package/types/acorex-platform-module-document-management-client.d.ts +5 -0
- package/fesm2022/acorex-platform-module-document-management-client-acorex-platform-module-document-management-client-BvSJUZE-.mjs.map +0 -1
- package/fesm2022/acorex-platform-module-document-management-client-attachment-widget.component-OFHfOBUY.mjs +0 -37
- package/fesm2022/acorex-platform-module-document-management-client-attachment-widget.component-OFHfOBUY.mjs.map +0 -1
- package/fesm2022/acorex-platform-module-document-management-client-details-view.component-PfKcPBmu.mjs.map +0 -1
- package/fesm2022/acorex-platform-module-document-management-client-large-icons-view.component-CcfWPik4.mjs +0 -31
- package/fesm2022/acorex-platform-module-document-management-client-large-icons-view.component-CcfWPik4.mjs.map +0 -1
- package/fesm2022/acorex-platform-module-document-management-client-large-tiles-view.component-Dy21yqA-.mjs +0 -36
- package/fesm2022/acorex-platform-module-document-management-client-large-tiles-view.component-Dy21yqA-.mjs.map +0 -1
- package/fesm2022/acorex-platform-module-document-management-client-list-view.component-BokMkS6v.mjs +0 -31
- package/fesm2022/acorex-platform-module-document-management-client-list-view.component-BokMkS6v.mjs.map +0 -1
- package/fesm2022/acorex-platform-module-document-management-client-small-icons-view.component-DnY9IiJE.mjs +0 -31
- package/fesm2022/acorex-platform-module-document-management-client-small-icons-view.component-DnY9IiJE.mjs.map +0 -1
- package/fesm2022/acorex-platform-module-document-management-client-small-tiles-view.component-DKo0rMHF.mjs +0 -36
- package/fesm2022/acorex-platform-module-document-management-client-small-tiles-view.component-DKo0rMHF.mjs.map +0 -1
|
@@ -6,7 +6,7 @@ import * as i1$1 from '@angular/common';
|
|
|
6
6
|
import { CommonModule } from '@angular/common';
|
|
7
7
|
import * as i0 from '@angular/core';
|
|
8
8
|
import { inject, ChangeDetectionStrategy, Component } from '@angular/core';
|
|
9
|
-
import { A as AXPDocumentExplorerViewModel } from './acorex-platform-module-document-management-client-acorex-platform-module-document-management-client-
|
|
9
|
+
import { A as AXPDocumentExplorerViewModel } from './acorex-platform-module-document-management-client-acorex-platform-module-document-management-client-D0DTP3BN.mjs';
|
|
10
10
|
|
|
11
11
|
class AXMDocumentExplorerAttachmentViewSkeletonComponent {
|
|
12
12
|
constructor() {
|
|
@@ -24,4 +24,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "22.0.8", ngImpor
|
|
|
24
24
|
}] });
|
|
25
25
|
|
|
26
26
|
export { AXMDocumentExplorerAttachmentViewSkeletonComponent };
|
|
27
|
-
//# sourceMappingURL=acorex-platform-module-document-management-client-attachment-view-skeleton.component-
|
|
27
|
+
//# sourceMappingURL=acorex-platform-module-document-management-client-attachment-view-skeleton.component-D36_0xXy.mjs.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"acorex-platform-module-document-management-client-attachment-view-skeleton.component-
|
|
1
|
+
{"version":3,"file":"acorex-platform-module-document-management-client-attachment-view-skeleton.component-D36_0xXy.mjs","sources":["../../../../libs/modules/document-management/client/src/lib/features/document-explorer/views/attachement-widget/attachment-view-skeleton.component.ts","../../../../libs/modules/document-management/client/src/lib/features/document-explorer/views/attachement-widget/attachment-view-skeleton.component.html"],"sourcesContent":["import { AXSkeletonModule } from '@acorex/components/skeleton';\nimport { AXTranslationModule } from '@acorex/core/translation';\nimport { CommonModule } from '@angular/common';\nimport { ChangeDetectionStrategy, Component, inject } from '@angular/core';\nimport { AXPDocumentExplorerViewModel } from '../../document-explorer.viewmodel';\n\n@Component({\n selector: 'axm-document-explorer-attachment-view-skeleton',\n templateUrl: './attachment-view-skeleton.component.html',\n styleUrl: './attachment-view-skeleton.component.css',\n changeDetection: ChangeDetectionStrategy.OnPush,\n imports: [CommonModule, AXSkeletonModule, AXTranslationModule],\n})\nexport class AXMDocumentExplorerAttachmentViewSkeletonComponent {\n protected readonly vm = inject(AXPDocumentExplorerViewModel);\n\n protected readonly folderPlaceholders = [0, 1, 2];\n protected readonly filePlaceholders = [0, 1];\n protected readonly flatPlaceholders = [0, 1, 2, 3, 4];\n}\n","@if (vm.groupByType()) {\n <div class=\"__section\">\n <div class=\"__header\">\n <h3 class=\"__title\">{{ '@document-management:terms.common.folders' | translate | async }}</h3>\n </div>\n <div class=\"__content\">\n @for (item of folderPlaceholders; track item) {\n <div class=\"__item\">\n <ax-skeleton [animated]=\"true\" class=\"__icon\"></ax-skeleton>\n <ax-skeleton [animated]=\"true\" class=\"__name\"></ax-skeleton>\n </div>\n }\n </div>\n </div>\n <div class=\"__section\">\n <div class=\"__header\">\n <h3 class=\"__title\">{{ '@document-management:terms.common.files' | translate | async }}</h3>\n </div>\n <div class=\"__content\">\n @for (item of filePlaceholders; track item) {\n <div class=\"__item\">\n <ax-skeleton [animated]=\"true\" class=\"__icon\"></ax-skeleton>\n <ax-skeleton [animated]=\"true\" class=\"__name\"></ax-skeleton>\n </div>\n }\n </div>\n </div>\n} @else {\n <div class=\"__content\">\n @for (item of flatPlaceholders; track item) {\n <div class=\"__item\">\n <ax-skeleton [animated]=\"true\" class=\"__icon\"></ax-skeleton>\n <ax-skeleton [animated]=\"true\" class=\"__name\"></ax-skeleton>\n </div>\n }\n </div>\n}\n"],"names":["i2"],"mappings":";;;;;;;;;;MAaa,kDAAkD,CAAA;AAP/D,IAAA,WAAA,GAAA;AAQqB,QAAA,IAAA,CAAA,EAAE,GAAG,MAAM,CAAC,4BAA4B,CAAC;QAEzC,IAAA,CAAA,kBAAkB,GAAG,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC;AAC9B,QAAA,IAAA,CAAA,gBAAgB,GAAG,CAAC,CAAC,EAAE,CAAC,CAAC;AACzB,QAAA,IAAA,CAAA,gBAAgB,GAAG,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC;AACtD,IAAA;8GANY,kDAAkD,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA;AAAlD,IAAA,SAAA,IAAA,CAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,IAAA,EAAA,kDAAkD,0GCb/D,+xCAqCA,EAAA,MAAA,EAAA,CAAA,6uCAAA,CAAA,EAAA,YAAA,EAAA,CAAA,EAAA,IAAA,EAAA,UAAA,EAAA,IAAA,ED1BY,YAAY,EAAA,EAAA,EAAA,IAAA,EAAA,UAAA,EAAA,IAAA,EAAE,gBAAgB,kIAAE,mBAAmB,EAAA,EAAA,EAAA,IAAA,EAAA,MAAA,EAAA,IAAA,EAAAA,IAAA,CAAA,SAAA,EAAA,IAAA,EAAA,OAAA,EAAA,EAAA,EAAA,IAAA,EAAA,MAAA,EAAA,IAAA,EAAA,EAAA,CAAA,gBAAA,EAAA,IAAA,EAAA,WAAA,EAAA,CAAA,EAAA,eAAA,EAAA,EAAA,CAAA,uBAAA,CAAA,MAAA,EAAA,CAAA,CAAA;;2FAElD,kDAAkD,EAAA,UAAA,EAAA,CAAA;kBAP9D,SAAS;+BACE,gDAAgD,EAAA,eAAA,EAGzC,uBAAuB,CAAC,MAAM,EAAA,OAAA,EACtC,CAAC,YAAY,EAAE,gBAAgB,EAAE,mBAAmB,CAAC,EAAA,QAAA,EAAA,+xCAAA,EAAA,MAAA,EAAA,CAAA,6uCAAA,CAAA,EAAA;;;"}
|
|
@@ -0,0 +1,37 @@
|
|
|
1
|
+
import { AXButtonModule } from '@acorex/components/button';
|
|
2
|
+
import { AXDecoratorModule } from '@acorex/components/decorators';
|
|
3
|
+
import { AXFormatModule } from '@acorex/core/format';
|
|
4
|
+
import * as i3 from '@acorex/core/translation';
|
|
5
|
+
import { AXTranslationModule } from '@acorex/core/translation';
|
|
6
|
+
import { AXPElementDataDirective } from '@acorex-platform/framework-client/core';
|
|
7
|
+
import * as i0 from '@angular/core';
|
|
8
|
+
import { inject, ChangeDetectionStrategy, Component } from '@angular/core';
|
|
9
|
+
import * as i1 from '@angular/common';
|
|
10
|
+
import { CommonModule } from '@angular/common';
|
|
11
|
+
import { A as AXPDocumentExplorerViewModel, j as AXMDocumentManagerService, a as AXMDocumentExpirationBadgeComponent, b as AXMDocumentVersionBadgeComponent, c as AXMFolderExpirationBadgesComponent } from './acorex-platform-module-document-management-client-acorex-platform-module-document-management-client-D0DTP3BN.mjs';
|
|
12
|
+
|
|
13
|
+
class AXMDocumentExplorerAttachmentComponent {
|
|
14
|
+
constructor() {
|
|
15
|
+
this.vm = inject(AXPDocumentExplorerViewModel);
|
|
16
|
+
this.driveService = inject(AXMDocumentManagerService);
|
|
17
|
+
}
|
|
18
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "22.0.8", ngImport: i0, type: AXMDocumentExplorerAttachmentComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
|
|
19
|
+
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "22.0.8", type: AXMDocumentExplorerAttachmentComponent, isStandalone: true, selector: "axm-document-explorer-attachment-widget", ngImport: i0, template: "@if (vm.groupByType()) {\n @if (vm.filteredFolders().length > 0) {\n <div class=\"__section\">\n <div class=\"__header\">\n <h3 class=\"__title\">{{ '@document-management:terms.common.folders' | translate | async }}</h3>\n </div>\n <div class=\"__content fa-xl\">\n @for (folder of vm.filteredFolders(); track folder.id) {\n <div\n class=\"__explorer-item\"\n [class.--selected]=\"vm.isItemSelected(folder)\"\n [axp-data]=\"folder\"\n (click)=\"vm.toggleSelect(folder)\"\n (onDblClick)=\"vm.navigateToFolder(folder.id)\"\n >\n <div class=\"__icon\" [style.color]=\"vm.getFolderColor(folder)\">\n @if (vm.isLoadingFolder(folder.id)) {\n <i class=\"fa-light fa-spinner fa-spin-pulse\"></i>\n } @else {\n <i class=\"fas fa-folder-closed\"></i>\n }\n </div>\n <div class=\"flex min-w-0 items-center gap-1.5\">\n <div class=\"__name\">{{ folder.name }}</div>\n <!-- ----- Expiration counts after folder name ----- -->\n <axm-folder-expiration-badges [node]=\"folder\" />\n </div>\n </div>\n }\n </div>\n </div>\n }\n\n @if (vm.filteredFiles().length > 0) {\n <div class=\"__section\">\n <div class=\"__header\">\n <h3 class=\"__title\">{{ '@document-management:terms.common.files' | translate | async }}</h3>\n </div>\n <div class=\"__content fa-xl\">\n @for (file of vm.filteredFiles(); track file.id) {\n @let fileInfo = vm.getFileInfo(file.name);\n <div\n [class.--selected]=\"vm.isItemSelected(file)\"\n class=\"__explorer-item group\"\n [axp-data]=\"file\"\n (click)=\"vm.toggleSelect(file)\"\n (onDblClick)=\"vm.openFileOnDoubleClick(file)\"\n >\n <div class=\"name-bar\">\n <div class=\"__icon\">\n <i class=\"fa-fw {{ fileInfo.icon }}\"></i>\n </div>\n <div class=\"flex min-w-0 items-center gap-1.5\">\n <div class=\"__name\">{{ file.title || file.name }}</div>\n <axm-document-expiration-badge [node]=\"file\" />\n <axm-document-version-badge [node]=\"file\" />\n </div>\n </div>\n <div class=\"action-bar group-hover:visible invisible\">\n <div>\n <i class=\"fa-regular fa-trash\" (click)=\"vm.deleteNodes([file])\"></i>\n </div>\n <div>\n <i class=\"fa-regular fa-download\" (click)=\"driveService.downloadFile(file)\"></i>\n </div>\n <div>\n <i class=\"fa-regular fa-info\" (click)=\"vm.openFile(file)\"></i>\n </div>\n </div>\n </div>\n }\n </div>\n </div>\n }\n} @else {\n <div class=\"__content fa-xl\">\n @for (folder of vm.filteredFolders(); track folder.id) {\n <div\n class=\"__explorer-item\"\n [class.--selected]=\"vm.isItemSelected(folder)\"\n [axp-data]=\"folder\"\n (click)=\"vm.toggleSelect(folder)\"\n (onDblClick)=\"vm.navigateToFolder(folder.id)\"\n >\n <div class=\"__icon\" [style.color]=\"vm.getFolderColor(folder)\">\n @if (vm.isLoadingFolder(folder.id)) {\n <i class=\"fa-light fa-spinner fa-spin-pulse\"></i>\n } @else {\n <i class=\"fas fa-folder-closed\"></i>\n }\n </div>\n <div class=\"flex min-w-0 items-center gap-1.5\">\n <div class=\"__name\">{{ folder.name }}</div>\n <!-- ----- Expiration counts after folder name ----- -->\n <axm-folder-expiration-badges [node]=\"folder\" />\n </div>\n </div>\n }\n @for (file of vm.filteredFiles(); track file.id) {\n @let fileInfo = vm.getFileInfo(file.name);\n <div\n [class.--selected]=\"vm.isItemSelected(file)\"\n class=\"__explorer-item group\"\n [axp-data]=\"file\"\n (click)=\"vm.toggleSelect(file)\"\n (onDblClick)=\"vm.openFileOnDoubleClick(file)\"\n >\n <div class=\"name-bar\">\n <div class=\"__icon\">\n <i class=\"fa-fw {{ fileInfo.icon }}\"></i>\n </div>\n <div class=\"flex min-w-0 items-center gap-1.5\">\n <div class=\"__name\">{{ file.title || file.name }}</div>\n <axm-document-expiration-badge [node]=\"file\" />\n <axm-document-version-badge [node]=\"file\" />\n </div>\n </div>\n <div class=\"action-bar group-hover:visible invisible\">\n <div>\n <i class=\"fa-regular fa-trash\" (click)=\"vm.deleteNodes([file])\"></i>\n </div>\n <div>\n <i class=\"fa-regular fa-download\" (click)=\"driveService.downloadFile(file)\"></i>\n </div>\n <div>\n <i class=\"fa-regular fa-info\" (click)=\"vm.openFile(file)\"></i>\n </div>\n </div>\n </div>\n }\n </div>\n}\n", styles: ["@layer properties;:host{width:100%}:host .__section{margin-bottom:calc(var(--spacing, .25rem) * 8);width:100%}:host .__section:last-child{margin-bottom:0}:host .__section .__header .__title{margin-bottom:calc(var(--spacing, .25rem) * 4);font-size:var(--text-lg, 1.125rem);line-height:var(--tw-leading, var(--text-lg--line-height, calc(1.75 / 1.125)));--tw-font-weight: var(--font-weight-medium, 500);font-weight:var(--font-weight-medium, 500)}:host .__content{display:flex;flex-direction:column;gap:calc(var(--spacing, .25rem) * .5)}:host .__content .__explorer-item{display:flex;cursor:pointer;align-items:center;justify-content:space-between;gap:calc(var(--spacing, .25rem) * 3);border-radius:var(--radius-md, .375rem);padding:calc(var(--spacing, .25rem) * 2)}:host .__content .__explorer-item:hover{background-color:var(--color-light);color:var(--color-on-light);border-color:var(--color-border-light)}:host .__content .__explorer-item .name-bar,:host .__content .__explorer-item .action-bar{display:flex;align-items:center;gap:calc(var(--spacing, .25rem) * 2);font-size:var(--text-sm, .875rem);line-height:var(--tw-leading, var(--text-sm--line-height, calc(1.25 / .875)))}:host .__content .__explorer-item .__icon{width:calc(var(--spacing, .25rem) * 6);flex-shrink:0}:host .__content .__explorer-item .__name{overflow:hidden;text-overflow:ellipsis;white-space:nowrap;text-align:start;font-size:var(--text-sm, .875rem);line-height:var(--tw-leading, var(--text-sm--line-height, calc(1.25 / .875)));--tw-font-weight: var(--font-weight-medium, 500);font-weight:var(--font-weight-medium, 500)}:host .__content .__explorer-item.--selected{background-color:var(--color-darker);color:var(--color-on-darker);border-color:var(--color-border-darker)}@property --tw-font-weight{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-font-weight: initial}}}\n/*! tailwindcss v4.3.3 | MIT License | https://tailwindcss.com */\n"], dependencies: [{ kind: "ngmodule", type: CommonModule }, { kind: "ngmodule", type: AXDecoratorModule }, { kind: "ngmodule", type: AXFormatModule }, { kind: "ngmodule", type: AXButtonModule }, { kind: "ngmodule", type: AXTranslationModule }, { kind: "directive", type: AXPElementDataDirective, selector: "[axp-data]", inputs: ["axp-data", "axp-data-path"] }, { kind: "component", type: AXMDocumentExpirationBadgeComponent, selector: "axm-document-expiration-badge", inputs: ["node"] }, { kind: "component", type: AXMDocumentVersionBadgeComponent, selector: "axm-document-version-badge", inputs: ["node"] }, { kind: "component", type: AXMFolderExpirationBadgesComponent, selector: "axm-folder-expiration-badges", inputs: ["node"] }, { kind: "pipe", type: i1.AsyncPipe, name: "async" }, { kind: "pipe", type: i3.AXTranslatorPipe, name: "translate" }], changeDetection: i0.ChangeDetectionStrategy.Eager }); }
|
|
20
|
+
}
|
|
21
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "22.0.8", ngImport: i0, type: AXMDocumentExplorerAttachmentComponent, decorators: [{
|
|
22
|
+
type: Component,
|
|
23
|
+
args: [{ selector: 'axm-document-explorer-attachment-widget', standalone: true, changeDetection: ChangeDetectionStrategy.Eager, imports: [
|
|
24
|
+
CommonModule,
|
|
25
|
+
AXDecoratorModule,
|
|
26
|
+
AXFormatModule,
|
|
27
|
+
AXButtonModule,
|
|
28
|
+
AXTranslationModule,
|
|
29
|
+
AXPElementDataDirective,
|
|
30
|
+
AXMDocumentExpirationBadgeComponent,
|
|
31
|
+
AXMDocumentVersionBadgeComponent,
|
|
32
|
+
AXMFolderExpirationBadgesComponent,
|
|
33
|
+
], template: "@if (vm.groupByType()) {\n @if (vm.filteredFolders().length > 0) {\n <div class=\"__section\">\n <div class=\"__header\">\n <h3 class=\"__title\">{{ '@document-management:terms.common.folders' | translate | async }}</h3>\n </div>\n <div class=\"__content fa-xl\">\n @for (folder of vm.filteredFolders(); track folder.id) {\n <div\n class=\"__explorer-item\"\n [class.--selected]=\"vm.isItemSelected(folder)\"\n [axp-data]=\"folder\"\n (click)=\"vm.toggleSelect(folder)\"\n (onDblClick)=\"vm.navigateToFolder(folder.id)\"\n >\n <div class=\"__icon\" [style.color]=\"vm.getFolderColor(folder)\">\n @if (vm.isLoadingFolder(folder.id)) {\n <i class=\"fa-light fa-spinner fa-spin-pulse\"></i>\n } @else {\n <i class=\"fas fa-folder-closed\"></i>\n }\n </div>\n <div class=\"flex min-w-0 items-center gap-1.5\">\n <div class=\"__name\">{{ folder.name }}</div>\n <!-- ----- Expiration counts after folder name ----- -->\n <axm-folder-expiration-badges [node]=\"folder\" />\n </div>\n </div>\n }\n </div>\n </div>\n }\n\n @if (vm.filteredFiles().length > 0) {\n <div class=\"__section\">\n <div class=\"__header\">\n <h3 class=\"__title\">{{ '@document-management:terms.common.files' | translate | async }}</h3>\n </div>\n <div class=\"__content fa-xl\">\n @for (file of vm.filteredFiles(); track file.id) {\n @let fileInfo = vm.getFileInfo(file.name);\n <div\n [class.--selected]=\"vm.isItemSelected(file)\"\n class=\"__explorer-item group\"\n [axp-data]=\"file\"\n (click)=\"vm.toggleSelect(file)\"\n (onDblClick)=\"vm.openFileOnDoubleClick(file)\"\n >\n <div class=\"name-bar\">\n <div class=\"__icon\">\n <i class=\"fa-fw {{ fileInfo.icon }}\"></i>\n </div>\n <div class=\"flex min-w-0 items-center gap-1.5\">\n <div class=\"__name\">{{ file.title || file.name }}</div>\n <axm-document-expiration-badge [node]=\"file\" />\n <axm-document-version-badge [node]=\"file\" />\n </div>\n </div>\n <div class=\"action-bar group-hover:visible invisible\">\n <div>\n <i class=\"fa-regular fa-trash\" (click)=\"vm.deleteNodes([file])\"></i>\n </div>\n <div>\n <i class=\"fa-regular fa-download\" (click)=\"driveService.downloadFile(file)\"></i>\n </div>\n <div>\n <i class=\"fa-regular fa-info\" (click)=\"vm.openFile(file)\"></i>\n </div>\n </div>\n </div>\n }\n </div>\n </div>\n }\n} @else {\n <div class=\"__content fa-xl\">\n @for (folder of vm.filteredFolders(); track folder.id) {\n <div\n class=\"__explorer-item\"\n [class.--selected]=\"vm.isItemSelected(folder)\"\n [axp-data]=\"folder\"\n (click)=\"vm.toggleSelect(folder)\"\n (onDblClick)=\"vm.navigateToFolder(folder.id)\"\n >\n <div class=\"__icon\" [style.color]=\"vm.getFolderColor(folder)\">\n @if (vm.isLoadingFolder(folder.id)) {\n <i class=\"fa-light fa-spinner fa-spin-pulse\"></i>\n } @else {\n <i class=\"fas fa-folder-closed\"></i>\n }\n </div>\n <div class=\"flex min-w-0 items-center gap-1.5\">\n <div class=\"__name\">{{ folder.name }}</div>\n <!-- ----- Expiration counts after folder name ----- -->\n <axm-folder-expiration-badges [node]=\"folder\" />\n </div>\n </div>\n }\n @for (file of vm.filteredFiles(); track file.id) {\n @let fileInfo = vm.getFileInfo(file.name);\n <div\n [class.--selected]=\"vm.isItemSelected(file)\"\n class=\"__explorer-item group\"\n [axp-data]=\"file\"\n (click)=\"vm.toggleSelect(file)\"\n (onDblClick)=\"vm.openFileOnDoubleClick(file)\"\n >\n <div class=\"name-bar\">\n <div class=\"__icon\">\n <i class=\"fa-fw {{ fileInfo.icon }}\"></i>\n </div>\n <div class=\"flex min-w-0 items-center gap-1.5\">\n <div class=\"__name\">{{ file.title || file.name }}</div>\n <axm-document-expiration-badge [node]=\"file\" />\n <axm-document-version-badge [node]=\"file\" />\n </div>\n </div>\n <div class=\"action-bar group-hover:visible invisible\">\n <div>\n <i class=\"fa-regular fa-trash\" (click)=\"vm.deleteNodes([file])\"></i>\n </div>\n <div>\n <i class=\"fa-regular fa-download\" (click)=\"driveService.downloadFile(file)\"></i>\n </div>\n <div>\n <i class=\"fa-regular fa-info\" (click)=\"vm.openFile(file)\"></i>\n </div>\n </div>\n </div>\n }\n </div>\n}\n", styles: ["@layer properties;:host{width:100%}:host .__section{margin-bottom:calc(var(--spacing, .25rem) * 8);width:100%}:host .__section:last-child{margin-bottom:0}:host .__section .__header .__title{margin-bottom:calc(var(--spacing, .25rem) * 4);font-size:var(--text-lg, 1.125rem);line-height:var(--tw-leading, var(--text-lg--line-height, calc(1.75 / 1.125)));--tw-font-weight: var(--font-weight-medium, 500);font-weight:var(--font-weight-medium, 500)}:host .__content{display:flex;flex-direction:column;gap:calc(var(--spacing, .25rem) * .5)}:host .__content .__explorer-item{display:flex;cursor:pointer;align-items:center;justify-content:space-between;gap:calc(var(--spacing, .25rem) * 3);border-radius:var(--radius-md, .375rem);padding:calc(var(--spacing, .25rem) * 2)}:host .__content .__explorer-item:hover{background-color:var(--color-light);color:var(--color-on-light);border-color:var(--color-border-light)}:host .__content .__explorer-item .name-bar,:host .__content .__explorer-item .action-bar{display:flex;align-items:center;gap:calc(var(--spacing, .25rem) * 2);font-size:var(--text-sm, .875rem);line-height:var(--tw-leading, var(--text-sm--line-height, calc(1.25 / .875)))}:host .__content .__explorer-item .__icon{width:calc(var(--spacing, .25rem) * 6);flex-shrink:0}:host .__content .__explorer-item .__name{overflow:hidden;text-overflow:ellipsis;white-space:nowrap;text-align:start;font-size:var(--text-sm, .875rem);line-height:var(--tw-leading, var(--text-sm--line-height, calc(1.25 / .875)));--tw-font-weight: var(--font-weight-medium, 500);font-weight:var(--font-weight-medium, 500)}:host .__content .__explorer-item.--selected{background-color:var(--color-darker);color:var(--color-on-darker);border-color:var(--color-border-darker)}@property --tw-font-weight{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-font-weight: initial}}}\n/*! tailwindcss v4.3.3 | MIT License | https://tailwindcss.com */\n"] }]
|
|
34
|
+
}] });
|
|
35
|
+
|
|
36
|
+
export { AXMDocumentExplorerAttachmentComponent };
|
|
37
|
+
//# sourceMappingURL=acorex-platform-module-document-management-client-attachment-widget.component-CReChWJw.mjs.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"acorex-platform-module-document-management-client-attachment-widget.component-CReChWJw.mjs","sources":["../../../../libs/modules/document-management/client/src/lib/features/document-explorer/views/attachement-widget/attachment-widget.component.ts","../../../../libs/modules/document-management/client/src/lib/features/document-explorer/views/attachement-widget/attachment-widget.component.html"],"sourcesContent":["import { AXButtonModule } from '@acorex/components/button';\nimport { AXDecoratorModule } from '@acorex/components/decorators';\nimport { AXFormatModule } from '@acorex/core/format';\nimport { AXTranslationModule } from '@acorex/core/translation';\nimport { AXPElementDataDirective } from '@acorex-platform/framework-client/core';\n\nimport { Component, inject, ChangeDetectionStrategy } from '@angular/core';\nimport { CommonModule } from '@angular/common';\nimport { AXMDocumentManagerService } from '../../../shared';\nimport { AXMDocumentExpirationBadgeComponent } from '../../../shared/components/document-expiration-badge/document-expiration-badge.component';\nimport { AXMDocumentVersionBadgeComponent } from '../../../shared/components/document-version-badge/document-version-badge.component';\nimport { AXMFolderExpirationBadgesComponent } from '../../../shared/components/folder-expiration-badges/folder-expiration-badges.component';\nimport { AXPDocumentExplorerViewModel } from '../../document-explorer.viewmodel';\n\n@Component({\n selector: 'axm-document-explorer-attachment-widget',\n templateUrl: './attachment-widget.component.html',\n styleUrls: ['./attachment-widget.component.css'],\n standalone: true,\n changeDetection: ChangeDetectionStrategy.Eager,\n imports: [\n CommonModule,\n AXDecoratorModule,\n AXFormatModule,\n AXButtonModule,\n AXTranslationModule,\n AXPElementDataDirective,\n AXMDocumentExpirationBadgeComponent,\n AXMDocumentVersionBadgeComponent,\n AXMFolderExpirationBadgesComponent,\n],\n})\nexport class AXMDocumentExplorerAttachmentComponent {\n protected vm = inject(AXPDocumentExplorerViewModel);\n protected readonly driveService = inject(AXMDocumentManagerService);\n}\n","@if (vm.groupByType()) {\n @if (vm.filteredFolders().length > 0) {\n <div class=\"__section\">\n <div class=\"__header\">\n <h3 class=\"__title\">{{ '@document-management:terms.common.folders' | translate | async }}</h3>\n </div>\n <div class=\"__content fa-xl\">\n @for (folder of vm.filteredFolders(); track folder.id) {\n <div\n class=\"__explorer-item\"\n [class.--selected]=\"vm.isItemSelected(folder)\"\n [axp-data]=\"folder\"\n (click)=\"vm.toggleSelect(folder)\"\n (onDblClick)=\"vm.navigateToFolder(folder.id)\"\n >\n <div class=\"__icon\" [style.color]=\"vm.getFolderColor(folder)\">\n @if (vm.isLoadingFolder(folder.id)) {\n <i class=\"fa-light fa-spinner fa-spin-pulse\"></i>\n } @else {\n <i class=\"fas fa-folder-closed\"></i>\n }\n </div>\n <div class=\"flex min-w-0 items-center gap-1.5\">\n <div class=\"__name\">{{ folder.name }}</div>\n <!-- ----- Expiration counts after folder name ----- -->\n <axm-folder-expiration-badges [node]=\"folder\" />\n </div>\n </div>\n }\n </div>\n </div>\n }\n\n @if (vm.filteredFiles().length > 0) {\n <div class=\"__section\">\n <div class=\"__header\">\n <h3 class=\"__title\">{{ '@document-management:terms.common.files' | translate | async }}</h3>\n </div>\n <div class=\"__content fa-xl\">\n @for (file of vm.filteredFiles(); track file.id) {\n @let fileInfo = vm.getFileInfo(file.name);\n <div\n [class.--selected]=\"vm.isItemSelected(file)\"\n class=\"__explorer-item group\"\n [axp-data]=\"file\"\n (click)=\"vm.toggleSelect(file)\"\n (onDblClick)=\"vm.openFileOnDoubleClick(file)\"\n >\n <div class=\"name-bar\">\n <div class=\"__icon\">\n <i class=\"fa-fw {{ fileInfo.icon }}\"></i>\n </div>\n <div class=\"flex min-w-0 items-center gap-1.5\">\n <div class=\"__name\">{{ file.title || file.name }}</div>\n <axm-document-expiration-badge [node]=\"file\" />\n <axm-document-version-badge [node]=\"file\" />\n </div>\n </div>\n <div class=\"action-bar group-hover:visible invisible\">\n <div>\n <i class=\"fa-regular fa-trash\" (click)=\"vm.deleteNodes([file])\"></i>\n </div>\n <div>\n <i class=\"fa-regular fa-download\" (click)=\"driveService.downloadFile(file)\"></i>\n </div>\n <div>\n <i class=\"fa-regular fa-info\" (click)=\"vm.openFile(file)\"></i>\n </div>\n </div>\n </div>\n }\n </div>\n </div>\n }\n} @else {\n <div class=\"__content fa-xl\">\n @for (folder of vm.filteredFolders(); track folder.id) {\n <div\n class=\"__explorer-item\"\n [class.--selected]=\"vm.isItemSelected(folder)\"\n [axp-data]=\"folder\"\n (click)=\"vm.toggleSelect(folder)\"\n (onDblClick)=\"vm.navigateToFolder(folder.id)\"\n >\n <div class=\"__icon\" [style.color]=\"vm.getFolderColor(folder)\">\n @if (vm.isLoadingFolder(folder.id)) {\n <i class=\"fa-light fa-spinner fa-spin-pulse\"></i>\n } @else {\n <i class=\"fas fa-folder-closed\"></i>\n }\n </div>\n <div class=\"flex min-w-0 items-center gap-1.5\">\n <div class=\"__name\">{{ folder.name }}</div>\n <!-- ----- Expiration counts after folder name ----- -->\n <axm-folder-expiration-badges [node]=\"folder\" />\n </div>\n </div>\n }\n @for (file of vm.filteredFiles(); track file.id) {\n @let fileInfo = vm.getFileInfo(file.name);\n <div\n [class.--selected]=\"vm.isItemSelected(file)\"\n class=\"__explorer-item group\"\n [axp-data]=\"file\"\n (click)=\"vm.toggleSelect(file)\"\n (onDblClick)=\"vm.openFileOnDoubleClick(file)\"\n >\n <div class=\"name-bar\">\n <div class=\"__icon\">\n <i class=\"fa-fw {{ fileInfo.icon }}\"></i>\n </div>\n <div class=\"flex min-w-0 items-center gap-1.5\">\n <div class=\"__name\">{{ file.title || file.name }}</div>\n <axm-document-expiration-badge [node]=\"file\" />\n <axm-document-version-badge [node]=\"file\" />\n </div>\n </div>\n <div class=\"action-bar group-hover:visible invisible\">\n <div>\n <i class=\"fa-regular fa-trash\" (click)=\"vm.deleteNodes([file])\"></i>\n </div>\n <div>\n <i class=\"fa-regular fa-download\" (click)=\"driveService.downloadFile(file)\"></i>\n </div>\n <div>\n <i class=\"fa-regular fa-info\" (click)=\"vm.openFile(file)\"></i>\n </div>\n </div>\n </div>\n }\n </div>\n}\n"],"names":["i2"],"mappings":";;;;;;;;;;;;MAgCa,sCAAsC,CAAA;AAlBnD,IAAA,WAAA,GAAA;AAmBY,QAAA,IAAA,CAAA,EAAE,GAAG,MAAM,CAAC,4BAA4B,CAAC;AAChC,QAAA,IAAA,CAAA,YAAY,GAAG,MAAM,CAAC,yBAAyB,CAAC;AACpE,IAAA;8GAHY,sCAAsC,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA;AAAtC,IAAA,SAAA,IAAA,CAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,IAAA,EAAA,sCAAsC,mGChCnD,ujKAoIA,EAAA,MAAA,EAAA,CAAA,giEAAA,CAAA,EAAA,YAAA,EAAA,CAAA,EAAA,IAAA,EAAA,UAAA,EAAA,IAAA,ED/GI,YAAY,EAAA,EAAA,EAAA,IAAA,EAAA,UAAA,EAAA,IAAA,EACZ,iBAAiB,8BACjB,cAAc,EAAA,EAAA,EAAA,IAAA,EAAA,UAAA,EAAA,IAAA,EACd,cAAc,EAAA,EAAA,EAAA,IAAA,EAAA,UAAA,EAAA,IAAA,EACd,mBAAmB,+BACnB,uBAAuB,EAAA,QAAA,EAAA,YAAA,EAAA,MAAA,EAAA,CAAA,UAAA,EAAA,eAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EACvB,mCAAmC,EAAA,QAAA,EAAA,+BAAA,EAAA,MAAA,EAAA,CAAA,MAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EACnC,gCAAgC,yFAChC,kCAAkC,EAAA,QAAA,EAAA,8BAAA,EAAA,MAAA,EAAA,CAAA,MAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,MAAA,EAAA,IAAA,EAAA,EAAA,CAAA,SAAA,EAAA,IAAA,EAAA,OAAA,EAAA,EAAA,EAAA,IAAA,EAAA,MAAA,EAAA,IAAA,EAAAA,EAAA,CAAA,gBAAA,EAAA,IAAA,EAAA,WAAA,EAAA,CAAA,EAAA,eAAA,EAAA,EAAA,CAAA,uBAAA,CAAA,KAAA,EAAA,CAAA,CAAA;;2FAGzB,sCAAsC,EAAA,UAAA,EAAA,CAAA;kBAlBlD,SAAS;AACE,YAAA,IAAA,EAAA,CAAA,EAAA,QAAA,EAAA,yCAAyC,cAGvC,IAAI,EAAA,eAAA,EACC,uBAAuB,CAAC,KAAK,EAAA,OAAA,EACrC;wBACP,YAAY;wBACZ,iBAAiB;wBACjB,cAAc;wBACd,cAAc;wBACd,mBAAmB;wBACnB,uBAAuB;wBACvB,mCAAmC;wBACnC,gCAAgC;wBAChC,kCAAkC;AACrC,qBAAA,EAAA,QAAA,EAAA,ujKAAA,EAAA,MAAA,EAAA,CAAA,giEAAA,CAAA,EAAA;;;"}
|
|
@@ -60,7 +60,18 @@ var AXPDocumentManagementSettings;
|
|
|
60
60
|
AXPDocumentManagementSettings["SortDirection"] = "DocumentManagement:Setting:DocumentExplorer.Layout.SortDirection";
|
|
61
61
|
AXPDocumentManagementSettings["GroupByType"] = "DocumentManagement:Setting:DocumentExplorer.Layout.GroupByType";
|
|
62
62
|
AXPDocumentManagementSettings["DetailPanelOpen"] = "DocumentManagement:Setting:DocumentExplorer.Layout.DetailPanelOpen";
|
|
63
|
+
/** What a file double-click does in the document explorer. */
|
|
64
|
+
AXPDocumentManagementSettings["FileDoubleClickAction"] = "DocumentManagement:Setting:DocumentExplorer.Layout.FileDoubleClickAction";
|
|
63
65
|
})(AXPDocumentManagementSettings || (AXPDocumentManagementSettings = {}));
|
|
66
|
+
/**
|
|
67
|
+
* Unknown or missing values stay on the product default (open the file viewer).
|
|
68
|
+
*/
|
|
69
|
+
function resolveDocumentFileDoubleClickAction(value) {
|
|
70
|
+
if (value === 'download' || value === 'view-or-download') {
|
|
71
|
+
return value;
|
|
72
|
+
}
|
|
73
|
+
return 'gallery';
|
|
74
|
+
}
|
|
64
75
|
//#endregion
|
|
65
76
|
|
|
66
77
|
//#region ---- Document management command keys ----
|
|
@@ -730,5 +741,5 @@ const AXMDocumentVersioningStatusValues = {
|
|
|
730
741
|
* Generated bundle index. Do not edit.
|
|
731
742
|
*/
|
|
732
743
|
|
|
733
|
-
export { AXMDocumentManagementCommandKeys, AXMDocumentManagementDocumentStatusValues, AXMDocumentManagementQueryKeys, AXMDocumentVersioningStatusValues, AXMPermissionsKeys, AXM_DOCUMENT_DISTRIBUTION_FIELD_NAMES, AXM_DOCUMENT_DISTRIBUTION_SIGNED_AT_FIELD_NAME, AXM_DOCUMENT_DISTRIBUTION_VERSION_FIELD_NAME, AXM_DOCUMENT_DISTRIBUTION_VIEWED_AT_FIELD_NAME, AXM_DOCUMENT_EXPIRATION_NEAR_DAYS, AXM_DOCUMENT_EXPIRATION_NOTIFY_RUN_COMMAND_KEY, AXM_DOCUMENT_REVIEWED_BY_FIELD_NAME, AXM_DOCUMENT_REVIEW_DATE_FIELD_NAME, AXM_DOCUMENT_REVIEW_FIELD_NAMES, AXPContentDocumentsPermissionKeys, AXPDocumentManagementFeatureKeys, AXPDocumentManagementMenuKeys, AXPDocumentManagementSettings, DOCUMENT_DISTRIBUTION_WORKFLOW_NAME, DocumentManagementManifest, RootConfig, addDaysToDocumentExpirationDateKey, applyDocumentReviewMetadataIfRequired, classifyDocumentExpirationStatus, documentReviewReadonlyFieldNames, documentTypeAllowsDistributionForAppliesTo, documentTypeHasDistributionMetadata, documentTypeHasFolderScopedMetadata, documentTypeHasReviewMetadata, documentTypeHasReviewMetadataForAppliesTo, ensureDocumentDistributionTaskTypeMetadata, ensureDocumentReviewMetadata, extractDocumentTypeFileKindNames, getDocumentExpirationDateKey, getDocumentExpirationQueryBoundValues, getDocumentExpirationQueryBounds, getDocumentExpirationRemainingDays, getUtcDayBoundsForDateKey, hasDocumentDistributionMetadataValue, hasDocumentReviewMetadataValue, highestDocumentVersionNumber, isDocumentDistributionEnabled, isDocumentDistributionMetadataFieldName, isDocumentReviewMetadataComplete, isDocumentReviewMetadataFieldName, isDocumentReviewRequired, normalizeDocumentTypeFileKinds, resolveDocumentReviewAppliesTo, restoreDocumentReviewFormValues, stampDocumentDistributionFormValues, stampDocumentReviewFormValues, toDocumentExpirationDate, toDocumentExpirationStorageValue };
|
|
744
|
+
export { AXMDocumentManagementCommandKeys, AXMDocumentManagementDocumentStatusValues, AXMDocumentManagementQueryKeys, AXMDocumentVersioningStatusValues, AXMPermissionsKeys, AXM_DOCUMENT_DISTRIBUTION_FIELD_NAMES, AXM_DOCUMENT_DISTRIBUTION_SIGNED_AT_FIELD_NAME, AXM_DOCUMENT_DISTRIBUTION_VERSION_FIELD_NAME, AXM_DOCUMENT_DISTRIBUTION_VIEWED_AT_FIELD_NAME, AXM_DOCUMENT_EXPIRATION_NEAR_DAYS, AXM_DOCUMENT_EXPIRATION_NOTIFY_RUN_COMMAND_KEY, AXM_DOCUMENT_REVIEWED_BY_FIELD_NAME, AXM_DOCUMENT_REVIEW_DATE_FIELD_NAME, AXM_DOCUMENT_REVIEW_FIELD_NAMES, AXPContentDocumentsPermissionKeys, AXPDocumentManagementFeatureKeys, AXPDocumentManagementMenuKeys, AXPDocumentManagementSettings, DOCUMENT_DISTRIBUTION_WORKFLOW_NAME, DocumentManagementManifest, RootConfig, addDaysToDocumentExpirationDateKey, applyDocumentReviewMetadataIfRequired, classifyDocumentExpirationStatus, documentReviewReadonlyFieldNames, documentTypeAllowsDistributionForAppliesTo, documentTypeHasDistributionMetadata, documentTypeHasFolderScopedMetadata, documentTypeHasReviewMetadata, documentTypeHasReviewMetadataForAppliesTo, ensureDocumentDistributionTaskTypeMetadata, ensureDocumentReviewMetadata, extractDocumentTypeFileKindNames, getDocumentExpirationDateKey, getDocumentExpirationQueryBoundValues, getDocumentExpirationQueryBounds, getDocumentExpirationRemainingDays, getUtcDayBoundsForDateKey, hasDocumentDistributionMetadataValue, hasDocumentReviewMetadataValue, highestDocumentVersionNumber, isDocumentDistributionEnabled, isDocumentDistributionMetadataFieldName, isDocumentReviewMetadataComplete, isDocumentReviewMetadataFieldName, isDocumentReviewRequired, normalizeDocumentTypeFileKinds, resolveDocumentFileDoubleClickAction, resolveDocumentReviewAppliesTo, restoreDocumentReviewFormValues, stampDocumentDistributionFormValues, stampDocumentReviewFormValues, toDocumentExpirationDate, toDocumentExpirationStorageValue };
|
|
734
745
|
//# sourceMappingURL=acorex-platform-module-document-management-client-contracts.mjs.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"acorex-platform-module-document-management-client-contracts.mjs","sources":["../../../../libs/modules/document-management/contracts/src/features.keys.ts","../../../../libs/modules/document-management/contracts/src/menu.keys.ts","../../../../libs/modules/document-management/contracts/src/permission.keys.ts","../../../../libs/modules/document-management/contracts/src/settings.keys.ts","../../../../libs/modules/document-management/contracts/src/commands.keys.ts","../../../../libs/modules/document-management/contracts/src/document-review-metadata.util.ts","../../../../libs/modules/document-management/contracts/src/document-distribution-metadata.util.ts","../../../../libs/modules/document-management/contracts/src/root-config.ts","../../../../libs/modules/document-management/contracts/src/manifest.ts","../../../../libs/modules/document-management/contracts/src/runtime.keys.ts","../../../../libs/modules/document-management/contracts/src/document-expiration.ts","../../../../libs/modules/document-management/contracts/src/entities/document/document.types.ts","../../../../libs/modules/document-management/contracts/src/entities/document-type/document-type-file-kinds.util.ts","../../../../libs/modules/document-management/contracts/src/entities/document-version/document-version.types.ts","../../../../libs/modules/document-management/contracts/src/index.ts","../../../../libs/modules/document-management/contracts/src/acorex-platform-module-document-management-client-contracts.ts"],"sourcesContent":["export const AXPDocumentManagementFeatureKeys = {\n MaxSizeStorage: 'DocumentManagement:Feature:max-size-storage',\n} as const;\n","export const AXPDocumentManagementMenuKeys = {\n DocumentTypes: 'document-management:menu:document-types',\n TenantDrive: 'document-management:drive:tenant',\n UserDrive: 'document-management:drive:user',\n} as const;\n\n","/**\n * Content & Documents capabilities used by this module.\n * Domain capability keys for this module. Root groups live in `AXPCommonPermissionGroupKeys` (common contracts).\n * `MaintainVersioning` is the legacy tenant-wide alias; per-entity keys come from the versioning plugin.\n */\nexport const AXPContentDocumentsPermissionKeys = {\n Access: 'ContentDocuments:Permission:Access',\n MaintainDocuments: 'ContentDocuments:Permission:MaintainDocuments',\n MaintainVersioning: 'ContentDocuments:Permission:MaintainVersioning',\n DistributeDocuments: 'ContentDocuments:Permission:DistributeDocuments',\n ManageDocumentReview: 'ContentDocuments:Permission:ManageDocumentReview',\n MaintainContent: 'ContentDocuments:Permission:MaintainContent',\n MaintainFormTemplates: 'ContentDocuments:Permission:MaintainFormTemplates',\n Setup: 'ContentDocuments:Permission:Setup',\n} as const;\n\n/**\n * @deprecated Prefer {@link AXPContentDocumentsPermissionKeys}.\n * Legacy nested shape kept so existing imports compile during migration.\n */\nexport const AXMPermissionsKeys = {\n DocumentManagement: {\n Management: AXPContentDocumentsPermissionKeys.MaintainDocuments,\n DocumentType: {\n Management: AXPContentDocumentsPermissionKeys.Setup,\n View: AXPContentDocumentsPermissionKeys.Setup,\n Edit: AXPContentDocumentsPermissionKeys.Setup,\n Delete: AXPContentDocumentsPermissionKeys.Setup,\n Create: AXPContentDocumentsPermissionKeys.Setup,\n },\n Driver: {\n Management: AXPContentDocumentsPermissionKeys.MaintainDocuments,\n View: AXPContentDocumentsPermissionKeys.MaintainDocuments,\n Edit: AXPContentDocumentsPermissionKeys.MaintainDocuments,\n Delete: AXPContentDocumentsPermissionKeys.MaintainDocuments,\n Create: AXPContentDocumentsPermissionKeys.MaintainDocuments,\n },\n },\n} as const;\n","//#region ---- Setting Keys ----\n\n/**\n * Persisted setting keys for the Document Management module (`AXPSettingsService`).\n */\nexport enum AXPDocumentManagementSettings {\n ViewMode = 'DocumentManagement:Setting:DocumentExplorer.Layout.ViewMode',\n SortField = 'DocumentManagement:Setting:DocumentExplorer.Layout.SortField',\n SortDirection = 'DocumentManagement:Setting:DocumentExplorer.Layout.SortDirection',\n GroupByType = 'DocumentManagement:Setting:DocumentExplorer.Layout.GroupByType',\n DetailPanelOpen = 'DocumentManagement:Setting:DocumentExplorer.Layout.DetailPanelOpen',\n}\n\n//#endregion\n","//#region ---- Document management command keys ----\n\nexport const AXMDocumentManagementCommandKeys = {\n DocumentExpirationNotifyRun: 'DocumentManagement:DocumentExpiration:NotifyRun',\n DocumentOpen: 'DocumentManagement.Document:Open',\n DocumentDistribute: 'DocumentManagement.Document:Distribute',\n DocumentDistributionSignOff: 'DocumentManagement.DocumentDistribution:SignOff',\n DocumentDistributionStampSignedAt: 'DocumentManagement.DocumentDistribution:StampSignedAt',\n ResolveCurrentSigner: 'DocumentManagement.DocumentDistribution:ResolveCurrentSigner',\n AdvanceSignerIndex: 'DocumentManagement.DocumentDistribution:AdvanceSignerIndex',\n DocumentReviewRequest: 'DocumentManagement.Document:RequestReview',\n DocumentReviewSignOff: 'DocumentManagement.DocumentReview:SignOff',\n DocumentReviewStamp: 'DocumentManagement.DocumentReview:Stamp',\n} as const;\n\nexport const AXM_DOCUMENT_EXPIRATION_NOTIFY_RUN_COMMAND_KEY =\n AXMDocumentManagementCommandKeys.DocumentExpirationNotifyRun;\n\n//#endregion\n","import type { AXPMultiLanguageString } from '@acorex-platform/framework-shared/core';\nimport {\n resolveMetaDataFieldAppliesTo,\n type AXMMetaDataBuilderValue,\n type AXMMetaDataFieldAppliesTo,\n} from '@acorex-platform/module-data-management-client/contracts';\n\n//#region ----- Constants -----\n\nexport const AXM_DOCUMENT_REVIEW_DATE_FIELD_NAME = 'review-date';\nexport const AXM_DOCUMENT_REVIEWED_BY_FIELD_NAME = 'reviewed-by';\n\nexport const AXM_DOCUMENT_REVIEW_FIELD_NAMES = [\n AXM_DOCUMENT_REVIEW_DATE_FIELD_NAME,\n AXM_DOCUMENT_REVIEWED_BY_FIELD_NAME,\n] as const;\n\nconst REVIEW_DATE_TITLE: AXPMultiLanguageString = {\n 'en-US': 'Review Date',\n 'fa-IR': 'تاریخ بازبینی',\n};\n\nconst REVIEWED_BY_TITLE: AXPMultiLanguageString = {\n 'en-US': 'Reviewed By',\n 'fa-IR': 'بازبینیشده توسط',\n};\n\nconst REVIEW_GROUP_TITLE: AXPMultiLanguageString = {\n 'en-US': 'Review',\n 'fa-IR': 'بازبینی',\n};\n\n//#endregion\n\n//#region ----- Field identity -----\n\nexport function isDocumentReviewMetadataFieldName(name: unknown): boolean {\n return (\n name === AXM_DOCUMENT_REVIEW_DATE_FIELD_NAME || name === AXM_DOCUMENT_REVIEWED_BY_FIELD_NAME\n );\n}\n\nexport function documentReviewReadonlyFieldNames(canManageReview: boolean): readonly string[] {\n return canManageReview ? [] : AXM_DOCUMENT_REVIEW_FIELD_NAMES;\n}\n\nexport function documentTypeHasFolderScopedMetadata(\n list: AXMMetaDataBuilderValue | null | undefined,\n): boolean {\n return (list?.groups ?? []).some((group) =>\n (group.fields ?? []).some((field) => field.appliesTo === 'folder'),\n );\n}\n\nexport function resolveDocumentReviewAppliesTo(\n list: AXMMetaDataBuilderValue | null | undefined,\n): AXMMetaDataFieldAppliesTo {\n return documentTypeHasFolderScopedMetadata(list) ? 'folder' : 'document';\n}\n\nexport function isDocumentReviewRequired(value: unknown): boolean {\n return value === true || value === 'true' || value === 1 || value === '1';\n}\n\nexport function documentTypeHasReviewMetadata(\n list: AXMMetaDataBuilderValue | null | undefined,\n): boolean {\n const names = new Set(\n (list?.groups ?? []).flatMap((group) =>\n (group.fields ?? []).map((field) => String(field?.name ?? '').trim()).filter(Boolean),\n ),\n );\n return AXM_DOCUMENT_REVIEW_FIELD_NAMES.every((name) => names.has(name));\n}\n\nexport function documentTypeHasReviewMetadataForAppliesTo(\n list: AXMMetaDataBuilderValue | null | undefined,\n appliesTo: AXMMetaDataFieldAppliesTo,\n): boolean {\n const fields = (list?.groups ?? []).flatMap((group) => group.fields ?? []);\n return AXM_DOCUMENT_REVIEW_FIELD_NAMES.every((name) =>\n fields.some(\n (field) =>\n String(field?.name ?? '').trim() === name &&\n resolveMetaDataFieldAppliesTo(field) === appliesTo,\n ),\n );\n}\n\nexport function applyDocumentReviewMetadataIfRequired<\n T extends {\n requiresReview?: unknown;\n name?: string;\n metaDataList?: AXMMetaDataBuilderValue | null;\n },\n>(row: T): T {\n if (!isDocumentReviewRequired(row.requiresReview)) {\n return row;\n }\n return {\n ...row,\n metaDataList: ensureDocumentReviewMetadata(\n row.metaDataList,\n typeof row.name === 'string' ? row.name : undefined,\n ),\n };\n}\n\n//#endregion\n\n//#region ----- Ensure defaults -----\n\nfunction stringifyInterface(\n type: string,\n path: string,\n options: Record<string, unknown> = {},\n): string {\n return JSON.stringify({\n type,\n name: `${path}-editor`,\n options,\n defaultValue: '',\n path,\n });\n}\n\n/**\n * When `requiresReview` is true, every document type gets Review Date and Reviewed By.\n * Applies To is Folder when any existing field is folder-scoped; otherwise Document.\n */\nexport function ensureDocumentReviewMetadata(\n list: AXMMetaDataBuilderValue | null | undefined,\n typeName?: string,\n): AXMMetaDataBuilderValue {\n const prefix = (typeName ?? 'document').trim() || 'document';\n const groups = (list?.groups ?? []).map((group) => ({\n ...group,\n fields: [...(group.fields ?? [])],\n }));\n const appliesTo = resolveDocumentReviewAppliesTo({ groups });\n\n let hostIndex = groups.findIndex((group) =>\n (group.fields ?? []).some((field) => isDocumentReviewMetadataFieldName(field.name)),\n );\n if (hostIndex < 0 && groups.length > 0) {\n hostIndex = 0;\n }\n if (hostIndex < 0) {\n groups.push({\n name: `${prefix}-review`,\n title: REVIEW_GROUP_TITLE,\n order: 0,\n fields: [],\n });\n hostIndex = 0;\n }\n\n const fields = groups[hostIndex].fields;\n\n insertOrAlignReviewField(\n fields,\n AXM_DOCUMENT_REVIEW_DATE_FIELD_NAME,\n prefix,\n REVIEW_DATE_TITLE,\n appliesTo,\n stringifyInterface('date-time-editor', AXM_DOCUMENT_REVIEW_DATE_FIELD_NAME),\n );\n insertOrAlignReviewField(\n fields,\n AXM_DOCUMENT_REVIEWED_BY_FIELD_NAME,\n prefix,\n REVIEWED_BY_TITLE,\n appliesTo,\n stringifyInterface('lookup-editor', AXM_DOCUMENT_REVIEWED_BY_FIELD_NAME, {\n placeholder: 'Select user',\n allowSearch: true,\n entity: 'SecurityManagement.User',\n valueField: 'id',\n textField: 'displayName',\n look: 'select',\n columns: ['displayName', 'username'],\n }),\n );\n\n for (const group of groups) {\n group.fields = group.fields.map((field) =>\n isDocumentReviewMetadataFieldName(field.name) ? { ...field, appliesTo } : field,\n );\n }\n\n return { groups };\n}\n\nfunction insertOrAlignReviewField(\n fields: AXMMetaDataBuilderValue['groups'][number]['fields'],\n name: (typeof AXM_DOCUMENT_REVIEW_FIELD_NAMES)[number],\n prefix: string,\n title: AXPMultiLanguageString,\n appliesTo: AXMMetaDataFieldAppliesTo,\n iface: string,\n): void {\n const existingIndex = fields.findIndex((field) => field.name === name);\n if (existingIndex >= 0) {\n const existing = fields[existingIndex];\n fields[existingIndex] = {\n ...existing,\n appliesTo,\n title: existing.title ?? title,\n };\n return;\n }\n const maxOrder = fields.reduce((max, field) => Math.max(max, field.order ?? 0), -1);\n fields.push({\n id: `dm-meta-${prefix}-${name}`,\n name,\n title,\n interface: iface,\n configuration: { isRequired: false },\n appliesTo,\n order: maxOrder + 1,\n });\n}\n\n//#endregion\n\n//#region ----- Form values -----\n\nexport function restoreDocumentReviewFormValues(\n incoming: Record<string, unknown> | null | undefined,\n previous: Record<string, unknown> | null | undefined,\n): Record<string, unknown> {\n const next = { ...(incoming ?? {}) };\n const prev = previous ?? {};\n for (const name of AXM_DOCUMENT_REVIEW_FIELD_NAMES) {\n if (name in prev) {\n next[name] = prev[name];\n } else {\n delete next[name];\n }\n }\n return next;\n}\n\nexport function stampDocumentReviewFormValues(\n existing: Record<string, unknown> | null | undefined,\n reviewedByUserId: string,\n reviewedAt: string,\n): Record<string, unknown> {\n return {\n ...(existing ?? {}),\n [AXM_DOCUMENT_REVIEW_DATE_FIELD_NAME]: reviewedAt,\n [AXM_DOCUMENT_REVIEWED_BY_FIELD_NAME]: reviewedByUserId,\n };\n}\n\nexport function hasDocumentReviewMetadataValue(value: unknown): boolean {\n if (value == null || value === '') {\n return false;\n }\n if (Array.isArray(value)) {\n return value.some((item) => hasDocumentReviewMetadataValue(item));\n }\n if (typeof value === 'object') {\n const row = value as Record<string, unknown>;\n return (\n hasDocumentReviewMetadataValue(row['id']) ||\n hasDocumentReviewMetadataValue(row['value']) ||\n hasDocumentReviewMetadataValue(row['displayName'])\n );\n }\n return String(value).trim().length > 0;\n}\n\nexport function isDocumentReviewMetadataComplete(\n form: Record<string, unknown> | null | undefined,\n): boolean {\n const record = form ?? {};\n return (\n hasDocumentReviewMetadataValue(record[AXM_DOCUMENT_REVIEW_DATE_FIELD_NAME]) &&\n hasDocumentReviewMetadataValue(record[AXM_DOCUMENT_REVIEWED_BY_FIELD_NAME])\n );\n}\n\n//#endregion\n","import type { AXPMultiLanguageString } from '@acorex-platform/framework-shared/core';\nimport type {\n AXMMetaDataBuilderValue,\n AXMMetaDataFieldAppliesTo,\n} from '@acorex-platform/module-data-management-client/contracts';\n\nimport { documentTypeHasFolderScopedMetadata } from './document-review-metadata.util';\n\n//#region ----- Constants -----\n\nexport const AXM_DOCUMENT_DISTRIBUTION_VERSION_FIELD_NAME = 'version';\nexport const AXM_DOCUMENT_DISTRIBUTION_VIEWED_AT_FIELD_NAME = 'viewed-at';\nexport const AXM_DOCUMENT_DISTRIBUTION_SIGNED_AT_FIELD_NAME = 'signed-at';\n\nexport const AXM_DOCUMENT_DISTRIBUTION_FIELD_NAMES = [\n AXM_DOCUMENT_DISTRIBUTION_VERSION_FIELD_NAME,\n AXM_DOCUMENT_DISTRIBUTION_VIEWED_AT_FIELD_NAME,\n AXM_DOCUMENT_DISTRIBUTION_SIGNED_AT_FIELD_NAME,\n] as const;\n\nexport const DOCUMENT_DISTRIBUTION_WORKFLOW_NAME = 'document-distribution';\n\nconst VERSION_TITLE: AXPMultiLanguageString = {\n 'en-US': 'Version',\n 'fa-IR': 'نسخه',\n};\n\nconst VIEWED_AT_TITLE: AXPMultiLanguageString = {\n 'en-US': 'Viewed At',\n 'fa-IR': 'مشاهدهشده در',\n};\n\nconst SIGNED_AT_TITLE: AXPMultiLanguageString = {\n 'en-US': 'Signed At',\n 'fa-IR': 'امضاشده در',\n};\n\nconst DISTRIBUTION_GROUP_TITLE: AXPMultiLanguageString = {\n 'en-US': 'Distribution',\n 'fa-IR': 'توزیع',\n};\n\n//#endregion\n\n//#region ----- Eligibility -----\n\nfunction isTruthyFlag(value: unknown): boolean {\n return value === true || value === 'true' || value === 1 || value === '1';\n}\n\nexport function isDocumentDistributionEnabled(value: unknown): boolean {\n return isTruthyFlag(value);\n}\n\nexport function documentTypeAllowsDistributionForAppliesTo(\n type:\n | {\n enableDistributionCapability?: unknown;\n metaDataList?: AXMMetaDataBuilderValue | null;\n }\n | null\n | undefined,\n appliesTo: AXMMetaDataFieldAppliesTo,\n): boolean {\n if (!type || !isDocumentDistributionEnabled(type.enableDistributionCapability)) {\n return false;\n }\n const folderScoped = documentTypeHasFolderScopedMetadata(type.metaDataList);\n return appliesTo === 'folder' ? folderScoped : !folderScoped;\n}\n\n//#endregion\n\n//#region ----- Field identity -----\n\nexport function isDocumentDistributionMetadataFieldName(name: unknown): boolean {\n return (\n name === AXM_DOCUMENT_DISTRIBUTION_VERSION_FIELD_NAME ||\n name === AXM_DOCUMENT_DISTRIBUTION_VIEWED_AT_FIELD_NAME ||\n name === AXM_DOCUMENT_DISTRIBUTION_SIGNED_AT_FIELD_NAME\n );\n}\n\nexport function documentTypeHasDistributionMetadata(\n list: AXMMetaDataBuilderValue | null | undefined,\n): boolean {\n const names = new Set(\n (list?.groups ?? []).flatMap((group) =>\n (group.fields ?? []).map((field) => String(field?.name ?? '').trim()).filter(Boolean),\n ),\n );\n return AXM_DOCUMENT_DISTRIBUTION_FIELD_NAMES.every((name) => names.has(name));\n}\n\n//#endregion\n\n//#region ----- Ensure defaults -----\n\nfunction stringifyInterface(\n type: string,\n path: string,\n options: Record<string, unknown> = {},\n): string {\n return JSON.stringify({\n type,\n name: `${path}-editor`,\n options,\n defaultValue: '',\n path,\n });\n}\n\nexport function ensureDocumentDistributionTaskTypeMetadata(\n list: AXMMetaDataBuilderValue | null | undefined,\n): AXMMetaDataBuilderValue {\n const groups = (list?.groups ?? []).map((group) => ({\n ...group,\n fields: [...(group.fields ?? [])],\n }));\n\n let hostIndex = groups.findIndex((group) =>\n (group.fields ?? []).some((field) => isDocumentDistributionMetadataFieldName(field.name)),\n );\n if (hostIndex < 0 && groups.length > 0) {\n hostIndex = 0;\n }\n if (hostIndex < 0) {\n groups.push({\n name: 'document-distribution',\n title: DISTRIBUTION_GROUP_TITLE,\n order: 0,\n fields: [],\n });\n hostIndex = 0;\n }\n\n const fields = groups[hostIndex].fields;\n insertOrAlignField(\n fields,\n AXM_DOCUMENT_DISTRIBUTION_VERSION_FIELD_NAME,\n VERSION_TITLE,\n stringifyInterface('number-editor', AXM_DOCUMENT_DISTRIBUTION_VERSION_FIELD_NAME, {\n decimals: 0,\n }),\n );\n insertOrAlignField(\n fields,\n AXM_DOCUMENT_DISTRIBUTION_VIEWED_AT_FIELD_NAME,\n VIEWED_AT_TITLE,\n stringifyInterface('date-time-editor', AXM_DOCUMENT_DISTRIBUTION_VIEWED_AT_FIELD_NAME, {\n type: 'datetime',\n }),\n );\n insertOrAlignField(\n fields,\n AXM_DOCUMENT_DISTRIBUTION_SIGNED_AT_FIELD_NAME,\n SIGNED_AT_TITLE,\n stringifyInterface('date-time-editor', AXM_DOCUMENT_DISTRIBUTION_SIGNED_AT_FIELD_NAME, {\n type: 'datetime',\n }),\n );\n\n return { groups };\n}\n\nfunction insertOrAlignField(\n fields: AXMMetaDataBuilderValue['groups'][number]['fields'],\n name: (typeof AXM_DOCUMENT_DISTRIBUTION_FIELD_NAMES)[number],\n title: AXPMultiLanguageString,\n iface: string,\n): void {\n const existingIndex = fields.findIndex((field) => field.name === name);\n if (existingIndex >= 0) {\n const existing = fields[existingIndex];\n fields[existingIndex] = {\n ...existing,\n title: existing.title ?? title,\n };\n return;\n }\n const maxOrder = fields.reduce((max, field) => Math.max(max, field.order ?? 0), -1);\n fields.push({\n id: `dm-meta-document-distribution-${name}`,\n name,\n title,\n interface: iface,\n configuration: { isRequired: false },\n order: maxOrder + 1,\n });\n}\n\n//#endregion\n\n//#region ----- Form values -----\n\nexport function hasDocumentDistributionMetadataValue(value: unknown): boolean {\n if (value == null || value === '') {\n return false;\n }\n if (Array.isArray(value)) {\n return value.some((item) => hasDocumentDistributionMetadataValue(item));\n }\n if (typeof value === 'object') {\n const row = value as Record<string, unknown>;\n return (\n hasDocumentDistributionMetadataValue(row['id']) ||\n hasDocumentDistributionMetadataValue(row['value'])\n );\n }\n return String(value).trim().length > 0;\n}\n\nexport function stampDocumentDistributionFormValues(\n existing: Record<string, unknown> | null | undefined,\n patch: Partial<\n Record<(typeof AXM_DOCUMENT_DISTRIBUTION_FIELD_NAMES)[number], unknown>\n >,\n): Record<string, unknown> {\n return {\n ...(existing ?? {}),\n ...patch,\n };\n}\n\nexport function highestDocumentVersionNumber(\n documents: Array<{ version?: unknown } | null | undefined>,\n): number {\n let highest = 0;\n for (const document of documents) {\n const n = Number(document?.version);\n if (Number.isFinite(n) && n > highest) {\n highest = n;\n }\n }\n return highest > 0 ? highest : 1;\n}\n\n//#endregion\n","const config = {\n i18n: 'document-management',\n module: 'DocumentManagement',\n};\nexport const RootConfig = {\n config,\n module: {\n module: config.module,\n name: config.module,\n title: `@${config.i18n}:module.title`,\n icon: 'fa-light fa-books',\n },\n entities: {\n folder: {\n name: 'Folder',\n title: `@${config.i18n}:entities.folder.title`,\n titlePlural: `@${config.i18n}:entities.folder.title-plural`,\n icon: 'fa-light fa-folder',\n },\n document: {\n name: 'Document',\n title: `@${config.i18n}:entities.document.title`,\n titlePlural: `@${config.i18n}:entities.document.title-plural`,\n icon: 'fa-light fa-file',\n },\n documentType: {\n name: 'DocumentType',\n title: `@${config.i18n}:entities.document-type.title`,\n titlePlural: `@${config.i18n}:entities.document-type.title-plural`,\n icon: 'fa-light fa-books',\n },\n documentShortcut: {\n name: 'DocumentShortcut',\n title: `@${config.i18n}:entities.document-shortcut.title`,\n titlePlural: `@${config.i18n}:entities.document-shortcut.title-plural`,\n icon: 'fa-light fa-up-right-from-square',\n },\n documentVersion: {\n name: 'DocumentVersion',\n title: `@${config.i18n}:entities.document-version.title`,\n titlePlural: `@${config.i18n}:entities.document-version.title-plural`,\n icon: 'fa-light fa-code-branch',\n },\n },\n queries: {\n dashboard: {\n documentsKpi: `${config.module}:Dashboard:DocumentsKpi`,\n },\n reports: {\n getDocumentsByType: `${config.module}:Reports:GetDocumentsByType`,\n getDocumentExpiration: `${config.module}:Reports:GetDocumentExpiration`,\n },\n },\n /**\n * Daily document expiration digest (BackgroundJobSchedule → NotifyRun).\n * One combined email/in-app per recipient per scoped ref (employee / tenant / project),\n * listing every currently expired or near-expiry document in that scope.\n * Template id aligns with AXM_TEXT_TEMPLATE_IDS.documentExpired.\n */\n documentExpirationNotify: {\n providerKey: 'document-management',\n defaultCron: '0 0 * * *',\n templateId: 'c7100009-0001-4111-b111-090909090909',\n tenantRoleNames: ['admin', 'safety-manager'] as const,\n },\n} as const;\n","//#region ---- Imports ----\n\nimport { AXPModuleManifest } from '@acorex-platform/framework-shared/core';\nimport { RootConfig } from './root-config';\n\n//#endregion\n\n//#region ---- Manifest Definition ----\n\n/**\n * Document Management Module Manifest.\n * Defines module metadata, features, and provider references.\n */\nexport const DocumentManagementManifest: AXPModuleManifest = {\n name: RootConfig.module.name,\n version: '1.0.0',\n title: RootConfig.module.title,\n icon: RootConfig.module.icon,\n i18n: RootConfig.config.i18n,\n\n type: 'domain',\n domain: 'content-documents',\n // Module dependencies\n dependencies: ['DataManagement'],\n};\n\n//#endregion\n\n","//#region ---- Document management runtime keys ----\n\nexport const AXMDocumentManagementQueryKeys = {\n Drive: {\n GetRoot: 'DocumentManagement:Drive:GetRoot',\n GetContents: 'DocumentManagement:Drive:GetContents',\n GetRootByEntityRef: 'DocumentManagement:Drive:GetRootByEntityRef',\n },\n Document: {\n GetPath: 'DocumentManagement:Document:GetPath',\n Search: 'DocumentManagement:Document:Search',\n FindMany: 'DocumentManagement:Document:FindMany',\n GetExpiredCount: 'DocumentManagement:Document:GetExpiredCount',\n },\n Folder: {\n GetPath: 'DocumentManagement:Folder:GetPath',\n Search: 'DocumentManagement:Folder:Search',\n },\n DocumentReview: {\n ListFolderDocuments: 'DocumentManagement.DocumentReview:ListFolderDocuments',\n },\n DocumentType: {\n GetByName: 'DocumentManagement:DocumentType:GetByName',\n },\n Metadata: {\n GetUniqueDefinitions: 'DocumentManagement:Metadata:GetUniqueDefinitions',\n },\n} as const;\n\n//#endregion\n","//#region ----- Types -----\n\nexport type AXMDocumentExpirationStatus = 'expired' | 'near';\n\n//#endregion\n\n//#region ----- Constants -----\n\n/**\n * Near-expiry window (days) shared by document badge UI and expiration reports.\n * Documents that expire within this many days (and are not yet past) are \"near\".\n */\nexport const AXM_DOCUMENT_EXPIRATION_NEAR_DAYS = 7;\n\n//#endregion\n\n//#region ----- Date helpers -----\n\nexport function toDocumentExpirationDate(value: unknown): Date | undefined {\n if (value == null) {\n return undefined;\n }\n if (value instanceof Date) {\n return Number.isNaN(value.getTime()) ? undefined : value;\n }\n if (typeof value === 'string') {\n const trimmed = value.trim();\n // Date-only (YYYY-MM-DD) → local calendar day (matches date-time-editor)\n if (/^\\d{4}-\\d{2}-\\d{2}$/.test(trimmed)) {\n const [y, m, d] = trimmed.split('-').map(Number);\n return new Date(y, m - 1, d);\n }\n const parsed = new Date(trimmed);\n return Number.isNaN(parsed.getTime()) ? undefined : parsed;\n }\n if (typeof value === 'number') {\n const d = new Date(value);\n return Number.isNaN(d.getTime()) ? undefined : d;\n }\n return undefined;\n}\n\nfunction startOfLocalDay(date: Date): Date {\n return new Date(date.getFullYear(), date.getMonth(), date.getDate());\n}\n\n/**\n * Canonical persisted value for `Document.expirationDate`.\n * Matches `date-time-editor`: ISO string at start of local day.\n * Seed mocks and API writes must both use this shape (never BSON `Date`).\n */\nexport function toDocumentExpirationStorageValue(value: unknown): string | null | undefined {\n if (value === undefined) {\n return undefined;\n }\n if (value === null || value === '') {\n return null;\n }\n\n const date = toDocumentExpirationDate(value);\n if (!date) {\n return null;\n }\n\n return startOfLocalDay(date).toISOString();\n}\n\n/**\n * Local-day bounds used to query expired vs near-expiry documents.\n * - expired: expirationDate < startOfToday\n * - near: startOfToday <= expirationDate <= nearEndInclusive\n */\nexport function getDocumentExpirationQueryBounds(\n options?: { nearDays?: number; now?: Date },\n): { startOfToday: Date; nearEndInclusive: Date } {\n const now = options?.now ?? new Date();\n const nearDays = options?.nearDays ?? AXM_DOCUMENT_EXPIRATION_NEAR_DAYS;\n const startOfToday = startOfLocalDay(now);\n const nearEndInclusive = new Date(startOfToday);\n nearEndInclusive.setDate(nearEndInclusive.getDate() + nearDays);\n return { startOfToday, nearEndInclusive };\n}\n\n/**\n * Same bounds as {@link getDocumentExpirationQueryBounds}, serialized as ISO strings.\n *\n * Entity storage often persists `expirationDate` as an ISO string. Passing a `Date`\n * into Mongo `$lt` / `$gte` compares different BSON types and under-counts matches.\n * HTTP entity queries stringify dates automatically; in-process drive/middleware\n * queries must use these string bounds explicitly.\n */\nexport function getDocumentExpirationQueryBoundValues(\n options?: { nearDays?: number; now?: Date },\n): { startOfToday: string; nearEndInclusive: string } {\n const { startOfToday, nearEndInclusive } = getDocumentExpirationQueryBounds(options);\n return {\n startOfToday: startOfToday.toISOString(),\n nearEndInclusive: nearEndInclusive.toISOString(),\n };\n}\n\n/**\n * Calendar day key (YYYY-MM-DD) for `date` in an IANA timezone.\n */\nexport function getDocumentExpirationDateKey(date: Date, timeZone = 'UTC'): string {\n const formatter = new Intl.DateTimeFormat('en-CA', {\n timeZone: timeZone || 'UTC',\n year: 'numeric',\n month: '2-digit',\n day: '2-digit',\n });\n const parts = formatter.formatToParts(date);\n const year = Number(parts.find((part) => part.type === 'year')?.value ?? '0');\n const month = Number(parts.find((part) => part.type === 'month')?.value ?? '0');\n const day = Number(parts.find((part) => part.type === 'day')?.value ?? '0');\n return `${year.toString().padStart(4, '0')}-${month.toString().padStart(2, '0')}-${day\n .toString()\n .padStart(2, '0')}`;\n}\n\n/** Add whole calendar days to a YYYY-MM-DD key (UTC noon arithmetic). */\nexport function addDaysToDocumentExpirationDateKey(dateKey: string, days: number): string {\n const [y, m, d] = dateKey.split('-').map((part) => Number(part));\n const date = new Date(Date.UTC(y, (m ?? 1) - 1, d ?? 1, 12, 0, 0));\n date.setUTCDate(date.getUTCDate() + days);\n return getDocumentExpirationDateKey(date, 'UTC');\n}\n\n/** Inclusive UTC day window for a YYYY-MM-DD key (for expirationDate range queries). */\nexport function getUtcDayBoundsForDateKey(dateKey: string): { start: Date; endExclusive: Date } {\n const [y, m, d] = dateKey.split('-').map((part) => Number(part));\n const start = new Date(Date.UTC(y, (m ?? 1) - 1, d ?? 1, 0, 0, 0, 0));\n const endExclusive = new Date(start);\n endExclusive.setUTCDate(endExclusive.getUTCDate() + 1);\n return { start, endExclusive };\n}\n\n/**\n * Whole days from `from` to `to` (start-of-local-day). Negative means `to` is in the past.\n */\nexport function getDocumentExpirationRemainingDays(expirationDate: Date, now: Date = new Date()): number {\n const msPerDay = 24 * 60 * 60 * 1000;\n return Math.round(\n (startOfLocalDay(expirationDate).getTime() - startOfLocalDay(now).getTime()) / msPerDay,\n );\n}\n\n/**\n * Classify a document expire date as expired / near / neither.\n * Uses only `Document.expirationDate` (platform field).\n */\nexport function classifyDocumentExpirationStatus(\n expirationDate: unknown,\n options?: { nearDays?: number; now?: Date },\n): AXMDocumentExpirationStatus | null {\n const date = toDocumentExpirationDate(expirationDate);\n if (!date) {\n return null;\n }\n\n const now = options?.now ?? new Date();\n const nearDays = options?.nearDays ?? AXM_DOCUMENT_EXPIRATION_NEAR_DAYS;\n const remainingDays = getDocumentExpirationRemainingDays(date, now);\n\n if (remainingDays < 0) {\n return 'expired';\n }\n if (remainingDays <= nearDays) {\n return 'near';\n }\n return null;\n}\n\n//#endregion\n","import { AXPFileListItem, AXPMetaData, AXPMultiLanguageString } from '@acorex-platform/framework-shared/core';\nimport {\n AXPAuditEvent,\n AXPEntityModel,\n AXPRecordAuditInfo,\n} from '@acorex-platform/framework-shared/entity';\n\n/** Document lifecycle status (EDMS-style review workflow). */\nexport type AXMDocumentManagementDocumentStatus =\n | 'draft'\n | 'in-review'\n | 'approved'\n | 'rejected'\n | 'revision-requested';\n\n/** Status value constants for use in code. */\nexport const AXMDocumentManagementDocumentStatusValues = {\n Draft: 'draft' as const,\n InReview: 'in-review' as const,\n Approved: 'approved' as const,\n Rejected: 'rejected' as const,\n RevisionRequested: 'revision-requested' as const,\n} satisfies Record<string, AXMDocumentManagementDocumentStatus>;\n\n/** Document audit bag: platform created/updated/deleted plus optional review stamp. */\nexport type AXMDocumentAuditInfo = AXPRecordAuditInfo & {\n reviewed?: AXPAuditEvent;\n};\n\nexport interface AXMDocumentDto extends AXPEntityModel<string> {\n name: string;\n title: string;\n documentType: AXMDocumentDocDto;\n auditInfo?: AXMDocumentAuditInfo;\n parentId: string;\n fileInfo: AXPFileListItem;\n description?: string;\n /** ISO string at start of local day (same as date-time-editor); `Date` accepted on write then normalized. */\n expirationDate?: Date | string;\n statusId?: AXMDocumentManagementDocumentStatus;\n status?: { id: AXMDocumentManagementDocumentStatus; title?: string };\n version?: number;\n versionId?: string;\n /** Stamped from Document Type `enableVersioning` at create (and when type changes). */\n versioningEnabled?: boolean;\n /** Stamped from Document Type `enableDistributionCapability`. */\n distributionEnabled?: boolean;\n metaDataForm?: AXPMetaData;\n /**\n * Optional host-entity binding (same semantics as Folder.refType / Folder.refId).\n * Stamped from the nearest ancestor folder that has a record reference.\n */\n refType?: string;\n refId?: string;\n}\n\nexport interface AXMDocumentDocDto {\n id: string;\n name: string;\n title: AXPMultiLanguageString;\n /** Copied from Document Type at stamp/slim time. Host eligibility is `versioningEnabled`. */\n enableVersioning?: boolean;\n /** Copied from Document Type at stamp/slim time. Host eligibility is `distributionEnabled`. */\n enableDistributionCapability?: boolean;\n /** Copied from Document Type at stamp/slim time. Drives Request Review. */\n requiresReview?: boolean;\n}\n","//#region ---- Document type file kinds ----\n\nfunction asFileKindName(value: unknown): string | undefined {\n if (typeof value === 'string' && value.trim().length > 0) {\n const name = value.trim();\n const dot = name.indexOf('.');\n return dot > 0 ? name.slice(0, dot) : name;\n }\n if (value && typeof value === 'object' && !Array.isArray(value)) {\n return asFileKindName((value as { name?: unknown }).name);\n }\n return undefined;\n}\n\nfunction resolveTypeValue(input: unknown): unknown {\n if (input == null || Array.isArray(input) || typeof input !== 'object') {\n return input;\n }\n const rec = input as Record<string, unknown>;\n if ('selectedItems' in rec) {\n return rec;\n }\n if ('type' in rec) {\n return rec['type'];\n }\n // Option row `{ name, title }` — not an entity stub `{ id, name, title }`.\n if ('name' in rec && !('id' in rec)) {\n return rec;\n }\n return undefined;\n}\n\n/**\n * Logical file-kind names from a document type row or its `type` field.\n * Accepts name arrays, select option rows, and legacy `{ selectedItems, context }`.\n */\nexport function extractDocumentTypeFileKindNames(documentTypeOrType: unknown): string[] {\n const typeValue = resolveTypeValue(documentTypeOrType);\n const rawItems = Array.isArray(typeValue)\n ? typeValue\n : Array.isArray((typeValue as { selectedItems?: unknown[] } | null | undefined)?.selectedItems)\n ? ((typeValue as { selectedItems: unknown[] }).selectedItems)\n : typeValue != null\n ? [typeValue]\n : [];\n\n return Array.from(\n new Set(\n rawItems\n .map((item) => asFileKindName(item))\n .filter((name): name is string => typeof name === 'string' && name.length > 0)\n .filter((name) => !name.startsWith('conversation-')),\n ),\n );\n}\n\n/** Flattens a document type `type` value to a name array for select-editor storage. */\nexport function normalizeDocumentTypeFileKinds(type: unknown): string[] {\n return extractDocumentTypeFileKindNames(type);\n}\n\n//#endregion\n","import { AXPFileListItem, AXPMetaData } from '@acorex-platform/framework-shared/core';\nimport { AXPEntityModel } from '@acorex-platform/framework-shared/entity';\nimport type { AXMDocumentDocDto, AXMDocumentManagementDocumentStatus } from '../document/document.types';\n\nexport type AXMDocumentVersioningStatus = 'draft' | 'published';\n\nexport const AXMDocumentVersioningStatusValues = {\n Draft: 'draft' as const,\n Published: 'published' as const,\n} satisfies Record<string, AXMDocumentVersioningStatus>;\n\n/** Companion snapshot for {@link AXMDocumentDto}. Pin this id from other modules. */\nexport interface AXMDocumentVersionDto extends AXPEntityModel<string> {\n sourceId?: string;\n versionNumber?: number;\n versioningStatus?: AXMDocumentVersioningStatus;\n name?: string;\n title?: string;\n documentType?: AXMDocumentDocDto;\n parentId?: string;\n fileInfo?: AXPFileListItem;\n description?: string;\n expirationDate?: Date | string;\n statusId?: AXMDocumentManagementDocumentStatus;\n status?: { id: AXMDocumentManagementDocumentStatus; title?: string };\n metaDataForm?: AXPMetaData;\n refType?: string;\n refId?: string;\n}\n","//#region ---- Contracts barrel ----\n\nexport * from './features.keys';\nexport * from './menu.keys';\nexport * from './permission.keys';\nexport * from './settings.keys';\nexport * from './commands.keys';\nexport * from './document-review-metadata.util';\nexport * from './document-distribution-metadata.util';\n\nexport * from './root-config';\nexport * from './manifest';\nexport * from './runtime.keys';\nexport * from './document-expiration';\nexport * from './drive-bootstrap-catalog.types';\n\n//#endregion\n\nexport * from './entities';\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":["stringifyInterface"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"acorex-platform-module-document-management-client-contracts.mjs","sources":["../../../../libs/modules/document-management/contracts/src/features.keys.ts","../../../../libs/modules/document-management/contracts/src/menu.keys.ts","../../../../libs/modules/document-management/contracts/src/permission.keys.ts","../../../../libs/modules/document-management/contracts/src/settings.keys.ts","../../../../libs/modules/document-management/contracts/src/commands.keys.ts","../../../../libs/modules/document-management/contracts/src/document-review-metadata.util.ts","../../../../libs/modules/document-management/contracts/src/document-distribution-metadata.util.ts","../../../../libs/modules/document-management/contracts/src/root-config.ts","../../../../libs/modules/document-management/contracts/src/manifest.ts","../../../../libs/modules/document-management/contracts/src/runtime.keys.ts","../../../../libs/modules/document-management/contracts/src/document-expiration.ts","../../../../libs/modules/document-management/contracts/src/entities/document/document.types.ts","../../../../libs/modules/document-management/contracts/src/entities/document-type/document-type-file-kinds.util.ts","../../../../libs/modules/document-management/contracts/src/entities/document-version/document-version.types.ts","../../../../libs/modules/document-management/contracts/src/index.ts","../../../../libs/modules/document-management/contracts/src/acorex-platform-module-document-management-client-contracts.ts"],"sourcesContent":["export const AXPDocumentManagementFeatureKeys = {\n MaxSizeStorage: 'DocumentManagement:Feature:max-size-storage',\n} as const;\n","export const AXPDocumentManagementMenuKeys = {\n DocumentTypes: 'document-management:menu:document-types',\n TenantDrive: 'document-management:drive:tenant',\n UserDrive: 'document-management:drive:user',\n} as const;\n\n","/**\n * Content & Documents capabilities used by this module.\n * Domain capability keys for this module. Root groups live in `AXPCommonPermissionGroupKeys` (common contracts).\n * `MaintainVersioning` is the legacy tenant-wide alias; per-entity keys come from the versioning plugin.\n */\nexport const AXPContentDocumentsPermissionKeys = {\n Access: 'ContentDocuments:Permission:Access',\n MaintainDocuments: 'ContentDocuments:Permission:MaintainDocuments',\n MaintainVersioning: 'ContentDocuments:Permission:MaintainVersioning',\n DistributeDocuments: 'ContentDocuments:Permission:DistributeDocuments',\n ManageDocumentReview: 'ContentDocuments:Permission:ManageDocumentReview',\n MaintainContent: 'ContentDocuments:Permission:MaintainContent',\n MaintainFormTemplates: 'ContentDocuments:Permission:MaintainFormTemplates',\n Setup: 'ContentDocuments:Permission:Setup',\n} as const;\n\n/**\n * @deprecated Prefer {@link AXPContentDocumentsPermissionKeys}.\n * Legacy nested shape kept so existing imports compile during migration.\n */\nexport const AXMPermissionsKeys = {\n DocumentManagement: {\n Management: AXPContentDocumentsPermissionKeys.MaintainDocuments,\n DocumentType: {\n Management: AXPContentDocumentsPermissionKeys.Setup,\n View: AXPContentDocumentsPermissionKeys.Setup,\n Edit: AXPContentDocumentsPermissionKeys.Setup,\n Delete: AXPContentDocumentsPermissionKeys.Setup,\n Create: AXPContentDocumentsPermissionKeys.Setup,\n },\n Driver: {\n Management: AXPContentDocumentsPermissionKeys.MaintainDocuments,\n View: AXPContentDocumentsPermissionKeys.MaintainDocuments,\n Edit: AXPContentDocumentsPermissionKeys.MaintainDocuments,\n Delete: AXPContentDocumentsPermissionKeys.MaintainDocuments,\n Create: AXPContentDocumentsPermissionKeys.MaintainDocuments,\n },\n },\n} as const;\n","//#region ---- Setting Keys ----\n\n/**\n * Persisted setting keys for the Document Management module (`AXPSettingsService`).\n */\nexport enum AXPDocumentManagementSettings {\n ViewMode = 'DocumentManagement:Setting:DocumentExplorer.Layout.ViewMode',\n SortField = 'DocumentManagement:Setting:DocumentExplorer.Layout.SortField',\n SortDirection = 'DocumentManagement:Setting:DocumentExplorer.Layout.SortDirection',\n GroupByType = 'DocumentManagement:Setting:DocumentExplorer.Layout.GroupByType',\n DetailPanelOpen = 'DocumentManagement:Setting:DocumentExplorer.Layout.DetailPanelOpen',\n /** What a file double-click does in the document explorer. */\n FileDoubleClickAction = 'DocumentManagement:Setting:DocumentExplorer.Layout.FileDoubleClickAction',\n}\n\n/** Stored values for {@link AXPDocumentManagementSettings.FileDoubleClickAction}. */\nexport type AXPDocumentFileDoubleClickAction = 'gallery' | 'download' | 'view-or-download';\n\n/**\n * Unknown or missing values stay on the product default (open the file viewer).\n */\nexport function resolveDocumentFileDoubleClickAction(value: unknown): AXPDocumentFileDoubleClickAction {\n if (value === 'download' || value === 'view-or-download') {\n return value;\n }\n return 'gallery';\n}\n\n//#endregion\n","//#region ---- Document management command keys ----\n\nexport const AXMDocumentManagementCommandKeys = {\n DocumentExpirationNotifyRun: 'DocumentManagement:DocumentExpiration:NotifyRun',\n DocumentOpen: 'DocumentManagement.Document:Open',\n DocumentDistribute: 'DocumentManagement.Document:Distribute',\n DocumentDistributionSignOff: 'DocumentManagement.DocumentDistribution:SignOff',\n DocumentDistributionStampSignedAt: 'DocumentManagement.DocumentDistribution:StampSignedAt',\n ResolveCurrentSigner: 'DocumentManagement.DocumentDistribution:ResolveCurrentSigner',\n AdvanceSignerIndex: 'DocumentManagement.DocumentDistribution:AdvanceSignerIndex',\n DocumentReviewRequest: 'DocumentManagement.Document:RequestReview',\n DocumentReviewSignOff: 'DocumentManagement.DocumentReview:SignOff',\n DocumentReviewStamp: 'DocumentManagement.DocumentReview:Stamp',\n} as const;\n\nexport const AXM_DOCUMENT_EXPIRATION_NOTIFY_RUN_COMMAND_KEY =\n AXMDocumentManagementCommandKeys.DocumentExpirationNotifyRun;\n\n//#endregion\n","import type { AXPMultiLanguageString } from '@acorex-platform/framework-shared/core';\nimport {\n resolveMetaDataFieldAppliesTo,\n type AXMMetaDataBuilderValue,\n type AXMMetaDataFieldAppliesTo,\n} from '@acorex-platform/module-data-management-client/contracts';\n\n//#region ----- Constants -----\n\nexport const AXM_DOCUMENT_REVIEW_DATE_FIELD_NAME = 'review-date';\nexport const AXM_DOCUMENT_REVIEWED_BY_FIELD_NAME = 'reviewed-by';\n\nexport const AXM_DOCUMENT_REVIEW_FIELD_NAMES = [\n AXM_DOCUMENT_REVIEW_DATE_FIELD_NAME,\n AXM_DOCUMENT_REVIEWED_BY_FIELD_NAME,\n] as const;\n\nconst REVIEW_DATE_TITLE: AXPMultiLanguageString = {\n 'en-US': 'Review Date',\n 'fa-IR': 'تاریخ بازبینی',\n};\n\nconst REVIEWED_BY_TITLE: AXPMultiLanguageString = {\n 'en-US': 'Reviewed By',\n 'fa-IR': 'بازبینیشده توسط',\n};\n\nconst REVIEW_GROUP_TITLE: AXPMultiLanguageString = {\n 'en-US': 'Review',\n 'fa-IR': 'بازبینی',\n};\n\n//#endregion\n\n//#region ----- Field identity -----\n\nexport function isDocumentReviewMetadataFieldName(name: unknown): boolean {\n return (\n name === AXM_DOCUMENT_REVIEW_DATE_FIELD_NAME || name === AXM_DOCUMENT_REVIEWED_BY_FIELD_NAME\n );\n}\n\nexport function documentReviewReadonlyFieldNames(canManageReview: boolean): readonly string[] {\n return canManageReview ? [] : AXM_DOCUMENT_REVIEW_FIELD_NAMES;\n}\n\nexport function documentTypeHasFolderScopedMetadata(\n list: AXMMetaDataBuilderValue | null | undefined,\n): boolean {\n return (list?.groups ?? []).some((group) =>\n (group.fields ?? []).some((field) => field.appliesTo === 'folder'),\n );\n}\n\nexport function resolveDocumentReviewAppliesTo(\n list: AXMMetaDataBuilderValue | null | undefined,\n): AXMMetaDataFieldAppliesTo {\n return documentTypeHasFolderScopedMetadata(list) ? 'folder' : 'document';\n}\n\nexport function isDocumentReviewRequired(value: unknown): boolean {\n return value === true || value === 'true' || value === 1 || value === '1';\n}\n\nexport function documentTypeHasReviewMetadata(\n list: AXMMetaDataBuilderValue | null | undefined,\n): boolean {\n const names = new Set(\n (list?.groups ?? []).flatMap((group) =>\n (group.fields ?? []).map((field) => String(field?.name ?? '').trim()).filter(Boolean),\n ),\n );\n return AXM_DOCUMENT_REVIEW_FIELD_NAMES.every((name) => names.has(name));\n}\n\nexport function documentTypeHasReviewMetadataForAppliesTo(\n list: AXMMetaDataBuilderValue | null | undefined,\n appliesTo: AXMMetaDataFieldAppliesTo,\n): boolean {\n const fields = (list?.groups ?? []).flatMap((group) => group.fields ?? []);\n return AXM_DOCUMENT_REVIEW_FIELD_NAMES.every((name) =>\n fields.some(\n (field) =>\n String(field?.name ?? '').trim() === name &&\n resolveMetaDataFieldAppliesTo(field) === appliesTo,\n ),\n );\n}\n\nexport function applyDocumentReviewMetadataIfRequired<\n T extends {\n requiresReview?: unknown;\n name?: string;\n metaDataList?: AXMMetaDataBuilderValue | null;\n },\n>(row: T): T {\n if (!isDocumentReviewRequired(row.requiresReview)) {\n return row;\n }\n return {\n ...row,\n metaDataList: ensureDocumentReviewMetadata(\n row.metaDataList,\n typeof row.name === 'string' ? row.name : undefined,\n ),\n };\n}\n\n//#endregion\n\n//#region ----- Ensure defaults -----\n\nfunction stringifyInterface(\n type: string,\n path: string,\n options: Record<string, unknown> = {},\n): string {\n return JSON.stringify({\n type,\n name: `${path}-editor`,\n options,\n defaultValue: '',\n path,\n });\n}\n\n/**\n * When `requiresReview` is true, every document type gets Review Date and Reviewed By.\n * Applies To is Folder when any existing field is folder-scoped; otherwise Document.\n */\nexport function ensureDocumentReviewMetadata(\n list: AXMMetaDataBuilderValue | null | undefined,\n typeName?: string,\n): AXMMetaDataBuilderValue {\n const prefix = (typeName ?? 'document').trim() || 'document';\n const groups = (list?.groups ?? []).map((group) => ({\n ...group,\n fields: [...(group.fields ?? [])],\n }));\n const appliesTo = resolveDocumentReviewAppliesTo({ groups });\n\n let hostIndex = groups.findIndex((group) =>\n (group.fields ?? []).some((field) => isDocumentReviewMetadataFieldName(field.name)),\n );\n if (hostIndex < 0 && groups.length > 0) {\n hostIndex = 0;\n }\n if (hostIndex < 0) {\n groups.push({\n name: `${prefix}-review`,\n title: REVIEW_GROUP_TITLE,\n order: 0,\n fields: [],\n });\n hostIndex = 0;\n }\n\n const fields = groups[hostIndex].fields;\n\n insertOrAlignReviewField(\n fields,\n AXM_DOCUMENT_REVIEW_DATE_FIELD_NAME,\n prefix,\n REVIEW_DATE_TITLE,\n appliesTo,\n stringifyInterface('date-time-editor', AXM_DOCUMENT_REVIEW_DATE_FIELD_NAME),\n );\n insertOrAlignReviewField(\n fields,\n AXM_DOCUMENT_REVIEWED_BY_FIELD_NAME,\n prefix,\n REVIEWED_BY_TITLE,\n appliesTo,\n stringifyInterface('lookup-editor', AXM_DOCUMENT_REVIEWED_BY_FIELD_NAME, {\n placeholder: 'Select user',\n allowSearch: true,\n entity: 'SecurityManagement.User',\n valueField: 'id',\n textField: 'displayName',\n look: 'select',\n columns: ['displayName', 'username'],\n }),\n );\n\n for (const group of groups) {\n group.fields = group.fields.map((field) =>\n isDocumentReviewMetadataFieldName(field.name) ? { ...field, appliesTo } : field,\n );\n }\n\n return { groups };\n}\n\nfunction insertOrAlignReviewField(\n fields: AXMMetaDataBuilderValue['groups'][number]['fields'],\n name: (typeof AXM_DOCUMENT_REVIEW_FIELD_NAMES)[number],\n prefix: string,\n title: AXPMultiLanguageString,\n appliesTo: AXMMetaDataFieldAppliesTo,\n iface: string,\n): void {\n const existingIndex = fields.findIndex((field) => field.name === name);\n if (existingIndex >= 0) {\n const existing = fields[existingIndex];\n fields[existingIndex] = {\n ...existing,\n appliesTo,\n title: existing.title ?? title,\n };\n return;\n }\n const maxOrder = fields.reduce((max, field) => Math.max(max, field.order ?? 0), -1);\n fields.push({\n id: `dm-meta-${prefix}-${name}`,\n name,\n title,\n interface: iface,\n configuration: { isRequired: false },\n appliesTo,\n order: maxOrder + 1,\n });\n}\n\n//#endregion\n\n//#region ----- Form values -----\n\nexport function restoreDocumentReviewFormValues(\n incoming: Record<string, unknown> | null | undefined,\n previous: Record<string, unknown> | null | undefined,\n): Record<string, unknown> {\n const next = { ...(incoming ?? {}) };\n const prev = previous ?? {};\n for (const name of AXM_DOCUMENT_REVIEW_FIELD_NAMES) {\n if (name in prev) {\n next[name] = prev[name];\n } else {\n delete next[name];\n }\n }\n return next;\n}\n\nexport function stampDocumentReviewFormValues(\n existing: Record<string, unknown> | null | undefined,\n reviewedByUserId: string,\n reviewedAt: string,\n): Record<string, unknown> {\n return {\n ...(existing ?? {}),\n [AXM_DOCUMENT_REVIEW_DATE_FIELD_NAME]: reviewedAt,\n [AXM_DOCUMENT_REVIEWED_BY_FIELD_NAME]: reviewedByUserId,\n };\n}\n\nexport function hasDocumentReviewMetadataValue(value: unknown): boolean {\n if (value == null || value === '') {\n return false;\n }\n if (Array.isArray(value)) {\n return value.some((item) => hasDocumentReviewMetadataValue(item));\n }\n if (typeof value === 'object') {\n const row = value as Record<string, unknown>;\n return (\n hasDocumentReviewMetadataValue(row['id']) ||\n hasDocumentReviewMetadataValue(row['value']) ||\n hasDocumentReviewMetadataValue(row['displayName'])\n );\n }\n return String(value).trim().length > 0;\n}\n\nexport function isDocumentReviewMetadataComplete(\n form: Record<string, unknown> | null | undefined,\n): boolean {\n const record = form ?? {};\n return (\n hasDocumentReviewMetadataValue(record[AXM_DOCUMENT_REVIEW_DATE_FIELD_NAME]) &&\n hasDocumentReviewMetadataValue(record[AXM_DOCUMENT_REVIEWED_BY_FIELD_NAME])\n );\n}\n\n//#endregion\n","import type { AXPMultiLanguageString } from '@acorex-platform/framework-shared/core';\nimport type {\n AXMMetaDataBuilderValue,\n AXMMetaDataFieldAppliesTo,\n} from '@acorex-platform/module-data-management-client/contracts';\n\nimport { documentTypeHasFolderScopedMetadata } from './document-review-metadata.util';\n\n//#region ----- Constants -----\n\nexport const AXM_DOCUMENT_DISTRIBUTION_VERSION_FIELD_NAME = 'version';\nexport const AXM_DOCUMENT_DISTRIBUTION_VIEWED_AT_FIELD_NAME = 'viewed-at';\nexport const AXM_DOCUMENT_DISTRIBUTION_SIGNED_AT_FIELD_NAME = 'signed-at';\n\nexport const AXM_DOCUMENT_DISTRIBUTION_FIELD_NAMES = [\n AXM_DOCUMENT_DISTRIBUTION_VERSION_FIELD_NAME,\n AXM_DOCUMENT_DISTRIBUTION_VIEWED_AT_FIELD_NAME,\n AXM_DOCUMENT_DISTRIBUTION_SIGNED_AT_FIELD_NAME,\n] as const;\n\nexport const DOCUMENT_DISTRIBUTION_WORKFLOW_NAME = 'document-distribution';\n\nconst VERSION_TITLE: AXPMultiLanguageString = {\n 'en-US': 'Version',\n 'fa-IR': 'نسخه',\n};\n\nconst VIEWED_AT_TITLE: AXPMultiLanguageString = {\n 'en-US': 'Viewed At',\n 'fa-IR': 'مشاهدهشده در',\n};\n\nconst SIGNED_AT_TITLE: AXPMultiLanguageString = {\n 'en-US': 'Signed At',\n 'fa-IR': 'امضاشده در',\n};\n\nconst DISTRIBUTION_GROUP_TITLE: AXPMultiLanguageString = {\n 'en-US': 'Distribution',\n 'fa-IR': 'توزیع',\n};\n\n//#endregion\n\n//#region ----- Eligibility -----\n\nfunction isTruthyFlag(value: unknown): boolean {\n return value === true || value === 'true' || value === 1 || value === '1';\n}\n\nexport function isDocumentDistributionEnabled(value: unknown): boolean {\n return isTruthyFlag(value);\n}\n\nexport function documentTypeAllowsDistributionForAppliesTo(\n type:\n | {\n enableDistributionCapability?: unknown;\n metaDataList?: AXMMetaDataBuilderValue | null;\n }\n | null\n | undefined,\n appliesTo: AXMMetaDataFieldAppliesTo,\n): boolean {\n if (!type || !isDocumentDistributionEnabled(type.enableDistributionCapability)) {\n return false;\n }\n const folderScoped = documentTypeHasFolderScopedMetadata(type.metaDataList);\n return appliesTo === 'folder' ? folderScoped : !folderScoped;\n}\n\n//#endregion\n\n//#region ----- Field identity -----\n\nexport function isDocumentDistributionMetadataFieldName(name: unknown): boolean {\n return (\n name === AXM_DOCUMENT_DISTRIBUTION_VERSION_FIELD_NAME ||\n name === AXM_DOCUMENT_DISTRIBUTION_VIEWED_AT_FIELD_NAME ||\n name === AXM_DOCUMENT_DISTRIBUTION_SIGNED_AT_FIELD_NAME\n );\n}\n\nexport function documentTypeHasDistributionMetadata(\n list: AXMMetaDataBuilderValue | null | undefined,\n): boolean {\n const names = new Set(\n (list?.groups ?? []).flatMap((group) =>\n (group.fields ?? []).map((field) => String(field?.name ?? '').trim()).filter(Boolean),\n ),\n );\n return AXM_DOCUMENT_DISTRIBUTION_FIELD_NAMES.every((name) => names.has(name));\n}\n\n//#endregion\n\n//#region ----- Ensure defaults -----\n\nfunction stringifyInterface(\n type: string,\n path: string,\n options: Record<string, unknown> = {},\n): string {\n return JSON.stringify({\n type,\n name: `${path}-editor`,\n options,\n defaultValue: '',\n path,\n });\n}\n\nexport function ensureDocumentDistributionTaskTypeMetadata(\n list: AXMMetaDataBuilderValue | null | undefined,\n): AXMMetaDataBuilderValue {\n const groups = (list?.groups ?? []).map((group) => ({\n ...group,\n fields: [...(group.fields ?? [])],\n }));\n\n let hostIndex = groups.findIndex((group) =>\n (group.fields ?? []).some((field) => isDocumentDistributionMetadataFieldName(field.name)),\n );\n if (hostIndex < 0 && groups.length > 0) {\n hostIndex = 0;\n }\n if (hostIndex < 0) {\n groups.push({\n name: 'document-distribution',\n title: DISTRIBUTION_GROUP_TITLE,\n order: 0,\n fields: [],\n });\n hostIndex = 0;\n }\n\n const fields = groups[hostIndex].fields;\n insertOrAlignField(\n fields,\n AXM_DOCUMENT_DISTRIBUTION_VERSION_FIELD_NAME,\n VERSION_TITLE,\n stringifyInterface('number-editor', AXM_DOCUMENT_DISTRIBUTION_VERSION_FIELD_NAME, {\n decimals: 0,\n }),\n );\n insertOrAlignField(\n fields,\n AXM_DOCUMENT_DISTRIBUTION_VIEWED_AT_FIELD_NAME,\n VIEWED_AT_TITLE,\n stringifyInterface('date-time-editor', AXM_DOCUMENT_DISTRIBUTION_VIEWED_AT_FIELD_NAME, {\n type: 'datetime',\n }),\n );\n insertOrAlignField(\n fields,\n AXM_DOCUMENT_DISTRIBUTION_SIGNED_AT_FIELD_NAME,\n SIGNED_AT_TITLE,\n stringifyInterface('date-time-editor', AXM_DOCUMENT_DISTRIBUTION_SIGNED_AT_FIELD_NAME, {\n type: 'datetime',\n }),\n );\n\n return { groups };\n}\n\nfunction insertOrAlignField(\n fields: AXMMetaDataBuilderValue['groups'][number]['fields'],\n name: (typeof AXM_DOCUMENT_DISTRIBUTION_FIELD_NAMES)[number],\n title: AXPMultiLanguageString,\n iface: string,\n): void {\n const existingIndex = fields.findIndex((field) => field.name === name);\n if (existingIndex >= 0) {\n const existing = fields[existingIndex];\n fields[existingIndex] = {\n ...existing,\n title: existing.title ?? title,\n };\n return;\n }\n const maxOrder = fields.reduce((max, field) => Math.max(max, field.order ?? 0), -1);\n fields.push({\n id: `dm-meta-document-distribution-${name}`,\n name,\n title,\n interface: iface,\n configuration: { isRequired: false },\n order: maxOrder + 1,\n });\n}\n\n//#endregion\n\n//#region ----- Form values -----\n\nexport function hasDocumentDistributionMetadataValue(value: unknown): boolean {\n if (value == null || value === '') {\n return false;\n }\n if (Array.isArray(value)) {\n return value.some((item) => hasDocumentDistributionMetadataValue(item));\n }\n if (typeof value === 'object') {\n const row = value as Record<string, unknown>;\n return (\n hasDocumentDistributionMetadataValue(row['id']) ||\n hasDocumentDistributionMetadataValue(row['value'])\n );\n }\n return String(value).trim().length > 0;\n}\n\nexport function stampDocumentDistributionFormValues(\n existing: Record<string, unknown> | null | undefined,\n patch: Partial<\n Record<(typeof AXM_DOCUMENT_DISTRIBUTION_FIELD_NAMES)[number], unknown>\n >,\n): Record<string, unknown> {\n return {\n ...(existing ?? {}),\n ...patch,\n };\n}\n\nexport function highestDocumentVersionNumber(\n documents: Array<{ version?: unknown } | null | undefined>,\n): number {\n let highest = 0;\n for (const document of documents) {\n const n = Number(document?.version);\n if (Number.isFinite(n) && n > highest) {\n highest = n;\n }\n }\n return highest > 0 ? highest : 1;\n}\n\n//#endregion\n","const config = {\n i18n: 'document-management',\n module: 'DocumentManagement',\n};\nexport const RootConfig = {\n config,\n module: {\n module: config.module,\n name: config.module,\n title: `@${config.i18n}:module.title`,\n icon: 'fa-light fa-books',\n },\n entities: {\n folder: {\n name: 'Folder',\n title: `@${config.i18n}:entities.folder.title`,\n titlePlural: `@${config.i18n}:entities.folder.title-plural`,\n icon: 'fa-light fa-folder',\n },\n document: {\n name: 'Document',\n title: `@${config.i18n}:entities.document.title`,\n titlePlural: `@${config.i18n}:entities.document.title-plural`,\n icon: 'fa-light fa-file',\n },\n documentType: {\n name: 'DocumentType',\n title: `@${config.i18n}:entities.document-type.title`,\n titlePlural: `@${config.i18n}:entities.document-type.title-plural`,\n icon: 'fa-light fa-books',\n },\n documentShortcut: {\n name: 'DocumentShortcut',\n title: `@${config.i18n}:entities.document-shortcut.title`,\n titlePlural: `@${config.i18n}:entities.document-shortcut.title-plural`,\n icon: 'fa-light fa-up-right-from-square',\n },\n documentVersion: {\n name: 'DocumentVersion',\n title: `@${config.i18n}:entities.document-version.title`,\n titlePlural: `@${config.i18n}:entities.document-version.title-plural`,\n icon: 'fa-light fa-code-branch',\n },\n },\n queries: {\n dashboard: {\n documentsKpi: `${config.module}:Dashboard:DocumentsKpi`,\n },\n reports: {\n getDocumentsByType: `${config.module}:Reports:GetDocumentsByType`,\n getDocumentExpiration: `${config.module}:Reports:GetDocumentExpiration`,\n },\n },\n /**\n * Daily document expiration digest (BackgroundJobSchedule → NotifyRun).\n * One combined email/in-app per recipient per scoped ref (employee / tenant / project),\n * listing every currently expired or near-expiry document in that scope.\n * Template id aligns with AXM_TEXT_TEMPLATE_IDS.documentExpired.\n */\n documentExpirationNotify: {\n providerKey: 'document-management',\n defaultCron: '0 0 * * *',\n templateId: 'c7100009-0001-4111-b111-090909090909',\n tenantRoleNames: ['admin', 'safety-manager'] as const,\n },\n} as const;\n","//#region ---- Imports ----\n\nimport { AXPModuleManifest } from '@acorex-platform/framework-shared/core';\nimport { RootConfig } from './root-config';\n\n//#endregion\n\n//#region ---- Manifest Definition ----\n\n/**\n * Document Management Module Manifest.\n * Defines module metadata, features, and provider references.\n */\nexport const DocumentManagementManifest: AXPModuleManifest = {\n name: RootConfig.module.name,\n version: '1.0.0',\n title: RootConfig.module.title,\n icon: RootConfig.module.icon,\n i18n: RootConfig.config.i18n,\n\n type: 'domain',\n domain: 'content-documents',\n // Module dependencies\n dependencies: ['DataManagement'],\n};\n\n//#endregion\n\n","//#region ---- Document management runtime keys ----\n\nexport const AXMDocumentManagementQueryKeys = {\n Drive: {\n GetRoot: 'DocumentManagement:Drive:GetRoot',\n GetContents: 'DocumentManagement:Drive:GetContents',\n GetRootByEntityRef: 'DocumentManagement:Drive:GetRootByEntityRef',\n },\n Document: {\n GetPath: 'DocumentManagement:Document:GetPath',\n Search: 'DocumentManagement:Document:Search',\n FindMany: 'DocumentManagement:Document:FindMany',\n GetExpiredCount: 'DocumentManagement:Document:GetExpiredCount',\n },\n Folder: {\n GetPath: 'DocumentManagement:Folder:GetPath',\n Search: 'DocumentManagement:Folder:Search',\n },\n DocumentReview: {\n ListFolderDocuments: 'DocumentManagement.DocumentReview:ListFolderDocuments',\n },\n DocumentType: {\n GetByName: 'DocumentManagement:DocumentType:GetByName',\n },\n Metadata: {\n GetUniqueDefinitions: 'DocumentManagement:Metadata:GetUniqueDefinitions',\n },\n} as const;\n\n//#endregion\n","//#region ----- Types -----\n\nexport type AXMDocumentExpirationStatus = 'expired' | 'near';\n\n//#endregion\n\n//#region ----- Constants -----\n\n/**\n * Near-expiry window (days) shared by document badge UI and expiration reports.\n * Documents that expire within this many days (and are not yet past) are \"near\".\n */\nexport const AXM_DOCUMENT_EXPIRATION_NEAR_DAYS = 7;\n\n//#endregion\n\n//#region ----- Date helpers -----\n\nexport function toDocumentExpirationDate(value: unknown): Date | undefined {\n if (value == null) {\n return undefined;\n }\n if (value instanceof Date) {\n return Number.isNaN(value.getTime()) ? undefined : value;\n }\n if (typeof value === 'string') {\n const trimmed = value.trim();\n // Date-only (YYYY-MM-DD) → local calendar day (matches date-time-editor)\n if (/^\\d{4}-\\d{2}-\\d{2}$/.test(trimmed)) {\n const [y, m, d] = trimmed.split('-').map(Number);\n return new Date(y, m - 1, d);\n }\n const parsed = new Date(trimmed);\n return Number.isNaN(parsed.getTime()) ? undefined : parsed;\n }\n if (typeof value === 'number') {\n const d = new Date(value);\n return Number.isNaN(d.getTime()) ? undefined : d;\n }\n return undefined;\n}\n\nfunction startOfLocalDay(date: Date): Date {\n return new Date(date.getFullYear(), date.getMonth(), date.getDate());\n}\n\n/**\n * Canonical persisted value for `Document.expirationDate`.\n * Matches `date-time-editor`: ISO string at start of local day.\n * Seed mocks and API writes must both use this shape (never BSON `Date`).\n */\nexport function toDocumentExpirationStorageValue(value: unknown): string | null | undefined {\n if (value === undefined) {\n return undefined;\n }\n if (value === null || value === '') {\n return null;\n }\n\n const date = toDocumentExpirationDate(value);\n if (!date) {\n return null;\n }\n\n return startOfLocalDay(date).toISOString();\n}\n\n/**\n * Local-day bounds used to query expired vs near-expiry documents.\n * - expired: expirationDate < startOfToday\n * - near: startOfToday <= expirationDate <= nearEndInclusive\n */\nexport function getDocumentExpirationQueryBounds(\n options?: { nearDays?: number; now?: Date },\n): { startOfToday: Date; nearEndInclusive: Date } {\n const now = options?.now ?? new Date();\n const nearDays = options?.nearDays ?? AXM_DOCUMENT_EXPIRATION_NEAR_DAYS;\n const startOfToday = startOfLocalDay(now);\n const nearEndInclusive = new Date(startOfToday);\n nearEndInclusive.setDate(nearEndInclusive.getDate() + nearDays);\n return { startOfToday, nearEndInclusive };\n}\n\n/**\n * Same bounds as {@link getDocumentExpirationQueryBounds}, serialized as ISO strings.\n *\n * Entity storage often persists `expirationDate` as an ISO string. Passing a `Date`\n * into Mongo `$lt` / `$gte` compares different BSON types and under-counts matches.\n * HTTP entity queries stringify dates automatically; in-process drive/middleware\n * queries must use these string bounds explicitly.\n */\nexport function getDocumentExpirationQueryBoundValues(\n options?: { nearDays?: number; now?: Date },\n): { startOfToday: string; nearEndInclusive: string } {\n const { startOfToday, nearEndInclusive } = getDocumentExpirationQueryBounds(options);\n return {\n startOfToday: startOfToday.toISOString(),\n nearEndInclusive: nearEndInclusive.toISOString(),\n };\n}\n\n/**\n * Calendar day key (YYYY-MM-DD) for `date` in an IANA timezone.\n */\nexport function getDocumentExpirationDateKey(date: Date, timeZone = 'UTC'): string {\n const formatter = new Intl.DateTimeFormat('en-CA', {\n timeZone: timeZone || 'UTC',\n year: 'numeric',\n month: '2-digit',\n day: '2-digit',\n });\n const parts = formatter.formatToParts(date);\n const year = Number(parts.find((part) => part.type === 'year')?.value ?? '0');\n const month = Number(parts.find((part) => part.type === 'month')?.value ?? '0');\n const day = Number(parts.find((part) => part.type === 'day')?.value ?? '0');\n return `${year.toString().padStart(4, '0')}-${month.toString().padStart(2, '0')}-${day\n .toString()\n .padStart(2, '0')}`;\n}\n\n/** Add whole calendar days to a YYYY-MM-DD key (UTC noon arithmetic). */\nexport function addDaysToDocumentExpirationDateKey(dateKey: string, days: number): string {\n const [y, m, d] = dateKey.split('-').map((part) => Number(part));\n const date = new Date(Date.UTC(y, (m ?? 1) - 1, d ?? 1, 12, 0, 0));\n date.setUTCDate(date.getUTCDate() + days);\n return getDocumentExpirationDateKey(date, 'UTC');\n}\n\n/** Inclusive UTC day window for a YYYY-MM-DD key (for expirationDate range queries). */\nexport function getUtcDayBoundsForDateKey(dateKey: string): { start: Date; endExclusive: Date } {\n const [y, m, d] = dateKey.split('-').map((part) => Number(part));\n const start = new Date(Date.UTC(y, (m ?? 1) - 1, d ?? 1, 0, 0, 0, 0));\n const endExclusive = new Date(start);\n endExclusive.setUTCDate(endExclusive.getUTCDate() + 1);\n return { start, endExclusive };\n}\n\n/**\n * Whole days from `from` to `to` (start-of-local-day). Negative means `to` is in the past.\n */\nexport function getDocumentExpirationRemainingDays(expirationDate: Date, now: Date = new Date()): number {\n const msPerDay = 24 * 60 * 60 * 1000;\n return Math.round(\n (startOfLocalDay(expirationDate).getTime() - startOfLocalDay(now).getTime()) / msPerDay,\n );\n}\n\n/**\n * Classify a document expire date as expired / near / neither.\n * Uses only `Document.expirationDate` (platform field).\n */\nexport function classifyDocumentExpirationStatus(\n expirationDate: unknown,\n options?: { nearDays?: number; now?: Date },\n): AXMDocumentExpirationStatus | null {\n const date = toDocumentExpirationDate(expirationDate);\n if (!date) {\n return null;\n }\n\n const now = options?.now ?? new Date();\n const nearDays = options?.nearDays ?? AXM_DOCUMENT_EXPIRATION_NEAR_DAYS;\n const remainingDays = getDocumentExpirationRemainingDays(date, now);\n\n if (remainingDays < 0) {\n return 'expired';\n }\n if (remainingDays <= nearDays) {\n return 'near';\n }\n return null;\n}\n\n//#endregion\n","import { AXPFileListItem, AXPMetaData, AXPMultiLanguageString } from '@acorex-platform/framework-shared/core';\nimport {\n AXPAuditEvent,\n AXPEntityModel,\n AXPRecordAuditInfo,\n} from '@acorex-platform/framework-shared/entity';\n\n/** Document lifecycle status (EDMS-style review workflow). */\nexport type AXMDocumentManagementDocumentStatus =\n | 'draft'\n | 'in-review'\n | 'approved'\n | 'rejected'\n | 'revision-requested';\n\n/** Status value constants for use in code. */\nexport const AXMDocumentManagementDocumentStatusValues = {\n Draft: 'draft' as const,\n InReview: 'in-review' as const,\n Approved: 'approved' as const,\n Rejected: 'rejected' as const,\n RevisionRequested: 'revision-requested' as const,\n} satisfies Record<string, AXMDocumentManagementDocumentStatus>;\n\n/** Document audit bag: platform created/updated/deleted plus optional review stamp. */\nexport type AXMDocumentAuditInfo = AXPRecordAuditInfo & {\n reviewed?: AXPAuditEvent;\n};\n\nexport interface AXMDocumentDto extends AXPEntityModel<string> {\n name: string;\n title: string;\n documentType: AXMDocumentDocDto;\n auditInfo?: AXMDocumentAuditInfo;\n parentId: string;\n fileInfo: AXPFileListItem;\n description?: string;\n /** ISO string at start of local day (same as date-time-editor); `Date` accepted on write then normalized. */\n expirationDate?: Date | string;\n statusId?: AXMDocumentManagementDocumentStatus;\n status?: { id: AXMDocumentManagementDocumentStatus; title?: string };\n version?: number;\n versionId?: string;\n /** Stamped from Document Type `enableVersioning` at create (and when type changes). */\n versioningEnabled?: boolean;\n /** Stamped from Document Type `enableDistributionCapability`. */\n distributionEnabled?: boolean;\n metaDataForm?: AXPMetaData;\n /**\n * Optional host-entity binding (same semantics as Folder.refType / Folder.refId).\n * Stamped from the nearest ancestor folder that has a record reference.\n */\n refType?: string;\n refId?: string;\n}\n\nexport interface AXMDocumentDocDto {\n id: string;\n name: string;\n title: AXPMultiLanguageString;\n /** Copied from Document Type at stamp/slim time. Host eligibility is `versioningEnabled`. */\n enableVersioning?: boolean;\n /** Copied from Document Type at stamp/slim time. Host eligibility is `distributionEnabled`. */\n enableDistributionCapability?: boolean;\n /** Copied from Document Type at stamp/slim time. Drives Request Review. */\n requiresReview?: boolean;\n}\n","//#region ---- Document type file kinds ----\n\nfunction asFileKindName(value: unknown): string | undefined {\n if (typeof value === 'string' && value.trim().length > 0) {\n const name = value.trim();\n const dot = name.indexOf('.');\n return dot > 0 ? name.slice(0, dot) : name;\n }\n if (value && typeof value === 'object' && !Array.isArray(value)) {\n return asFileKindName((value as { name?: unknown }).name);\n }\n return undefined;\n}\n\nfunction resolveTypeValue(input: unknown): unknown {\n if (input == null || Array.isArray(input) || typeof input !== 'object') {\n return input;\n }\n const rec = input as Record<string, unknown>;\n if ('selectedItems' in rec) {\n return rec;\n }\n if ('type' in rec) {\n return rec['type'];\n }\n // Option row `{ name, title }` — not an entity stub `{ id, name, title }`.\n if ('name' in rec && !('id' in rec)) {\n return rec;\n }\n return undefined;\n}\n\n/**\n * Logical file-kind names from a document type row or its `type` field.\n * Accepts name arrays, select option rows, and legacy `{ selectedItems, context }`.\n */\nexport function extractDocumentTypeFileKindNames(documentTypeOrType: unknown): string[] {\n const typeValue = resolveTypeValue(documentTypeOrType);\n const rawItems = Array.isArray(typeValue)\n ? typeValue\n : Array.isArray((typeValue as { selectedItems?: unknown[] } | null | undefined)?.selectedItems)\n ? ((typeValue as { selectedItems: unknown[] }).selectedItems)\n : typeValue != null\n ? [typeValue]\n : [];\n\n return Array.from(\n new Set(\n rawItems\n .map((item) => asFileKindName(item))\n .filter((name): name is string => typeof name === 'string' && name.length > 0)\n .filter((name) => !name.startsWith('conversation-')),\n ),\n );\n}\n\n/** Flattens a document type `type` value to a name array for select-editor storage. */\nexport function normalizeDocumentTypeFileKinds(type: unknown): string[] {\n return extractDocumentTypeFileKindNames(type);\n}\n\n//#endregion\n","import { AXPFileListItem, AXPMetaData } from '@acorex-platform/framework-shared/core';\nimport { AXPEntityModel } from '@acorex-platform/framework-shared/entity';\nimport type { AXMDocumentDocDto, AXMDocumentManagementDocumentStatus } from '../document/document.types';\n\nexport type AXMDocumentVersioningStatus = 'draft' | 'published';\n\nexport const AXMDocumentVersioningStatusValues = {\n Draft: 'draft' as const,\n Published: 'published' as const,\n} satisfies Record<string, AXMDocumentVersioningStatus>;\n\n/** Companion snapshot for {@link AXMDocumentDto}. Pin this id from other modules. */\nexport interface AXMDocumentVersionDto extends AXPEntityModel<string> {\n sourceId?: string;\n versionNumber?: number;\n versioningStatus?: AXMDocumentVersioningStatus;\n name?: string;\n title?: string;\n documentType?: AXMDocumentDocDto;\n parentId?: string;\n fileInfo?: AXPFileListItem;\n description?: string;\n expirationDate?: Date | string;\n statusId?: AXMDocumentManagementDocumentStatus;\n status?: { id: AXMDocumentManagementDocumentStatus; title?: string };\n metaDataForm?: AXPMetaData;\n refType?: string;\n refId?: string;\n}\n","//#region ---- Contracts barrel ----\n\nexport * from './features.keys';\nexport * from './menu.keys';\nexport * from './permission.keys';\nexport * from './settings.keys';\nexport * from './commands.keys';\nexport * from './document-review-metadata.util';\nexport * from './document-distribution-metadata.util';\n\nexport * from './root-config';\nexport * from './manifest';\nexport * from './runtime.keys';\nexport * from './document-expiration';\nexport * from './drive-bootstrap-catalog.types';\n\n//#endregion\n\nexport * from './entities';\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":["stringifyInterface"],"mappings":"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"}
|
|
@@ -16,7 +16,7 @@ import * as i0 from '@angular/core';
|
|
|
16
16
|
import { inject, DestroyRef, signal, computed, effect, ChangeDetectionStrategy, Component } from '@angular/core';
|
|
17
17
|
import { takeUntilDestroyed } from '@angular/core/rxjs-interop';
|
|
18
18
|
import { isEqual } from 'lodash-es';
|
|
19
|
-
import { A as AXPDocumentExplorerViewModel, r as readNodeMetaDataValue, d as collectFolderScopedMetaDataList, e as collectDocumentScopedMetaDataList, f as flattenMetaDataColumns, g as collectLookupKeys, h as collectDocumentTypeIds, i as collectDocumentTypeNames, a as AXMDocumentExpirationBadgeComponent, b as AXMDocumentVersionBadgeComponent, c as AXMFolderExpirationBadgesComponent } from './acorex-platform-module-document-management-client-acorex-platform-module-document-management-client-
|
|
19
|
+
import { A as AXPDocumentExplorerViewModel, r as readNodeMetaDataValue, d as collectFolderScopedMetaDataList, e as collectDocumentScopedMetaDataList, f as flattenMetaDataColumns, g as collectLookupKeys, h as collectDocumentTypeIds, i as collectDocumentTypeNames, a as AXMDocumentExpirationBadgeComponent, b as AXMDocumentVersionBadgeComponent, c as AXMFolderExpirationBadgesComponent } from './acorex-platform-module-document-management-client-acorex-platform-module-document-management-client-D0DTP3BN.mjs';
|
|
20
20
|
import { mergeMetaDataLists } from '@acorex-platform/module-data-management-client/contracts';
|
|
21
21
|
|
|
22
22
|
//#region ----- Imports -----
|
|
@@ -174,7 +174,7 @@ class AXMDocumentExplorerDetailsViewComponent {
|
|
|
174
174
|
this.vm.navigateToFolder(node.id);
|
|
175
175
|
return;
|
|
176
176
|
}
|
|
177
|
-
void this.vm.
|
|
177
|
+
void this.vm.openFileOnDoubleClick(node);
|
|
178
178
|
}
|
|
179
179
|
openRowContextMenu(event) {
|
|
180
180
|
event.preventDefault();
|
|
@@ -543,4 +543,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "22.0.8", ngImpor
|
|
|
543
543
|
}], ctorParameters: () => [] });
|
|
544
544
|
|
|
545
545
|
export { AXMDocumentExplorerDetailsViewComponent };
|
|
546
|
-
//# sourceMappingURL=acorex-platform-module-document-management-client-details-view.component-
|
|
546
|
+
//# sourceMappingURL=acorex-platform-module-document-management-client-details-view.component-Cyy5ihGW.mjs.map
|