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

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 (61) hide show
  1. package/fesm2022/{acorex-platform-module-document-management-client-acorex-platform-module-document-management-client-Dc3e3vuv.mjs → acorex-platform-module-document-management-client-acorex-platform-module-document-management-client-i1lGkMQC.mjs} +160 -79
  2. package/fesm2022/acorex-platform-module-document-management-client-acorex-platform-module-document-management-client-i1lGkMQC.mjs.map +1 -0
  3. package/fesm2022/{acorex-platform-module-document-management-client-attachment-view-skeleton.component-BSw5qPPj.mjs → acorex-platform-module-document-management-client-attachment-view-skeleton.component-D2EHMBEQ.mjs} +2 -2
  4. package/fesm2022/{acorex-platform-module-document-management-client-attachment-view-skeleton.component-BSw5qPPj.mjs.map → acorex-platform-module-document-management-client-attachment-view-skeleton.component-D2EHMBEQ.mjs.map} +1 -1
  5. package/fesm2022/acorex-platform-module-document-management-client-attachment-widget.component-DMZ_lnJb.mjs +37 -0
  6. package/fesm2022/acorex-platform-module-document-management-client-attachment-widget.component-DMZ_lnJb.mjs.map +1 -0
  7. package/fesm2022/acorex-platform-module-document-management-client-contracts.mjs +12 -1
  8. package/fesm2022/acorex-platform-module-document-management-client-contracts.mjs.map +1 -1
  9. package/fesm2022/{acorex-platform-module-document-management-client-details-view.component-DUl9ET3T.mjs → acorex-platform-module-document-management-client-details-view.component-D3Jx-JvU.mjs} +25 -6
  10. package/fesm2022/acorex-platform-module-document-management-client-details-view.component-D3Jx-JvU.mjs.map +1 -0
  11. package/fesm2022/{acorex-platform-module-document-management-client-distribute-document.command-DlpVqyIC.mjs → acorex-platform-module-document-management-client-distribute-document.command-L420ZbsM.mjs} +2 -2
  12. package/fesm2022/{acorex-platform-module-document-management-client-distribute-document.command-DlpVqyIC.mjs.map → acorex-platform-module-document-management-client-distribute-document.command-L420ZbsM.mjs.map} +1 -1
  13. package/fesm2022/{acorex-platform-module-document-management-client-drive-choose.component-B8MZYXNy.mjs → acorex-platform-module-document-management-client-drive-choose.component-DNNfdkr_.mjs} +2 -2
  14. package/fesm2022/{acorex-platform-module-document-management-client-drive-choose.component-B8MZYXNy.mjs.map → acorex-platform-module-document-management-client-drive-choose.component-DNNfdkr_.mjs.map} +1 -1
  15. package/fesm2022/{acorex-platform-module-document-management-client-large-icons-view-skeleton.component-BbhvEEHA.mjs → acorex-platform-module-document-management-client-large-icons-view-skeleton.component-DCSLExpX.mjs} +2 -2
  16. package/fesm2022/{acorex-platform-module-document-management-client-large-icons-view-skeleton.component-BbhvEEHA.mjs.map → acorex-platform-module-document-management-client-large-icons-view-skeleton.component-DCSLExpX.mjs.map} +1 -1
  17. package/fesm2022/acorex-platform-module-document-management-client-large-icons-view.component-2tP4TDuw.mjs +31 -0
  18. package/fesm2022/acorex-platform-module-document-management-client-large-icons-view.component-2tP4TDuw.mjs.map +1 -0
  19. package/fesm2022/acorex-platform-module-document-management-client-large-tiles-view.component-CaKom515.mjs +36 -0
  20. package/fesm2022/acorex-platform-module-document-management-client-large-tiles-view.component-CaKom515.mjs.map +1 -0
  21. package/fesm2022/{acorex-platform-module-document-management-client-list-view-skeleton.component-DISl1_Oq.mjs → acorex-platform-module-document-management-client-list-view-skeleton.component-DgkPpiDD.mjs} +2 -2
  22. package/fesm2022/{acorex-platform-module-document-management-client-list-view-skeleton.component-DISl1_Oq.mjs.map → acorex-platform-module-document-management-client-list-view-skeleton.component-DgkPpiDD.mjs.map} +1 -1
  23. package/fesm2022/acorex-platform-module-document-management-client-list-view.component-CSOMxbq7.mjs +31 -0
  24. package/fesm2022/acorex-platform-module-document-management-client-list-view.component-CSOMxbq7.mjs.map +1 -0
  25. package/fesm2022/{acorex-platform-module-document-management-client-open-document.command-DHeVyOn1.mjs → acorex-platform-module-document-management-client-open-document.command-Byut3UdZ.mjs} +2 -2
  26. package/fesm2022/{acorex-platform-module-document-management-client-open-document.command-DHeVyOn1.mjs.map → acorex-platform-module-document-management-client-open-document.command-Byut3UdZ.mjs.map} +1 -1
  27. package/fesm2022/{acorex-platform-module-document-management-client-request-document-review.command-DN6CupYF.mjs → acorex-platform-module-document-management-client-request-document-review.command-C-x7A2x2.mjs} +2 -2
  28. package/fesm2022/{acorex-platform-module-document-management-client-request-document-review.command-DN6CupYF.mjs.map → acorex-platform-module-document-management-client-request-document-review.command-C-x7A2x2.mjs.map} +1 -1
  29. package/fesm2022/{acorex-platform-module-document-management-client-share-dialog.component-CFI4hK3T.mjs → acorex-platform-module-document-management-client-share-dialog.component-DmWwfHBl.mjs} +2 -2
  30. package/fesm2022/{acorex-platform-module-document-management-client-share-dialog.component-CFI4hK3T.mjs.map → acorex-platform-module-document-management-client-share-dialog.component-DmWwfHBl.mjs.map} +1 -1
  31. package/fesm2022/{acorex-platform-module-document-management-client-small-icons-view-skeleton.component-rFpvlGch.mjs → acorex-platform-module-document-management-client-small-icons-view-skeleton.component-Ds5v0XDc.mjs} +2 -2
  32. package/fesm2022/{acorex-platform-module-document-management-client-small-icons-view-skeleton.component-rFpvlGch.mjs.map → acorex-platform-module-document-management-client-small-icons-view-skeleton.component-Ds5v0XDc.mjs.map} +1 -1
  33. package/fesm2022/acorex-platform-module-document-management-client-small-icons-view.component-B5lM6scj.mjs +31 -0
  34. package/fesm2022/acorex-platform-module-document-management-client-small-icons-view.component-B5lM6scj.mjs.map +1 -0
  35. package/fesm2022/{acorex-platform-module-document-management-client-small-tiles-view-skeleton.component-BAX3nQvQ.mjs → acorex-platform-module-document-management-client-small-tiles-view-skeleton.component-BZAtrZvj.mjs} +2 -2
  36. package/fesm2022/{acorex-platform-module-document-management-client-small-tiles-view-skeleton.component-BAX3nQvQ.mjs.map → acorex-platform-module-document-management-client-small-tiles-view-skeleton.component-BZAtrZvj.mjs.map} +1 -1
  37. package/fesm2022/acorex-platform-module-document-management-client-small-tiles-view.component-DRDvcOMS.mjs +36 -0
  38. package/fesm2022/acorex-platform-module-document-management-client-small-tiles-view.component-DRDvcOMS.mjs.map +1 -0
  39. package/fesm2022/{acorex-platform-module-document-management-client-upload-document.command-SvlUanUP.mjs → acorex-platform-module-document-management-client-upload-document.command-CYeSpjOg.mjs} +2 -2
  40. package/fesm2022/{acorex-platform-module-document-management-client-upload-document.command-SvlUanUP.mjs.map → acorex-platform-module-document-management-client-upload-document.command-CYeSpjOg.mjs.map} +1 -1
  41. package/fesm2022/acorex-platform-module-document-management-client.mjs +1 -1
  42. package/i18n/en-AU/document-management.json +9 -0
  43. package/i18n/en-US/document-management.json +9 -0
  44. package/i18n/fa-IR/document-management.json +9 -0
  45. package/package.json +2 -2
  46. package/types/acorex-platform-module-document-management-client-contracts.d.ts +11 -3
  47. package/types/acorex-platform-module-document-management-client.d.ts +5 -0
  48. package/fesm2022/acorex-platform-module-document-management-client-acorex-platform-module-document-management-client-Dc3e3vuv.mjs.map +0 -1
  49. package/fesm2022/acorex-platform-module-document-management-client-attachment-widget.component-D0F-BlKw.mjs +0 -37
  50. package/fesm2022/acorex-platform-module-document-management-client-attachment-widget.component-D0F-BlKw.mjs.map +0 -1
  51. package/fesm2022/acorex-platform-module-document-management-client-details-view.component-DUl9ET3T.mjs.map +0 -1
  52. package/fesm2022/acorex-platform-module-document-management-client-large-icons-view.component-CuHdwWeq.mjs +0 -31
  53. package/fesm2022/acorex-platform-module-document-management-client-large-icons-view.component-CuHdwWeq.mjs.map +0 -1
  54. package/fesm2022/acorex-platform-module-document-management-client-large-tiles-view.component-C39bX_XE.mjs +0 -36
  55. package/fesm2022/acorex-platform-module-document-management-client-large-tiles-view.component-C39bX_XE.mjs.map +0 -1
  56. package/fesm2022/acorex-platform-module-document-management-client-list-view.component-C7GAQTTr.mjs +0 -31
  57. package/fesm2022/acorex-platform-module-document-management-client-list-view.component-C7GAQTTr.mjs.map +0 -1
  58. package/fesm2022/acorex-platform-module-document-management-client-small-icons-view.component-jQDh6WgR.mjs +0 -31
  59. package/fesm2022/acorex-platform-module-document-management-client-small-icons-view.component-jQDh6WgR.mjs.map +0 -1
  60. package/fesm2022/acorex-platform-module-document-management-client-small-tiles-view.component-BpmwxphX.mjs +0 -36
  61. package/fesm2022/acorex-platform-module-document-management-client-small-tiles-view.component-BpmwxphX.mjs.map +0 -1
@@ -16,7 +16,7 @@ import * as i0 from '@angular/core';
16
16
  import { inject, DestroyRef, signal, computed, effect, ChangeDetectionStrategy, Component } from '@angular/core';
17
17
  import { takeUntilDestroyed } from '@angular/core/rxjs-interop';
18
18
  import { isEqual } from 'lodash-es';
19
- import { A as AXPDocumentExplorerViewModel, r as readNodeMetaDataValue, d as collectFolderScopedMetaDataList, e as collectDocumentScopedMetaDataList, f as flattenMetaDataColumns, g as collectLookupKeys, h as collectDocumentTypeIds, i as collectDocumentTypeNames, a as AXMDocumentExpirationBadgeComponent, b as AXMDocumentVersionBadgeComponent, c as AXMFolderExpirationBadgesComponent } from './acorex-platform-module-document-management-client-acorex-platform-module-document-management-client-Dc3e3vuv.mjs';
19
+ import { A as AXPDocumentExplorerViewModel, r as readNodeMetaDataValue, d as collectFolderScopedMetaDataList, e as collectDocumentScopedMetaDataList, f as flattenMetaDataColumns, g as collectLookupKeys, h as collectDocumentTypeIds, i as collectDocumentTypeNames, a as AXMDocumentExpirationBadgeComponent, b as AXMDocumentVersionBadgeComponent, c as AXMFolderExpirationBadgesComponent } from './acorex-platform-module-document-management-client-acorex-platform-module-document-management-client-i1lGkMQC.mjs';
20
20
  import { mergeMetaDataLists } from '@acorex-platform/module-data-management-client/contracts';
21
21
 
22
22
  //#region ----- Imports -----
@@ -118,7 +118,7 @@ class AXMDocumentExplorerDetailsViewComponent {
118
118
  const needle = search.toLowerCase();
119
119
  rows = rows.filter((row) => this.columns().some((column) => String(row[column.name] ?? '').toLowerCase().includes(needle)));
120
120
  }
121
- const sort = query.sort?.[0];
121
+ const sort = this.keepExclusiveSort(query);
122
122
  if (sort?.field) {
123
123
  const field = sort.field;
124
124
  const direction = sort.dir === 'desc' ? -1 : 1;
@@ -174,7 +174,7 @@ class AXMDocumentExplorerDetailsViewComponent {
174
174
  this.vm.navigateToFolder(node.id);
175
175
  return;
176
176
  }
177
- void this.vm.openFileViewer(node);
177
+ void this.vm.openFileOnDoubleClick(node);
178
178
  }
179
179
  openRowContextMenu(event) {
180
180
  event.preventDefault();
@@ -463,6 +463,25 @@ class AXMDocumentExplorerDetailsViewComponent {
463
463
  }
464
464
  return String(left).localeCompare(String(right), undefined, { numeric: true, sensitivity: 'base' });
465
465
  }
