@acorex-platform/module-document-management-client 2.0.0-next.10 → 2.0.0-next.12

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (40) hide show
  1. package/fesm2022/{acorex-platform-module-document-management-client-acorex-platform-module-document-management-client-i1lGkMQC.mjs → acorex-platform-module-document-management-client-acorex-platform-module-document-management-client-C_TdVup5.mjs} +26 -26
  2. package/fesm2022/{acorex-platform-module-document-management-client-acorex-platform-module-document-management-client-i1lGkMQC.mjs.map → acorex-platform-module-document-management-client-acorex-platform-module-document-management-client-C_TdVup5.mjs.map} +1 -1
  3. package/fesm2022/{acorex-platform-module-document-management-client-attachment-view-skeleton.component-D2EHMBEQ.mjs → acorex-platform-module-document-management-client-attachment-view-skeleton.component-B-MJAd6K.mjs} +2 -2
  4. package/fesm2022/{acorex-platform-module-document-management-client-attachment-view-skeleton.component-D2EHMBEQ.mjs.map → acorex-platform-module-document-management-client-attachment-view-skeleton.component-B-MJAd6K.mjs.map} +1 -1
  5. package/fesm2022/{acorex-platform-module-document-management-client-attachment-widget.component-DMZ_lnJb.mjs → acorex-platform-module-document-management-client-attachment-widget.component-BcxGDjeF.mjs} +2 -2
  6. package/fesm2022/{acorex-platform-module-document-management-client-attachment-widget.component-DMZ_lnJb.mjs.map → acorex-platform-module-document-management-client-attachment-widget.component-BcxGDjeF.mjs.map} +1 -1
  7. package/fesm2022/{acorex-platform-module-document-management-client-details-view.component-D3Jx-JvU.mjs → acorex-platform-module-document-management-client-details-view.component-TKzt2KvO.mjs} +2 -2
  8. package/fesm2022/{acorex-platform-module-document-management-client-details-view.component-D3Jx-JvU.mjs.map → acorex-platform-module-document-management-client-details-view.component-TKzt2KvO.mjs.map} +1 -1
  9. package/fesm2022/{acorex-platform-module-document-management-client-distribute-document.command-L420ZbsM.mjs → acorex-platform-module-document-management-client-distribute-document.command-DoQC3ylx.mjs} +2 -2
  10. package/fesm2022/{acorex-platform-module-document-management-client-distribute-document.command-L420ZbsM.mjs.map → acorex-platform-module-document-management-client-distribute-document.command-DoQC3ylx.mjs.map} +1 -1
  11. package/fesm2022/{acorex-platform-module-document-management-client-drive-choose.component-DNNfdkr_.mjs → acorex-platform-module-document-management-client-drive-choose.component-B4BDB97X.mjs} +2 -2
  12. package/fesm2022/{acorex-platform-module-document-management-client-drive-choose.component-DNNfdkr_.mjs.map → acorex-platform-module-document-management-client-drive-choose.component-B4BDB97X.mjs.map} +1 -1
  13. package/fesm2022/{acorex-platform-module-document-management-client-large-icons-view-skeleton.component-DCSLExpX.mjs → acorex-platform-module-document-management-client-large-icons-view-skeleton.component-q5QaDA3U.mjs} +2 -2
  14. package/fesm2022/{acorex-platform-module-document-management-client-large-icons-view-skeleton.component-DCSLExpX.mjs.map → acorex-platform-module-document-management-client-large-icons-view-skeleton.component-q5QaDA3U.mjs.map} +1 -1
  15. package/fesm2022/{acorex-platform-module-document-management-client-large-icons-view.component-2tP4TDuw.mjs → acorex-platform-module-document-management-client-large-icons-view.component-DWuhN497.mjs} +2 -2
  16. package/fesm2022/{acorex-platform-module-document-management-client-large-icons-view.component-2tP4TDuw.mjs.map → acorex-platform-module-document-management-client-large-icons-view.component-DWuhN497.mjs.map} +1 -1
  17. package/fesm2022/{acorex-platform-module-document-management-client-large-tiles-view.component-CaKom515.mjs → acorex-platform-module-document-management-client-large-tiles-view.component-ClRmDSXY.mjs} +2 -2
  18. package/fesm2022/{acorex-platform-module-document-management-client-large-tiles-view.component-CaKom515.mjs.map → acorex-platform-module-document-management-client-large-tiles-view.component-ClRmDSXY.mjs.map} +1 -1
  19. package/fesm2022/{acorex-platform-module-document-management-client-list-view-skeleton.component-DgkPpiDD.mjs → acorex-platform-module-document-management-client-list-view-skeleton.component-uO3rSIL6.mjs} +2 -2
  20. package/fesm2022/{acorex-platform-module-document-management-client-list-view-skeleton.component-DgkPpiDD.mjs.map → acorex-platform-module-document-management-client-list-view-skeleton.component-uO3rSIL6.mjs.map} +1 -1
  21. package/fesm2022/{acorex-platform-module-document-management-client-list-view.component-CSOMxbq7.mjs → acorex-platform-module-document-management-client-list-view.component-DOqc7vC9.mjs} +2 -2
  22. package/fesm2022/{acorex-platform-module-document-management-client-list-view.component-CSOMxbq7.mjs.map → acorex-platform-module-document-management-client-list-view.component-DOqc7vC9.mjs.map} +1 -1
  23. package/fesm2022/{acorex-platform-module-document-management-client-open-document.command-Byut3UdZ.mjs → acorex-platform-module-document-management-client-open-document.command-B87Xj3s6.mjs} +2 -2
  24. package/fesm2022/{acorex-platform-module-document-management-client-open-document.command-Byut3UdZ.mjs.map → acorex-platform-module-document-management-client-open-document.command-B87Xj3s6.mjs.map} +1 -1
  25. package/fesm2022/{acorex-platform-module-document-management-client-request-document-review.command-C-x7A2x2.mjs → acorex-platform-module-document-management-client-request-document-review.command-MLT9W3J0.mjs} +2 -2
  26. package/fesm2022/{acorex-platform-module-document-management-client-request-document-review.command-C-x7A2x2.mjs.map → acorex-platform-module-document-management-client-request-document-review.command-MLT9W3J0.mjs.map} +1 -1
  27. package/fesm2022/{acorex-platform-module-document-management-client-share-dialog.component-DmWwfHBl.mjs → acorex-platform-module-document-management-client-share-dialog.component-B4eaA9Rt.mjs} +2 -2
  28. package/fesm2022/{acorex-platform-module-document-management-client-share-dialog.component-DmWwfHBl.mjs.map → acorex-platform-module-document-management-client-share-dialog.component-B4eaA9Rt.mjs.map} +1 -1
  29. package/fesm2022/{acorex-platform-module-document-management-client-small-icons-view-skeleton.component-Ds5v0XDc.mjs → acorex-platform-module-document-management-client-small-icons-view-skeleton.component-DCjsVs5n.mjs} +2 -2
  30. package/fesm2022/{acorex-platform-module-document-management-client-small-icons-view-skeleton.component-Ds5v0XDc.mjs.map → acorex-platform-module-document-management-client-small-icons-view-skeleton.component-DCjsVs5n.mjs.map} +1 -1
  31. package/fesm2022/{acorex-platform-module-document-management-client-small-icons-view.component-B5lM6scj.mjs → acorex-platform-module-document-management-client-small-icons-view.component-DbO9rbel.mjs} +2 -2
  32. package/fesm2022/{acorex-platform-module-document-management-client-small-icons-view.component-B5lM6scj.mjs.map → acorex-platform-module-document-management-client-small-icons-view.component-DbO9rbel.mjs.map} +1 -1
  33. package/fesm2022/{acorex-platform-module-document-management-client-small-tiles-view-skeleton.component-BZAtrZvj.mjs → acorex-platform-module-document-management-client-small-tiles-view-skeleton.component-CO9d4ytu.mjs} +2 -2
  34. package/fesm2022/{acorex-platform-module-document-management-client-small-tiles-view-skeleton.component-BZAtrZvj.mjs.map → acorex-platform-module-document-management-client-small-tiles-view-skeleton.component-CO9d4ytu.mjs.map} +1 -1
  35. package/fesm2022/{acorex-platform-module-document-management-client-small-tiles-view.component-DRDvcOMS.mjs → acorex-platform-module-document-management-client-small-tiles-view.component-Ci2m67vw.mjs} +2 -2
  36. package/fesm2022/{acorex-platform-module-document-management-client-small-tiles-view.component-DRDvcOMS.mjs.map → acorex-platform-module-document-management-client-small-tiles-view.component-Ci2m67vw.mjs.map} +1 -1
  37. package/fesm2022/{acorex-platform-module-document-management-client-upload-document.command-CYeSpjOg.mjs → acorex-platform-module-document-management-client-upload-document.command-BsziEhNt.mjs} +2 -2
  38. package/fesm2022/{acorex-platform-module-document-management-client-upload-document.command-CYeSpjOg.mjs.map → acorex-platform-module-document-management-client-upload-document.command-BsziEhNt.mjs.map} +1 -1
  39. package/fesm2022/acorex-platform-module-document-management-client.mjs +1 -1
  40. package/package.json +2 -2
@@ -1 +1 @@
1
- {"version":3,"file":"acorex-platform-module-document-management-client-list-view-skeleton.component-DgkPpiDD.mjs","sources":["../../../../libs/modules/document-management/client/src/lib/features/document-explorer/views/list/list-view-skeleton.component.ts","../../../../libs/modules/document-management/client/src/lib/features/document-explorer/views/list/list-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-list-view-skeleton',\n templateUrl: './list-view-skeleton.component.html',\n styleUrl: './list-view-skeleton.component.css',\n changeDetection: ChangeDetectionStrategy.OnPush,\n imports: [CommonModule, AXSkeletonModule, AXTranslationModule],\n})\nexport class AXMDocumentExplorerListViewSkeletonComponent {\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,4CAA4C,CAAA;AAPzD,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,4CAA4C,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA;AAA5C,IAAA,SAAA,IAAA,CAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,IAAA,EAAA,4CAA4C,oGCbzD,+xCAqCA,EAAA,MAAA,EAAA,CAAA,4vCAAA,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,4CAA4C,EAAA,UAAA,EAAA,CAAA;kBAPxD,SAAS;+BACE,0CAA0C,EAAA,eAAA,EAGnC,uBAAuB,CAAC,MAAM,EAAA,OAAA,EACtC,CAAC,YAAY,EAAE,gBAAgB,EAAE,mBAAmB,CAAC,EAAA,QAAA,EAAA,+xCAAA,EAAA,MAAA,EAAA,CAAA,4vCAAA,CAAA,EAAA;;;"}
1
+ {"version":3,"file":"acorex-platform-module-document-management-client-list-view-skeleton.component-uO3rSIL6.mjs","sources":["../../../../libs/modules/document-management/client/src/lib/features/document-explorer/views/list/list-view-skeleton.component.ts","../../../../libs/modules/document-management/client/src/lib/features/document-explorer/views/list/list-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-list-view-skeleton',\n templateUrl: './list-view-skeleton.component.html',\n styleUrl: './list-view-skeleton.component.css',\n changeDetection: ChangeDetectionStrategy.OnPush,\n imports: [CommonModule, AXSkeletonModule, AXTranslationModule],\n})\nexport class AXMDocumentExplorerListViewSkeletonComponent {\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,4CAA4C,CAAA;AAPzD,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,4CAA4C,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA;AAA5C,IAAA,SAAA,IAAA,CAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,IAAA,EAAA,4CAA4C,oGCbzD,+xCAqCA,EAAA,MAAA,EAAA,CAAA,4vCAAA,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,4CAA4C,EAAA,UAAA,EAAA,CAAA;kBAPxD,SAAS;+BACE,0CAA0C,EAAA,eAAA,EAGnC,uBAAuB,CAAC,MAAM,EAAA,OAAA,EACtC,CAAC,YAAY,EAAE,gBAAgB,EAAE,mBAAmB,CAAC,EAAA,QAAA,EAAA,+xCAAA,EAAA,MAAA,EAAA,CAAA,4vCAAA,CAAA,EAAA;;;"}
@@ -3,7 +3,7 @@ import { inject, ChangeDetectionStrategy, Component } from '@angular/core';
3
3
  import * as i1 from '@angular/common';
4
4
  import { CommonModule } from '@angular/common';
5
5
  import { AXPElementDataDirective, AXPDblClickDirective } from '@acorex-platform/framework-client/core';
6
- import { A as AXPDocumentExplorerViewModel, a as AXMDocumentExpirationBadgeComponent, b as AXMDocumentVersionBadgeComponent, c as AXMFolderExpirationBadgesComponent } from './acorex-platform-module-document-management-client-acorex-platform-module-document-management-client-i1lGkMQC.mjs';
6
+ import { A as AXPDocumentExplorerViewModel, a as AXMDocumentExpirationBadgeComponent, b as AXMDocumentVersionBadgeComponent, c as AXMFolderExpirationBadgesComponent } from './acorex-platform-module-document-management-client-acorex-platform-module-document-management-client-C_TdVup5.mjs';
7
7
  import * as i3 from '@acorex/core/translation';
8
8
  import { AXTranslationModule } from '@acorex/core/translation';
9
9
 
@@ -28,4 +28,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "22.0.8", ngImpor
28
28
  }] });
29
29
 
30
30
  export { AXMDocumentExplorerListViewComponent };