466
+ keepExclusiveSort(query) {
467
+ const sorts = Array.isArray(query.sort) ? query.sort : [];
468
+ if (sorts.length === 0) {
469
+ return undefined;
470
+ }
471
+ const last = sorts[sorts.length - 1];
472
+ const field = String(last?.field ?? '').trim();
473
+ if (!field) {
474
+ return undefined;
475
+ }
476
+ const exclusive = {
477
+ field,
478
+ dir: last.dir === 'desc' ? 'desc' : 'asc',
479
+ };
480
+ if (sorts.length > 1) {
481
+ query.sort.splice(0, query.sort.length, exclusive);
482
+ }
483
+ return exclusive;
484
+ }
466
485
  extractSearchText(filter) {
467
486
  if (!filter || typeof filter !== 'object') {
468
487
  return '';
@@ -525,7 +544,7 @@ class AXMDocumentExplorerDetailsViewComponent {
525
544
  }
526
545
  }
527
546
  static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "22.0.8", ngImport: i0, type: AXMDocumentExplorerDetailsViewComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
528
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "22.0.8", type: AXMDocumentExplorerDetailsViewComponent, isStandalone: true, selector: "ng-component", ngImport: i0, template: "<!-- ----- Platform data table for homogeneous folder or document rows ----- -->\n<div class=\"details-view\">\n <ax-data-table\n class=\"details-grid\"\n [dataSource]=\"dataSource\"\n [paging]=\"true\"\n [showFooter]=\"false\"\n [fixedHeader]=\"true\"\n [allowReordering]=\"true\"\n [loading]=\"{ enabled: true, animation: true }\"\n [selectedRows]=\"selectedRows()\"\n (selectedRowsChange)=\"handleSelectedRowsChange($event)\"\n (onRowDbClick)=\"handleRowDbClick($event)\"\n >\n <!-- ----- Row number when Experience Show Row Index Column is enabled ----- -->\n @if (showIndexColumn()) {\n <ax-index-column\n [caption]=\"('@general:terms.common.row-number' | translate | async)!\"\n fixed=\"start\"\n [width]=\"'80px'\"\n [padZero]=\"false\"\n ></ax-index-column>\n }\n <!-- ----- Row selection when the explorer allows it ----- -->\n @if (allowSelection()) {\n <ax-select-column fixed=\"start\" [width]=\"'60px'\"></ax-select-column>\n }\n @for (column of columns(); track column.name) {\n <ax-text-column\n [dataField]=\"column.name\"\n [caption]=\"(column.title | translate | async)!\"\n [allowResizing]=\"true\"\n [allowSorting]=\"true\"\n [width]=\"column.name === 'name' ? '280px' : '160px'\"\n [fixed]=\"column.name === 'name' ? 'start' : null\"\n [cellTemplate]=\"columnCellTpl\"\n ></ax-text-column>\n <ng-template #columnCellTpl let-item>\n <!---->\n @if (gridRow(item)?.node; as node) {\n <div class=\"cell-hit __explorer-item\" [axp-data]=\"node\">\n <!---->\n @if (column.name === 'name') {\n <!-- ----- Folder or document name with icon and expiration badges ----- -->\n @let nodeDisplay = vm.getNodeDisplayInfo(node);\n <div class=\"item-name\" (dblclick)=\"$event.stopPropagation(); openNode(node)\">\n <!---->\n <!-- ----- Folder loading spinner ----- -->\n @if (node.type === 'folder' && vm.isLoadingFolder(node.id)) {\n <i class=\"fa-light fa-spinner fa-spin-pulse\"></i>\n }\n <!-- ----- Folder or file icon ----- -->\n @else {\n <span\n class=\"item-icon\"\n [class.item-icon--shortcut]=\"nodeDisplay.isShortcut\"\n [style.color]=\"node.type === 'folder' ? vm.getFolderColor(node) : null\"\n >\n <i [class]=\"node.type === 'folder' ? 'fas fa-folder-closed' : ('fa-fw ' + nodeDisplay.icon)\"></i>\n <!---->\n <!-- ----- Shortcut overlay ----- -->\n @if (nodeDisplay.isShortcut) {\n <i class=\"fa-light fa-up-right-from-square item-icon__shortcut-arrow\" aria-hidden=\"true\"></i>\n }\n </span>\n }\n <span>{{ displayText(cellValue(item, column)) }}</span>\n <!---->\n <!-- ----- Folder expiration badges ----- -->\n @if (node.type === 'folder') {\n <axm-folder-expiration-badges [node]=\"node\" />\n }\n <!-- ----- Document expiration badge ----- -->\n @else {\n <axm-document-expiration-badge [node]=\"node\" />\n }\n </div>\n }\n <!-- ----- Document version badge ----- -->\n @else if (column.name === 'version') {\n <axm-document-version-badge [node]=\"node\" />\n }\n <!-- ----- File or folder size ----- -->\n @else if (column.format === 'filesize') {\n {{ cellValue(item, column) | format : 'filesize' | async }}\n }\n <!-- ----- Date-only metadata or attribute ----- -->\n @else if (column.format === 'date') {\n <!---->\n @if (cellValue(item, column); as value) {\n {{ value | format : 'date' : { format: 'date' } | async }}\n }\n }\n <!-- ----- Date and time metadata or attribute ----- -->\n @else if (column.format === 'datetime') {\n <!---->\n @if (cellValue(item, column); as value) {\n {{ value | format : 'datetime' : { format: 'datetime' } | async }}\n }\n }\n <!-- ----- Plain text, number, and lookup metadata ----- -->\n @else {\n {{ displayText(cellValue(item, column)) }}\n }\n </div>\n }\n </ng-template>\n }\n <!-- ----- Same context menu as right-click on the folder or document ----- -->\n <ax-text-column\n [caption]=\"''\"\n fixed=\"end\"\n [width]=\"'56px'\"\n [allowSorting]=\"false\"\n [allowResizing]=\"false\"\n [cellTemplate]=\"rowMenuTpl\"\n ></ax-text-column>\n <ng-template #rowMenuTpl let-item>\n <!---->\n @if (gridRow(item)?.node; as node) {\n <button\n type=\"button\"\n class=\"row-more-button __explorer-item\"\n [attr.aria-label]=\"('@document-management:explorer.grid.row-menu' | translate | async)!\"\n [attr.title]=\"('@document-management:explorer.grid.row-menu' | translate | async)!\"\n [axp-data]=\"node\"\n (click)=\"openRowContextMenu($event)\"\n >\n <i class=\"fa-light fa-ellipsis\" aria-hidden=\"true\"></i>\n </button>\n }\n </ng-template>\n </ax-data-table>\n</div>\n\n", styles: ["@layer properties;:host{display:flex;height:100%;min-height:0px;width:100%;max-width:100%;min-width:0px;flex-direction:column}.details-view{display:flex;min-height:0px;width:100%;max-width:100%;min-width:0px;flex:1;flex-direction:column}.details-grid{height:100%;min-height:0px;max-width:100%;min-width:0px;flex:1;overflow:auto}.cell-hit{display:flex;height:100%;min-height:calc(var(--spacing, .25rem) * 8);min-width:0px;align-items:center}.item-name{display:flex;align-items:center;gap:calc(var(--spacing, .25rem) * 2)}.item-name i{font-size:var(--text-xl, 1.25rem);line-height:var(--tw-leading, var(--text-xl--line-height, calc(1.75 / 1.25)))}.item-name .item-icon{position:relative;display:inline-flex}.item-name .item-icon--shortcut .item-icon__shortcut-arrow{position:absolute;bottom:-2px;right:-2px;font-size:.45em;opacity:.9}.row-more-button{display:inline-flex;height:calc(var(--spacing, .25rem) * 8);min-width:calc(var(--spacing, .25rem) * 8);cursor:pointer;align-items:center;justify-content:center;border-style:var(--tw-border-style);border-width:0px;background-color:transparent;padding:0}.row-more-button i{font-size:var(--text-base, 1rem);line-height:var(--tw-leading, var(--text-base--line-height, 1.5 ))}@property --tw-border-style{syntax: \"*\"; inherits: false; initial-value: solid;}@layer properties{@supports ((-webkit-hyphens: none) and (not (margin-trim: inline))) or ((-moz-orient: inline) and (not (color:rgb(from red r g b)))){*,:before,:after,::backdrop{--tw-border-style: solid}}}\n/*! tailwindcss v4.3.3 | MIT License | https://tailwindcss.com */\n"], dependencies: [{ kind: "ngmodule", type: CommonModule }, { kind: "directive", type: AXPElementDataDirective, selector: "[axp-data]", inputs: ["axp-data", "axp-data-path"] }, { kind: "ngmodule", type: AXDataTableModule }, { kind: "component", type: i1.AXDataTableComponent, selector: "ax-data-table", inputs: ["dataSource", "selectedRows", "parentField", "hasChildrenField", "rowDetailsTemplate", "rowCssClass", "cellCssClass", "highlightText", "look", "rowTemplate", "emptyTemplate", "noDataTemplate", "alternative", "showHeader", "fixedHeader", "showFooter", "fixedFooter", "itemHeight", "allowReordering", "paging", "fetchDataMode", "loading", "focusedRow"], outputs: ["selectedRowsChange", "focusedRowChange", "onRowClick", "onRowDbClick", "onColumnsOrderChanged", "onColumnSizeChanged", "onPageChanged"] }, { kind: "component", type: i1.AXDataTableTextColumnComponent, selector: "ax-text-column", inputs: ["width", "caption", "allowSorting", "allowResizing", "fixed", "hasTitle", "customExpandIcon", "customCollapseIcon", "dataField", "expandHandler", "wrapText", "translate", "cellTemplate", "footerTemplate", "headerTemplate", "format", "formatOptions"] }, { kind: "component", type: i1.AXRowIndexColumnComponent, selector: "ax-index-column", inputs: ["width", "caption", "fixed", "footerTemplate", "padZero"] }, { kind: "component", type: i1.AXRowSelectColumnComponent, selector: "ax-select-column", inputs: ["width", "caption", "fixed", "advanceSelect"] }, { kind: "ngmodule", type: AXFormatModule }, { kind: "ngmodule", type: AXDateTimeModule }, { kind: "component", type: AXMDocumentExpirationBadgeComponent, selector: "axm-document-expiration-badge", inputs: ["node"] }, { kind: "component", type: AXMDocumentVersionBadgeComponent, selector: "axm-document-version-badge", inputs: ["node"] }, { kind: "component", type: AXMFolderExpirationBadgesComponent, selector: "axm-folder-expiration-badges", inputs: ["node"] }, { kind: "ngmodule", type: AXTranslationModule }, { kind: "pipe", type: i1$1.AsyncPipe, name: "async" }, { kind: "pipe", type: i2.AXFormatPipe, name: "format" }, { kind: "pipe", type: i3.AXTranslatorPipe, name: "translate" }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
547
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "22.0.8", type: AXMDocumentExplorerDetailsViewComponent, isStandalone: true, selector: "ng-component", ngImport: i0, template: "<!-- ----- Platform data table for homogeneous folder or document rows ----- -->\n<div class=\"details-view\">\n <ax-data-table\n class=\"details-grid\"\n [dataSource]=\"dataSource\"\n [paging]=\"true\"\n [showFooter]=\"false\"\n [fixedHeader]=\"true\"\n [allowReordering]=\"true\"\n [loading]=\"{ enabled: true, animation: true }\"\n [selectedRows]=\"selectedRows()\"\n (selectedRowsChange)=\"handleSelectedRowsChange($event)\"\n (onRowDbClick)=\"handleRowDbClick($event)\"\n >\n <!-- ----- Row number when Experience Show Row Index Column is enabled ----- -->\n @if (showIndexColumn()) {\n <ax-index-column\n [caption]=\"('@general:terms.common.row-number' | translate | async)!\"\n fixed=\"start\"\n [width]=\"'80px'\"\n [padZero]=\"false\"\n ></ax-index-column>\n }\n <!-- ----- Row selection when the explorer allows it ----- -->\n @if (allowSelection()) {\n <ax-select-column fixed=\"start\" [width]=\"'60px'\"></ax-select-column>\n }\n @for (column of columns(); track column.name) {\n <ax-text-column\n [dataField]=\"column.name\"\n [caption]=\"(column.title | translate | async)!\"\n [allowResizing]=\"true\"\n [allowSorting]=\"true\"\n [width]=\"column.name === 'name' ? '280px' : '160px'\"\n [cellTemplate]=\"columnCellTpl\"\n ></ax-text-column>\n <ng-template #columnCellTpl let-item>\n <!---->\n @if (gridRow(item)?.node; as node) {\n <div class=\"cell-hit __explorer-item\" [axp-data]=\"node\">\n <!---->\n @if (column.name === 'name') {\n <!-- ----- Folder or document name with icon and expiration badges ----- -->\n @let nodeDisplay = vm.getNodeDisplayInfo(node);\n <div class=\"item-name\" (dblclick)=\"$event.stopPropagation(); openNode(node)\">\n <!---->\n <!-- ----- Folder loading spinner ----- -->\n @if (node.type === 'folder' && vm.isLoadingFolder(node.id)) {\n <i class=\"fa-light fa-spinner fa-spin-pulse\"></i>\n }\n <!-- ----- Folder or file icon ----- -->\n @else {\n <span\n class=\"item-icon\"\n [class.item-icon--shortcut]=\"nodeDisplay.isShortcut\"\n [style.color]=\"node.type === 'folder' ? vm.getFolderColor(node) : null\"\n >\n <i [class]=\"node.type === 'folder' ? 'fas fa-folder-closed' : ('fa-fw ' + nodeDisplay.icon)\"></i>\n <!---->\n <!-- ----- Shortcut overlay ----- -->\n @if (nodeDisplay.isShortcut) {\n <i class=\"fa-light fa-up-right-from-square item-icon__shortcut-arrow\" aria-hidden=\"true\"></i>\n }\n </span>\n }\n <span>{{ displayText(cellValue(item, column)) }}</span>\n <!---->\n <!-- ----- Folder expiration badges ----- -->\n @if (node.type === 'folder') {\n <axm-folder-expiration-badges [node]=\"node\" />\n }\n <!-- ----- Document expiration badge ----- -->\n @else {\n <axm-document-expiration-badge [node]=\"node\" />\n }\n </div>\n }\n <!-- ----- Document version badge ----- -->\n @else if (column.name === 'version') {\n <axm-document-version-badge [node]=\"node\" />\n }\n <!-- ----- File or folder size ----- -->\n @else if (column.format === 'filesize') {\n {{ cellValue(item, column) | format : 'filesize' | async }}\n }\n <!-- ----- Date-only metadata or attribute ----- -->\n @else if (column.format === 'date') {\n <!---->\n @if (cellValue(item, column); as value) {\n {{ value | format : 'date' : { format: 'date' } | async }}\n }\n }\n <!-- ----- Date and time metadata or attribute ----- -->\n @else if (column.format === 'datetime') {\n <!---->\n @if (cellValue(item, column); as value) {\n {{ value | format : 'datetime' : { format: 'datetime' } | async }}\n }\n }\n <!-- ----- Plain text, number, and lookup metadata ----- -->\n @else {\n {{ displayText(cellValue(item, column)) }}\n }\n </div>\n }\n </ng-template>\n }\n <!-- ----- Same context menu as right-click on the folder or document ----- -->\n <ax-text-column\n [caption]=\"''\"\n fixed=\"end\"\n [width]=\"'56px'\"\n [allowSorting]=\"false\"\n [allowResizing]=\"false\"\n [cellTemplate]=\"rowMenuTpl\"\n ></ax-text-column>\n <ng-template #rowMenuTpl let-item>\n <!---->\n @if (gridRow(item)?.node; as node) {\n <button\n type=\"button\"\n class=\"row-more-button __explorer-item\"\n [attr.aria-label]=\"('@document-management:explorer.grid.row-menu' | translate | async)!\"\n [attr.title]=\"('@document-management:explorer.grid.row-menu' | translate | async)!\"\n [axp-data]=\"node\"\n (click)=\"openRowContextMenu($event)\"\n >\n <i class=\"fa-light fa-ellipsis\" aria-hidden=\"true\"></i>\n </button>\n }\n </ng-template>\n </ax-data-table>\n</div>\n\n", styles: ["@layer properties;:host{display:flex;height:100%;min-height:0px;width:100%;max-width:100%;min-width:0px;flex-direction:column}.details-view{display:flex;min-height:0px;width:100%;max-width:100%;min-width:0px;flex:1;flex-direction:column}.details-grid{height:100%;min-height:0px;max-width:100%;min-width:0px;flex:1;overflow:auto}:host ::ng-deep .details-grid .ax-data-table-head-cell .ax-caption{position:relative}:host ::ng-deep .details-grid .ax-data-table-head-cell .ax-caption:has(>ax-icon.ax-icon-arrow-long-down),:host ::ng-deep .details-grid .ax-data-table-head-cell .ax-caption:has(>ax-icon.ax-icon-arrow-long-up),:host ::ng-deep .details-grid .ax-data-table-head-cell.ax-interactive:hover .ax-caption:not(:has(>ax-icon)),:host ::ng-deep .details-grid .ax-data-table-head-cell.ax-interactive:focus-within .ax-caption:not(:has(>ax-icon)){padding-inline-end:calc(var(--spacing, .25rem) * 5)}:host ::ng-deep .details-grid .ax-data-table-head-cell.ax-interactive:hover .ax-caption:not(:has(>ax-icon)):before,:host ::ng-deep .details-grid .ax-data-table-head-cell.ax-interactive:hover .ax-caption:not(:has(>ax-icon)):after,:host ::ng-deep .details-grid .ax-data-table-head-cell.ax-interactive:focus-within .ax-caption:not(:has(>ax-icon)):before,:host ::ng-deep .details-grid .ax-data-table-head-cell.ax-interactive:focus-within .ax-caption:not(:has(>ax-icon)):after{position:absolute;inset-block:0;z-index:1;display:flex;align-items:center;font-family:\"Font Awesome 6 Pro\"!important;font-weight:900;font-style:normal;font-size:.625rem;line-height:1;color:var(--color-neutral-400, oklch(70.8% 0 none))}:host ::ng-deep .details-grid .ax-data-table-head-cell.ax-interactive:hover .ax-caption:not(:has(>ax-icon)):before,:host ::ng-deep .details-grid .ax-data-table-head-cell.ax-interactive:focus-within .ax-caption:not(:has(>ax-icon)):before{content:\"\\f176\";inset-inline-end:.7rem}:host ::ng-deep .details-grid .ax-data-table-head-cell.ax-interactive:hover .ax-caption:not(:has(>ax-icon)):after,:host ::ng-deep .details-grid .ax-data-table-head-cell.ax-interactive:focus-within .ax-caption:not(:has(>ax-icon)):after{content:\"\\f175\";inset-inline-end:0}:host ::ng-deep .details-grid .ax-data-table-head-cell .ax-caption>ax-icon.ax-icon-arrow-long-down,:host ::ng-deep .details-grid .ax-data-table-head-cell .ax-caption>ax-icon.ax-icon-arrow-long-up{position:absolute;inset-block:0;inset-inline-end:0;z-index:1;width:auto;font-size:.625rem;line-height:1;display:flex!important;align-items:center;gap:calc(var(--spacing, .25rem) * .5);color:var(--color-neutral-400, oklch(70.8% 0 none))}:host ::ng-deep .details-grid .ax-data-table-head-cell .ax-caption>ax-icon.ax-icon-arrow-long-down:before,:host ::ng-deep .details-grid .ax-data-table-head-cell .ax-caption>ax-icon.ax-icon-arrow-long-down:after,:host ::ng-deep .details-grid .ax-data-table-head-cell .ax-caption>ax-icon.ax-icon-arrow-long-up:before,:host ::ng-deep .details-grid .ax-data-table-head-cell .ax-caption>ax-icon.ax-icon-arrow-long-up:after{font-family:\"Font Awesome 6 Pro\"!important;font-weight:900;font-style:normal;font-variant:normal;text-rendering:auto;-webkit-font-smoothing:antialiased;display:block;position:static;left:auto;opacity:1;font-size:.625rem;line-height:1}:host ::ng-deep .details-grid .ax-data-table-head-cell .ax-caption>ax-icon.ax-icon-arrow-long-down:before,:host ::ng-deep .details-grid .ax-data-table-head-cell .ax-caption>ax-icon.ax-icon-arrow-long-up:before{content:\"\\f176\"}:host ::ng-deep .details-grid .ax-data-table-head-cell .ax-caption>ax-icon.ax-icon-arrow-long-down:after,:host ::ng-deep .details-grid .ax-data-table-head-cell .ax-caption>ax-icon.ax-icon-arrow-long-up:after{content:\"\\f175\"}:host ::ng-deep .details-grid .ax-data-table-head-cell .ax-caption>ax-icon.ax-icon-arrow-long-down:before,:host ::ng-deep .details-grid .ax-data-table-head-cell .ax-caption>ax-icon.ax-icon-arrow-long-up:after{color:rgba(var(--ax-sys-color-primary-surface))}.cell-hit{display:flex;height:100%;min-height:calc(var(--spacing, .25rem) * 8);min-width:0px;align-items:center}.item-name{display:flex;align-items:center;gap:calc(var(--spacing, .25rem) * 2)}.item-name i{font-size:var(--text-xl, 1.25rem);line-height:var(--tw-leading, var(--text-xl--line-height, calc(1.75 / 1.25)))}.item-name .item-icon{position:relative;display:inline-flex}.item-name .item-icon--shortcut .item-icon__shortcut-arrow{position:absolute;bottom:-2px;right:-2px;font-size:.45em;opacity:.9}.row-more-button{display:inline-flex;height:calc(var(--spacing, .25rem) * 8);min-width:calc(var(--spacing, .25rem) * 8);cursor:pointer;align-items:center;justify-content:center;border-style:var(--tw-border-style);border-width:0px;background-color:transparent;padding:0}.row-more-button i{font-size:var(--text-base, 1rem);line-height:var(--tw-leading, var(--text-base--line-height, 1.5 ))}@property --tw-border-style{syntax: \"*\"; inherits: false; initial-value: solid;}@layer properties{@supports ((-webkit-hyphens: none) and (not (margin-trim: inline))) or ((-moz-orient: inline) and (not (color:rgb(from red r g b)))){*,:before,:after,::backdrop{--tw-border-style: solid}}}\n/*! tailwindcss v4.3.3 | MIT License | https://tailwindcss.com */\n"], dependencies: [{ kind: "ngmodule", type: CommonModule }, { kind: "directive", type: AXPElementDataDirective, selector: "[axp-data]", inputs: ["axp-data", "axp-data-path"] }, { kind: "ngmodule", type: AXDataTableModule }, { kind: "component", type: i1.AXDataTableComponent, selector: "ax-data-table", inputs: ["dataSource", "selectedRows", "parentField", "hasChildrenField", "rowDetailsTemplate", "rowCssClass", "cellCssClass", "highlightText", "look", "rowTemplate", "emptyTemplate", "noDataTemplate", "alternative", "showHeader", "fixedHeader", "showFooter", "fixedFooter", "itemHeight", "allowReordering", "paging", "fetchDataMode", "loading", "focusedRow"], outputs: ["selectedRowsChange", "focusedRowChange", "onRowClick", "onRowDbClick", "onColumnsOrderChanged", "onColumnSizeChanged", "onPageChanged"] }, { kind: "component", type: i1.AXDataTableTextColumnComponent, selector: "ax-text-column", inputs: ["width", "caption", "allowSorting", "allowResizing", "fixed", "hasTitle", "customExpandIcon", "customCollapseIcon", "dataField", "expandHandler", "wrapText", "translate", "cellTemplate", "footerTemplate", "headerTemplate", "format", "formatOptions"] }, { kind: "component", type: i1.AXRowIndexColumnComponent, selector: "ax-index-column", inputs: ["width", "caption", "fixed", "footerTemplate", "padZero"] }, { kind: "component", type: i1.AXRowSelectColumnComponent, selector: "ax-select-column", inputs: ["width", "caption", "fixed", "advanceSelect"] }, { kind: "ngmodule", type: AXFormatModule }, { kind: "ngmodule", type: AXDateTimeModule }, { kind: "component", type: AXMDocumentExpirationBadgeComponent, selector: "axm-document-expiration-badge", inputs: ["node"] }, { kind: "component", type: AXMDocumentVersionBadgeComponent, selector: "axm-document-version-badge", inputs: ["node"] }, { kind: "component", type: AXMFolderExpirationBadgesComponent, selector: "axm-folder-expiration-badges", inputs: ["node"] }, { kind: "ngmodule", type: AXTranslationModule }, { kind: "pipe", type: i1$1.AsyncPipe, name: "async" }, { kind: "pipe", type: i2.AXFormatPipe, name: "format" }, { kind: "pipe", type: i3.AXTranslatorPipe, name: "translate" }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
529
548
  }
530
549
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "22.0.8", ngImport: i0, type: AXMDocumentExplorerDetailsViewComponent, decorators: [{
531
550
  type: Component,
@@ -539,8 +558,8 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "22.0.8", ngImpor
539
558
  AXMDocumentVersionBadgeComponent,
540
559
  AXMFolderExpirationBadgesComponent,
541
560
  AXTranslationModule,
542
- ], template: "<!-- ----- Platform data table for homogeneous folder or document rows ----- -->\n<div class=\"details-view\">\n <ax-data-table\n class=\"details-grid\"\n [dataSource]=\"dataSource\"\n [paging]=\"true\"\n [showFooter]=\"false\"\n [fixedHeader]=\"true\"\n [allowReordering]=\"true\"\n [loading]=\"{ enabled: true, animation: true }\"\n [selectedRows]=\"selectedRows()\"\n (selectedRowsChange)=\"handleSelectedRowsChange($event)\"\n (onRowDbClick)=\"handleRowDbClick($event)\"\n >\n <!-- ----- Row number when Experience Show Row Index Column is enabled ----- -->\n @if (showIndexColumn()) {\n <ax-index-column\n [caption]=\"('@general:terms.common.row-number' | translate | async)!\"\n fixed=\"start\"\n [width]=\"'80px'\"\n [padZero]=\"false\"\n ></ax-index-column>\n }\n <!-- ----- Row selection when the explorer allows it ----- -->\n @if (allowSelection()) {\n <ax-select-column fixed=\"start\" [width]=\"'60px'\"></ax-select-column>\n }\n @for (column of columns(); track column.name) {\n <ax-text-column\n [dataField]=\"column.name\"\n [caption]=\"(column.title | translate | async)!\"\n [allowResizing]=\"true\"\n [allowSorting]=\"true\"\n [width]=\"column.name === 'name' ? '280px' : '160px'\"\n [fixed]=\"column.name === 'name' ? 'start' : null\"\n [cellTemplate]=\"columnCellTpl\"\n ></ax-text-column>\n <ng-template #columnCellTpl let-item>\n <!---->\n @if (gridRow(item)?.node; as node) {\n <div class=\"cell-hit __explorer-item\" [axp-data]=\"node\">\n <!---->\n @if (column.name === 'name') {\n <!-- ----- Folder or document name with icon and expiration badges ----- -->\n @let nodeDisplay = vm.getNodeDisplayInfo(node);\n <div class=\"item-name\" (dblclick)=\"$event.stopPropagation(); openNode(node)\">\n <!---->\n <!-- ----- Folder loading spinner ----- -->\n @if (node.type === 'folder' && vm.isLoadingFolder(node.id)) {\n <i class=\"fa-light fa-spinner fa-spin-pulse\"></i>\n }\n <!-- ----- Folder or file icon ----- -->\n @else {\n <span\n class=\"item-icon\"\n [class.item-icon--shortcut]=\"nodeDisplay.isShortcut\"\n [style.color]=\"node.type === 'folder' ? vm.getFolderColor(node) : null\"\n >\n <i [class]=\"node.type === 'folder' ? 'fas fa-folder-closed' : ('fa-fw ' + nodeDisplay.icon)\"></i>\n <!---->\n <!-- ----- Shortcut overlay ----- -->\n @if (nodeDisplay.isShortcut) {\n <i class=\"fa-light fa-up-right-from-square item-icon__shortcut-arrow\" aria-hidden=\"true\"></i>\n }\n </span>\n }\n <span>{{ displayText(cellValue(item, column)) }}</span>\n <!---->\n <!-- ----- Folder expiration badges ----- -->\n @if (node.type === 'folder') {\n <axm-folder-expiration-badges [node]=\"node\" />\n }\n <!-- ----- Document expiration badge ----- -->\n @else {\n <axm-document-expiration-badge [node]=\"node\" />\n }\n </div>\n }\n <!-- ----- Document version badge ----- -->\n @else if (column.name === 'version') {\n <axm-document-version-badge [node]=\"node\" />\n }\n <!-- ----- File or folder size ----- -->\n @else if (column.format === 'filesize') {\n {{ cellValue(item, column) | format : 'filesize' | async }}\n }\n <!-- ----- Date-only metadata or attribute ----- -->\n @else if (column.format === 'date') {\n <!---->\n @if (cellValue(item, column); as value) {\n {{ value | format : 'date' : { format: 'date' } | async }}\n }\n }\n <!-- ----- Date and time metadata or attribute ----- -->\n @else if (column.format === 'datetime') {\n <!---->\n @if (cellValue(item, column); as value) {\n {{ value | format : 'datetime' : { format: 'datetime' } | async }}\n }\n }\n <!-- ----- Plain text, number, and lookup metadata ----- -->\n @else {\n {{ displayText(cellValue(item, column)) }}\n }\n </div>\n }\n </ng-template>\n }\n <!-- ----- Same context menu as right-click on the folder or document ----- -->\n <ax-text-column\n [caption]=\"''\"\n fixed=\"end\"\n [width]=\"'56px'\"\n [allowSorting]=\"false\"\n [allowResizing]=\"false\"\n [cellTemplate]=\"rowMenuTpl\"\n ></ax-text-column>\n <ng-template #rowMenuTpl let-item>\n <!---->\n @if (gridRow(item)?.node; as node) {\n <button\n type=\"button\"\n class=\"row-more-button __explorer-item\"\n [attr.aria-label]=\"('@document-management:explorer.grid.row-menu' | translate | async)!\"\n [attr.title]=\"('@document-management:explorer.grid.row-menu' | translate | async)!\"\n [axp-data]=\"node\"\n (click)=\"openRowContextMenu($event)\"\n >\n <i class=\"fa-light fa-ellipsis\" aria-hidden=\"true\"></i>\n </button>\n }\n </ng-template>\n </ax-data-table>\n</div>\n\n", styles: ["@layer properties;:host{display:flex;height:100%;min-height:0px;width:100%;max-width:100%;min-width:0px;flex-direction:column}.details-view{display:flex;min-height:0px;width:100%;max-width:100%;min-width:0px;flex:1;flex-direction:column}.details-grid{height:100%;min-height:0px;max-width:100%;min-width:0px;flex:1;overflow:auto}.cell-hit{display:flex;height:100%;min-height:calc(var(--spacing, .25rem) * 8);min-width:0px;align-items:center}.item-name{display:flex;align-items:center;gap:calc(var(--spacing, .25rem) * 2)}.item-name i{font-size:var(--text-xl, 1.25rem);line-height:var(--tw-leading, var(--text-xl--line-height, calc(1.75 / 1.25)))}.item-name .item-icon{position:relative;display:inline-flex}.item-name .item-icon--shortcut .item-icon__shortcut-arrow{position:absolute;bottom:-2px;right:-2px;font-size:.45em;opacity:.9}.row-more-button{display:inline-flex;height:calc(var(--spacing, .25rem) * 8);min-width:calc(var(--spacing, .25rem) * 8);cursor:pointer;align-items:center;justify-content:center;border-style:var(--tw-border-style);border-width:0px;background-color:transparent;padding:0}.row-more-button i{font-size:var(--text-base, 1rem);line-height:var(--tw-leading, var(--text-base--line-height, 1.5 ))}@property --tw-border-style{syntax: \"*\"; inherits: false; initial-value: solid;}@layer properties{@supports ((-webkit-hyphens: none) and (not (margin-trim: inline))) or ((-moz-orient: inline) and (not (color:rgb(from red r g b)))){*,:before,:after,::backdrop{--tw-border-style: solid}}}\n/*! tailwindcss v4.3.3 | MIT License | https://tailwindcss.com */\n"] }]
561
+ ], template: "<!-- ----- Platform data table for homogeneous folder or document rows ----- -->\n<div class=\"details-view\">\n <ax-data-table\n class=\"details-grid\"\n [dataSource]=\"dataSource\"\n [paging]=\"true\"\n [showFooter]=\"false\"\n [fixedHeader]=\"true\"\n [allowReordering]=\"true\"\n [loading]=\"{ enabled: true, animation: true }\"\n [selectedRows]=\"selectedRows()\"\n (selectedRowsChange)=\"handleSelectedRowsChange($event)\"\n (onRowDbClick)=\"handleRowDbClick($event)\"\n >\n <!-- ----- Row number when Experience Show Row Index Column is enabled ----- -->\n @if (showIndexColumn()) {\n <ax-index-column\n [caption]=\"('@general:terms.common.row-number' | translate | async)!\"\n fixed=\"start\"\n [width]=\"'80px'\"\n [padZero]=\"false\"\n ></ax-index-column>\n }\n <!-- ----- Row selection when the explorer allows it ----- -->\n @if (allowSelection()) {\n <ax-select-column fixed=\"start\" [width]=\"'60px'\"></ax-select-column>\n }\n @for (column of columns(); track column.name) {\n <ax-text-column\n [dataField]=\"column.name\"\n [caption]=\"(column.title | translate | async)!\"\n [allowResizing]=\"true\"\n [allowSorting]=\"true\"\n [width]=\"column.name === 'name' ? '280px' : '160px'\"\n [cellTemplate]=\"columnCellTpl\"\n ></ax-text-column>\n <ng-template #columnCellTpl let-item>\n <!---->\n @if (gridRow(item)?.node; as node) {\n <div class=\"cell-hit __explorer-item\" [axp-data]=\"node\">\n <!---->\n @if (column.name === 'name') {\n <!-- ----- Folder or document name with icon and expiration badges ----- -->\n @let nodeDisplay = vm.getNodeDisplayInfo(node);\n <div class=\"item-name\" (dblclick)=\"$event.stopPropagation(); openNode(node)\">\n <!---->\n <!-- ----- Folder loading spinner ----- -->\n @if (node.type === 'folder' && vm.isLoadingFolder(node.id)) {\n <i class=\"fa-light fa-spinner fa-spin-pulse\"></i>\n }\n <!-- ----- Folder or file icon ----- -->\n @else {\n <span\n class=\"item-icon\"\n [class.item-icon--shortcut]=\"nodeDisplay.isShortcut\"\n [style.color]=\"node.type === 'folder' ? vm.getFolderColor(node) : null\"\n >\n <i [class]=\"node.type === 'folder' ? 'fas fa-folder-closed' : ('fa-fw ' + nodeDisplay.icon)\"></i>\n <!---->\n <!-- ----- Shortcut overlay ----- -->\n @if (nodeDisplay.isShortcut) {\n <i class=\"fa-light fa-up-right-from-square item-icon__shortcut-arrow\" aria-hidden=\"true\"></i>\n }\n </span>\n }\n <span>{{ displayText(cellValue(item, column)) }}</span>\n <!---->\n <!-- ----- Folder expiration badges ----- -->\n @if (node.type === 'folder') {\n <axm-folder-expiration-badges [node]=\"node\" />\n }\n <!-- ----- Document expiration badge ----- -->\n @else {\n <axm-document-expiration-badge [node]=\"node\" />\n }\n </div>\n }\n <!-- ----- Document version badge ----- -->\n @else if (column.name === 'version') {\n <axm-document-version-badge [node]=\"node\" />\n }\n <!-- ----- File or folder size ----- -->\n @else if (column.format === 'filesize') {\n {{ cellValue(item, column) | format : 'filesize' | async }}\n }\n <!-- ----- Date-only metadata or attribute ----- -->\n @else if (column.format === 'date') {\n <!---->\n @if (cellValue(item, column); as value) {\n {{ value | format : 'date' : { format: 'date' } | async }}\n }\n }\n <!-- ----- Date and time metadata or attribute ----- -->\n @else if (column.format === 'datetime') {\n <!---->\n @if (cellValue(item, column); as value) {\n {{ value | format : 'datetime' : { format: 'datetime' } | async }}\n }\n }\n <!-- ----- Plain text, number, and lookup metadata ----- -->\n @else {\n {{ displayText(cellValue(item, column)) }}\n }\n </div>\n }\n </ng-template>\n }\n <!-- ----- Same context menu as right-click on the folder or document ----- -->\n <ax-text-column\n [caption]=\"''\"\n fixed=\"end\"\n [width]=\"'56px'\"\n [allowSorting]=\"false\"\n [allowResizing]=\"false\"\n [cellTemplate]=\"rowMenuTpl\"\n ></ax-text-column>\n <ng-template #rowMenuTpl let-item>\n <!---->\n @if (gridRow(item)?.node; as node) {\n <button\n type=\"button\"\n class=\"row-more-button __explorer-item\"\n [attr.aria-label]=\"('@document-management:explorer.grid.row-menu' | translate | async)!\"\n [attr.title]=\"('@document-management:explorer.grid.row-menu' | translate | async)!\"\n [axp-data]=\"node\"\n (click)=\"openRowContextMenu($event)\"\n >\n <i class=\"fa-light fa-ellipsis\" aria-hidden=\"true\"></i>\n </button>\n }\n </ng-template>\n </ax-data-table>\n</div>\n\n", styles: ["@layer properties;:host{display:flex;height:100%;min-height:0px;width:100%;max-width:100%;min-width:0px;flex-direction:column}.details-view{display:flex;min-height:0px;width:100%;max-width:100%;min-width:0px;flex:1;flex-direction:column}.details-grid{height:100%;min-height:0px;max-width:100%;min-width:0px;flex:1;overflow:auto}:host ::ng-deep .details-grid .ax-data-table-head-cell .ax-caption{position:relative}:host ::ng-deep .details-grid .ax-data-table-head-cell .ax-caption:has(>ax-icon.ax-icon-arrow-long-down),:host ::ng-deep .details-grid .ax-data-table-head-cell .ax-caption:has(>ax-icon.ax-icon-arrow-long-up),:host ::ng-deep .details-grid .ax-data-table-head-cell.ax-interactive:hover .ax-caption:not(:has(>ax-icon)),:host ::ng-deep .details-grid .ax-data-table-head-cell.ax-interactive:focus-within .ax-caption:not(:has(>ax-icon)){padding-inline-end:calc(var(--spacing, .25rem) * 5)}:host ::ng-deep .details-grid .ax-data-table-head-cell.ax-interactive:hover .ax-caption:not(:has(>ax-icon)):before,:host ::ng-deep .details-grid .ax-data-table-head-cell.ax-interactive:hover .ax-caption:not(:has(>ax-icon)):after,:host ::ng-deep .details-grid .ax-data-table-head-cell.ax-interactive:focus-within .ax-caption:not(:has(>ax-icon)):before,:host ::ng-deep .details-grid .ax-data-table-head-cell.ax-interactive:focus-within .ax-caption:not(:has(>ax-icon)):after{position:absolute;inset-block:0;z-index:1;display:flex;align-items:center;font-family:\"Font Awesome 6 Pro\"!important;font-weight:900;font-style:normal;font-size:.625rem;line-height:1;color:var(--color-neutral-400, oklch(70.8% 0 none))}:host ::ng-deep .details-grid .ax-data-table-head-cell.ax-interactive:hover .ax-caption:not(:has(>ax-icon)):before,:host ::ng-deep .details-grid .ax-data-table-head-cell.ax-interactive:focus-within .ax-caption:not(:has(>ax-icon)):before{content:\"\\f176\";inset-inline-end:.7rem}:host ::ng-deep .details-grid .ax-data-table-head-cell.ax-interactive:hover .ax-caption:not(:has(>ax-icon)):after,:host ::ng-deep .details-grid .ax-data-table-head-cell.ax-interactive:focus-within .ax-caption:not(:has(>ax-icon)):after{content:\"\\f175\";inset-inline-end:0}:host ::ng-deep .details-grid .ax-data-table-head-cell .ax-caption>ax-icon.ax-icon-arrow-long-down,:host ::ng-deep .details-grid .ax-data-table-head-cell .ax-caption>ax-icon.ax-icon-arrow-long-up{position:absolute;inset-block:0;inset-inline-end:0;z-index:1;width:auto;font-size:.625rem;line-height:1;display:flex!important;align-items:center;gap:calc(var(--spacing, .25rem) * .5);color:var(--color-neutral-400, oklch(70.8% 0 none))}:host ::ng-deep .details-grid .ax-data-table-head-cell .ax-caption>ax-icon.ax-icon-arrow-long-down:before,:host ::ng-deep .details-grid .ax-data-table-head-cell .ax-caption>ax-icon.ax-icon-arrow-long-down:after,:host ::ng-deep .details-grid .ax-data-table-head-cell .ax-caption>ax-icon.ax-icon-arrow-long-up:before,:host ::ng-deep .details-grid .ax-data-table-head-cell .ax-caption>ax-icon.ax-icon-arrow-long-up:after{font-family:\"Font Awesome 6 Pro\"!important;font-weight:900;font-style:normal;font-variant:normal;text-rendering:auto;-webkit-font-smoothing:antialiased;display:block;position:static;left:auto;opacity:1;font-size:.625rem;line-height:1}:host ::ng-deep .details-grid .ax-data-table-head-cell .ax-caption>ax-icon.ax-icon-arrow-long-down:before,:host ::ng-deep .details-grid .ax-data-table-head-cell .ax-caption>ax-icon.ax-icon-arrow-long-up:before{content:\"\\f176\"}:host ::ng-deep .details-grid .ax-data-table-head-cell .ax-caption>ax-icon.ax-icon-arrow-long-down:after,:host ::ng-deep .details-grid .ax-data-table-head-cell .ax-caption>ax-icon.ax-icon-arrow-long-up:after{content:\"\\f175\"}:host ::ng-deep .details-grid .ax-data-table-head-cell .ax-caption>ax-icon.ax-icon-arrow-long-down:before,:host ::ng-deep .details-grid .ax-data-table-head-cell .ax-caption>ax-icon.ax-icon-arrow-long-up:after{color:rgba(var(--ax-sys-color-primary-surface))}.cell-hit{display:flex;height:100%;min-height:calc(var(--spacing, .25rem) * 8);min-width:0px;align-items:center}.item-name{display:flex;align-items:center;gap:calc(var(--spacing, .25rem) * 2)}.item-name i{font-size:var(--text-xl, 1.25rem);line-height:var(--tw-leading, var(--text-xl--line-height, calc(1.75 / 1.25)))}.item-name .item-icon{position:relative;display:inline-flex}.item-name .item-icon--shortcut .item-icon__shortcut-arrow{position:absolute;bottom:-2px;right:-2px;font-size:.45em;opacity:.9}.row-more-button{display:inline-flex;height:calc(var(--spacing, .25rem) * 8);min-width:calc(var(--spacing, .25rem) * 8);cursor:pointer;align-items:center;justify-content:center;border-style:var(--tw-border-style);border-width:0px;background-color:transparent;padding:0}.row-more-button i{font-size:var(--text-base, 1rem);line-height:var(--tw-leading, var(--text-base--line-height, 1.5 ))}@property --tw-border-style{syntax: \"*\"; inherits: false; initial-value: solid;}@layer properties{@supports ((-webkit-hyphens: none) and (not (margin-trim: inline))) or ((-moz-orient: inline) and (not (color:rgb(from red r g b)))){*,:before,:after,::backdrop{--tw-border-style: solid}}}\n/*! tailwindcss v4.3.3 | MIT License | https://tailwindcss.com */\n"] }]
543
562
  }], ctorParameters: () => [] });