31
- //# sourceMappingURL=acorex-platform-module-document-management-client-list-view.component-CSOMxbq7.mjs.map
31
+ //# sourceMappingURL=acorex-platform-module-document-management-client-list-view.component-DOqc7vC9.mjs.map
@@ -1 +1 @@
1
- {"version":3,"file":"acorex-platform-module-document-management-client-list-view.component-CSOMxbq7.mjs","sources":["../../../../libs/modules/document-management/client/src/lib/features/document-explorer/views/list/list-view.component.ts","../../../../libs/modules/document-management/client/src/lib/features/document-explorer/views/list/list-view.component.html"],"sourcesContent":["import { Component, inject, ChangeDetectionStrategy } from '@angular/core';\nimport { CommonModule } from '@angular/common';\n\nimport { AXPDblClickDirective, AXPElementDataDirective } from '@acorex-platform/framework-client/core';\nimport { AXPDocumentExplorerViewModel } from '../../document-explorer.viewmodel';\n\nimport { AXTranslationModule } from '@acorex/core/translation';\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';\n\n@Component({\n selector: 'axm-document-explorer-list-view',\n templateUrl: './list-view.component.html',\n styleUrls: ['./list-view.component.css'],\n standalone: true,\n changeDetection: ChangeDetectionStrategy.Eager,\n imports: [\n CommonModule,\n AXPElementDataDirective,\n AXPDblClickDirective,\n AXTranslationModule,\n AXMDocumentExpirationBadgeComponent,\n AXMDocumentVersionBadgeComponent,\n AXMFolderExpirationBadgesComponent,\n ],\n})\nexport class AXMDocumentExplorerListViewComponent {\n protected vm = inject(AXPDocumentExplorerViewModel);\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 @let folderDisplay = vm.getNodeDisplayInfo(folder);\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)\" [class.__shortcut]=\"folderDisplay.isShortcut\">\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 @if (folderDisplay.isShortcut) {\n <i class=\"__shortcut-arrow fa-light fa-up-right-from-square\" aria-hidden=\"true\"></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 fileDisplay = vm.getNodeDisplayInfo(file);\n <div\n class=\"__explorer-item\"\n [class.--selected]=\"vm.isItemSelected(file)\"\n [axp-data]=\"file\"\n (click)=\"vm.toggleSelect(file)\"\n (onDblClick)=\"vm.openFileOnDoubleClick(file)\"\n >\n <div class=\"__icon\" [class.__shortcut]=\"fileDisplay.isShortcut\">\n <i class=\"fa-fw {{ fileDisplay.icon }}\"></i>\n @if (fileDisplay.isShortcut) {\n <i class=\"__shortcut-arrow fa-light fa-up-right-from-square\" aria-hidden=\"true\"></i>\n }\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 }\n </div>\n </div>\n }\n} @else {\n <div class=\"__content fa-xl\">\n @for (folder of vm.filteredFolders(); track folder.id) {\n @let folderDisplay = vm.getNodeDisplayInfo(folder);\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)\" [class.__shortcut]=\"folderDisplay.isShortcut\">\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 @if (folderDisplay.isShortcut) {\n <i class=\"__shortcut-arrow fa-light fa-up-right-from-square\" aria-hidden=\"true\"></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 fileDisplay = vm.getNodeDisplayInfo(file);\n <div\n class=\"__explorer-item\"\n [class.--selected]=\"vm.isItemSelected(file)\"\n [axp-data]=\"file\"\n (click)=\"vm.toggleSelect(file)\"\n (onDblClick)=\"vm.openFileOnDoubleClick(file)\"\n >\n <div class=\"__icon\" [class.__shortcut]=\"fileDisplay.isShortcut\">\n <i class=\"fa-fw {{ fileDisplay.icon }}\"></i>\n @if (fileDisplay.isShortcut) {\n <i class=\"__shortcut-arrow fa-light fa-up-right-from-square\" aria-hidden=\"true\"></i>\n }\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 }\n </div>\n}\n"],"names":["i2"],"mappings":";;;;;;;;;MA2Ba,oCAAoC,CAAA;AAhBjD,IAAA,WAAA,GAAA;AAiBc,QAAA,IAAA,CAAA,EAAE,GAAG,MAAM,CAAC,4BAA4B,CAAC;AACtD,IAAA;8GAFY,oCAAoC,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA;AAApC,IAAA,SAAA,IAAA,CAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,IAAA,EAAA,oCAAoC,EAAA,YAAA,EAAA,IAAA,EAAA,QAAA,EAAA,iCAAA,EAAA,QAAA,EAAA,EAAA,EAAA,QAAA,EC3BjD,m8JAwHA,EAAA,MAAA,EAAA,CAAA,65DAAA,CAAA,EAAA,YAAA,EAAA,CAAA,EAAA,IAAA,EAAA,UAAA,EAAA,IAAA,EDtGM,YAAY,+BACZ,uBAAuB,EAAA,QAAA,EAAA,YAAA,EAAA,MAAA,EAAA,CAAA,UAAA,EAAA,eAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EACvB,oBAAoB,EAAA,QAAA,EAAA,cAAA,EAAA,OAAA,EAAA,CAAA,YAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,UAAA,EAAA,IAAA,EACpB,mBAAmB,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EACnB,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;;2FAG3B,oCAAoC,EAAA,UAAA,EAAA,CAAA;kBAhBhD,SAAS;AACI,YAAA,IAAA,EAAA,CAAA,EAAA,QAAA,EAAA,iCAAiC,cAG/B,IAAI,EAAA,eAAA,EACC,uBAAuB,CAAC,KAAK,EAAA,OAAA,EACrC;wBACP,YAAY;wBACZ,uBAAuB;wBACvB,oBAAoB;wBACpB,mBAAmB;wBACnB,mCAAmC;wBACnC,gCAAgC;wBAChC,kCAAkC;AACnC,qBAAA,EAAA,QAAA,EAAA,m8JAAA,EAAA,MAAA,EAAA,CAAA,65DAAA,CAAA,EAAA;;;"}
1
+ {"version":3,"file":"acorex-platform-module-document-management-client-list-view.component-DOqc7vC9.mjs","sources":["../../../../libs/modules/document-management/client/src/lib/features/document-explorer/views/list/list-view.component.ts","../../../../libs/modules/document-management/client/src/lib/features/document-explorer/views/list/list-view.component.html"],"sourcesContent":["import { Component, inject, ChangeDetectionStrategy } from '@angular/core';\nimport { CommonModule } from '@angular/common';\n\nimport { AXPDblClickDirective, AXPElementDataDirective } from '@acorex-platform/framework-client/core';\nimport { AXPDocumentExplorerViewModel } from '../../document-explorer.viewmodel';\n\nimport { AXTranslationModule } from '@acorex/core/translation';\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';\n\n@Component({\n selector: 'axm-document-explorer-list-view',\n templateUrl: './list-view.component.html',\n styleUrls: ['./list-view.component.css'],\n standalone: true,\n changeDetection: ChangeDetectionStrategy.Eager,\n imports: [\n CommonModule,\n AXPElementDataDirective,\n AXPDblClickDirective,\n AXTranslationModule,\n AXMDocumentExpirationBadgeComponent,\n AXMDocumentVersionBadgeComponent,\n AXMFolderExpirationBadgesComponent,\n ],\n})\nexport class AXMDocumentExplorerListViewComponent {\n protected vm = inject(AXPDocumentExplorerViewModel);\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 @let folderDisplay = vm.getNodeDisplayInfo(folder);\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)\" [class.__shortcut]=\"folderDisplay.isShortcut\">\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 @if (folderDisplay.isShortcut) {\n <i class=\"__shortcut-arrow fa-light fa-up-right-from-square\" aria-hidden=\"true\"></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 fileDisplay = vm.getNodeDisplayInfo(file);\n <div\n class=\"__explorer-item\"\n [class.--selected]=\"vm.isItemSelected(file)\"\n [axp-data]=\"file\"\n (click)=\"vm.toggleSelect(file)\"\n (onDblClick)=\"vm.openFileOnDoubleClick(file)\"\n >\n <div class=\"__icon\" [class.__shortcut]=\"fileDisplay.isShortcut\">\n <i class=\"fa-fw {{ fileDisplay.icon }}\"></i>\n @if (fileDisplay.isShortcut) {\n <i class=\"__shortcut-arrow fa-light fa-up-right-from-square\" aria-hidden=\"true\"></i>\n }\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 }\n </div>\n </div>\n }\n} @else {\n <div class=\"__content fa-xl\">\n @for (folder of vm.filteredFolders(); track folder.id) {\n @let folderDisplay = vm.getNodeDisplayInfo(folder);\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)\" [class.__shortcut]=\"folderDisplay.isShortcut\">\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 @if (folderDisplay.isShortcut) {\n <i class=\"__shortcut-arrow fa-light fa-up-right-from-square\" aria-hidden=\"true\"></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 fileDisplay = vm.getNodeDisplayInfo(file);\n <div\n class=\"__explorer-item\"\n [class.--selected]=\"vm.isItemSelected(file)\"\n [axp-data]=\"file\"\n (click)=\"vm.toggleSelect(file)\"\n (onDblClick)=\"vm.openFileOnDoubleClick(file)\"\n >\n <div class=\"__icon\" [class.__shortcut]=\"fileDisplay.isShortcut\">\n <i class=\"fa-fw {{ fileDisplay.icon }}\"></i>\n @if (fileDisplay.isShortcut) {\n <i class=\"__shortcut-arrow fa-light fa-up-right-from-square\" aria-hidden=\"true\"></i>\n }\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 }\n </div>\n}\n"],"names":["i2"],"mappings":";;;;;;;;;MA2Ba,oCAAoC,CAAA;AAhBjD,IAAA,WAAA,GAAA;AAiBc,QAAA,IAAA,CAAA,EAAE,GAAG,MAAM,CAAC,4BAA4B,CAAC;AACtD,IAAA;8GAFY,oCAAoC,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA;AAApC,IAAA,SAAA,IAAA,CAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,IAAA,EAAA,oCAAoC,EAAA,YAAA,EAAA,IAAA,EAAA,QAAA,EAAA,iCAAA,EAAA,QAAA,EAAA,EAAA,EAAA,QAAA,EC3BjD,m8JAwHA,EAAA,MAAA,EAAA,CAAA,65DAAA,CAAA,EAAA,YAAA,EAAA,CAAA,EAAA,IAAA,EAAA,UAAA,EAAA,IAAA,EDtGM,YAAY,+BACZ,uBAAuB,EAAA,QAAA,EAAA,YAAA,EAAA,MAAA,EAAA,CAAA,UAAA,EAAA,eAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EACvB,oBAAoB,EAAA,QAAA,EAAA,cAAA,EAAA,OAAA,EAAA,CAAA,YAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,UAAA,EAAA,IAAA,EACpB,mBAAmB,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EACnB,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;;2FAG3B,oCAAoC,EAAA,UAAA,EAAA,CAAA;kBAhBhD,SAAS;AACI,YAAA,IAAA,EAAA,CAAA,EAAA,QAAA,EAAA,iCAAiC,cAG/B,IAAI,EAAA,eAAA,EACC,uBAAuB,CAAC,KAAK,EAAA,OAAA,EACrC;wBACP,YAAY;wBACZ,uBAAuB;wBACvB,oBAAoB;wBACpB,mBAAmB;wBACnB,mCAAmC;wBACnC,gCAAgC;wBAChC,kCAAkC;AACnC,qBAAA,EAAA,QAAA,EAAA,m8JAAA,EAAA,MAAA,EAAA,CAAA,65DAAA,CAAA,EAAA;;;"}
@@ -5,7 +5,7 @@ import { AXPEntityService } from '@acorex-platform/framework-client/layout/entit
5
5
  import { RootConfig, DOCUMENT_DISTRIBUTION_WORKFLOW_NAME, hasDocumentDistributionMetadataValue, AXM_DOCUMENT_DISTRIBUTION_VIEWED_AT_FIELD_NAME, stampDocumentDistributionFormValues } from '@acorex-platform/module-document-management-client/contracts';
6
6
  import * as i0 from '@angular/core';
7
7
  import { inject, Injectable } from '@angular/core';
8
- import { j as AXMDocumentManagerService, m as AXPDocumentManagementService } from './acorex-platform-module-document-management-client-acorex-platform-module-document-management-client-i1lGkMQC.mjs';
8
+ import { j as AXMDocumentManagerService, m as AXPDocumentManagementService } from './acorex-platform-module-document-management-client-acorex-platform-module-document-management-client-C_TdVup5.mjs';
9
9
 
10
10
  //#region ----- Imports -----
11
11
  //#endregion
@@ -211,4 +211,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "22.0.8", ngImpor
211
211
  }] });
212
212
 
213
213
  export { AXMOpenDocumentCommand };