544
563
 
545
564
  export { AXMDocumentExplorerDetailsViewComponent };
546
- //# sourceMappingURL=acorex-platform-module-document-management-client-details-view.component-DUl9ET3T.mjs.map
565
+ //# sourceMappingURL=acorex-platform-module-document-management-client-details-view.component-D3Jx-JvU.mjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"acorex-platform-module-document-management-client-details-view.component-D3Jx-JvU.mjs","sources":["../../../../libs/modules/document-management/client/src/lib/features/document-explorer/views/details/details-view.component.ts","../../../../libs/modules/document-management/client/src/lib/features/document-explorer/views/details/details-view.component.html"],"sourcesContent":["//#region ----- Imports -----\n\nimport { RootConfig } from '@acorex-platform/module-document-management-client/contracts';\nimport { AXPCommonSettings, AXPSettingsService } from '@acorex-platform/framework-client/common';\nimport { AXPElementDataDirective } from '@acorex-platform/framework-client/core';\nimport { AXPEntityService } from '@acorex-platform/framework-client/layout/entity';\nimport { AXDataSource, AXDataSourceQuery, AXDataSourceSortOption } from '@acorex/cdk/common';\nimport { AXDataTableModule, AXDataTableRowDbClick } from '@acorex/components/data-table';\nimport { AXFormatModule } from '@acorex/core/format';\nimport { AXDateTimeModule } from '@acorex/core/date-time';\nimport { AXTranslationModule, AXTranslationService } from '@acorex/core/translation';\nimport type { AXMMetaDataBuilderValue } from '@acorex-platform/module-data-management-client/contracts';\nimport { CommonModule } from '@angular/common';\nimport {\n ChangeDetectionStrategy,\n Component,\n computed,\n DestroyRef,\n effect,\n inject,\n signal,\n} from '@angular/core';\nimport { takeUntilDestroyed } from '@angular/core/rxjs-interop';\nimport { isEqual } from 'lodash-es';\nimport { AXMDocumentExpirationBadgeComponent } from '../../../shared/components/document-expiration-badge/document-expiration-badge.component';\nimport { AXMDocumentVersionBadgeComponent } from '../../../shared/components/document-version-badge/document-version-badge.component';\nimport { AXMFolderExpirationBadgesComponent } from '../../../shared/components/folder-expiration-badges/folder-expiration-badges.component';\nimport { AXMDocumentExplorerNode } from '../../../shared/document-manager.types';\nimport {\n collectDocumentScopedMetaDataList,\n collectFolderScopedMetaDataList,\n mergeMetaDataLists,\n} from '../../../shared/folder-metadata.util';\nimport {\n collectDocumentTypeIds,\n collectDocumentTypeNames,\n collectLookupKeys,\n flattenMetaDataColumns,\n readNodeMetaDataValue,\n type HomogeneousGridColumn,\n} from '../../../shared/homogeneous-folder-grid.util';\nimport { AXPDocumentExplorerViewModel } from '../../document-explorer.viewmodel';\n\n//#endregion\n\n//#region ----- Types -----\n\ntype ExplorerGridRow = Record<string, unknown> & {\n id: string;\n node: AXMDocumentExplorerNode;\n};\n\ntype LookupRow = {\n id: string;\n displayName?: unknown;\n title?: unknown;\n name?: unknown;\n username?: unknown;\n};\n\n//#endregion\n\n//#region ----- Component -----\n\n@Component({\n templateUrl: './details-view.component.html',\n styleUrls: ['./details-view.component.css'],\n standalone: true,\n changeDetection: ChangeDetectionStrategy.OnPush,\n imports: [\n CommonModule,\n AXPElementDataDirective,\n AXDataTableModule,\n AXFormatModule,\n AXDateTimeModule,\n AXMDocumentExpirationBadgeComponent,\n AXMDocumentVersionBadgeComponent,\n AXMFolderExpirationBadgesComponent,\n AXTranslationModule,\n ],\n})\nexport class AXMDocumentExplorerDetailsViewComponent {\n //#region ----- Services & Dependencies -----\n\n protected readonly vm = inject(AXPDocumentExplorerViewModel);\n private readonly entityService = inject(AXPEntityService);\n private readonly translationService = inject(AXTranslationService);\n private readonly settingsService = inject(AXPSettingsService);\n private readonly destroyRef = inject(DestroyRef);\n private readonly documentTypeData = this.entityService\n .withEntity(RootConfig.module.name, RootConfig.entities.documentType.name)\n .data<string, { id: string; name?: string; metaDataList?: AXMMetaDataBuilderValue }>();\n\n //#endregion\n\n //#region ----- State Signals -----\n\n private readonly metadataColumns = signal<HomogeneousGridColumn[]>([]);\n private readonly lookupLabels = signal<Record<string, string>>({});\n private readonly showRowIndexColumnEnabled = signal(false);\n\n //#endregion\n\n //#region ----- Computed Properties -----\n\n protected readonly showIndexColumn = computed(() => this.showRowIndexColumnEnabled());\n\n protected readonly attributeColumns = computed<HomogeneousGridColumn[]>(() => {\n const kind = this.vm.homogeneousGrid()?.kind;\n if (kind === 'folder') {\n return [\n { name: 'name', title: '@general:terms.common.name', kind: 'attribute' },\n { name: 'description', title: '@general:terms.common.description', kind: 'attribute' },\n { name: 'items', title: '@document-management:explorer.grid.columns.items', kind: 'attribute', format: 'number' },\n { name: 'size', title: '@document-management:terms.common.size', kind: 'attribute', format: 'filesize' },\n { name: 'modifiedAt', title: '@document-management:terms.timestamps.modified-at', kind: 'attribute', format: 'datetime' },\n ];\n }\n return [\n { name: 'name', title: '@general:terms.common.title', kind: 'attribute' },\n { name: 'description', title: '@general:terms.common.description', kind: 'attribute' },\n { name: 'size', title: '@document-management:terms.common.size', kind: 'attribute', format: 'filesize' },\n { name: 'expirationDate', title: '@document-management:terms.document.expire-date', kind: 'attribute', format: 'date' },\n { name: 'version', title: '@document-management:terms.common.version', kind: 'attribute' },\n { name: 'modifiedAt', title: '@document-management:terms.timestamps.modified-at', kind: 'attribute', format: 'datetime' },\n ];\n });\n\n protected readonly columns = computed(() => [...this.attributeColumns(), ...this.metadataColumns()]);\n\n protected readonly gridNodes = computed<AXMDocumentExplorerNode[]>(() => {\n const kind = this.vm.homogeneousGrid()?.kind;\n if (kind === 'folder') {\n return this.vm.filteredFolders();\n }\n if (kind === 'document') {\n return this.vm.filteredFiles();\n }\n return [...this.vm.filteredFolders(), ...this.vm.filteredFiles()];\n });\n\n protected readonly gridRows = computed<ExplorerGridRow[]>(() => {\n const columns = this.columns();\n return this.gridNodes().map((node) => {\n const row: ExplorerGridRow = {\n ...this.flattenForm(node.metaDataForm),\n id: node.id,\n node,\n };\n for (const column of columns) {\n const raw =\n column.kind === 'metadata'\n ? (this.metadataValue(node, column) ?? row[column.name])\n : this.attributeValue(node, column);\n row[column.name] = this.sortableValue(raw, column);\n }\n return row;\n });\n });\n\n protected readonly selectedRows = computed(() => {\n const selectedIds = new Set(this.vm.selectedNodes().map((node) => node.id));\n return this.gridRows().filter((row) => selectedIds.has(row.id));\n });\n\n protected readonly allowSelection = computed(() => this.vm.selectionMode() !== 'none');\n\n //#endregion\n\n //#region ----- Data Source -----\n\n protected readonly dataSource = new AXDataSource<ExplorerGridRow>({\n key: 'id',\n pageSize: 20,\n load: async (query: AXDataSourceQuery) => {\n let rows = [...this.gridRows()];\n const search = this.extractSearchText(query.filter);\n if (search) {\n const needle = search.toLowerCase();\n rows = rows.filter((row) =>\n this.columns().some((column) => String(row[column.name] ?? '').toLowerCase().includes(needle)),\n );\n }\n const sort = this.keepExclusiveSort(query);\n if (sort?.field) {\n const field = sort.field;\n const direction = sort.dir === 'desc' ? -1 : 1;\n rows.sort((left, right) => this.compareValues(left[field], right[field]) * direction);\n }\n const skip = query.skip ?? 0;\n const take = query.take ?? 20;\n return { items: rows.slice(skip, skip + take), total: rows.length };\n },\n });\n\n //#endregion\n\n //#region ----- Lifecycle -----\n\n constructor() {\n void this.syncShowRowIndexColumnSetting();\n this.settingsService.onLoaded.pipe(takeUntilDestroyed(this.destroyRef)).subscribe(() => {\n void this.syncShowRowIndexColumnSetting();\n });\n this.settingsService.onChanged.pipe(takeUntilDestroyed(this.destroyRef)).subscribe(() => {\n void this.syncShowRowIndexColumnSetting();\n });\n\n effect(() => {\n const match = this.vm.homogeneousGrid();\n const nodes = this.gridNodes();\n void this.loadMetadataColumns(match?.kind ?? null, nodes);\n });\n\n effect(() => {\n const columns = this.metadataColumns();\n const nodes = this.gridNodes();\n void this.loadLookupLabels(columns, nodes);\n });\n\n effect(() => {\n this.gridRows();\n this.dataSource.refresh();\n });\n }\n\n //#endregion\n\n //#region ----- Event Handlers -----\n\n protected handleSelectedRowsChange(rows: unknown[]): void {\n const next = (rows ?? [])\n .map(\n (row) =>\n this.asGridRow(row)?.node ?? this.gridRow(row)?.node ?? this.nodeById(this.readRowId(row)),\n )\n .filter((node): node is AXMDocumentExplorerNode => node != null);\n const current = this.vm.selectedNodes();\n if (isEqual(current.map((node) => node.id), next.map((node) => node.id))) {\n return;\n }\n this.vm.setSelectedNodes(next);\n }\n\n protected handleRowDbClick(event: AXDataTableRowDbClick): void {\n this.openNode(this.nodeFromTableEvent(event));\n }\n\n protected openNode(node: AXMDocumentExplorerNode | null | undefined): void {\n if (!node) {\n return;\n }\n if (node.type === 'folder') {\n this.vm.navigateToFolder(node.id);\n return;\n }\n void this.vm.openFileOnDoubleClick(node);\n }\n\n protected openRowContextMenu(event: MouseEvent): void {\n event.preventDefault();\n event.stopPropagation();\n const host = event.currentTarget instanceof HTMLElement ? event.currentTarget : null;\n if (!host) {\n return;\n }\n host.dispatchEvent(\n new MouseEvent('contextmenu', {\n bubbles: true,\n cancelable: true,\n clientX: event.clientX,\n clientY: event.clientY,\n view: window,\n }),\n );\n }\n\n //#endregion\n\n //#region ----- Display -----\n\n protected gridRow(item: unknown): ExplorerGridRow | null {\n if (item == null || typeof item !== 'object') {\n return null;\n }\n const wrapped = item as { data?: unknown };\n return this.asGridRow(wrapped.data) ?? this.asGridRow(item);\n }\n\n protected cellValue(item: unknown, column: HomogeneousGridColumn): unknown {\n const row = this.gridRow(item);\n if (row && Object.prototype.hasOwnProperty.call(row, column.name)) {\n return row[column.name];\n }\n if (item == null || typeof item !== 'object') {\n return undefined;\n }\n const wrapped = item as { data?: Record<string, unknown>; value?: unknown };\n if (wrapped.data && typeof wrapped.data === 'object' && Object.prototype.hasOwnProperty.call(wrapped.data, column.name)) {\n return wrapped.data[column.name];\n }\n if (Object.prototype.hasOwnProperty.call(item, column.name)) {\n return (item as Record<string, unknown>)[column.name];\n }\n if ('value' in wrapped) {\n return wrapped.value;\n }\n return undefined;\n }\n\n protected attributeValue(node: AXMDocumentExplorerNode, column: HomogeneousGridColumn): unknown {\n switch (column.name) {\n case 'name':\n return node.type === 'file' ? node.title || node.name : node.name;\n case 'description':\n return node.description;\n case 'items':\n return node.itemsCount ?? node.childrenCount ?? node.children?.length ?? 0;\n case 'size':\n return node.size || 0;\n case 'expirationDate':\n return node.expirationDate;\n case 'version':\n return node.version;\n case 'modifiedAt':\n return node.modifiedAt ?? this.auditAt(node, 'updated') ?? this.auditAt(node, 'created');\n default:\n return undefined;\n }\n }\n\n protected metadataValue(node: AXMDocumentExplorerNode, column: HomogeneousGridColumn): unknown {\n const raw = readNodeMetaDataValue(node, column.name);\n if (!column.lookup) {\n return raw;\n }\n return this.resolveLookupDisplay(raw, column);\n }\n\n protected displayText(value: unknown): string {\n if (value == null || value === '') {\n return '';\n }\n if (typeof value === 'string' || typeof value === 'number' || typeof value === 'boolean') {\n return String(value);\n }\n if (Array.isArray(value)) {\n return value.map((item) => this.displayText(item)).filter(Boolean).join(', ');\n }\n if (typeof value === 'object') {\n const row = value as Record<string, unknown>;\n const title =\n row['displayName'] ?? row['title'] ?? row['displayTitle'] ?? row['name'] ?? row['text'] ?? row['username'];\n if (title != null) {\n return this.translationService.resolve(title as never) ?? this.displayText(title);\n }\n return this.translationService.resolve(value as never) ?? '';\n }\n return String(value);\n }\n\n //#endregion\n\n //#region ----- Data Loading -----\n\n private async loadMetadataColumns(\n kind: 'folder' | 'document' | null,\n nodes: AXMDocumentExplorerNode[],\n ): Promise<void> {\n if (!kind || nodes.length === 0) {\n this.metadataColumns.set([]);\n return;\n }\n try {\n const types = await this.loadDocumentTypes(nodes);\n if (types.length === 0) {\n this.metadataColumns.set([]);\n return;\n }\n const list =\n kind === 'folder'\n ? collectFolderScopedMetaDataList(types)\n : mergeMetaDataLists(types.map((type) => collectDocumentScopedMetaDataList(type?.metaDataList)));\n this.metadataColumns.set(\n flattenMetaDataColumns(list, (title) => this.translationService.resolve(title as never) ?? ''),\n );\n } catch {\n this.metadataColumns.set([]);\n }\n }\n\n private async loadLookupLabels(\n columns: HomogeneousGridColumn[],\n nodes: AXMDocumentExplorerNode[],\n ): Promise<void> {\n const lookupColumns = columns.filter((column) => column.lookup?.entity);\n if (lookupColumns.length === 0 || nodes.length === 0) {\n if (Object.keys(this.lookupLabels()).length > 0) {\n this.lookupLabels.set({});\n }\n return;\n }\n\n const idsByEntity = new Map<string, { textField: string; ids: Set<string> }>();\n for (const column of lookupColumns) {\n const lookup = column.lookup;\n if (!lookup) {\n continue;\n }\n const bucket = idsByEntity.get(lookup.entity) ?? { textField: lookup.textField, ids: new Set<string>() };\n for (const node of nodes) {\n for (const id of collectLookupKeys(readNodeMetaDataValue(node, column.name), lookup.valueField)) {\n bucket.ids.add(id);\n }\n }\n idsByEntity.set(lookup.entity, bucket);\n }\n\n const labels: Record<string, string> = {};\n for (const [entityName, bucket] of idsByEntity) {\n const ids = [...bucket.ids];\n if (ids.length === 0) {\n continue;\n }\n const [moduleName, entity] = entityName.split('.');\n if (!moduleName || !entity) {\n continue;\n }\n try {\n const data = this.entityService\n .withEntity(moduleName, entity)\n .data<string, LookupRow>();\n const result = await data.query({\n skip: 0,\n take: Math.max(ids.length, 1),\n filter: { field: 'id', operator: { type: 'in' }, value: ids },\n });\n for (const row of result?.items ?? []) {\n const id = typeof row.id === 'string' ? row.id : '';\n if (!id) {\n continue;\n }\n const text = this.lookupLabelFromRow(row, bucket.textField);\n if (text) {\n labels[id] = text;\n }\n }\n } catch {\n // Keep the raw stored id when the lookup entity cannot be loaded.\n }\n }\n\n if (!isEqual(this.lookupLabels(), labels)) {\n this.lookupLabels.set(labels);\n }\n }\n\n //#endregion\n\n //#region ----- Helpers -----\n\n private async loadDocumentTypes(\n nodes: AXMDocumentExplorerNode[],\n ): Promise<Array<{ id?: string; name?: string; metaDataList?: AXMMetaDataBuilderValue }>> {\n const loaded: Array<{ id?: string; name?: string; metaDataList?: AXMMetaDataBuilderValue }> = [];\n const seen = new Set<string>();\n const remember = (type: { id?: string; name?: string; metaDataList?: AXMMetaDataBuilderValue } | null | undefined) => {\n if (!type) {\n return;\n }\n const key = String(type.id ?? type.name ?? '').trim();\n if (!key || seen.has(key)) {\n return;\n }\n seen.add(key);\n if (type.name) {\n seen.add(type.name);\n }\n loaded.push(type);\n };\n\n for (const id of collectDocumentTypeIds(nodes)) {\n try {\n remember(await this.documentTypeData.byKey(id));\n } catch {\n /* keep looking by name */\n }\n }\n\n const missingNames = collectDocumentTypeNames(nodes).filter((name) => !seen.has(name));\n if (missingNames.length === 0) {\n return loaded;\n }\n\n const res = await this.documentTypeData.query({\n skip: 0,\n take: 1000,\n filter: {\n field: 'name',\n operator: { type: 'in' },\n value: missingNames,\n },\n });\n for (const type of res?.items ?? []) {\n remember(type);\n }\n return loaded;\n }\n\n private flattenForm(form: unknown): Record<string, unknown> {\n const out: Record<string, unknown> = {};\n const visit = (value: unknown) => {\n if (value == null || typeof value !== 'object' || Array.isArray(value)) {\n return;\n }\n for (const [key, nested] of Object.entries(value as Record<string, unknown>)) {\n if (!(key in out)) {\n out[key] = nested;\n }\n visit(nested);\n }\n };\n visit(form);\n return out;\n }\n\n private auditAt(node: AXMDocumentExplorerNode, kind: 'updated' | 'created'): unknown {\n const row = node as AXMDocumentExplorerNode & {\n updated?: { at?: unknown };\n created?: { at?: unknown };\n auditInfo?: { updated?: { at?: unknown }; created?: { at?: unknown } };\n };\n return row[kind]?.at ?? row.auditInfo?.[kind]?.at;\n }\n\n private resolveLookupDisplay(value: unknown, column: HomogeneousGridColumn): string {\n const lookup = column.lookup;\n if (!lookup) {\n return this.displayText(value);\n }\n if (value != null && typeof value === 'object' && !Array.isArray(value)) {\n const fromObject = this.displayText(value);\n if (fromObject) {\n return fromObject;\n }\n }\n const keys = collectLookupKeys(value, lookup.valueField);\n if (keys.length === 0) {\n return this.displayText(value);\n }\n const labels = this.lookupLabels();\n return keys.map((id) => labels[id] || id).filter(Boolean).join(', ');\n }\n\n private lookupLabelFromRow(row: LookupRow, textField: string): string {\n const fields: Record<string, unknown> = { ...row };\n return this.displayText(\n fields[textField] ?? row.displayName ?? row.title ?? row.name ?? row.username,\n );\n }\n\n private sortableValue(value: unknown, column: HomogeneousGridColumn): unknown {\n if (column.format === 'date' || column.format === 'datetime') {\n return value ?? null;\n }\n if (column.format === 'filesize' || column.format === 'number') {\n return typeof value === 'number' ? value : Number(value ?? 0);\n }\n return this.displayText(value);\n }\n\n private compareValues(left: unknown, right: unknown): number {\n if (left == null && right == null) {\n return 0;\n }\n if (left == null) {\n return -1;\n }\n if (right == null) {\n return 1;\n }\n if (left instanceof Date || right instanceof Date) {\n return new Date(left as never).getTime() - new Date(right as never).getTime();\n }\n if (typeof left === 'number' && typeof right === 'number') {\n return left - right;\n }\n return String(left).localeCompare(String(right), undefined, { numeric: true, sensitivity: 'base' });\n }\n\n private keepExclusiveSort(query: AXDataSourceQuery): AXDataSourceSortOption | undefined {\n const sorts = Array.isArray(query.sort) ? query.sort : [];\n if (sorts.length === 0) {\n return undefined;\n }\n const last = sorts[sorts.length - 1];\n const field = String(last?.field ?? '').trim();\n if (!field) {\n return undefined;\n }\n const exclusive: AXDataSourceSortOption = {\n field,\n dir: last.dir === 'desc' ? 'desc' : 'asc',\n };\n if (sorts.length > 1) {\n query.sort.splice(0, query.sort.length, exclusive);\n }\n return exclusive;\n }\n\n private extractSearchText(filter: unknown): string {\n if (!filter || typeof filter !== 'object') {\n return '';\n }\n const row = filter as { operator?: { type?: string }; value?: unknown; filters?: unknown[] };\n if (row.operator?.type === 'contains' && typeof row.value === 'string') {\n return row.value;\n }\n if (Array.isArray(row.filters)) {\n for (const child of row.filters) {\n const found = this.extractSearchText(child);\n if (found) {\n return found;\n }\n }\n }\n return '';\n }\n\n private nodeFromTableEvent(event: unknown): AXMDocumentExplorerNode | null {\n if (event == null || typeof event !== 'object') {\n return null;\n }\n const payload = event as { data?: unknown; row?: unknown };\n return (\n this.asGridRow(payload.data)?.node ??\n this.asGridRow(payload.row)?.node ??\n this.gridRow(payload.data)?.node ??\n this.gridRow(payload.row)?.node ??\n this.nodeById(this.readRowId(payload.data) ?? this.readRowId(payload.row) ?? this.readRowId(event))\n );\n }\n\n private readRowId(value: unknown): string | null {\n if (value == null || typeof value !== 'object') {\n return null;\n }\n const id = (value as { id?: unknown }).id;\n return typeof id === 'string' && id.trim() ? id : null;\n }\n\n private nodeById(id: string | null): AXMDocumentExplorerNode | null {\n if (!id) {\n return null;\n }\n return this.gridRows().find((row) => row.id === id)?.node ?? null;\n }\n\n private asGridRow(value: unknown): ExplorerGridRow | null {\n if (value == null || typeof value !== 'object') {\n return null;\n }\n const row = value as Partial<ExplorerGridRow>;\n if (!row.id || row.node == null) {\n return null;\n }\n return row as ExplorerGridRow;\n }\n\n private async syncShowRowIndexColumnSetting(): Promise<void> {\n try {\n const value = await this.settingsService.get<boolean>(AXPCommonSettings.ShowRowIndexColumn);\n this.showRowIndexColumnEnabled.set(value ?? false);\n } catch {\n this.showRowIndexColumnEnabled.set(false);\n }\n }\n\n //#endregion\n}\n\n//#endregion\n","<!-- ----- Platform data table for homogeneous folder or document rows ----- -->\n<div class=\"details-view\">\n <ax-data-table\n class=\"details-grid\"\n [dataSource]=\"dataSource\"\n [paging]=\"true\"\n [showFooter]=\"false\"\n [fixedHeader]=\"true\"\n [allowReordering]=\"true\"\n [loading]=\"{ enabled: true, animation: true }\"\n [selectedRows]=\"selectedRows()\"\n (selectedRowsChange)=\"handleSelectedRowsChange($event)\"\n (onRowDbClick)=\"handleRowDbClick($event)\"\n >\n <!-- ----- Row number when Experience Show Row Index Column is enabled ----- -->\n @if (showIndexColumn()) {\n <ax-index-column\n [caption]=\"('@general:terms.common.row-number' | translate | async)!\"\n fixed=\"start\"\n [width]=\"'80px'\"\n [padZero]=\"false\"\n ></ax-index-column>\n }\n <!-- ----- Row selection when the explorer allows it ----- -->\n @if (allowSelection()) {\n <ax-select-column fixed=\"start\" [width]=\"'60px'\"></ax-select-column>\n }\n @for (column of columns(); track column.name) {\n <ax-text-column\n [dataField]=\"column.name\"\n [caption]=\"(column.title | translate | async)!\"\n [allowResizing]=\"true\"\n [allowSorting]=\"true\"\n [width]=\"column.name === 'name' ? '280px' : '160px'\"\n [cellTemplate]=\"columnCellTpl\"\n ></ax-text-column>\n <ng-template #columnCellTpl let-item>\n <!---->\n @if (gridRow(item)?.node; as node) {\n <div class=\"cell-hit __explorer-item\" [axp-data]=\"node\">\n <!---->\n @if (column.name === 'name') {\n <!-- ----- Folder or document name with icon and expiration badges ----- -->\n @let nodeDisplay = vm.getNodeDisplayInfo(node);\n <div class=\"item-name\" (dblclick)=\"$event.stopPropagation(); openNode(node)\">\n <!---->\n <!-- ----- Folder loading spinner ----- -->\n @if (node.type === 'folder' && vm.isLoadingFolder(node.id)) {\n <i class=\"fa-light fa-spinner fa-spin-pulse\"></i>\n }\n <!-- ----- Folder or file icon ----- -->\n @else {\n <span\n class=\"item-icon\"\n [class.item-icon--shortcut]=\"nodeDisplay.isShortcut\"\n [style.color]=\"node.type === 'folder' ? vm.getFolderColor(node) : null\"\n >\n <i [class]=\"node.type === 'folder' ? 'fas fa-folder-closed' : ('fa-fw ' + nodeDisplay.icon)\"></i>\n <!---->\n <!-- ----- Shortcut overlay ----- -->\n @if (nodeDisplay.isShortcut) {\n <i class=\"fa-light fa-up-right-from-square item-icon__shortcut-arrow\" aria-hidden=\"true\"></i>\n }\n </span>\n }\n <span>{{ displayText(cellValue(item, column)) }}</span>\n <!---->\n <!-- ----- Folder expiration badges ----- -->\n @if (node.type === 'folder') {\n <axm-folder-expiration-badges [node]=\"node\" />\n }\n <!-- ----- Document expiration badge ----- -->\n @else {\n <axm-document-expiration-badge [node]=\"node\" />\n }\n </div>\n }\n <!-- ----- Document version badge ----- -->\n @else if (column.name === 'version') {\n <axm-document-version-badge [node]=\"node\" />\n }\n <!-- ----- File or folder size ----- -->\n @else if (column.format === 'filesize') {\n {{ cellValue(item, column) | format : 'filesize' | async }}\n }\n <!-- ----- Date-only metadata or attribute ----- -->\n @else if (column.format === 'date') {\n <!---->\n @if (cellValue(item, column); as value) {\n {{ value | format : 'date' : { format: 'date' } | async }}\n }\n }\n <!-- ----- Date and time metadata or attribute ----- -->\n @else if (column.format === 'datetime') {\n <!---->\n @if (cellValue(item, column); as value) {\n {{ value | format : 'datetime' : { format: 'datetime' } | async }}\n }\n }\n <!-- ----- Plain text, number, and lookup metadata ----- -->\n @else {\n {{ displayText(cellValue(item, column)) }}\n }\n </div>\n }\n </ng-template>\n }\n <!-- ----- Same context menu as right-click on the folder or document ----- -->\n <ax-text-column\n [caption]=\"''\"\n fixed=\"end\"\n [width]=\"'56px'\"\n [allowSorting]=\"false\"\n [allowResizing]=\"false\"\n [cellTemplate]=\"rowMenuTpl\"\n ></ax-text-column>\n <ng-template #rowMenuTpl let-item>\n <!---->\n @if (gridRow(item)?.node; as node) {\n <button\n type=\"button\"\n class=\"row-more-button __explorer-item\"\n [attr.aria-label]=\"('@document-management:explorer.grid.row-menu' | translate | async)!\"\n [attr.title]=\"('@document-management:explorer.grid.row-menu' | translate | async)!\"\n [axp-data]=\"node\"\n (click)=\"openRowContextMenu($event)\"\n >\n <i class=\"fa-light fa-ellipsis\" aria-hidden=\"true\"></i>\n </button>\n }\n </ng-template>\n </ax-data-table>\n</div>\n\n"],"names":["i2","i3","i4"],"mappings":"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"}
@@ -9,7 +9,7 @@ import { buildAXPRecordWorkflowInfo } from '@acorex-platform/framework-shared/en
9
9
  import { RootConfig, AXPContentDocumentsPermissionKeys, stampDocumentDistributionFormValues, AXM_DOCUMENT_DISTRIBUTION_VERSION_FIELD_NAME, isDocumentReviewRequired, isDocumentReviewMetadataComplete, highestDocumentVersionNumber, DOCUMENT_DISTRIBUTION_WORKFLOW_NAME } 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, m as AXPDocumentManagementService, s as sourcesAllowDocumentDistribution, n as collectDocumentTypeKeys } from './acorex-platform-module-document-management-client-acorex-platform-module-document-management-client-Dc3e3vuv.mjs';