214
- //# sourceMappingURL=acorex-platform-module-document-management-client-open-document.command-Byut3UdZ.mjs.map
214
+ //# sourceMappingURL=acorex-platform-module-document-management-client-open-document.command-B87Xj3s6.mjs.map
@@ -1 +1 @@
1
- {"version":3,"file":"acorex-platform-module-document-management-client-open-document.command-Byut3UdZ.mjs","sources":["../../../../libs/modules/document-management/client/src/lib/features/commands/open-document.command.ts"],"sourcesContent":["//#region ----- Imports -----\n\nimport { AXToastService } from '@acorex/components/toast';\nimport { AXTranslationService } from '@acorex/core/translation';\nimport { extractRequestErrorInfo } from '@acorex-platform/framework-client/common';\nimport { AXPEntityService } from '@acorex-platform/framework-client/layout/entity';\nimport { AXPCommand, type AXPCommandExecuteResultPromise } from '@acorex-platform/framework-shared/runtime';\nimport type { AXPFileListItem } from '@acorex-platform/framework-shared/core';\nimport {\n AXMDocumentDto,\n AXM_DOCUMENT_DISTRIBUTION_VIEWED_AT_FIELD_NAME,\n DOCUMENT_DISTRIBUTION_WORKFLOW_NAME,\n hasDocumentDistributionMetadataValue,\n RootConfig,\n stampDocumentDistributionFormValues,\n} from '@acorex-platform/module-document-management-client/contracts';\nimport { inject, Injectable } from '@angular/core';\n\nimport { AXMDocumentManagerService } from '../shared/document-manager.service';\nimport type { AXMDocumentExplorerNode } from '../shared/document-manager.types';\nimport { AXPDocumentManagementService } from '../shared/document-management.service';\n\n//#endregion\n\n//#region ----- Types -----\n\ninterface DistributionTaskRow {\n id: string;\n taskTypeId?: string;\n taskType?: { workflowConfig?: { workflowName?: string } };\n metaDataForm?: Record<string, unknown>;\n}\n\ninterface DistributionTaskTypeRow {\n id: string;\n workflowConfig?: { workflowName?: string };\n}\n\nexport interface AXMOpenDocumentCommandInput {\n documentId?: string;\n folderId?: string;\n taskId?: string;\n data?: AXMDocumentExplorerNode | {\n documentId?: string;\n folderId?: string;\n taskId?: string;\n id?: string;\n payload?: { context?: { documentId?: string; folderId?: string; taskId?: string } };\n context?: { documentId?: string; folderId?: string; taskId?: string };\n };\n options?: {\n documentId?: string;\n folderId?: string;\n taskId?: string;\n };\n}\n\n//#endregion\n\n//#region ----- Constants -----\n\nconst I18N = '@document-management:review';\n\n//#endregion\n\n//#region ----- Helpers -----\n\nfunction isExplorerFileNode(value: unknown): value is AXMDocumentExplorerNode {\n return (\n !!value &&\n typeof value === 'object' &&\n (value as AXMDocumentExplorerNode).type === 'file' &&\n typeof (value as AXMDocumentExplorerNode).id === 'string'\n );\n}\n\nfunction readDocumentId(value: unknown): string | undefined {\n if (typeof value !== 'string') {\n return undefined;\n }\n const trimmed = value.trim();\n if (!trimmed || trimmed.includes('{{') || trimmed.includes('}}')) {\n return undefined;\n }\n return trimmed;\n}\n\nfunction readContextId(\n input: AXMOpenDocumentCommandInput,\n key: 'documentId' | 'folderId' | 'taskId',\n): string | undefined {\n const data = input.data;\n const fromPayloadContext =\n data && typeof data === 'object' && 'payload' in data\n ? (data as { payload?: { context?: Record<string, unknown> } }).payload?.context?.[key]\n : undefined;\n const fromDataContext =\n data && typeof data === 'object' && 'context' in data\n ? (data as { context?: Record<string, unknown> }).context?.[key]\n : undefined;\n const fromData =\n data && typeof data === 'object' && key in data\n ? (data as Record<string, unknown>)[key]\n : undefined;\n\n return (\n readDocumentId(input[key]) ??\n readDocumentId(input.options?.[key]) ??\n readDocumentId(fromData) ??\n readDocumentId(fromPayloadContext) ??\n readDocumentId(fromDataContext)\n );\n}\n\nfunction toExplorerNode(document: AXMDocumentDto): AXMDocumentExplorerNode {\n const rawFileInfo = document.fileInfo;\n const fileListItem =\n rawFileInfo != null && typeof rawFileInfo === 'object' ? (rawFileInfo as AXPFileListItem) : undefined;\n const storedFileRef = typeof rawFileInfo === 'string' ? rawFileInfo : undefined;\n\n return {\n id: document.id!,\n name: document.name,\n title: document.title,\n type: 'file',\n parentId: document.parentId ?? null,\n size: fileListItem?.size ?? 0,\n fileId: fileListItem ?? storedFileRef,\n storageType: 'physical',\n metaDataForm: document.metaDataForm ?? undefined,\n documentTypes: document.documentType ? [document.documentType] : [],\n expirationDate: document.expirationDate ? new Date(document.expirationDate) : undefined,\n };\n}\n\n//#endregion\n\n//#region ----- Open file command -----\n\n/**\n * Drive Open keeps the catalog/download pipeline when an explorer node is\n * passed. Document Review View (documentId/folderId) opens File Viewer, the\n * same popup as Drive \"Open File Viewer\".\n */\n@Injectable({ providedIn: 'root' })\nexport class AXMOpenDocumentCommand implements AXPCommand<AXMOpenDocumentCommandInput> {\n //#region ----- Services & Dependencies -----\n\n private readonly documentManager = inject(AXMDocumentManagerService);\n private readonly documentApi = inject(AXPDocumentManagementService);\n private readonly entityService = inject(AXPEntityService);\n private readonly toastService = inject(AXToastService);\n private readonly translationService = inject(AXTranslationService);\n private readonly documentData = this.entityService\n .withEntity(RootConfig.module.name, RootConfig.entities.document.name)\n .data<string, AXMDocumentDto>();\n private readonly taskData = this.entityService\n .withEntity('TaskManagement', 'Task')\n .data<string, DistributionTaskRow>();\n private readonly taskTypeData = this.entityService\n .withEntity('TaskManagement', 'TaskType')\n .data<string, DistributionTaskTypeRow>();\n\n //#endregion\n\n //#region ----- Execute -----\n\n async execute(input: AXMOpenDocumentCommandInput = {}): AXPCommandExecuteResultPromise {\n if (isExplorerFileNode(input.data)) {\n await this.documentManager.openFile(input.data);\n return { success: true, kind: 'object', data: { documentId: input.data.id } };\n }\n\n const taskId = readContextId(input, 'taskId');\n const folderId = readContextId(input, 'folderId');\n if (folderId) {\n const result = await this.openFolderInViewer(folderId, taskId);\n if (result.success && !(result.data as { empty?: boolean } | undefined)?.empty) {\n await this.stampDistributionViewedAt(taskId);\n }\n return result;\n }\n\n const documentId = readContextId(input, 'documentId');\n if (!documentId) {\n return {\n success: false,\n message: { text: '@document-management:distribute.errors.document-required' },\n };\n }\n\n const node = await this.loadDocumentNode(documentId);\n if (!node) {\n return {\n success: false,\n message: { text: '@document-management:distribute.errors.document-not-found' },\n };\n }\n\n await this.documentManager.showFileViewerPopup(node, { folderFiles: [node] });\n await this.stampDistributionViewedAt(taskId);\n return { success: true, kind: 'object', data: { documentId: node.id } };\n }\n\n //#endregion\n\n //#region ----- Distribution viewed-at -----\n\n private async stampDistributionViewedAt(taskId?: string): Promise<void> {\n if (!taskId) {\n return;\n }\n try {\n const task = await this.taskData.byKey(taskId);\n if (!task?.id) {\n return;\n }\n const workflowName =\n task.taskType?.workflowConfig?.workflowName?.trim() ||\n (task.taskTypeId ? (await this.taskTypeData.byKey(task.taskTypeId))?.workflowConfig?.workflowName?.trim() : undefined);\n if (workflowName !== DOCUMENT_DISTRIBUTION_WORKFLOW_NAME) {\n return;\n }\n if (hasDocumentDistributionMetadataValue(task.metaDataForm?.[AXM_DOCUMENT_DISTRIBUTION_VIEWED_AT_FIELD_NAME])) {\n return;\n }\n await this.taskData.update(taskId, {\n metaDataForm: stampDocumentDistributionFormValues(task.metaDataForm, {\n [AXM_DOCUMENT_DISTRIBUTION_VIEWED_AT_FIELD_NAME]: new Date().toISOString(),\n }),\n } as never);\n } catch (error) {\n console.warn('[AXMOpenDocumentCommand] stamp distribution Viewed At failed', error);\n }\n }\n\n //#endregion\n\n //#region ----- Folder review -----\n\n private async loadDocumentNode(documentId: string): Promise<AXMDocumentExplorerNode | null> {\n const document = await this.documentData.byKey(documentId);\n if (!document?.id) {\n return null;\n }\n return toExplorerNode(document);\n }\n\n private async openFolderInViewer(folderId: string, taskId?: string): AXPCommandExecuteResultPromise {\n let documents: AXMDocumentDto[];\n try {\n documents = await this.documentApi.listFolderReviewDocuments(folderId, taskId);\n } catch (error) {\n const info = extractRequestErrorInfo(error);\n const messageKey =\n info?.status === 403\n ? `${I18N}.errors.folder-view-forbidden`\n : `${I18N}.errors.failed`;\n await this.toastError(messageKey);\n return { success: false, message: { text: messageKey } };\n }\n\n const folderFiles = documents.filter((document) => document.id).map((document) => toExplorerNode(document));\n if (folderFiles.length === 0) {\n await this.toastWarning(`${I18N}.folder-view.empty`);\n return { success: true, kind: 'object', data: { folderId, empty: true } };\n }\n\n await this.documentManager.showFileViewerPopup(folderFiles[0], { folderFiles });\n return {\n success: true,\n kind: 'object',\n data: { folderId, documentIds: folderFiles.map((file) => file.id) },\n };\n }\n\n //#endregion\n\n //#region ----- Toasts -----\n\n private async toastError(contentKey: string): Promise<void> {\n const [title, content] = await Promise.all([\n this.translationService.translateAsync(`${I18N}.errors.title`),\n this.translationService.translateAsync(contentKey),\n ]);\n this.toastService.show({ color: 'danger', title, content, timeOut: 4000 });\n }\n\n private async toastWarning(contentKey: string): Promise<void> {\n const [title, content] = await Promise.all([\n this.translationService.translateAsync(`${I18N}.folder-view.title`),\n this.translationService.translateAsync(contentKey),\n ]);\n this.toastService.show({ color: 'warning', title, content, timeOut: 4000 });\n }\n\n //#endregion\n}\n\n//#endregion\n"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"acorex-platform-module-document-management-client-open-document.command-B87Xj3s6.mjs","sources":["../../../../libs/modules/document-management/client/src/lib/features/commands/open-document.command.ts"],"sourcesContent":["//#region ----- Imports -----\n\nimport { AXToastService } from '@acorex/components/toast';\nimport { AXTranslationService } from '@acorex/core/translation';\nimport { extractRequestErrorInfo } from '@acorex-platform/framework-client/common';\nimport { AXPEntityService } from '@acorex-platform/framework-client/layout/entity';\nimport { AXPCommand, type AXPCommandExecuteResultPromise } from '@acorex-platform/framework-shared/runtime';\nimport type { AXPFileListItem } from '@acorex-platform/framework-shared/core';\nimport {\n AXMDocumentDto,\n AXM_DOCUMENT_DISTRIBUTION_VIEWED_AT_FIELD_NAME,\n DOCUMENT_DISTRIBUTION_WORKFLOW_NAME,\n hasDocumentDistributionMetadataValue,\n RootConfig,\n stampDocumentDistributionFormValues,\n} from '@acorex-platform/module-document-management-client/contracts';\nimport { inject, Injectable } from '@angular/core';\n\nimport { AXMDocumentManagerService } from '../shared/document-manager.service';\nimport type { AXMDocumentExplorerNode } from '../shared/document-manager.types';\nimport { AXPDocumentManagementService } from '../shared/document-management.service';\n\n//#endregion\n\n//#region ----- Types -----\n\ninterface DistributionTaskRow {\n id: string;\n taskTypeId?: string;\n taskType?: { workflowConfig?: { workflowName?: string } };\n metaDataForm?: Record<string, unknown>;\n}\n\ninterface DistributionTaskTypeRow {\n id: string;\n workflowConfig?: { workflowName?: string };\n}\n\nexport interface AXMOpenDocumentCommandInput {\n documentId?: string;\n folderId?: string;\n taskId?: string;\n data?: AXMDocumentExplorerNode | {\n documentId?: string;\n folderId?: string;\n taskId?: string;\n id?: string;\n payload?: { context?: { documentId?: string; folderId?: string; taskId?: string } };\n context?: { documentId?: string; folderId?: string; taskId?: string };\n };\n options?: {\n documentId?: string;\n folderId?: string;\n taskId?: string;\n };\n}\n\n//#endregion\n\n//#region ----- Constants -----\n\nconst I18N = '@document-management:review';\n\n//#endregion\n\n//#region ----- Helpers -----\n\nfunction isExplorerFileNode(value: unknown): value is AXMDocumentExplorerNode {\n return (\n !!value &&\n typeof value === 'object' &&\n (value as AXMDocumentExplorerNode).type === 'file' &&\n typeof (value as AXMDocumentExplorerNode).id === 'string'\n );\n}\n\nfunction readDocumentId(value: unknown): string | undefined {\n if (typeof value !== 'string') {\n return undefined;\n }\n const trimmed = value.trim();\n if (!trimmed || trimmed.includes('{{') || trimmed.includes('}}')) {\n return undefined;\n }\n return trimmed;\n}\n\nfunction readContextId(\n input: AXMOpenDocumentCommandInput,\n key: 'documentId' | 'folderId' | 'taskId',\n): string | undefined {\n const data = input.data;\n const fromPayloadContext =\n data && typeof data === 'object' && 'payload' in data\n ? (data as { payload?: { context?: Record<string, unknown> } }).payload?.context?.[key]\n : undefined;\n const fromDataContext =\n data && typeof data === 'object' && 'context' in data\n ? (data as { context?: Record<string, unknown> }).context?.[key]\n : undefined;\n const fromData =\n data && typeof data === 'object' && key in data\n ? (data as Record<string, unknown>)[key]\n : undefined;\n\n return (\n readDocumentId(input[key]) ??\n readDocumentId(input.options?.[key]) ??\n readDocumentId(fromData) ??\n readDocumentId(fromPayloadContext) ??\n readDocumentId(fromDataContext)\n );\n}\n\nfunction toExplorerNode(document: AXMDocumentDto): AXMDocumentExplorerNode {\n const rawFileInfo = document.fileInfo;\n const fileListItem =\n rawFileInfo != null && typeof rawFileInfo === 'object' ? (rawFileInfo as AXPFileListItem) : undefined;\n const storedFileRef = typeof rawFileInfo === 'string' ? rawFileInfo : undefined;\n\n return {\n id: document.id!,\n name: document.name,\n title: document.title,\n type: 'file',\n parentId: document.parentId ?? null,\n size: fileListItem?.size ?? 0,\n fileId: fileListItem ?? storedFileRef,\n storageType: 'physical',\n metaDataForm: document.metaDataForm ?? undefined,\n documentTypes: document.documentType ? [document.documentType] : [],\n expirationDate: document.expirationDate ? new Date(document.expirationDate) : undefined,\n };\n}\n\n//#endregion\n\n//#region ----- Open file command -----\n\n/**\n * Drive Open keeps the catalog/download pipeline when an explorer node is\n * passed. Document Review View (documentId/folderId) opens File Viewer, the\n * same popup as Drive \"Open File Viewer\".\n */\n@Injectable({ providedIn: 'root' })\nexport class AXMOpenDocumentCommand implements AXPCommand<AXMOpenDocumentCommandInput> {\n //#region ----- Services & Dependencies -----\n\n private readonly documentManager = inject(AXMDocumentManagerService);\n private readonly documentApi = inject(AXPDocumentManagementService);\n private readonly entityService = inject(AXPEntityService);\n private readonly toastService = inject(AXToastService);\n private readonly translationService = inject(AXTranslationService);\n private readonly documentData = this.entityService\n .withEntity(RootConfig.module.name, RootConfig.entities.document.name)\n .data<string, AXMDocumentDto>();\n private readonly taskData = this.entityService\n .withEntity('TaskManagement', 'Task')\n .data<string, DistributionTaskRow>();\n private readonly taskTypeData = this.entityService\n .withEntity('TaskManagement', 'TaskType')\n .data<string, DistributionTaskTypeRow>();\n\n //#endregion\n\n //#region ----- Execute -----\n\n async execute(input: AXMOpenDocumentCommandInput = {}): AXPCommandExecuteResultPromise {\n if (isExplorerFileNode(input.data)) {\n await this.documentManager.openFile(input.data);\n return { success: true, kind: 'object', data: { documentId: input.data.id } };\n }\n\n const taskId = readContextId(input, 'taskId');\n const folderId = readContextId(input, 'folderId');\n if (folderId) {\n const result = await this.openFolderInViewer(folderId, taskId);\n if (result.success && !(result.data as { empty?: boolean } | undefined)?.empty) {\n await this.stampDistributionViewedAt(taskId);\n }\n return result;\n }\n\n const documentId = readContextId(input, 'documentId');\n if (!documentId) {\n return {\n success: false,\n message: { text: '@document-management:distribute.errors.document-required' },\n };\n }\n\n const node = await this.loadDocumentNode(documentId);\n if (!node) {\n return {\n success: false,\n message: { text: '@document-management:distribute.errors.document-not-found' },\n };\n }\n\n await this.documentManager.showFileViewerPopup(node, { folderFiles: [node] });\n await this.stampDistributionViewedAt(taskId);\n return { success: true, kind: 'object', data: { documentId: node.id } };\n }\n\n //#endregion\n\n //#region ----- Distribution viewed-at -----\n\n private async stampDistributionViewedAt(taskId?: string): Promise<void> {\n if (!taskId) {\n return;\n }\n try {\n const task = await this.taskData.byKey(taskId);\n if (!task?.id) {\n return;\n }\n const workflowName =\n task.taskType?.workflowConfig?.workflowName?.trim() ||\n (task.taskTypeId ? (await this.taskTypeData.byKey(task.taskTypeId))?.workflowConfig?.workflowName?.trim() : undefined);\n if (workflowName !== DOCUMENT_DISTRIBUTION_WORKFLOW_NAME) {\n return;\n }\n if (hasDocumentDistributionMetadataValue(task.metaDataForm?.[AXM_DOCUMENT_DISTRIBUTION_VIEWED_AT_FIELD_NAME])) {\n return;\n }\n await this.taskData.update(taskId, {\n metaDataForm: stampDocumentDistributionFormValues(task.metaDataForm, {\n [AXM_DOCUMENT_DISTRIBUTION_VIEWED_AT_FIELD_NAME]: new Date().toISOString(),\n }),\n } as never);\n } catch (error) {\n console.warn('[AXMOpenDocumentCommand] stamp distribution Viewed At failed', error);\n }\n }\n\n //#endregion\n\n //#region ----- Folder review -----\n\n private async loadDocumentNode(documentId: string): Promise<AXMDocumentExplorerNode | null> {\n const document = await this.documentData.byKey(documentId);\n if (!document?.id) {\n return null;\n }\n return toExplorerNode(document);\n }\n\n private async openFolderInViewer(folderId: string, taskId?: string): AXPCommandExecuteResultPromise {\n let documents: AXMDocumentDto[];\n try {\n documents = await this.documentApi.listFolderReviewDocuments(folderId, taskId);\n } catch (error) {\n const info = extractRequestErrorInfo(error);\n const messageKey =\n info?.status === 403\n ? `${I18N}.errors.folder-view-forbidden`\n : `${I18N}.errors.failed`;\n await this.toastError(messageKey);\n return { success: false, message: { text: messageKey } };\n }\n\n const folderFiles = documents.filter((document) => document.id).map((document) => toExplorerNode(document));\n if (folderFiles.length === 0) {\n await this.toastWarning(`${I18N}.folder-view.empty`);\n return { success: true, kind: 'object', data: { folderId, empty: true } };\n }\n\n await this.documentManager.showFileViewerPopup(folderFiles[0], { folderFiles });\n return {\n success: true,\n kind: 'object',\n data: { folderId, documentIds: folderFiles.map((file) => file.id) },\n };\n }\n\n //#endregion\n\n //#region ----- Toasts -----\n\n private async toastError(contentKey: string): Promise<void> {\n const [title, content] = await Promise.all([\n this.translationService.translateAsync(`${I18N}.errors.title`),\n this.translationService.translateAsync(contentKey),\n ]);\n this.toastService.show({ color: 'danger', title, content, timeOut: 4000 });\n }\n\n private async toastWarning(contentKey: string): Promise<void> {\n const [title, content] = await Promise.all([\n this.translationService.translateAsync(`${I18N}.folder-view.title`),\n this.translationService.translateAsync(contentKey),\n ]);\n this.toastService.show({ color: 'warning', title, content, timeOut: 4000 });\n }\n\n //#endregion\n}\n\n//#endregion\n"],"names":[],"mappings":"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"}
@@ -9,7 +9,7 @@ import { buildAXPRecordWorkflowInfo } from '@acorex-platform/framework-shared/en
9
9
  import { RootConfig, AXPContentDocumentsPermissionKeys } from '@acorex-platform/module-document-management-client/contracts';
10
10
  import * as i0 from '@angular/core';
11
11
  import { inject, Injectable } from '@angular/core';
12
- import { j as AXMDocumentManagerService, o as sourcesAllowDocumentReview } from './acorex-platform-module-document-management-client-acorex-platform-module-document-management-client-i1lGkMQC.mjs';
12
+ import { j as AXMDocumentManagerService, o as sourcesAllowDocumentReview } from './acorex-platform-module-document-management-client-acorex-platform-module-document-management-client-C_TdVup5.mjs';
13
13
  import { a as asTrimmedId, b as asDisplayName, c as asUserIds, r as resolveCreatedEntityId } from './acorex-platform-module-document-management-client-distribute-document.command.util-HCkpx2Hk.mjs';
14
14
 
15
15
  //#region ----- Imports -----
@@ -453,4 +453,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "22.0.8", ngImpor
453
453
  }] });
454
454
 
455
455
  export { AXMRequestDocumentReviewCommand };
456
- //# sourceMappingURL=acorex-platform-module-document-management-client-request-document-review.command-C-x7A2x2.mjs.map
456
+ //# sourceMappingURL=acorex-platform-module-document-management-client-request-document-review.command-MLT9W3J0.mjs.map
@@ -1 +1 @@
1
- {"version":3,"file":"acorex-platform-module-document-management-client-request-document-review.command-C-x7A2x2.mjs","sources":["../../../../libs/modules/document-management/client/src/lib/features/commands/request-document-review.command.ts"],"sourcesContent":["//#region ----- Imports -----\n\nimport { AXLoadingDialogService } from '@acorex/components/loading-dialog';\nimport { AXToastService } from '@acorex/components/toast';\nimport { AXTranslationService } from '@acorex/core/translation';\nimport { AXPSessionService } from '@acorex-platform/framework-client/auth';\nimport {\n AXPLayoutBuilderService,\n resolveLayoutBuilderDialogResult,\n} from '@acorex-platform/framework-client/layout/builder';\nimport { AXPEntityService } from '@acorex-platform/framework-client/layout/entity';\nimport { AXPWorkflowManager } from '@acorex-platform/framework-client/workflow';\nimport type { AXPEntityReference } from '@acorex-platform/framework-shared/core';\nimport { buildAXPRecordWorkflowInfo } from '@acorex-platform/framework-shared/entity';\nimport { AXPCommand, type AXPCommandExecuteResultPromise } from '@acorex-platform/framework-shared/runtime';\nimport {\n AXPContentDocumentsPermissionKeys,\n RootConfig,\n type AXMDocumentDto,\n type AXMDocumentManagementFolderEntityModel,\n} from '@acorex-platform/module-document-management-client/contracts';\nimport { inject, Injectable } from '@angular/core';\n\nimport { AXMDocumentManagerService } from '../shared/document-manager.service';\nimport type { AXMDocumentExplorerNode } from '../shared/document-manager.types';\nimport { sourcesAllowDocumentReview } from '../shared/document-review.util';\nimport {\n asDisplayName,\n asTrimmedId,\n asUserIds,\n resolveCreatedEntityId,\n} from './distribute-document.command.util';\n\n//#endregion\n\n//#region ----- Types -----\n\nexport interface AXMRequestDocumentReviewCommandInput {\n documentId?: string;\n folderId?: string;\n data?: AXMDocumentExplorerNode | { documentId?: string; folderId?: string; id?: string; type?: string };\n options?: { documentId?: string; folderId?: string };\n}\n\ninterface ReviewDialogResult {\n title: string;\n description?: string;\n dueDate: Date | string;\n reviewerId: string;\n}\n\ninterface TaskTypeRow {\n id: string;\n title?: string;\n workflowConfig?: {\n workflowDefinitionId?: string;\n workflowName?: string;\n } | null;\n}\n\ninterface TaskStatusRow {\n id: string;\n name?: string;\n title?: string;\n color?: string;\n icon?: string;\n isDefault?: boolean;\n isFinal?: boolean;\n taskTypeId?: string;\n}\n\ninterface ReviewSetup {\n taskType: TaskTypeRow;\n openStatus: TaskStatusRow;\n signOffStatus: TaskStatusRow | undefined;\n completedStatus: TaskStatusRow | undefined;\n workflowId: string;\n}\n\ninterface LoadingDialogRef {\n close: () => void;\n}\n\ninterface ReviewSubject {\n kind: 'file' | 'folder';\n id: string;\n title: string;\n}\n\n//#endregion\n\n//#region ----- Constants -----\n\nconst TASK_MODULE = 'TaskManagement';\nconst TASK_ENTITY = 'Task';\nconst TASK_ENTITY_NAME = `${TASK_MODULE}.${TASK_ENTITY}`;\nconst TASK_TYPE_ENTITY = 'TaskType';\nconst TASK_STATUS_ENTITY = 'TaskStatus';\nconst TASK_ASSIGNMENT_ENTITY = 'TaskAssignment';\nconst DOCUMENT_REVIEW_WORKFLOW_NAME = 'document-review';\nconst MOCK_DOCUMENT_REVIEW_TASK_TYPE_ID = 'pm-mock-task-type-document-review';\nconst DOCUMENT_ENTITY_NAME = `${RootConfig.module.name}.${RootConfig.entities.document.name}`;\nconst FOLDER_ENTITY_NAME = `${RootConfig.module.name}.${RootConfig.entities.folder.name}`;\nconst I18N = '@document-management:review';\n\n//#endregion\n\n//#region ----- Helpers -----\n\nfunction asItems<T>(value: unknown): T[] {\n if (Array.isArray(value)) {\n return value as T[];\n }\n if (value && typeof value === 'object' && Array.isArray((value as { items?: unknown }).items)) {\n return (value as { items: T[] }).items;\n }\n return [];\n}\n\nfunction statusRef(\n row: TaskStatusRow | undefined,\n): { id: string; title?: string; color?: string; icon?: string } | undefined {\n const id = asTrimmedId(row?.id);\n if (!id) {\n return undefined;\n }\n return { id, title: row?.title, color: row?.color, icon: row?.icon };\n}\n\nfunction resolveSubject(input: AXMRequestDocumentReviewCommandInput = {}): ReviewSubject | null {\n const data = input.data;\n const nodeType =\n data && typeof data === 'object' && 'type' in data ? (data as { type?: unknown }).type : undefined;\n const fromDataId =\n data && typeof data === 'object' ? asTrimmedId((data as { id?: unknown }).id) : undefined;\n const documentId =\n asTrimmedId(input.options?.documentId) ??\n asTrimmedId(input.documentId) ??\n (data && typeof data === 'object' ? asTrimmedId((data as { documentId?: unknown }).documentId) : undefined);\n const folderId =\n asTrimmedId(input.options?.folderId) ??\n asTrimmedId(input.folderId) ??\n (data && typeof data === 'object' ? asTrimmedId((data as { folderId?: unknown }).folderId) : undefined);\n\n if (nodeType === 'folder' && fromDataId) {\n return { kind: 'folder', id: fromDataId, title: asDisplayName((data as { name?: unknown }).name) ?? fromDataId };\n }\n if (nodeType === 'file' && fromDataId) {\n return { kind: 'file', id: fromDataId, title: asDisplayName((data as { name?: unknown }).name) ?? fromDataId };\n }\n if (folderId) {\n return { kind: 'folder', id: folderId, title: folderId };\n }\n if (documentId) {\n return { kind: 'file', id: documentId, title: documentId };\n }\n return null;\n}\n\n//#endregion\n\n//#region ----- Request document review command -----\n\n@Injectable({ providedIn: 'root' })\nexport class AXMRequestDocumentReviewCommand implements AXPCommand<AXMRequestDocumentReviewCommandInput> {\n //#region ----- Services & Dependencies -----\n\n private readonly layoutBuilder = inject(AXPLayoutBuilderService);\n private readonly entityService = inject(AXPEntityService);\n private readonly sessionService = inject(AXPSessionService);\n private readonly toastService = inject(AXToastService);\n private readonly translationService = inject(AXTranslationService);\n private readonly workflowManager = inject(AXPWorkflowManager);\n private readonly driveService = inject(AXMDocumentManagerService);\n private readonly loadingDialog = inject(AXLoadingDialogService);\n\n private readonly documentData = this.entityService\n .withEntity(RootConfig.module.name, RootConfig.entities.document.name)\n .data<string, AXMDocumentDto>();\n private readonly folderData = this.entityService\n .withEntity(RootConfig.module.name, RootConfig.entities.folder.name)\n .data<string, AXMDocumentManagementFolderEntityModel>();\n private readonly taskTypeData = this.entityService.withEntity(TASK_MODULE, TASK_TYPE_ENTITY).data<string, TaskTypeRow>();\n private readonly taskStatusData = this.entityService\n .withEntity(TASK_MODULE, TASK_STATUS_ENTITY)\n .data<string, TaskStatusRow>();\n private readonly taskData = this.entityService.withEntity(TASK_MODULE, TASK_ENTITY).data<string>();\n private readonly assignmentData = this.entityService.withEntity(TASK_MODULE, TASK_ASSIGNMENT_ENTITY).data<string>();\n private readonly documentTypeData = this.entityService\n .withEntity(RootConfig.module.name, RootConfig.entities.documentType.name)\n .data<string, { id: string; requiresReview?: unknown; metaDataList?: unknown }>();\n\n //#endregion\n\n //#region ----- Command Implementation -----\n\n async execute(input: AXMRequestDocumentReviewCommandInput = {}): AXPCommandExecuteResultPromise {\n if (!this.sessionService.authorize(AXPContentDocumentsPermissionKeys.ManageDocumentReview)) {\n await this.toastError('errors.forbidden');\n return { success: false, message: { text: `${I18N}.errors.forbidden` } };\n }\n\n const subject = resolveSubject(input);\n if (!subject) {\n await this.toastError('errors.subject-required');\n return { success: false, message: { text: `${I18N}.errors.subject-required` } };\n }\n\n const loaded = await this.loadSubject(subject);\n if (!loaded) {\n await this.toastError('errors.subject-required');\n return { success: false, message: { text: `${I18N}.errors.subject-required` } };\n }\n\n const allowsReview = await sourcesAllowDocumentReview(\n [loaded.record, input.data],\n {\n byNames: (names) => this.driveService.getDocumentTypesByNames(names),\n byKey: (id) => this.documentTypeData.byKey(id),\n },\n loaded.kind === 'folder' ? 'folder' : 'document',\n );\n if (!allowsReview) {\n await this.toastError('errors.not-enabled');\n return { success: false, message: { text: `${I18N}.errors.not-enabled` } };\n }\n\n const setupPromise = this.loadReviewSetup();\n const form = await this.openDialog(loaded.title);\n if (!form) {\n return { success: true, kind: 'object', data: { cancelled: true } };\n }\n\n const loading = await this.showLoading();\n try {\n const setup = await setupPromise;\n if (!setup?.taskType?.id) {\n await this.toastError('errors.task-type-missing');\n return { success: false, message: { text: `${I18N}.errors.task-type-missing` } };\n }\n if (!setup.openStatus?.id) {\n await this.toastError('errors.status-missing');\n return { success: false, message: { text: `${I18N}.errors.status-missing` } };\n }\n\n const created = await this.createAndStart({\n form,\n setup,\n subject: loaded,\n });\n\n if (created.pinFailed) {\n await this.toastWarning('warnings.pin-failed');\n }\n\n const [title, content] = await Promise.all([\n this.translationService.translateAsync(`${I18N}.success.title`),\n this.translationService.translateAsync(`${I18N}.success.description`),\n ]);\n this.toastService.show({ color: 'success', title, content, timeOut: 3000 });\n return { success: true, kind: 'object', data: { taskId: created.taskId, instanceId: created.instanceId } };\n } catch (error) {\n const message = error instanceof Error ? error.message : undefined;\n await this.toastError('errors.failed', message);\n return { success: false, message: { text: message ?? `${I18N}.errors.failed` } };\n } finally {\n loading.close();\n }\n }\n\n //#endregion\n\n //#region ----- Dialog -----\n\n private async openDialog(defaultTitle: string): Promise<ReviewDialogResult | null> {\n const dueDate = new Date();\n dueDate.setHours(0, 0, 0, 0);\n const result = await this.layoutBuilder\n .create()\n .dialog<ReviewDialogResult | null>((dialog) => {\n dialog\n .setTitle(`${I18N}.dialog.title`)\n .setSize('md')\n .setCloseButton(true)\n .setContext({\n title: defaultTitle,\n description: '',\n dueDate,\n reviewerId: null,\n })\n .content((flex) => {\n flex\n .setDirection('column')\n .setGap('12px')\n .formField(`${I18N}.fields.title`, (field) => {\n field.path('title');\n field.textBox({ validations: [{ rule: 'required' }] });\n })\n .formField(`${I18N}.fields.description`, (field) => {\n field.path('description');\n field.textBox({});\n })\n .formField(`${I18N}.fields.due-date`, (field) => {\n field.path('dueDate');\n field.dateTimeBox({ type: 'date', validations: [{ rule: 'required' }] });\n })\n .formField(`${I18N}.fields.reviewer`, (field) => {\n field.path('reviewerId');\n field.lookupBox({\n entity: 'SecurityManagement.User',\n multiple: false,\n look: 'lookup',\n validations: [{ rule: 'required' }],\n });\n });\n })\n .setActions((actions) => {\n actions.cancel('@general:actions.cancel.title');\n actions.submit(`${I18N}.dialog.submit`);\n })\n .onAction(async (dialogRef) => {\n if (dialogRef.action() === 'cancel') {\n return null;\n }\n const ctx = dialogRef.context() as {\n title?: string;\n description?: string;\n dueDate?: Date | string | null;\n reviewerId?: unknown;\n };\n const title = (ctx.title ?? '').trim();\n const reviewerId = asUserIds(ctx.reviewerId)[0];\n if (!title) {\n throw new Error(`${I18N}.errors.title-required`);\n }\n if (!ctx.dueDate) {\n throw new Error(`${I18N}.errors.due-date-required`);\n }\n if (!reviewerId) {\n throw new Error(`${I18N}.errors.reviewer-required`);\n }\n dialogRef.setLoading(true);\n return {\n title,\n description: (ctx.description ?? '').trim() || undefined,\n dueDate: ctx.dueDate,\n reviewerId,\n };\n });\n })\n .show();\n\n return resolveLayoutBuilderDialogResult<ReviewDialogResult>(result);\n }\n\n //#endregion\n\n //#region ----- Create and start -----\n\n private async createAndStart(params: {\n form: ReviewDialogResult;\n setup: ReviewSetup;\n subject: ReviewSubject;\n }): Promise<{ taskId: string; instanceId?: string; pinFailed: boolean }> {\n const assignedBy = this.sessionService.user?.id ?? params.form.reviewerId;\n const subjectRef: AXPEntityReference = {\n type: params.subject.kind === 'folder' ? FOLDER_ENTITY_NAME : DOCUMENT_ENTITY_NAME,\n id: params.subject.id,\n title: params.subject.title,\n };\n\n const createdTask = await this.taskData.create({\n title: params.form.title,\n description: params.form.description,\n taskTypeId: params.setup.taskType.id,\n taskType: { id: params.setup.taskType.id, title: params.setup.taskType.title },\n statusId: params.setup.openStatus.id,\n status: statusRef(params.setup.openStatus),\n priority: 'medium',\n progress: 0,\n order: 0,\n startDate: params.form.dueDate,\n dueDate: params.form.dueDate,\n assigneeId: params.form.reviewerId,\n assignee: { id: params.form.reviewerId },\n subjectRef,\n isArchived: false,\n } as never);\n const taskId = resolveCreatedEntityId(createdTask);\n\n let pinFailed = false;\n const assignmentPromise = this.assignmentData.create({\n taskId,\n assignmentRef: {\n sourceKey: 'employee-user',\n refId: params.form.reviewerId,\n displayName: params.form.reviewerId,\n },\n role: 'reviewer',\n assignedBy,\n assignedAt: new Date(),\n isActive: true,\n } as never);\n\n const pinPromise = this.pinSubjectOnTask(taskId, params.subject).catch((error) => {\n console.warn('[AXMRequestDocumentReviewCommand] pin shortcut failed', error);\n pinFailed = true;\n });\n\n const [, , instanceId] = await Promise.all([\n assignmentPromise,\n pinPromise,\n this.startWorkflow(taskId, params),\n ]);\n return { taskId, instanceId, pinFailed };\n }\n\n private async startWorkflow(\n taskId: string,\n params: { form: ReviewDialogResult; setup: ReviewSetup; subject: ReviewSubject },\n ): Promise<string | undefined> {\n const startResult = await this.workflowManager.start(params.setup.workflowId, {\n taskId,\n taskTitle: params.form.title,\n documentId: params.subject.kind === 'file' ? params.subject.id : '',\n folderId: params.subject.kind === 'folder' ? params.subject.id : '',\n signerUserId: params.form.reviewerId,\n initiatorUserId: this.sessionService.user?.id,\n openStatusId: params.setup.openStatus.id,\n openStatus: statusRef(params.setup.openStatus),\n signOffStatusId: params.setup.signOffStatus?.id ?? params.setup.openStatus.id,\n signOffStatus: statusRef(params.setup.signOffStatus) ?? statusRef(params.setup.openStatus),\n completedStatusId: params.setup.completedStatus?.id ?? params.setup.openStatus.id,\n completedStatus: statusRef(params.setup.completedStatus) ?? statusRef(params.setup.openStatus),\n correlationId: taskId,\n refId: taskId,\n refType: TASK_ENTITY_NAME,\n dueDate: params.form.dueDate,\n });\n\n if (!startResult.success) {\n throw new Error(startResult.error ?? 'workflow-failed');\n }\n\n if (startResult.instanceId) {\n try {\n await this.taskData.update(taskId, {\n workflowInfo: buildAXPRecordWorkflowInfo({\n instanceId: startResult.instanceId,\n definitionId: params.setup.workflowId,\n correlationId: taskId,\n }),\n } as never);\n } catch (error) {\n console.warn('[AXMRequestDocumentReviewCommand] stamp workflowInfo failed', error);\n }\n }\n\n return startResult.instanceId;\n }\n\n //#endregion\n\n //#region ----- Pin subject -----\n\n private async pinSubjectOnTask(taskId: string, subject: ReviewSubject): Promise<void> {\n const folder = await this.driveService.getRootByEntityRef(`${TASK_MODULE}.${TASK_ENTITY}`, taskId);\n const folderId = folder?.result?.id;\n if (!folderId) {\n throw new Error('Task document folder was not provisioned');\n }\n await this.driveService.createShortcut(subject.id, subject.kind === 'folder' ? 'folder' : 'file', folderId, {\n nameOverride: subject.title,\n });\n }\n\n //#endregion\n\n //#region ----- Data Loading -----\n\n private async loadSubject(\n subject: ReviewSubject,\n ): Promise<{ kind: 'file' | 'folder'; id: string; title: string; record: unknown } | null> {\n if (subject.kind === 'folder') {\n const folder = await this.folderData.byKey(subject.id);\n if (!folder?.id) {\n return null;\n }\n return {\n kind: 'folder',\n id: folder.id,\n title: asDisplayName(folder.title) ?? subject.title,\n record: folder,\n };\n }\n const document = await this.documentData.byKey(subject.id);\n if (!document?.id) {\n return null;\n }\n return {\n kind: 'file',\n id: document.id,\n title: asDisplayName(document.name) ?? asDisplayName(document.title) ?? subject.title,\n record: document,\n };\n }\n\n private async loadReviewSetup(): Promise<ReviewSetup | null> {\n const taskType = await this.loadReviewTaskType();\n if (!taskType?.id) {\n return null;\n }\n const statuses = await this.loadStatuses(taskType.id);\n const openStatus = statuses.find((row) => row.isDefault) ?? statuses[0];\n const signOffStatus = statuses.find((row) => row.name === 'sign-off') ?? openStatus;\n const completedStatus = statuses.find((row) => row.isFinal) ?? signOffStatus;\n return {\n taskType,\n openStatus,\n signOffStatus,\n completedStatus,\n workflowId: taskType.workflowConfig?.workflowName?.trim() || DOCUMENT_REVIEW_WORKFLOW_NAME,\n };\n }\n\n private async loadReviewTaskType(): Promise<TaskTypeRow | null> {\n try {\n const byId = await this.taskTypeData.byKey(MOCK_DOCUMENT_REVIEW_TASK_TYPE_ID);\n if (byId?.id) {\n return byId;\n }\n } catch {\n // hashed tenant copies use different ids\n }\n\n const result = await this.taskTypeData.query({ skip: 0, take: 200 });\n return (\n asItems<TaskTypeRow>(result).find(\n (row) => row.workflowConfig?.workflowName?.trim() === DOCUMENT_REVIEW_WORKFLOW_NAME,\n ) ?? null\n );\n }\n\n private async loadStatuses(taskTypeId: string): Promise<TaskStatusRow[]> {\n const result = await this.taskStatusData.query({\n skip: 0,\n take: 50,\n filter: { field: 'taskTypeId', operator: { type: 'equal' }, value: taskTypeId },\n });\n const rows = asItems<TaskStatusRow>(result);\n return rows.some((row) => row.taskTypeId === taskTypeId)\n ? rows.filter((row) => row.taskTypeId === taskTypeId)\n : rows;\n }\n\n private async showLoading(): Promise<LoadingDialogRef> {\n const [title, text] = await Promise.all([\n this.translationService.translateAsync(`${I18N}.loading.title`),\n this.translationService.translateAsync(`${I18N}.loading.description`),\n ]);\n return this.loadingDialog.show({\n title,\n mode: 'indeterminate',\n progressColor: 'primary',\n text,\n }) as LoadingDialogRef;\n }\n\n private async toastError(key: string, detail?: string): Promise<void> {\n const [title, fallback] = await Promise.all([\n this.translationService.translateAsync(`${I18N}.errors.title`),\n this.translationService.translateAsync(`${I18N}.${key}`),\n ]);\n this.toastService.show({\n color: 'danger',\n title,\n content: detail?.trim() || fallback,\n closeButton: true,\n timeOut: 5000,\n });\n }\n\n private async toastWarning(key: string): Promise<void> {\n const [title, content] = await Promise.all([\n this.translationService.translateAsync(`${I18N}.warnings.title`),\n this.translationService.translateAsync(`${I18N}.${key}`),\n ]);\n this.toastService.show({\n color: 'warning',\n title,\n content,\n closeButton: true,\n timeOut: 5000,\n });\n }\n\n //#endregion\n}\n\n//#endregion\n"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"acorex-platform-module-document-management-client-request-document-review.command-MLT9W3J0.mjs","sources":["../../../../libs/modules/document-management/client/src/lib/features/commands/request-document-review.command.ts"],"sourcesContent":["//#region ----- Imports -----\n\nimport { AXLoadingDialogService } from '@acorex/components/loading-dialog';\nimport { AXToastService } from '@acorex/components/toast';\nimport { AXTranslationService } from '@acorex/core/translation';\nimport { AXPSessionService } from '@acorex-platform/framework-client/auth';\nimport {\n AXPLayoutBuilderService,\n resolveLayoutBuilderDialogResult,\n} from '@acorex-platform/framework-client/layout/builder';\nimport { AXPEntityService } from '@acorex-platform/framework-client/layout/entity';\nimport { AXPWorkflowManager } from '@acorex-platform/framework-client/workflow';\nimport type { AXPEntityReference } from '@acorex-platform/framework-shared/core';\nimport { buildAXPRecordWorkflowInfo } from '@acorex-platform/framework-shared/entity';\nimport { AXPCommand, type AXPCommandExecuteResultPromise } from '@acorex-platform/framework-shared/runtime';\nimport {\n AXPContentDocumentsPermissionKeys,\n RootConfig,\n type AXMDocumentDto,\n type AXMDocumentManagementFolderEntityModel,\n} from '@acorex-platform/module-document-management-client/contracts';\nimport { inject, Injectable } from '@angular/core';\n\nimport { AXMDocumentManagerService } from '../shared/document-manager.service';\nimport type { AXMDocumentExplorerNode } from '../shared/document-manager.types';\nimport { sourcesAllowDocumentReview } from '../shared/document-review.util';\nimport {\n asDisplayName,\n asTrimmedId,\n asUserIds,\n resolveCreatedEntityId,\n} from './distribute-document.command.util';\n\n//#endregion\n\n//#region ----- Types -----\n\nexport interface AXMRequestDocumentReviewCommandInput {\n documentId?: string;\n folderId?: string;\n data?: AXMDocumentExplorerNode | { documentId?: string; folderId?: string; id?: string; type?: string };\n options?: { documentId?: string; folderId?: string };\n}\n\ninterface ReviewDialogResult {\n title: string;\n description?: string;\n dueDate: Date | string;\n reviewerId: string;\n}\n\ninterface TaskTypeRow {\n id: string;\n title?: string;\n workflowConfig?: {\n workflowDefinitionId?: string;\n workflowName?: string;\n } | null;\n}\n\ninterface TaskStatusRow {\n id: string;\n name?: string;\n title?: string;\n color?: string;\n icon?: string;\n isDefault?: boolean;\n isFinal?: boolean;\n taskTypeId?: string;\n}\n\ninterface ReviewSetup {\n taskType: TaskTypeRow;\n openStatus: TaskStatusRow;\n signOffStatus: TaskStatusRow | undefined;\n completedStatus: TaskStatusRow | undefined;\n workflowId: string;\n}\n\ninterface LoadingDialogRef {\n close: () => void;\n}\n\ninterface ReviewSubject {\n kind: 'file' | 'folder';\n id: string;\n title: string;\n}\n\n//#endregion\n\n//#region ----- Constants -----\n\nconst TASK_MODULE = 'TaskManagement';\nconst TASK_ENTITY = 'Task';\nconst TASK_ENTITY_NAME = `${TASK_MODULE}.${TASK_ENTITY}`;\nconst TASK_TYPE_ENTITY = 'TaskType';\nconst TASK_STATUS_ENTITY = 'TaskStatus';\nconst TASK_ASSIGNMENT_ENTITY = 'TaskAssignment';\nconst DOCUMENT_REVIEW_WORKFLOW_NAME = 'document-review';\nconst MOCK_DOCUMENT_REVIEW_TASK_TYPE_ID = 'pm-mock-task-type-document-review';\nconst DOCUMENT_ENTITY_NAME = `${RootConfig.module.name}.${RootConfig.entities.document.name}`;\nconst FOLDER_ENTITY_NAME = `${RootConfig.module.name}.${RootConfig.entities.folder.name}`;\nconst I18N = '@document-management:review';\n\n//#endregion\n\n//#region ----- Helpers -----\n\nfunction asItems<T>(value: unknown): T[] {\n if (Array.isArray(value)) {\n return value as T[];\n }\n if (value && typeof value === 'object' && Array.isArray((value as { items?: unknown }).items)) {\n return (value as { items: T[] }).items;\n }\n return [];\n}\n\nfunction statusRef(\n row: TaskStatusRow | undefined,\n): { id: string; title?: string; color?: string; icon?: string } | undefined {\n const id = asTrimmedId(row?.id);\n if (!id) {\n return undefined;\n }\n return { id, title: row?.title, color: row?.color, icon: row?.icon };\n}\n\nfunction resolveSubject(input: AXMRequestDocumentReviewCommandInput = {}): ReviewSubject | null {\n const data = input.data;\n const nodeType =\n data && typeof data === 'object' && 'type' in data ? (data as { type?: unknown }).type : undefined;\n const fromDataId =\n data && typeof data === 'object' ? asTrimmedId((data as { id?: unknown }).id) : undefined;\n const documentId =\n asTrimmedId(input.options?.documentId) ??\n asTrimmedId(input.documentId) ??\n (data && typeof data === 'object' ? asTrimmedId((data as { documentId?: unknown }).documentId) : undefined);\n const folderId =\n asTrimmedId(input.options?.folderId) ??\n asTrimmedId(input.folderId) ??\n (data && typeof data === 'object' ? asTrimmedId((data as { folderId?: unknown }).folderId) : undefined);\n\n if (nodeType === 'folder' && fromDataId) {\n return { kind: 'folder', id: fromDataId, title: asDisplayName((data as { name?: unknown }).name) ?? fromDataId };\n }\n if (nodeType === 'file' && fromDataId) {\n return { kind: 'file', id: fromDataId, title: asDisplayName((data as { name?: unknown }).name) ?? fromDataId };\n }\n if (folderId) {\n return { kind: 'folder', id: folderId, title: folderId };\n }\n if (documentId) {\n return { kind: 'file', id: documentId, title: documentId };\n }\n return null;\n}\n\n//#endregion\n\n//#region ----- Request document review command -----\n\n@Injectable({ providedIn: 'root' })\nexport class AXMRequestDocumentReviewCommand implements AXPCommand<AXMRequestDocumentReviewCommandInput> {\n //#region ----- Services & Dependencies -----\n\n private readonly layoutBuilder = inject(AXPLayoutBuilderService);\n private readonly entityService = inject(AXPEntityService);\n private readonly sessionService = inject(AXPSessionService);\n private readonly toastService = inject(AXToastService);\n private readonly translationService = inject(AXTranslationService);\n private readonly workflowManager = inject(AXPWorkflowManager);\n private readonly driveService = inject(AXMDocumentManagerService);\n private readonly loadingDialog = inject(AXLoadingDialogService);\n\n private readonly documentData = this.entityService\n .withEntity(RootConfig.module.name, RootConfig.entities.document.name)\n .data<string, AXMDocumentDto>();\n private readonly folderData = this.entityService\n .withEntity(RootConfig.module.name, RootConfig.entities.folder.name)\n .data<string, AXMDocumentManagementFolderEntityModel>();\n private readonly taskTypeData = this.entityService.withEntity(TASK_MODULE, TASK_TYPE_ENTITY).data<string, TaskTypeRow>();\n private readonly taskStatusData = this.entityService\n .withEntity(TASK_MODULE, TASK_STATUS_ENTITY)\n .data<string, TaskStatusRow>();\n private readonly taskData = this.entityService.withEntity(TASK_MODULE, TASK_ENTITY).data<string>();\n private readonly assignmentData = this.entityService.withEntity(TASK_MODULE, TASK_ASSIGNMENT_ENTITY).data<string>();\n private readonly documentTypeData = this.entityService\n .withEntity(RootConfig.module.name, RootConfig.entities.documentType.name)\n .data<string, { id: string; requiresReview?: unknown; metaDataList?: unknown }>();\n\n //#endregion\n\n //#region ----- Command Implementation -----\n\n async execute(input: AXMRequestDocumentReviewCommandInput = {}): AXPCommandExecuteResultPromise {\n if (!this.sessionService.authorize(AXPContentDocumentsPermissionKeys.ManageDocumentReview)) {\n await this.toastError('errors.forbidden');\n return { success: false, message: { text: `${I18N}.errors.forbidden` } };\n }\n\n const subject = resolveSubject(input);\n if (!subject) {\n await this.toastError('errors.subject-required');\n return { success: false, message: { text: `${I18N}.errors.subject-required` } };\n }\n\n const loaded = await this.loadSubject(subject);\n if (!loaded) {\n await this.toastError('errors.subject-required');\n return { success: false, message: { text: `${I18N}.errors.subject-required` } };\n }\n\n const allowsReview = await sourcesAllowDocumentReview(\n [loaded.record, input.data],\n {\n byNames: (names) => this.driveService.getDocumentTypesByNames(names),\n byKey: (id) => this.documentTypeData.byKey(id),\n },\n loaded.kind === 'folder' ? 'folder' : 'document',\n );\n if (!allowsReview) {\n await this.toastError('errors.not-enabled');\n return { success: false, message: { text: `${I18N}.errors.not-enabled` } };\n }\n\n const setupPromise = this.loadReviewSetup();\n const form = await this.openDialog(loaded.title);\n if (!form) {\n return { success: true, kind: 'object', data: { cancelled: true } };\n }\n\n const loading = await this.showLoading();\n try {\n const setup = await setupPromise;\n if (!setup?.taskType?.id) {\n await this.toastError('errors.task-type-missing');\n return { success: false, message: { text: `${I18N}.errors.task-type-missing` } };\n }\n if (!setup.openStatus?.id) {\n await this.toastError('errors.status-missing');\n return { success: false, message: { text: `${I18N}.errors.status-missing` } };\n }\n\n const created = await this.createAndStart({\n form,\n setup,\n subject: loaded,\n });\n\n if (created.pinFailed) {\n await this.toastWarning('warnings.pin-failed');\n }\n\n const [title, content] = await Promise.all([\n this.translationService.translateAsync(`${I18N}.success.title`),\n this.translationService.translateAsync(`${I18N}.success.description`),\n ]);\n this.toastService.show({ color: 'success', title, content, timeOut: 3000 });\n return { success: true, kind: 'object', data: { taskId: created.taskId, instanceId: created.instanceId } };\n } catch (error) {\n const message = error instanceof Error ? error.message : undefined;\n await this.toastError('errors.failed', message);\n return { success: false, message: { text: message ?? `${I18N}.errors.failed` } };\n } finally {\n loading.close();\n }\n }\n\n //#endregion\n\n //#region ----- Dialog -----\n\n private async openDialog(defaultTitle: string): Promise<ReviewDialogResult | null> {\n const dueDate = new Date();\n dueDate.setHours(0, 0, 0, 0);\n const result = await this.layoutBuilder\n .create()\n .dialog<ReviewDialogResult | null>((dialog) => {\n dialog\n .setTitle(`${I18N}.dialog.title`)\n .setSize('md')\n .setCloseButton(true)\n .setContext({\n title: defaultTitle,\n description: '',\n dueDate,\n reviewerId: null,\n })\n .content((flex) => {\n flex\n .setDirection('column')\n .setGap('12px')\n .formField(`${I18N}.fields.title`, (field) => {\n field.path('title');\n field.textBox({ validations: [{ rule: 'required' }] });\n })\n .formField(`${I18N}.fields.description`, (field) => {\n field.path('description');\n field.textBox({});\n })\n .formField(`${I18N}.fields.due-date`, (field) => {\n field.path('dueDate');\n field.dateTimeBox({ type: 'date', validations: [{ rule: 'required' }] });\n })\n .formField(`${I18N}.fields.reviewer`, (field) => {\n field.path('reviewerId');\n field.lookupBox({\n entity: 'SecurityManagement.User',\n multiple: false,\n look: 'lookup',\n validations: [{ rule: 'required' }],\n });\n });\n })\n .setActions((actions) => {\n actions.cancel('@general:actions.cancel.title');\n actions.submit(`${I18N}.dialog.submit`);\n })\n .onAction(async (dialogRef) => {\n if (dialogRef.action() === 'cancel') {\n return null;\n }\n const ctx = dialogRef.context() as {\n title?: string;\n description?: string;\n dueDate?: Date | string | null;\n reviewerId?: unknown;\n };\n const title = (ctx.title ?? '').trim();\n const reviewerId = asUserIds(ctx.reviewerId)[0];\n if (!title) {\n throw new Error(`${I18N}.errors.title-required`);\n }\n if (!ctx.dueDate) {\n throw new Error(`${I18N}.errors.due-date-required`);\n }\n if (!reviewerId) {\n throw new Error(`${I18N}.errors.reviewer-required`);\n }\n dialogRef.setLoading(true);\n return {\n title,\n description: (ctx.description ?? '').trim() || undefined,\n dueDate: ctx.dueDate,\n reviewerId,\n };\n });\n })\n .show();\n\n return resolveLayoutBuilderDialogResult<ReviewDialogResult>(result);\n }\n\n //#endregion\n\n //#region ----- Create and start -----\n\n private async createAndStart(params: {\n form: ReviewDialogResult;\n setup: ReviewSetup;\n subject: ReviewSubject;\n }): Promise<{ taskId: string; instanceId?: string; pinFailed: boolean }> {\n const assignedBy = this.sessionService.user?.id ?? params.form.reviewerId;\n const subjectRef: AXPEntityReference = {\n type: params.subject.kind === 'folder' ? FOLDER_ENTITY_NAME : DOCUMENT_ENTITY_NAME,\n id: params.subject.id,\n title: params.subject.title,\n };\n\n const createdTask = await this.taskData.create({\n title: params.form.title,\n description: params.form.description,\n taskTypeId: params.setup.taskType.id,\n taskType: { id: params.setup.taskType.id, title: params.setup.taskType.title },\n statusId: params.setup.openStatus.id,\n status: statusRef(params.setup.openStatus),\n priority: 'medium',\n progress: 0,\n order: 0,\n startDate: params.form.dueDate,\n dueDate: params.form.dueDate,\n assigneeId: params.form.reviewerId,\n assignee: { id: params.form.reviewerId },\n subjectRef,\n isArchived: false,\n } as never);\n const taskId = resolveCreatedEntityId(createdTask);\n\n let pinFailed = false;\n const assignmentPromise = this.assignmentData.create({\n taskId,\n assignmentRef: {\n sourceKey: 'employee-user',\n refId: params.form.reviewerId,\n displayName: params.form.reviewerId,\n },\n role: 'reviewer',\n assignedBy,\n assignedAt: new Date(),\n isActive: true,\n } as never);\n\n const pinPromise = this.pinSubjectOnTask(taskId, params.subject).catch((error) => {\n console.warn('[AXMRequestDocumentReviewCommand] pin shortcut failed', error);\n pinFailed = true;\n });\n\n const [, , instanceId] = await Promise.all([\n assignmentPromise,\n pinPromise,\n this.startWorkflow(taskId, params),\n ]);\n return { taskId, instanceId, pinFailed };\n }\n\n private async startWorkflow(\n taskId: string,\n params: { form: ReviewDialogResult; setup: ReviewSetup; subject: ReviewSubject },\n ): Promise<string | undefined> {\n const startResult = await this.workflowManager.start(params.setup.workflowId, {\n taskId,\n taskTitle: params.form.title,\n documentId: params.subject.kind === 'file' ? params.subject.id : '',\n folderId: params.subject.kind === 'folder' ? params.subject.id : '',\n signerUserId: params.form.reviewerId,\n initiatorUserId: this.sessionService.user?.id,\n openStatusId: params.setup.openStatus.id,\n openStatus: statusRef(params.setup.openStatus),\n signOffStatusId: params.setup.signOffStatus?.id ?? params.setup.openStatus.id,\n signOffStatus: statusRef(params.setup.signOffStatus) ?? statusRef(params.setup.openStatus),\n completedStatusId: params.setup.completedStatus?.id ?? params.setup.openStatus.id,\n completedStatus: statusRef(params.setup.completedStatus) ?? statusRef(params.setup.openStatus),\n correlationId: taskId,\n refId: taskId,\n refType: TASK_ENTITY_NAME,\n dueDate: params.form.dueDate,\n });\n\n if (!startResult.success) {\n throw new Error(startResult.error ?? 'workflow-failed');\n }\n\n if (startResult.instanceId) {\n try {\n await this.taskData.update(taskId, {\n workflowInfo: buildAXPRecordWorkflowInfo({\n instanceId: startResult.instanceId,\n definitionId: params.setup.workflowId,\n correlationId: taskId,\n }),\n } as never);\n } catch (error) {\n console.warn('[AXMRequestDocumentReviewCommand] stamp workflowInfo failed', error);\n }\n }\n\n return startResult.instanceId;\n }\n\n //#endregion\n\n //#region ----- Pin subject -----\n\n private async pinSubjectOnTask(taskId: string, subject: ReviewSubject): Promise<void> {\n const folder = await this.driveService.getRootByEntityRef(`${TASK_MODULE}.${TASK_ENTITY}`, taskId);\n const folderId = folder?.result?.id;\n if (!folderId) {\n throw new Error('Task document folder was not provisioned');\n }\n await this.driveService.createShortcut(subject.id, subject.kind === 'folder' ? 'folder' : 'file', folderId, {\n nameOverride: subject.title,\n });\n }\n\n //#endregion\n\n //#region ----- Data Loading -----\n\n private async loadSubject(\n subject: ReviewSubject,\n ): Promise<{ kind: 'file' | 'folder'; id: string; title: string; record: unknown } | null> {\n if (subject.kind === 'folder') {\n const folder = await this.folderData.byKey(subject.id);\n if (!folder?.id) {\n return null;\n }\n return {\n kind: 'folder',\n id: folder.id,\n title: asDisplayName(folder.title) ?? subject.title,\n record: folder,\n };\n }\n const document = await this.documentData.byKey(subject.id);\n if (!document?.id) {\n return null;\n }\n return {\n kind: 'file',\n id: document.id,\n title: asDisplayName(document.name) ?? asDisplayName(document.title) ?? subject.title,\n record: document,\n };\n }\n\n private async loadReviewSetup(): Promise<ReviewSetup | null> {\n const taskType = await this.loadReviewTaskType();\n if (!taskType?.id) {\n return null;\n }\n const statuses = await this.loadStatuses(taskType.id);\n const openStatus = statuses.find((row) => row.isDefault) ?? statuses[0];\n const signOffStatus = statuses.find((row) => row.name === 'sign-off') ?? openStatus;\n const completedStatus = statuses.find((row) => row.isFinal) ?? signOffStatus;\n return {\n taskType,\n openStatus,\n signOffStatus,\n completedStatus,\n workflowId: taskType.workflowConfig?.workflowName?.trim() || DOCUMENT_REVIEW_WORKFLOW_NAME,\n };\n }\n\n private async loadReviewTaskType(): Promise<TaskTypeRow | null> {\n try {\n const byId = await this.taskTypeData.byKey(MOCK_DOCUMENT_REVIEW_TASK_TYPE_ID);\n if (byId?.id) {\n return byId;\n }\n } catch {\n // hashed tenant copies use different ids\n }\n\n const result = await this.taskTypeData.query({ skip: 0, take: 200 });\n return (\n asItems<TaskTypeRow>(result).find(\n (row) => row.workflowConfig?.workflowName?.trim() === DOCUMENT_REVIEW_WORKFLOW_NAME,\n ) ?? null\n );\n }\n\n private async loadStatuses(taskTypeId: string): Promise<TaskStatusRow[]> {\n const result = await this.taskStatusData.query({\n skip: 0,\n take: 50,\n filter: { field: 'taskTypeId', operator: { type: 'equal' }, value: taskTypeId },\n });\n const rows = asItems<TaskStatusRow>(result);\n return rows.some((row) => row.taskTypeId === taskTypeId)\n ? rows.filter((row) => row.taskTypeId === taskTypeId)\n : rows;\n }\n\n private async showLoading(): Promise<LoadingDialogRef> {\n const [title, text] = await Promise.all([\n this.translationService.translateAsync(`${I18N}.loading.title`),\n this.translationService.translateAsync(`${I18N}.loading.description`),\n ]);\n return this.loadingDialog.show({\n title,\n mode: 'indeterminate',\n progressColor: 'primary',\n text,\n }) as LoadingDialogRef;\n }\n\n private async toastError(key: string, detail?: string): Promise<void> {\n const [title, fallback] = await Promise.all([\n this.translationService.translateAsync(`${I18N}.errors.title`),\n this.translationService.translateAsync(`${I18N}.${key}`),\n ]);\n this.toastService.show({\n color: 'danger',\n title,\n content: detail?.trim() || fallback,\n closeButton: true,\n timeOut: 5000,\n });\n }\n\n private async toastWarning(key: string): Promise<void> {\n const [title, content] = await Promise.all([\n this.translationService.translateAsync(`${I18N}.warnings.title`),\n this.translationService.translateAsync(`${I18N}.${key}`),\n ]);\n this.toastService.show({\n color: 'warning',\n title,\n content,\n closeButton: true,\n timeOut: 5000,\n });\n }\n\n //#endregion\n}\n\n//#endregion\n"],"names":[],"mappings":"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"}
@@ -76,7 +76,7 @@ class AXMShareDialogComponent {
76
76
  console.log({ result: false });
77
77
  }
78
78
  static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "22.0.8", ngImport: i0, type: AXMShareDialogComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
79
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "22.0.8", type: AXMShareDialogComponent, isStandalone: true, selector: "ax-share-dialog", inputs: { node: "node" }, ngImport: i0, template: "<div class=\"p-4 gap-2\">\n <ax-form>\n <ax-form-field>\n <ax-label>{{ '@document-management:dialogs.share-dialog.fields.share-with' | translate | async }}</ax-label>\n <ax-lookup\n mode=\"multi-select\"\n [value]=\"selectedUsers\"\n [dataSource]=\"users\"\n valueField=\"id\"\n textField=\"name\"\n [searchable]=\"false\"\n (onValueChanged)=\"handleUserChange($event)\"\n >\n </ax-lookup>\n </ax-form-field>\n <ax-form-field>\n <ax-label>{{ '@document-management:dialogs.share-dialog.fields.permission' | translate | async }}</ax-label>\n <ax-combo-box\n [(value)]=\"permission\"\n [items]=\"permissionComboItems()\"\n [searchable]=\"false\"\n (onValueChanged)=\"handlePermissionChange($event)\"\n >\n </ax-combo-box>\n </ax-form-field>\n <ax-form-field>\n <ax-label>{{ '@document-management:dialogs.share-dialog.fields.message-optional' | translate | async }}</ax-label>\n <ax-text-box [(value)]=\"message\" [multiline]=\"true\"></ax-text-box>\n </ax-form-field>\n </ax-form>\n <ax-footer>\n <ax-suffix>\n <ax-button [text]=\"('@general:actions.cancel.title' | translate | async) ?? ''\" (onClick)=\"onCancel()\"></ax-button>\n <ax-button [text]=\"('@general:actions.share.title' | translate | async) ?? ''\" (onClick)=\"onShare()\"></ax-button>\n </ax-suffix>\n </ax-footer>\n</div>\n", dependencies: [{ kind: "component", type: AXLookupComponent, selector: "ax-lookup", inputs: ["name", "mode", "dataSource", "treeDataSource", "valueField", "textField", "disabledField", "columns", "treeParentField", "hasChildrenField", "searchable", "adaptivityEnabled", "caption", "alternate", "searchPlaceholder", "placeholder", "disabled", "readonly", "look", "itemHeight", "maxVisibleItems", "treeSelectionBehavior", "highlightSearch", "allowSelectAll", "itemTemplate", "selectedTemplate", "emptyTemplate", "loadingTemplate", "value", "valueItems"], outputs: ["lookChange", "valueChange", "onValueChanged", "onSelectionChanged", "onFocus", "onBlur", "onItemClick", "onItemSelected", "onOpened", "onClosed"] }, { kind: "component", type: AXComboBoxComponent, selector: "ax-combo-box", inputs: ["name", "items", "searchable", "multiple", "adaptivityEnabled", "caption", "alternate", "placeholder", "searchPlaceholder", "highlightSearch", "emptyTemplate", "itemTemplate", "selectedTemplate", "disabled", "readonly", "look", "value"], outputs: ["lookChange", "valueChange", "onValueChanged", "onFocus", "onBlur", "onItemClick", "onItemSelected", "onOpened", "onClosed"] }, { kind: "ngmodule", type: AXButtonModule }, { kind: "component", type: i1.AXButtonComponent, selector: "ax-button", inputs: ["disabled", "tabIndex", "color", "look", "text", "toggleable", "selected", "iconOnly", "type", "loadingText"], outputs: ["onBlur", "onFocus", "onClick", "selectedChange", "toggleableChange", "lookChange", "colorChange", "disabledChange", "loadingTextChange"] }, { kind: "ngmodule", type: AXFormModule }, { kind: "component", type: i2.AXFormFieldComponent, selector: "ax-form-field", inputs: ["labelMode"] }, { kind: "component", type: i2.AXFormComponent, selector: "ax-form", inputs: ["disabled", "readonly", "labelMode", "look", "messageStyle", "updateOn", "inUserInteractionActive"], outputs: ["onValidate", "updateOnChange"] }, { kind: "ngmodule", type: AXTextBoxModule }, { kind: "component", type: i3.AXTextBoxComponent, selector: "ax-text-box", inputs: ["disabled", "tabIndex", "readonly", "value", "state", "name", "id", "placeholder", "maxLength", "allowNull", "type", "autoComplete", "look", "maskPattern", "customTokens", "class"], outputs: ["onBlur", "onFocus", "valueChange", "stateChange", "onValueChanged", "readonlyChange", "disabledChange", "onKeyDown", "onKeyUp", "onKeyPress", "onMaskChanged"] }, { kind: "ngmodule", type: AXTranslationModule }, { kind: "pipe", type: i3$1.AXTranslatorPipe, name: "translate" }, { kind: "pipe", type: AsyncPipe, name: "async" }], changeDetection: i0.ChangeDetectionStrategy.Eager }); }
79
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "22.0.8", type: AXMShareDialogComponent, isStandalone: true, selector: "ax-share-dialog", inputs: { node: "node" }, ngImport: i0, template: "<div class=\"p-4 gap-2\">\n <ax-form>\n <ax-form-field>\n <ax-label>{{ '@document-management:dialogs.share-dialog.fields.share-with' | translate | async }}</ax-label>\n <ax-lookup\n mode=\"multi-select\"\n [value]=\"selectedUsers\"\n [dataSource]=\"users\"\n valueField=\"id\"\n textField=\"name\"\n [searchable]=\"false\"\n (onValueChanged)=\"handleUserChange($event)\"\n >\n </ax-lookup>\n </ax-form-field>\n <ax-form-field>\n <ax-label>{{ '@document-management:dialogs.share-dialog.fields.permission' | translate | async }}</ax-label>\n <ax-combo-box\n [(value)]=\"permission\"\n [items]=\"permissionComboItems()\"\n [searchable]=\"false\"\n (onValueChanged)=\"handlePermissionChange($event)\"\n >\n </ax-combo-box>\n </ax-form-field>\n <ax-form-field>\n <ax-label>{{ '@document-management:dialogs.share-dialog.fields.message-optional' | translate | async }}</ax-label>\n <ax-text-box [(value)]=\"message\" [multiline]=\"true\"></ax-text-box>\n </ax-form-field>\n </ax-form>\n <ax-footer>\n <ax-suffix>\n <ax-button [text]=\"('@general:actions.cancel.title' | translate | async) ?? ''\" (onClick)=\"onCancel()\"></ax-button>\n <ax-button [text]=\"('@general:actions.share.title' | translate | async) ?? ''\" (onClick)=\"onShare()\"></ax-button>\n </ax-suffix>\n </ax-footer>\n</div>\n", dependencies: [{ kind: "component", type: AXLookupComponent, selector: "ax-lookup", inputs: ["name", "mode", "dataSource", "treeDataSource", "valueField", "textField", "disabledField", "columns", "treeParentField", "hasChildrenField", "searchable", "adaptivityEnabled", "caption", "alternate", "searchPlaceholder", "placeholder", "disabled", "readonly", "look", "itemHeight", "maxVisibleItems", "treeSelectionBehavior", "highlightSearch", "allowSelectAll", "itemTemplate", "selectedTemplate", "emptyTemplate", "loadingTemplate", "value", "valueItems", "prefetch"], outputs: ["lookChange", "valueChange", "onValueChanged", "onSelectionChanged", "onFocus", "onBlur", "onItemClick", "onItemSelected", "onOpened", "onClosed"] }, { kind: "component", type: AXComboBoxComponent, selector: "ax-combo-box", inputs: ["name", "items", "searchable", "multiple", "adaptivityEnabled", "caption", "alternate", "placeholder", "searchPlaceholder", "highlightSearch", "emptyTemplate", "itemTemplate", "selectedTemplate", "disabled", "readonly", "look", "value"], outputs: ["lookChange", "valueChange", "onValueChanged", "onFocus", "onBlur", "onItemClick", "onItemSelected", "onOpened", "onClosed"] }, { kind: "ngmodule", type: AXButtonModule }, { kind: "component", type: i1.AXButtonComponent, selector: "ax-button", inputs: ["disabled", "tabIndex", "color", "look", "text", "toggleable", "selected", "iconOnly", "type", "loadingText"], outputs: ["onBlur", "onFocus", "onClick", "selectedChange", "toggleableChange", "lookChange", "colorChange", "disabledChange", "loadingTextChange"] }, { kind: "ngmodule", type: AXFormModule }, { kind: "component", type: i2.AXFormFieldComponent, selector: "ax-form-field", inputs: ["labelMode"] }, { kind: "component", type: i2.AXFormComponent, selector: "ax-form", inputs: ["disabled", "readonly", "labelMode", "look", "messageStyle", "updateOn", "inUserInteractionActive"], outputs: ["onValidate", "updateOnChange"] }, { kind: "ngmodule", type: AXTextBoxModule }, { kind: "component", type: i3.AXTextBoxComponent, selector: "ax-text-box", inputs: ["disabled", "tabIndex", "readonly", "value", "state", "name", "id", "placeholder", "maxLength", "allowNull", "type", "autoComplete", "look", "maskPattern", "customTokens", "class"], outputs: ["onBlur", "onFocus", "valueChange", "stateChange", "onValueChanged", "readonlyChange", "disabledChange", "onKeyDown", "onKeyUp", "onKeyPress", "onMaskChanged"] }, { kind: "ngmodule", type: AXTranslationModule }, { kind: "pipe", type: i3$1.AXTranslatorPipe, name: "translate" }, { kind: "pipe", type: AsyncPipe, name: "async" }], changeDetection: i0.ChangeDetectionStrategy.Eager }); }
80
80
  }