12
+ import { j as AXMDocumentManagerService, m as AXPDocumentManagementService, s as sourcesAllowDocumentDistribution, n as collectDocumentTypeKeys } from './acorex-platform-module-document-management-client-acorex-platform-module-document-management-client-i1lGkMQC.mjs';
13
13
  import { a as asTrimmedId, b as asDisplayName, c as asUserIds, r as resolveCreatedEntityId, m as mapWithConcurrency } from './acorex-platform-module-document-management-client-distribute-document.command.util-HCkpx2Hk.mjs';
14
14
 
15
15
  //#region ----- Imports -----
@@ -592,4 +592,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "22.0.8", ngImpor
592
592
  }] });
593
593
 
594
594
  export { AXMDistributeDocumentCommand };
595
- //# sourceMappingURL=acorex-platform-module-document-management-client-distribute-document.command-DlpVqyIC.mjs.map
595
+ //# sourceMappingURL=acorex-platform-module-document-management-client-distribute-document.command-L420ZbsM.mjs.map
@@ -1 +1 @@
1
- {"version":3,"file":"acorex-platform-module-document-management-client-distribute-document.command-DlpVqyIC.mjs","sources":["../../../../libs/modules/document-management/client/src/lib/features/commands/distribute-document.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 DOCUMENT_DISTRIBUTION_WORKFLOW_NAME,\n highestDocumentVersionNumber,\n isDocumentReviewMetadataComplete,\n isDocumentReviewRequired,\n RootConfig,\n stampDocumentDistributionFormValues,\n AXM_DOCUMENT_DISTRIBUTION_VERSION_FIELD_NAME,\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 { AXPDocumentManagementService } from '../shared/document-management.service';\nimport type { AXMDocumentExplorerNode } from '../shared/document-manager.types';\nimport { sourcesAllowDocumentDistribution } from '../shared/document-distribution.util';\nimport { collectDocumentTypeKeys } from '../shared/document-review.util';\nimport {\n asDisplayName,\n asTrimmedId,\n asUserIds,\n mapWithConcurrency,\n resolveCreatedEntityId,\n} from './distribute-document.command.util';\n\n//#endregion\n\n//#region ----- Types -----\n\nexport interface AXMDistributeDocumentCommandInput {\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 DistributeDialogResult {\n title: string;\n description?: string;\n dueDate: Date | string;\n assigneeIds: 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 DistributionSetup {\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 setProgressText?: (text: string) => void;\n}\n\ninterface DistributionSubject {\n kind: 'file' | 'folder';\n id: string;\n title: string;\n record: Record<string, unknown>;\n}\n\ninterface DocumentTypeRow {\n id: string;\n requiresReview?: unknown;\n enableDistributionCapability?: unknown;\n metaDataList?: unknown;\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 MOCK_DOCUMENT_DISTRIBUTION_TASK_TYPE_ID = 'pm-mock-task-type-document-distribution';\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:distribute';\nconst ASSIGNEE_CREATE_CONCURRENCY = 3;\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 asRecord(value: unknown): Record<string, unknown> | null {\n if (!value || typeof value !== 'object' || Array.isArray(value)) {\n return null;\n }\n return value as Record<string, unknown>;\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: AXMDistributeDocumentCommandInput = {}): {\n kind: 'file' | 'folder';\n id: string;\n title: string;\n} | 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\nfunction metaDataFormOf(record: Record<string, unknown>): Record<string, unknown> | undefined {\n const form = record['metaDataForm'];\n return asRecord(form) ?? undefined;\n}\n\n//#endregion\n\n//#region ----- Distribute document command -----\n\n@Injectable({ providedIn: 'root' })\nexport class AXMDistributeDocumentCommand implements AXPCommand<AXMDistributeDocumentCommandInput> {\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 documentApi = inject(AXPDocumentManagementService);\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, DocumentTypeRow>();\n\n //#endregion\n\n //#region ----- Command Implementation -----\n\n async execute(input: AXMDistributeDocumentCommandInput = {}): AXPCommandExecuteResultPromise {\n if (!this.sessionService.authorize(AXPContentDocumentsPermissionKeys.DistributeDocuments)) {\n await this.toastError('errors.forbidden');\n return { success: false, message: { text: `${I18N}.errors.forbidden` } };\n }\n\n const subjectHint = resolveSubject(input);\n if (!subjectHint) {\n await this.toastError('errors.subject-required');\n return { success: false, message: { text: `${I18N}.errors.subject-required` } };\n }\n\n const subject = await this.loadSubject(subjectHint);\n if (!subject) {\n await this.toastError('errors.subject-required');\n return { success: false, message: { text: `${I18N}.errors.subject-required` } };\n }\n\n const typeLoader = {\n byNames: (names: string[]) => this.driveService.getDocumentTypesByNames(names),\n byKey: (id: string) => this.documentTypeData.byKey(id),\n };\n const appliesTo = subject.kind === 'folder' ? 'folder' : 'document';\n const allowsDistribution = await sourcesAllowDocumentDistribution(\n [subject.record, input.data],\n typeLoader,\n appliesTo,\n );\n if (!allowsDistribution) {\n await this.toastError('errors.not-enabled');\n return { success: false, message: { text: `${I18N}.errors.not-enabled` } };\n }\n\n if (await this.requiresUnfinishedReview(subject, typeLoader)) {\n await this.toastError('errors.review-required');\n return { success: false, message: { text: `${I18N}.errors.review-required` } };\n }\n\n const setupPromise = this.loadDistributionSetup();\n const form = await this.openDialog(subject.title);\n if (!form) {\n return { success: true, kind: 'object', data: { cancelled: true } };\n }\n\n const loading = await this.showDistributeLoading(form.assigneeIds.length);\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 version = await this.resolveHighestVersion(subject);\n const created = await this.createParentAndSubtasks({\n form,\n setup,\n subject,\n version,\n loading,\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 {\n success: true,\n kind: 'object',\n data: {\n parentTaskId: created.parentTaskId,\n taskIds: created.taskIds,\n instanceIds: created.instanceIds,\n },\n };\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<DistributeDialogResult | null> {\n const dueDate = new Date();\n dueDate.setHours(0, 0, 0, 0);\n const result = await this.layoutBuilder\n .create()\n .dialog<DistributeDialogResult | 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 assigneeIds: [],\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.assignees`, (field) => {\n field.path('assigneeIds');\n field.lookupBox({\n entity: 'SecurityManagement.User',\n multiple: true,\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 assigneeIds?: unknown;\n };\n const title = (ctx.title ?? '').trim();\n const assigneeIds = asUserIds(ctx.assigneeIds);\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 (assigneeIds.length === 0) {\n throw new Error(`${I18N}.errors.assignees-required`);\n }\n dialogRef.setLoading(true);\n return {\n title,\n description: (ctx.description ?? '').trim() || undefined,\n dueDate: ctx.dueDate,\n assigneeIds,\n };\n });\n })\n .show();\n\n return resolveLayoutBuilderDialogResult<DistributeDialogResult>(result);\n }\n\n //#endregion\n\n //#region ----- Create parent and sub-tasks -----\n\n private async createParentAndSubtasks(params: {\n form: DistributeDialogResult;\n setup: DistributionSetup;\n subject: DistributionSubject;\n version: number;\n loading: LoadingDialogRef;\n }): Promise<{ parentTaskId: string; taskIds: string[]; instanceIds: string[]; pinFailed: boolean }> {\n const initiatorId = this.sessionService.user?.id ?? params.form.assigneeIds[0];\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 const versionForm = stampDocumentDistributionFormValues(undefined, {\n [AXM_DOCUMENT_DISTRIBUTION_VERSION_FIELD_NAME]: params.version,\n });\n\n const parentTask = 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: initiatorId,\n assignee: { id: initiatorId },\n subjectRef,\n metaDataForm: versionForm,\n isArchived: false,\n } as never);\n const parentTaskId = resolveCreatedEntityId(parentTask);\n\n let pinFailed = false;\n await this.pinSubjectOnTask(parentTaskId, params.subject).catch((error) => {\n console.warn('[AXMDistributeDocumentCommand] pin parent shortcut failed', error);\n pinFailed = true;\n });\n\n const total = params.form.assigneeIds.length;\n let completed = 0;\n const created = await mapWithConcurrency(params.form.assigneeIds, ASSIGNEE_CREATE_CONCURRENCY, async (userId) => {\n const row = await this.createAndStartForAssignee({\n userId,\n assignedBy: initiatorId,\n form: params.form,\n setup: params.setup,\n subject: params.subject,\n subjectRef,\n parentTaskId,\n parentTitle: params.form.title,\n versionForm,\n });\n completed += 1;\n await this.updateDistributeLoadingProgress(params.loading, completed, total);\n return row;\n });\n\n return {\n parentTaskId,\n taskIds: created.map((row) => row.taskId),\n instanceIds: created\n .map((row) => row.instanceId)\n .filter((id): id is string => typeof id === 'string' && id.length > 0),\n pinFailed: pinFailed || created.some((row) => row.pinFailed),\n };\n }\n\n private async createAndStartForAssignee(params: {\n userId: string;\n assignedBy: string;\n form: DistributeDialogResult;\n setup: DistributionSetup;\n subject: DistributionSubject;\n subjectRef: AXPEntityReference;\n parentTaskId: string;\n parentTitle: string;\n versionForm: Record<string, unknown>;\n }): Promise<{ taskId: string; instanceId?: string; pinFailed: boolean }> {\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.userId,\n assignee: { id: params.userId },\n subjectRef: params.subjectRef,\n parentTaskId: params.parentTaskId,\n parentTask: { id: params.parentTaskId, title: params.parentTitle },\n metaDataForm: params.versionForm,\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.userId,\n displayName: params.userId,\n },\n role: 'reviewer',\n assignedBy: params.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('[AXMDistributeDocumentCommand] pin document shortcut failed', error);\n pinFailed = true;\n });\n\n const [, , instanceId] = await Promise.all([\n assignmentPromise,\n pinPromise,\n this.startWorkflowForAssignee(taskId, params),\n ]);\n return { taskId, instanceId, pinFailed };\n }\n\n private async startWorkflowForAssignee(\n taskId: string,\n params: {\n userId: string;\n assignedBy: string;\n form: DistributeDialogResult;\n setup: DistributionSetup;\n subject: DistributionSubject;\n parentTaskId: string;\n },\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 parentTaskId: params.parentTaskId,\n signerUserId: params.userId,\n signerUserIds: [params.userId],\n initiatorUserId: params.assignedBy,\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('[AXMDistributeDocumentCommand] 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: DistributionSubject): 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: { kind: 'file' | 'folder'; id: string; title: string },\n ): Promise<DistributionSubject | 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 as unknown as Record<string, unknown>,\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 as unknown as Record<string, unknown>,\n };\n }\n\n private async requiresUnfinishedReview(\n subject: DistributionSubject,\n load: {\n byNames: (names: string[]) => Promise<DocumentTypeRow[]>;\n byKey: (id: string) => Promise<DocumentTypeRow | null | undefined>;\n },\n ): Promise<boolean> {\n const types = await this.loadSubjectTypes(subject, load);\n if (!types.some((type) => isDocumentReviewRequired(type.requiresReview))) {\n return false;\n }\n return !isDocumentReviewMetadataComplete(metaDataFormOf(subject.record));\n }\n\n private async loadSubjectTypes(\n subject: DistributionSubject,\n load: {\n byNames: (names: string[]) => Promise<DocumentTypeRow[]>;\n byKey: (id: string) => Promise<DocumentTypeRow | null | undefined>;\n },\n ): Promise<DocumentTypeRow[]> {\n const keys = collectDocumentTypeKeys(subject.record);\n const found: DocumentTypeRow[] = [];\n for (const id of keys.ids) {\n try {\n const type = await load.byKey(id);\n if (type) {\n found.push(type);\n }\n } catch {\n // Keep checking remaining types when one lookup misses.\n }\n }\n if (keys.names.length) {\n const byName = await load.byNames(keys.names);\n found.push(...byName);\n }\n return found;\n }\n\n private async resolveHighestVersion(subject: DistributionSubject): Promise<number> {\n if (subject.kind === 'file') {\n return highestDocumentVersionNumber([subject.record]);\n }\n try {\n const documents = await this.documentApi.listFolderReviewDocuments(subject.id);\n return highestDocumentVersionNumber(documents);\n } catch (error) {\n console.warn('[AXMDistributeDocumentCommand] list folder documents for version failed', error);\n return 1;\n }\n }\n\n private async loadDistributionSetup(): Promise<DistributionSetup | null> {\n const taskType = await this.loadDistributionTaskType();\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_DISTRIBUTION_WORKFLOW_NAME,\n };\n }\n\n private async loadDistributionTaskType(): Promise<TaskTypeRow | null> {\n try {\n const byId = await this.taskTypeData.byKey(MOCK_DOCUMENT_DISTRIBUTION_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_DISTRIBUTION_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 showDistributeLoading(assigneeCount: number): Promise<LoadingDialogRef> {\n const [title, text] = await Promise.all([\n this.translationService.translateAsync(`${I18N}.loading.title`),\n this.translationService.translateAsync(`${I18N}.loading.description`, {\n params: { count: assigneeCount },\n }),\n ]);\n return this.loadingDialog.show({\n title,\n mode: 'indeterminate',\n progressColor: 'primary',\n text,\n }) as LoadingDialogRef;\n }\n\n private async updateDistributeLoadingProgress(\n loading: LoadingDialogRef,\n current: number,\n total: number,\n ): Promise<void> {\n if (!loading.setProgressText) {\n return;\n }\n const text = await this.translationService.translateAsync(`${I18N}.loading.progress`, {\n params: { current, total },\n });\n loading.setProgressText(text);\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-distribute-document.command-L420ZbsM.mjs","sources":["../../../../libs/modules/document-management/client/src/lib/features/commands/distribute-document.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 DOCUMENT_DISTRIBUTION_WORKFLOW_NAME,\n highestDocumentVersionNumber,\n isDocumentReviewMetadataComplete,\n isDocumentReviewRequired,\n RootConfig,\n stampDocumentDistributionFormValues,\n AXM_DOCUMENT_DISTRIBUTION_VERSION_FIELD_NAME,\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 { AXPDocumentManagementService } from '../shared/document-management.service';\nimport type { AXMDocumentExplorerNode } from '../shared/document-manager.types';\nimport { sourcesAllowDocumentDistribution } from '../shared/document-distribution.util';\nimport { collectDocumentTypeKeys } from '../shared/document-review.util';\nimport {\n asDisplayName,\n asTrimmedId,\n asUserIds,\n mapWithConcurrency,\n resolveCreatedEntityId,\n} from './distribute-document.command.util';\n\n//#endregion\n\n//#region ----- Types -----\n\nexport interface AXMDistributeDocumentCommandInput {\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 DistributeDialogResult {\n title: string;\n description?: string;\n dueDate: Date | string;\n assigneeIds: 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 DistributionSetup {\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 setProgressText?: (text: string) => void;\n}\n\ninterface DistributionSubject {\n kind: 'file' | 'folder';\n id: string;\n title: string;\n record: Record<string, unknown>;\n}\n\ninterface DocumentTypeRow {\n id: string;\n requiresReview?: unknown;\n enableDistributionCapability?: unknown;\n metaDataList?: unknown;\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 MOCK_DOCUMENT_DISTRIBUTION_TASK_TYPE_ID = 'pm-mock-task-type-document-distribution';\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:distribute';\nconst ASSIGNEE_CREATE_CONCURRENCY = 3;\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 asRecord(value: unknown): Record<string, unknown> | null {\n if (!value || typeof value !== 'object' || Array.isArray(value)) {\n return null;\n }\n return value as Record<string, unknown>;\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: AXMDistributeDocumentCommandInput = {}): {\n kind: 'file' | 'folder';\n id: string;\n title: string;\n} | 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\nfunction metaDataFormOf(record: Record<string, unknown>): Record<string, unknown> | undefined {\n const form = record['metaDataForm'];\n return asRecord(form) ?? undefined;\n}\n\n//#endregion\n\n//#region ----- Distribute document command -----\n\n@Injectable({ providedIn: 'root' })\nexport class AXMDistributeDocumentCommand implements AXPCommand<AXMDistributeDocumentCommandInput> {\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 documentApi = inject(AXPDocumentManagementService);\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, DocumentTypeRow>();\n\n //#endregion\n\n //#region ----- Command Implementation -----\n\n async execute(input: AXMDistributeDocumentCommandInput = {}): AXPCommandExecuteResultPromise {\n if (!this.sessionService.authorize(AXPContentDocumentsPermissionKeys.DistributeDocuments)) {\n await this.toastError('errors.forbidden');\n return { success: false, message: { text: `${I18N}.errors.forbidden` } };\n }\n\n const subjectHint = resolveSubject(input);\n if (!subjectHint) {\n await this.toastError('errors.subject-required');\n return { success: false, message: { text: `${I18N}.errors.subject-required` } };\n }\n\n const subject = await this.loadSubject(subjectHint);\n if (!subject) {\n await this.toastError('errors.subject-required');\n return { success: false, message: { text: `${I18N}.errors.subject-required` } };\n }\n\n const typeLoader = {\n byNames: (names: string[]) => this.driveService.getDocumentTypesByNames(names),\n byKey: (id: string) => this.documentTypeData.byKey(id),\n };\n const appliesTo = subject.kind === 'folder' ? 'folder' : 'document';\n const allowsDistribution = await sourcesAllowDocumentDistribution(\n [subject.record, input.data],\n typeLoader,\n appliesTo,\n );\n if (!allowsDistribution) {\n await this.toastError('errors.not-enabled');\n return { success: false, message: { text: `${I18N}.errors.not-enabled` } };\n }\n\n if (await this.requiresUnfinishedReview(subject, typeLoader)) {\n await this.toastError('errors.review-required');\n return { success: false, message: { text: `${I18N}.errors.review-required` } };\n }\n\n const setupPromise = this.loadDistributionSetup();\n const form = await this.openDialog(subject.title);\n if (!form) {\n return { success: true, kind: 'object', data: { cancelled: true } };\n }\n\n const loading = await this.showDistributeLoading(form.assigneeIds.length);\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 version = await this.resolveHighestVersion(subject);\n const created = await this.createParentAndSubtasks({\n form,\n setup,\n subject,\n version,\n loading,\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 {\n success: true,\n kind: 'object',\n data: {\n parentTaskId: created.parentTaskId,\n taskIds: created.taskIds,\n instanceIds: created.instanceIds,\n },\n };\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<DistributeDialogResult | null> {\n const dueDate = new Date();\n dueDate.setHours(0, 0, 0, 0);\n const result = await this.layoutBuilder\n .create()\n .dialog<DistributeDialogResult | 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 assigneeIds: [],\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.assignees`, (field) => {\n field.path('assigneeIds');\n field.lookupBox({\n entity: 'SecurityManagement.User',\n multiple: true,\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 assigneeIds?: unknown;\n };\n const title = (ctx.title ?? '').trim();\n const assigneeIds = asUserIds(ctx.assigneeIds);\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 (assigneeIds.length === 0) {\n throw new Error(`${I18N}.errors.assignees-required`);\n }\n dialogRef.setLoading(true);\n return {\n title,\n description: (ctx.description ?? '').trim() || undefined,\n dueDate: ctx.dueDate,\n assigneeIds,\n };\n });\n })\n .show();\n\n return resolveLayoutBuilderDialogResult<DistributeDialogResult>(result);\n }\n\n //#endregion\n\n //#region ----- Create parent and sub-tasks -----\n\n private async createParentAndSubtasks(params: {\n form: DistributeDialogResult;\n setup: DistributionSetup;\n subject: DistributionSubject;\n version: number;\n loading: LoadingDialogRef;\n }): Promise<{ parentTaskId: string; taskIds: string[]; instanceIds: string[]; pinFailed: boolean }> {\n const initiatorId = this.sessionService.user?.id ?? params.form.assigneeIds[0];\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 const versionForm = stampDocumentDistributionFormValues(undefined, {\n [AXM_DOCUMENT_DISTRIBUTION_VERSION_FIELD_NAME]: params.version,\n });\n\n const parentTask = 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: initiatorId,\n assignee: { id: initiatorId },\n subjectRef,\n metaDataForm: versionForm,\n isArchived: false,\n } as never);\n const parentTaskId = resolveCreatedEntityId(parentTask);\n\n let pinFailed = false;\n await this.pinSubjectOnTask(parentTaskId, params.subject).catch((error) => {\n console.warn('[AXMDistributeDocumentCommand] pin parent shortcut failed', error);\n pinFailed = true;\n });\n\n const total = params.form.assigneeIds.length;\n let completed = 0;\n const created = await mapWithConcurrency(params.form.assigneeIds, ASSIGNEE_CREATE_CONCURRENCY, async (userId) => {\n const row = await this.createAndStartForAssignee({\n userId,\n assignedBy: initiatorId,\n form: params.form,\n setup: params.setup,\n subject: params.subject,\n subjectRef,\n parentTaskId,\n parentTitle: params.form.title,\n versionForm,\n });\n completed += 1;\n await this.updateDistributeLoadingProgress(params.loading, completed, total);\n return row;\n });\n\n return {\n parentTaskId,\n taskIds: created.map((row) => row.taskId),\n instanceIds: created\n .map((row) => row.instanceId)\n .filter((id): id is string => typeof id === 'string' && id.length > 0),\n pinFailed: pinFailed || created.some((row) => row.pinFailed),\n };\n }\n\n private async createAndStartForAssignee(params: {\n userId: string;\n assignedBy: string;\n form: DistributeDialogResult;\n setup: DistributionSetup;\n subject: DistributionSubject;\n subjectRef: AXPEntityReference;\n parentTaskId: string;\n parentTitle: string;\n versionForm: Record<string, unknown>;\n }): Promise<{ taskId: string; instanceId?: string; pinFailed: boolean }> {\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.userId,\n assignee: { id: params.userId },\n subjectRef: params.subjectRef,\n parentTaskId: params.parentTaskId,\n parentTask: { id: params.parentTaskId, title: params.parentTitle },\n metaDataForm: params.versionForm,\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.userId,\n displayName: params.userId,\n },\n role: 'reviewer',\n assignedBy: params.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('[AXMDistributeDocumentCommand] pin document shortcut failed', error);\n pinFailed = true;\n });\n\n const [, , instanceId] = await Promise.all([\n assignmentPromise,\n pinPromise,\n this.startWorkflowForAssignee(taskId, params),\n ]);\n return { taskId, instanceId, pinFailed };\n }\n\n private async startWorkflowForAssignee(\n taskId: string,\n params: {\n userId: string;\n assignedBy: string;\n form: DistributeDialogResult;\n setup: DistributionSetup;\n subject: DistributionSubject;\n parentTaskId: string;\n },\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 parentTaskId: params.parentTaskId,\n signerUserId: params.userId,\n signerUserIds: [params.userId],\n initiatorUserId: params.assignedBy,\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('[AXMDistributeDocumentCommand] 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: DistributionSubject): 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: { kind: 'file' | 'folder'; id: string; title: string },\n ): Promise<DistributionSubject | 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 as unknown as Record<string, unknown>,\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 as unknown as Record<string, unknown>,\n };\n }\n\n private async requiresUnfinishedReview(\n subject: DistributionSubject,\n load: {\n byNames: (names: string[]) => Promise<DocumentTypeRow[]>;\n byKey: (id: string) => Promise<DocumentTypeRow | null | undefined>;\n },\n ): Promise<boolean> {\n const types = await this.loadSubjectTypes(subject, load);\n if (!types.some((type) => isDocumentReviewRequired(type.requiresReview))) {\n return false;\n }\n return !isDocumentReviewMetadataComplete(metaDataFormOf(subject.record));\n }\n\n private async loadSubjectTypes(\n subject: DistributionSubject,\n load: {\n byNames: (names: string[]) => Promise<DocumentTypeRow[]>;\n byKey: (id: string) => Promise<DocumentTypeRow | null | undefined>;\n },\n ): Promise<DocumentTypeRow[]> {\n const keys = collectDocumentTypeKeys(subject.record);\n const found: DocumentTypeRow[] = [];\n for (const id of keys.ids) {\n try {\n const type = await load.byKey(id);\n if (type) {\n found.push(type);\n }\n } catch {\n // Keep checking remaining types when one lookup misses.\n }\n }\n if (keys.names.length) {\n const byName = await load.byNames(keys.names);\n found.push(...byName);\n }\n return found;\n }\n\n private async resolveHighestVersion(subject: DistributionSubject): Promise<number> {\n if (subject.kind === 'file') {\n return highestDocumentVersionNumber([subject.record]);\n }\n try {\n const documents = await this.documentApi.listFolderReviewDocuments(subject.id);\n return highestDocumentVersionNumber(documents);\n } catch (error) {\n console.warn('[AXMDistributeDocumentCommand] list folder documents for version failed', error);\n return 1;\n }\n }\n\n private async loadDistributionSetup(): Promise<DistributionSetup | null> {\n const taskType = await this.loadDistributionTaskType();\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_DISTRIBUTION_WORKFLOW_NAME,\n };\n }\n\n private async loadDistributionTaskType(): Promise<TaskTypeRow | null> {\n try {\n const byId = await this.taskTypeData.byKey(MOCK_DOCUMENT_DISTRIBUTION_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_DISTRIBUTION_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 showDistributeLoading(assigneeCount: number): Promise<LoadingDialogRef> {\n const [title, text] = await Promise.all([\n this.translationService.translateAsync(`${I18N}.loading.title`),\n this.translationService.translateAsync(`${I18N}.loading.description`, {\n params: { count: assigneeCount },\n }),\n ]);\n return this.loadingDialog.show({\n title,\n mode: 'indeterminate',\n progressColor: 'primary',\n text,\n }) as LoadingDialogRef;\n }\n\n private async updateDistributeLoadingProgress(\n loading: LoadingDialogRef,\n current: number,\n total: number,\n ): Promise<void> {\n if (!loading.setProgressText) {\n return;\n }\n const text = await this.translationService.translateAsync(`${I18N}.loading.progress`, {\n params: { current, total },\n });\n loading.setProgressText(text);\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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"}
@@ -28,7 +28,7 @@ import * as i0 from '@angular/core';
28
28
  import { inject, signal, viewChild, computed, effect, untracked, ViewEncapsulation, ChangeDetectionStrategy, Component } from '@angular/core';
29
29
  import { RouterModule } from '@angular/router';
30
30
  import { RootConfig } from '@acorex-platform/module-document-management-client/contracts';
31
- import { j as AXMDocumentManagerService, A as AXPDocumentExplorerViewModel, p as AXMDocumentExplorerComponent, q as AXMFolderPathBreadcrumbsComponent } from './acorex-platform-module-document-management-client-acorex-platform-module-document-management-client-Dc3e3vuv.mjs';
31
+ import { j as AXMDocumentManagerService, A as AXPDocumentExplorerViewModel, p as AXMDocumentExplorerComponent, q as AXMFolderPathBreadcrumbsComponent } from './acorex-platform-module-document-management-client-acorex-platform-module-document-management-client-i1lGkMQC.mjs';
32
32
 
33
33
  class AXMDocumentDriveChooseComponent extends AXBasePageComponent {
34
34
  constructor() {
@@ -258,4 +258,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "22.0.8", ngImpor
258
258
  }], propDecorators: { documentExplorer: [{ type: i0.ViewChild, args: [i0.forwardRef(() => AXMDocumentExplorerComponent), { isSignal: true }] }] } });
259
259
 
260
260
  export { AXMDocumentDriveChooseComponent };
261
- //# sourceMappingURL=acorex-platform-module-document-management-client-drive-choose.component-B8MZYXNy.mjs.map
261
+ //# sourceMappingURL=acorex-platform-module-document-management-client-drive-choose.component-DNNfdkr_.mjs.map