81
81
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "22.0.8", ngImport: i0, type: AXMShareDialogComponent, decorators: [{
82
82
  type: Component,
@@ -86,4 +86,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "22.0.8", ngImpor
86
86
  }] } });
87
87
 
88
88
  export { AXMShareDialogComponent };
89
- //# sourceMappingURL=acorex-platform-module-document-management-client-share-dialog.component-DmWwfHBl.mjs.map
89
+ //# sourceMappingURL=acorex-platform-module-document-management-client-share-dialog.component-B4eaA9Rt.mjs.map
@@ -1 +1 @@
1
- {"version":3,"file":"acorex-platform-module-document-management-client-share-dialog.component-DmWwfHBl.mjs","sources":["../../../../libs/modules/document-management/client/src/lib/features/shared/components/share-dialog/share-dialog.component.ts","../../../../libs/modules/document-management/client/src/lib/features/shared/components/share-dialog/share-dialog.component.html"],"sourcesContent":["//#region ----- Imports -----\n\nimport { AXButtonModule } from '@acorex/components/button';\nimport { AXComboBoxComponent, type AXComboBoxItem } from '@acorex/components/combo-box';\nimport { AXFormModule } from '@acorex/components/form';\nimport { AXLookupComponent } from '@acorex/components/lookup';\nimport { AXTextBoxModule } from '@acorex/components/text-box';\nimport { AXTranslationModule, AXTranslationService } from '@acorex/core/translation';\nimport { AsyncPipe } from '@angular/common';\nimport { Component, CUSTOM_ELEMENTS_SCHEMA, Input, ChangeDetectionStrategy, inject, signal, OnInit } from '@angular/core';\nimport { AXMDocumentExplorerNode } from '../../document-manager.types';\n\n//#endregion\n\n//#region ----- Component -----\n\n@Component({\n selector: 'ax-share-dialog',\n standalone: true,\n imports: [AXLookupComponent, AXComboBoxComponent, AXButtonModule, AXFormModule, AXTextBoxModule, AXTranslationModule, AsyncPipe],\n schemas: [CUSTOM_ELEMENTS_SCHEMA],\n changeDetection: ChangeDetectionStrategy.Eager,\n templateUrl: './share-dialog.component.html',\n})\nexport class AXMShareDialogComponent implements OnInit {\n //#region ----- Services & Dependencies -----\n\n private readonly translationService = inject(AXTranslationService);\n\n //#endregion\n\n //#region ----- Inputs -----\n\n @Input() node: AXMDocumentExplorerNode;\n\n //#endregion\n\n //#region ----- State -----\n\n selectedUsers: any[] = [];\n permission: string = 'view';\n message: string = '';\n\n users = [\n { id: 1, name: 'User 1' },\n { id: 2, name: 'User 2' },\n { id: 3, name: 'User 3' },\n ];\n\n protected readonly permissionComboItems = signal<AXComboBoxItem[]>([]);\n\n //#endregion\n\n //#region ----- Lifecycle -----\n\n async ngOnInit(): Promise<void> {\n const t = this.translationService;\n this.permissionComboItems.set([\n {\n id: 'view',\n value: 'view',\n text: (await t.translateAsync('@document-management:dialogs.share-dialog.permissions.view-only')) ?? '',\n },\n {\n id: 'edit',\n value: 'edit',\n text: (await t.translateAsync('@document-management:dialogs.share-dialog.permissions.can-edit')) ?? '',\n },\n {\n id: 'full',\n value: 'full',\n text: (await t.translateAsync('@document-management:dialogs.share-dialog.permissions.full-access')) ?? '',\n },\n ]);\n }\n\n //#endregion\n\n //#region ----- Event Handlers -----\n\n handleUserChange(event: { value?: unknown }) {\n this.selectedUsers = (event.value as any[]) ?? [];\n }\n\n handlePermissionChange(event: { value?: unknown }) {\n this.permission = (event.value as string) ?? this.permission;\n }\n\n onShare() {\n console.log({\n result: true,\n data: {\n users: this.selectedUsers,\n permission: this.permission,\n message: this.message,\n },\n });\n }\n\n onCancel() {\n console.log({ result: false });\n }\n\n //#endregion\n}\n\n//#endregion\n","<div class=\"p-4 gap-2\">\n <ax-form>\n <ax-form-field>\n <ax-label>{{ '@document-management:dialogs.share-dialog.fields.share-with' | translate | async }}</ax-label>\n <ax-lookup\n mode=\"multi-select\"\n [value]=\"selectedUsers\"\n [dataSource]=\"users\"\n valueField=\"id\"\n textField=\"name\"\n [searchable]=\"false\"\n (onValueChanged)=\"handleUserChange($event)\"\n >\n </ax-lookup>\n </ax-form-field>\n <ax-form-field>\n <ax-label>{{ '@document-management:dialogs.share-dialog.fields.permission' | translate | async }}</ax-label>\n <ax-combo-box\n [(value)]=\"permission\"\n [items]=\"permissionComboItems()\"\n [searchable]=\"false\"\n (onValueChanged)=\"handlePermissionChange($event)\"\n >\n </ax-combo-box>\n </ax-form-field>\n <ax-form-field>\n <ax-label>{{ '@document-management:dialogs.share-dialog.fields.message-optional' | translate | async }}</ax-label>\n <ax-text-box [(value)]=\"message\" [multiline]=\"true\"></ax-text-box>\n </ax-form-field>\n </ax-form>\n <ax-footer>\n <ax-suffix>\n <ax-button [text]=\"('@general:actions.cancel.title' | translate | async) ?? ''\" (onClick)=\"onCancel()\"></ax-button>\n <ax-button [text]=\"('@general:actions.share.title' | translate | async) ?? ''\" (onClick)=\"onShare()\"></ax-button>\n </ax-suffix>\n </ax-footer>\n</div>\n"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"acorex-platform-module-document-management-client-share-dialog.component-B4eaA9Rt.mjs","sources":["../../../../libs/modules/document-management/client/src/lib/features/shared/components/share-dialog/share-dialog.component.ts","../../../../libs/modules/document-management/client/src/lib/features/shared/components/share-dialog/share-dialog.component.html"],"sourcesContent":["//#region ----- Imports -----\n\nimport { AXButtonModule } from '@acorex/components/button';\nimport { AXComboBoxComponent, type AXComboBoxItem } from '@acorex/components/combo-box';\nimport { AXFormModule } from '@acorex/components/form';\nimport { AXLookupComponent } from '@acorex/components/lookup';\nimport { AXTextBoxModule } from '@acorex/components/text-box';\nimport { AXTranslationModule, AXTranslationService } from '@acorex/core/translation';\nimport { AsyncPipe } from '@angular/common';\nimport { Component, CUSTOM_ELEMENTS_SCHEMA, Input, ChangeDetectionStrategy, inject, signal, OnInit } from '@angular/core';\nimport { AXMDocumentExplorerNode } from '../../document-manager.types';\n\n//#endregion\n\n//#region ----- Component -----\n\n@Component({\n selector: 'ax-share-dialog',\n standalone: true,\n imports: [AXLookupComponent, AXComboBoxComponent, AXButtonModule, AXFormModule, AXTextBoxModule, AXTranslationModule, AsyncPipe],\n schemas: [CUSTOM_ELEMENTS_SCHEMA],\n changeDetection: ChangeDetectionStrategy.Eager,\n templateUrl: './share-dialog.component.html',\n})\nexport class AXMShareDialogComponent implements OnInit {\n //#region ----- Services & Dependencies -----\n\n private readonly translationService = inject(AXTranslationService);\n\n //#endregion\n\n //#region ----- Inputs -----\n\n @Input() node: AXMDocumentExplorerNode;\n\n //#endregion\n\n //#region ----- State -----\n\n selectedUsers: any[] = [];\n permission: string = 'view';\n message: string = '';\n\n users = [\n { id: 1, name: 'User 1' },\n { id: 2, name: 'User 2' },\n { id: 3, name: 'User 3' },\n ];\n\n protected readonly permissionComboItems = signal<AXComboBoxItem[]>([]);\n\n //#endregion\n\n //#region ----- Lifecycle -----\n\n async ngOnInit(): Promise<void> {\n const t = this.translationService;\n this.permissionComboItems.set([\n {\n id: 'view',\n value: 'view',\n text: (await t.translateAsync('@document-management:dialogs.share-dialog.permissions.view-only')) ?? '',\n },\n {\n id: 'edit',\n value: 'edit',\n text: (await t.translateAsync('@document-management:dialogs.share-dialog.permissions.can-edit')) ?? '',\n },\n {\n id: 'full',\n value: 'full',\n text: (await t.translateAsync('@document-management:dialogs.share-dialog.permissions.full-access')) ?? '',\n },\n ]);\n }\n\n //#endregion\n\n //#region ----- Event Handlers -----\n\n handleUserChange(event: { value?: unknown }) {\n this.selectedUsers = (event.value as any[]) ?? [];\n }\n\n handlePermissionChange(event: { value?: unknown }) {\n this.permission = (event.value as string) ?? this.permission;\n }\n\n onShare() {\n console.log({\n result: true,\n data: {\n users: this.selectedUsers,\n permission: this.permission,\n message: this.message,\n },\n });\n }\n\n onCancel() {\n console.log({ result: false });\n }\n\n //#endregion\n}\n\n//#endregion\n","<div class=\"p-4 gap-2\">\n <ax-form>\n <ax-form-field>\n <ax-label>{{ '@document-management:dialogs.share-dialog.fields.share-with' | translate | async }}</ax-label>\n <ax-lookup\n mode=\"multi-select\"\n [value]=\"selectedUsers\"\n [dataSource]=\"users\"\n valueField=\"id\"\n textField=\"name\"\n [searchable]=\"false\"\n (onValueChanged)=\"handleUserChange($event)\"\n >\n </ax-lookup>\n </ax-form-field>\n <ax-form-field>\n <ax-label>{{ '@document-management:dialogs.share-dialog.fields.permission' | translate | async }}</ax-label>\n <ax-combo-box\n [(value)]=\"permission\"\n [items]=\"permissionComboItems()\"\n [searchable]=\"false\"\n (onValueChanged)=\"handlePermissionChange($event)\"\n >\n </ax-combo-box>\n </ax-form-field>\n <ax-form-field>\n <ax-label>{{ '@document-management:dialogs.share-dialog.fields.message-optional' | translate | async }}</ax-label>\n <ax-text-box [(value)]=\"message\" [multiline]=\"true\"></ax-text-box>\n </ax-form-field>\n </ax-form>\n <ax-footer>\n <ax-suffix>\n <ax-button [text]=\"('@general:actions.cancel.title' | translate | async) ?? ''\" (onClick)=\"onCancel()\"></ax-button>\n <ax-button [text]=\"('@general:actions.share.title' | translate | async) ?? ''\" (onClick)=\"onShare()\"></ax-button>\n </ax-suffix>\n </ax-footer>\n</div>\n"],"names":[],"mappings":"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"}
@@ -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-i1lGkMQC.mjs';
9
+ import { A as AXPDocumentExplorerViewModel } from './acorex-platform-module-document-management-client-acorex-platform-module-document-management-client-C_TdVup5.mjs';
10
10
 
11
11
  class AXMDocumentExplorerSmallIconsViewSkeletonComponent {
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 { AXMDocumentExplorerSmallIconsViewSkeletonComponent };
27
- //# sourceMappingURL=acorex-platform-module-document-management-client-small-icons-view-skeleton.component-Ds5v0XDc.mjs.map
27
+ //# sourceMappingURL=acorex-platform-module-document-management-client-small-icons-view-skeleton.component-DCjsVs5n.mjs.map
@@ -1 +1 @@
1
- {"version":3,"file":"acorex-platform-module-document-management-client-small-icons-view-skeleton.component-Ds5v0XDc.mjs","sources":["../../../../libs/modules/document-management/client/src/lib/features/document-explorer/views/small-icons/small-icons-view-skeleton.component.ts","../../../../libs/modules/document-management/client/src/lib/features/document-explorer/views/small-icons/small-icons-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-small-icons-view-skeleton',\n templateUrl: './small-icons-view-skeleton.component.html',\n styleUrl: './small-icons-view-skeleton.component.css',\n changeDetection: ChangeDetectionStrategy.OnPush,\n imports: [CommonModule, AXSkeletonModule, AXTranslationModule],\n})\nexport class AXMDocumentExplorerSmallIconsViewSkeletonComponent {\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,2GCb/D,+xCAqCA,EAAA,MAAA,EAAA,CAAA,suCAAA,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,iDAAiD,EAAA,eAAA,EAG1C,uBAAuB,CAAC,MAAM,EAAA,OAAA,EACtC,CAAC,YAAY,EAAE,gBAAgB,EAAE,mBAAmB,CAAC,EAAA,QAAA,EAAA,+xCAAA,EAAA,MAAA,EAAA,CAAA,suCAAA,CAAA,EAAA;;;"}
1
+ {"version":3,"file":"acorex-platform-module-document-management-client-small-icons-view-skeleton.component-DCjsVs5n.mjs","sources":["../../../../libs/modules/document-management/client/src/lib/features/document-explorer/views/small-icons/small-icons-view-skeleton.component.ts","../../../../libs/modules/document-management/client/src/lib/features/document-explorer/views/small-icons/small-icons-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-small-icons-view-skeleton',\n templateUrl: './small-icons-view-skeleton.component.html',\n styleUrl: './small-icons-view-skeleton.component.css',\n changeDetection: ChangeDetectionStrategy.OnPush,\n imports: [CommonModule, AXSkeletonModule, AXTranslationModule],\n})\nexport class AXMDocumentExplorerSmallIconsViewSkeletonComponent {\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,2GCb/D,+xCAqCA,EAAA,MAAA,EAAA,CAAA,suCAAA,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,iDAAiD,EAAA,eAAA,EAG1C,uBAAuB,CAAC,MAAM,EAAA,OAAA,EACtC,CAAC,YAAY,EAAE,gBAAgB,EAAE,mBAAmB,CAAC,EAAA,QAAA,EAAA,+xCAAA,EAAA,MAAA,EAAA,CAAA,suCAAA,CAAA,EAAA;;;"}
@@ -3,7 +3,7 @@ import { inject, ChangeDetectionStrategy, Component } from '@angular/core';
3
3
  import * as i1 from '@angular/common';
4
4
  import { CommonModule } from '@angular/common';
5
5
  import { AXPElementDataDirective, AXPDblClickDirective } from '@acorex-platform/framework-client/core';
6
- import { A as AXPDocumentExplorerViewModel, a as AXMDocumentExpirationBadgeComponent, b as AXMDocumentVersionBadgeComponent, c as AXMFolderExpirationBadgesComponent } from './acorex-platform-module-document-management-client-acorex-platform-module-document-management-client-i1lGkMQC.mjs';
6
+ import { A as AXPDocumentExplorerViewModel, a as AXMDocumentExpirationBadgeComponent, b as AXMDocumentVersionBadgeComponent, c as AXMFolderExpirationBadgesComponent } from './acorex-platform-module-document-management-client-acorex-platform-module-document-management-client-C_TdVup5.mjs';
7
7
  import * as i3 from '@acorex/core/translation';
8
8
  import { AXTranslationModule } from '@acorex/core/translation';
9
9
 
@@ -28,4 +28,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "22.0.8", ngImpor
28
28
  }] });
29
29
 
30
30
  export { AXMDocumentExplorerSmallIconsViewComponent };
31
- //# sourceMappingURL=acorex-platform-module-document-management-client-small-icons-view.component-B5lM6scj.mjs.map
31
+ //# sourceMappingURL=acorex-platform-module-document-management-client-small-icons-view.component-DbO9rbel.mjs.map