@acorex/modules 19.2.17 → 19.2.20

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 (134) hide show
  1. package/common/lib/features/widget-wrapper/dashboard-widget-wrapper.d.ts +4 -3
  2. package/document-management/lib/document-management.module.d.ts +2 -1
  3. package/document-management/lib/entities/document/document.service.d.ts +0 -5
  4. package/document-management/lib/entities/document/document.types.d.ts +2 -0
  5. package/document-management/lib/entities/document-type/document-type.service.d.ts +2 -2
  6. package/document-management/lib/entities/document-type/document-type.types.d.ts +1 -0
  7. package/document-management/lib/entities/folder/folder.types.d.ts +4 -4
  8. package/document-management/lib/features/document-explorer/document-explorer.component.d.ts +141 -16
  9. package/document-management/lib/features/document-explorer/document-explorer.viewmodel.d.ts +66 -6
  10. package/document-management/lib/features/document-explorer/views/detail-panel/detail-panel.component.d.ts +119 -0
  11. package/document-management/lib/features/document-explorer/views/details/details-view.component.d.ts +119 -0
  12. package/document-management/lib/features/document-explorer/views/large-icons/large-icons-view.component.d.ts +119 -0
  13. package/document-management/lib/features/document-explorer/views/large-tiles/large-tiles-view.component.d.ts +119 -0
  14. package/document-management/lib/features/document-explorer/views/list/list-view.component.d.ts +119 -0
  15. package/document-management/lib/features/document-explorer/views/small-icons/small-icons-view.component.d.ts +119 -0
  16. package/document-management/lib/features/document-explorer/views/small-tiles/small-tiles-view.component.d.ts +119 -0
  17. package/document-management/lib/features/drive/drive.component.d.ts +97 -71
  18. package/document-management/lib/features/drive-choose/drive-choose.component.d.ts +72 -7
  19. package/document-management/lib/features/file-type/widgets/file-type-extension/file-type-extension-edit.component.d.ts +1 -0
  20. package/document-management/lib/features/shared/components/choose-document-type/choose-document-type.component.d.ts +21 -0
  21. package/document-management/lib/features/shared/components/folder-path-breadcrumbs/folder-path-breadcrumbs.component.d.ts +180 -0
  22. package/document-management/lib/features/shared/components/index.d.ts +3 -2
  23. package/document-management/lib/features/shared/document-manager.service.d.ts +32 -12
  24. package/document-management/lib/features/shared/document-manager.types.d.ts +7 -3
  25. package/document-management/lib/features/shared/index.d.ts +1 -0
  26. package/document-management/lib/features/widgets/document-attachment/document-attachment-widget-edit.component.d.ts +64 -5
  27. package/document-management/lib/features/workflow/upload/upload.workflow.d.ts +17 -0
  28. package/fesm2022/{acorex-modules-application-management-module-designer.component-BSGSZi9T.mjs → acorex-modules-application-management-module-designer.component-Dd_lmV6C.mjs} +2 -2
  29. package/fesm2022/{acorex-modules-application-management-module-designer.component-BSGSZi9T.mjs.map → acorex-modules-application-management-module-designer.component-Dd_lmV6C.mjs.map} +1 -1
  30. package/fesm2022/acorex-modules-application-management.mjs +2 -2
  31. package/fesm2022/acorex-modules-application-management.mjs.map +1 -1
  32. package/fesm2022/{acorex-modules-auth-acorex-modules-auth-Xcs9ViQv.mjs → acorex-modules-auth-acorex-modules-auth-DrcL7GCj.mjs} +12 -12
  33. package/fesm2022/{acorex-modules-auth-acorex-modules-auth-Xcs9ViQv.mjs.map → acorex-modules-auth-acorex-modules-auth-DrcL7GCj.mjs.map} +1 -1
  34. package/fesm2022/{acorex-modules-auth-app-chooser.component-0L9y_yn_.mjs → acorex-modules-auth-app-chooser.component-CbJb1P_k.mjs} +2 -2
  35. package/fesm2022/{acorex-modules-auth-app-chooser.component-0L9y_yn_.mjs.map → acorex-modules-auth-app-chooser.component-CbJb1P_k.mjs.map} +1 -1
  36. package/fesm2022/{acorex-modules-auth-login.module-CfO1IwH9.mjs → acorex-modules-auth-login.module-DFCB1l7W.mjs} +4 -4
  37. package/fesm2022/{acorex-modules-auth-login.module-CfO1IwH9.mjs.map → acorex-modules-auth-login.module-DFCB1l7W.mjs.map} +1 -1
  38. package/fesm2022/{acorex-modules-auth-master.layout-hLuHDgvl.mjs → acorex-modules-auth-master.layout-CuKXvY0o.mjs} +2 -2
  39. package/fesm2022/{acorex-modules-auth-master.layout-hLuHDgvl.mjs.map → acorex-modules-auth-master.layout-CuKXvY0o.mjs.map} +1 -1
  40. package/fesm2022/{acorex-modules-auth-password.component-CTVBARbz.mjs → acorex-modules-auth-password.component-5gwz30CZ.mjs} +3 -3
  41. package/fesm2022/{acorex-modules-auth-password.component-CTVBARbz.mjs.map → acorex-modules-auth-password.component-5gwz30CZ.mjs.map} +1 -1
  42. package/fesm2022/{acorex-modules-auth-password.component-BztZ3DJd.mjs → acorex-modules-auth-password.component-DacOjakT.mjs} +3 -3
  43. package/fesm2022/{acorex-modules-auth-password.component-BztZ3DJd.mjs.map → acorex-modules-auth-password.component-DacOjakT.mjs.map} +1 -1
  44. package/fesm2022/{acorex-modules-auth-routes-CJz0CRlp.mjs → acorex-modules-auth-routes-D018Lg-b.mjs} +2 -2
  45. package/fesm2022/{acorex-modules-auth-routes-CJz0CRlp.mjs.map → acorex-modules-auth-routes-D018Lg-b.mjs.map} +1 -1
  46. package/fesm2022/{acorex-modules-auth-tenant-chooser.component-kVFAR9t1.mjs → acorex-modules-auth-tenant-chooser.component-YZBKyJFH.mjs} +2 -2
  47. package/fesm2022/{acorex-modules-auth-tenant-chooser.component-kVFAR9t1.mjs.map → acorex-modules-auth-tenant-chooser.component-YZBKyJFH.mjs.map} +1 -1
  48. package/fesm2022/{acorex-modules-auth-two-factor-code.component-_VYT-h-9.mjs → acorex-modules-auth-two-factor-code.component-B2ZYJOrN.mjs} +2 -2
  49. package/fesm2022/{acorex-modules-auth-two-factor-code.component-_VYT-h-9.mjs.map → acorex-modules-auth-two-factor-code.component-B2ZYJOrN.mjs.map} +1 -1
  50. package/fesm2022/{acorex-modules-auth-two-factor.module-BQfrnrd0.mjs → acorex-modules-auth-two-factor.module-DiEB7VWl.mjs} +3 -3
  51. package/fesm2022/{acorex-modules-auth-two-factor.module-BQfrnrd0.mjs.map → acorex-modules-auth-two-factor.module-DiEB7VWl.mjs.map} +1 -1
  52. package/fesm2022/acorex-modules-auth.mjs +1 -1
  53. package/fesm2022/acorex-modules-common-index-D90SN6SH.mjs +507 -0
  54. package/fesm2022/acorex-modules-common-index-D90SN6SH.mjs.map +1 -0
  55. package/fesm2022/acorex-modules-common.mjs +1 -1
  56. package/fesm2022/acorex-modules-conversation.mjs +5 -5
  57. package/fesm2022/acorex-modules-conversation.mjs.map +1 -1
  58. package/fesm2022/{acorex-modules-document-management-acorex-modules-document-management-BmLGtKDq.mjs → acorex-modules-document-management-acorex-modules-document-management-_BOVaDOq.mjs} +823 -421
  59. package/fesm2022/acorex-modules-document-management-acorex-modules-document-management-_BOVaDOq.mjs.map +1 -0
  60. package/fesm2022/{acorex-modules-document-management-create-folder-dialog.component-DqoWmtm7.mjs → acorex-modules-document-management-create-folder-dialog.component-D66KoQNb.mjs} +7 -6
  61. package/fesm2022/acorex-modules-document-management-create-folder-dialog.component-D66KoQNb.mjs.map +1 -0
  62. package/fesm2022/acorex-modules-document-management-details-view.component-BHcu_gYH.mjs +24 -0
  63. package/fesm2022/acorex-modules-document-management-details-view.component-BHcu_gYH.mjs.map +1 -0
  64. package/fesm2022/acorex-modules-document-management-drive-choose.component-WoZfDyLK.mjs +163 -0
  65. package/fesm2022/acorex-modules-document-management-drive-choose.component-WoZfDyLK.mjs.map +1 -0
  66. package/fesm2022/acorex-modules-document-management-drive.component-B3BCzdVv.mjs +305 -0
  67. package/fesm2022/acorex-modules-document-management-drive.component-B3BCzdVv.mjs.map +1 -0
  68. package/fesm2022/acorex-modules-document-management-large-icons-view.component-DvriE0YR.mjs +20 -0
  69. package/fesm2022/acorex-modules-document-management-large-icons-view.component-DvriE0YR.mjs.map +1 -0
  70. package/fesm2022/acorex-modules-document-management-large-tiles-view.component-ByWrKvZe.mjs +24 -0
  71. package/fesm2022/acorex-modules-document-management-large-tiles-view.component-ByWrKvZe.mjs.map +1 -0
  72. package/fesm2022/acorex-modules-document-management-list-view.component-B6J6Tokv.mjs +20 -0
  73. package/fesm2022/acorex-modules-document-management-list-view.component-B6J6Tokv.mjs.map +1 -0
  74. package/fesm2022/{acorex-modules-document-management-rename-node-dialog.component-BoODbM0H.mjs → acorex-modules-document-management-rename-node-dialog.component-Dae6RWb8.mjs} +6 -6
  75. package/fesm2022/acorex-modules-document-management-rename-node-dialog.component-Dae6RWb8.mjs.map +1 -0
  76. package/fesm2022/acorex-modules-document-management-small-icons-view.component-TrYeB22e.mjs +20 -0
  77. package/fesm2022/acorex-modules-document-management-small-icons-view.component-TrYeB22e.mjs.map +1 -0
  78. package/fesm2022/acorex-modules-document-management-small-tiles-view.component-DDKdWg8I.mjs +24 -0
  79. package/fesm2022/acorex-modules-document-management-small-tiles-view.component-DDKdWg8I.mjs.map +1 -0
  80. package/fesm2022/acorex-modules-document-management.mjs +1 -1
  81. package/fesm2022/{acorex-modules-form-template-management-acorex-modules-form-template-management-Qnh16t3Q.mjs → acorex-modules-form-template-management-acorex-modules-form-template-management-CJYrDtq6.mjs} +8 -8
  82. package/fesm2022/{acorex-modules-form-template-management-acorex-modules-form-template-management-Qnh16t3Q.mjs.map → acorex-modules-form-template-management-acorex-modules-form-template-management-CJYrDtq6.mjs.map} +1 -1
  83. package/fesm2022/{acorex-modules-form-template-management-category.entity-BjmyIav9.mjs → acorex-modules-form-template-management-category.entity-BdiYytzK.mjs} +2 -2
  84. package/fesm2022/{acorex-modules-form-template-management-category.entity-BjmyIav9.mjs.map → acorex-modules-form-template-management-category.entity-BdiYytzK.mjs.map} +1 -1
  85. package/fesm2022/{acorex-modules-form-template-management-setting.provider-hkwaOGfL.mjs → acorex-modules-form-template-management-setting.provider-CoETMkEC.mjs} +2 -2
  86. package/fesm2022/{acorex-modules-form-template-management-setting.provider-hkwaOGfL.mjs.map → acorex-modules-form-template-management-setting.provider-CoETMkEC.mjs.map} +1 -1
  87. package/fesm2022/{acorex-modules-form-template-management-template-picker.component-gdMTnjl-.mjs → acorex-modules-form-template-management-template-picker.component-0JfGxdMv.mjs} +2 -2
  88. package/fesm2022/{acorex-modules-form-template-management-template-picker.component-gdMTnjl-.mjs.map → acorex-modules-form-template-management-template-picker.component-0JfGxdMv.mjs.map} +1 -1
  89. package/fesm2022/{acorex-modules-form-template-management-template-widget-edit.component-CSShokqz.mjs → acorex-modules-form-template-management-template-widget-edit.component-BkJ3ieIg.mjs} +2 -2
  90. package/fesm2022/{acorex-modules-form-template-management-template-widget-edit.component-CSShokqz.mjs.map → acorex-modules-form-template-management-template-widget-edit.component-BkJ3ieIg.mjs.map} +1 -1
  91. package/fesm2022/{acorex-modules-form-template-management-template.entity-_yMAqh35.mjs → acorex-modules-form-template-management-template.entity-ByE2p0Mu.mjs} +2 -2
  92. package/fesm2022/{acorex-modules-form-template-management-template.entity-_yMAqh35.mjs.map → acorex-modules-form-template-management-template.entity-ByE2p0Mu.mjs.map} +1 -1
  93. package/fesm2022/{acorex-modules-form-template-management-viewer-popup.component-CbcSFEis.mjs → acorex-modules-form-template-management-viewer-popup.component-CThcXWpt.mjs} +3 -3
  94. package/fesm2022/{acorex-modules-form-template-management-viewer-popup.component-CbcSFEis.mjs.map → acorex-modules-form-template-management-viewer-popup.component-CThcXWpt.mjs.map} +1 -1
  95. package/fesm2022/acorex-modules-form-template-management.mjs +1 -1
  96. package/fesm2022/acorex-modules-notification-management.mjs +2 -2
  97. package/fesm2022/acorex-modules-notification-management.mjs.map +1 -1
  98. package/fesm2022/{acorex-modules-organization-management-add-item.component-Bsae9u-e.mjs → acorex-modules-organization-management-add-item.component-DW0TneoX.mjs} +2 -2
  99. package/fesm2022/{acorex-modules-organization-management-add-item.component-Bsae9u-e.mjs.map → acorex-modules-organization-management-add-item.component-DW0TneoX.mjs.map} +1 -1
  100. package/fesm2022/{acorex-modules-organization-management-org-chart-configuration.page-aMPR3Oyw.mjs → acorex-modules-organization-management-org-chart-configuration.page-JKQwYEPq.mjs} +3 -3
  101. package/fesm2022/{acorex-modules-organization-management-org-chart-configuration.page-aMPR3Oyw.mjs.map → acorex-modules-organization-management-org-chart-configuration.page-JKQwYEPq.mjs.map} +1 -1
  102. package/fesm2022/{acorex-modules-organization-management-org-chart.page-CAgSSVON.mjs → acorex-modules-organization-management-org-chart.page-C2ZtUVKI.mjs} +4 -4
  103. package/fesm2022/{acorex-modules-organization-management-org-chart.page-CAgSSVON.mjs.map → acorex-modules-organization-management-org-chart.page-C2ZtUVKI.mjs.map} +1 -1
  104. package/fesm2022/{acorex-modules-organization-management-setting.provider-CAU8Bve9.mjs → acorex-modules-organization-management-setting.provider-CMDpwkG2.mjs} +2 -2
  105. package/fesm2022/{acorex-modules-organization-management-setting.provider-CAU8Bve9.mjs.map → acorex-modules-organization-management-setting.provider-CMDpwkG2.mjs.map} +1 -1
  106. package/fesm2022/acorex-modules-organization-management.mjs +4 -4
  107. package/fesm2022/{acorex-modules-platform-management-list-version.component-DI1wKhRv.mjs → acorex-modules-platform-management-list-version.component-C9764yzu.mjs} +2 -2
  108. package/fesm2022/{acorex-modules-platform-management-list-version.component-DI1wKhRv.mjs.map → acorex-modules-platform-management-list-version.component-C9764yzu.mjs.map} +1 -1
  109. package/fesm2022/acorex-modules-platform-management.mjs +368 -15
  110. package/fesm2022/acorex-modules-platform-management.mjs.map +1 -1
  111. package/package.json +1 -1
  112. package/platform-management/lib/const.d.ts +6 -0
  113. package/platform-management/lib/entities/index.d.ts +1 -0
  114. package/platform-management/lib/entities/meta-data-definition/meta-data-definition.types.d.ts +1 -0
  115. package/platform-management/lib/entities/meta-data-definition-category/category.entity.d.ts +3 -0
  116. package/platform-management/lib/entities/meta-data-definition-category/category.service.d.ts +10 -0
  117. package/platform-management/lib/entities/meta-data-definition-category/category.types.d.ts +5 -0
  118. package/platform-management/lib/entities/meta-data-definition-category/index.d.ts +3 -0
  119. package/document-management/lib/features/shared/components/file-viewer-popup/index.d.ts +0 -1
  120. package/document-management/lib/features/shared/components/tree-folder-popup/index.d.ts +0 -1
  121. package/document-management/lib/features/shared/components/tree-folder-popup/tree-folder-popup.component.d.ts +0 -20
  122. package/fesm2022/acorex-modules-common-index-BAt02rnb.mjs +0 -472
  123. package/fesm2022/acorex-modules-common-index-BAt02rnb.mjs.map +0 -1
  124. package/fesm2022/acorex-modules-document-management-acorex-modules-document-management-BmLGtKDq.mjs.map +0 -1
  125. package/fesm2022/acorex-modules-document-management-create-folder-dialog.component-DqoWmtm7.mjs.map +0 -1
  126. package/fesm2022/acorex-modules-document-management-drive-choose.component-CkS8s7zm.mjs +0 -152
  127. package/fesm2022/acorex-modules-document-management-drive-choose.component-CkS8s7zm.mjs.map +0 -1
  128. package/fesm2022/acorex-modules-document-management-drive.component-B6az6-_w.mjs +0 -164
  129. package/fesm2022/acorex-modules-document-management-drive.component-B6az6-_w.mjs.map +0 -1
  130. package/fesm2022/acorex-modules-document-management-file-viewer-popup.component-CaSagveT.mjs +0 -24
  131. package/fesm2022/acorex-modules-document-management-file-viewer-popup.component-CaSagveT.mjs.map +0 -1
  132. package/fesm2022/acorex-modules-document-management-index-9l8D5iEE.mjs +0 -69
  133. package/fesm2022/acorex-modules-document-management-index-9l8D5iEE.mjs.map +0 -1
  134. package/fesm2022/acorex-modules-document-management-rename-node-dialog.component-BoODbM0H.mjs.map +0 -1
@@ -0,0 +1,305 @@
1
+ import * as i0 from '@angular/core';
2
+ import { inject, ViewEncapsulation, Component, signal, computed, viewChild, effect, untracked, HostListener, ChangeDetectionStrategy } from '@angular/core';
3
+ import * as i1 from '@angular/common';
4
+ import { CommonModule } from '@angular/common';
5
+ import { AXBadgeModule } from '@acorex/components/badge';
6
+ import { AXBreadcrumbsModule } from '@acorex/components/breadcrumbs';
7
+ import * as i2$1 from '@acorex/components/button';
8
+ import { AXButtonModule } from '@acorex/components/button';
9
+ import { AXButtonGroupModule } from '@acorex/components/button-group';
10
+ import * as i3 from '@acorex/components/decorators';
11
+ import { AXDecoratorModule } from '@acorex/components/decorators';
12
+ import * as i2$2 from '@acorex/components/dropdown';
13
+ import { AXDropdownModule } from '@acorex/components/dropdown';
14
+ import { AXDropdownButtonModule } from '@acorex/components/dropdown-button';
15
+ import { AXLoadingModule } from '@acorex/components/loading';
16
+ import { AXMenuModule } from '@acorex/components/menu';
17
+ import * as i3$1 from '@acorex/core/translation';
18
+ import { AXTranslationModule } from '@acorex/core/translation';
19
+ import { AXPBasePageComponent, AXPPageLayoutComponent, AXPBasePage } from '@acorex/platform/themes/default';
20
+ import * as i5 from '@acorex/components/search-box';
21
+ import { AXSearchBoxModule } from '@acorex/components/search-box';
22
+ import { AXDateTimeModule } from '@acorex/core/date-time';
23
+ import { AXFileModule } from '@acorex/core/file';
24
+ import * as i2 from '@acorex/core/format';
25
+ import { AXFormatModule } from '@acorex/core/format';
26
+ import { AXPFileTypeProviderService } from '@acorex/platform/common';
27
+ import { AXPThemeLayoutBlockComponent } from '@acorex/platform/themes/shared';
28
+ import { Router, ActivatedRoute, RouterModule } from '@angular/router';
29
+ import { A as AXPDocumentExplorerViewModel, R as RootConfig, a as AXMDocumentManagerService, b as AXMDocumentExplorerComponent, c as AXMDriveScope, d as AXMFolderPathBreadcrumbsComponent } from './acorex-modules-document-management-acorex-modules-document-management-_BOVaDOq.mjs';
30
+
31
+ class AXMDocumentExplorerDetailPanelComponent {
32
+ constructor() {
33
+ this.vm = inject(AXPDocumentExplorerViewModel);
34
+ }
35
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.0.3", ngImport: i0, type: AXMDocumentExplorerDetailPanelComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
36
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "19.0.3", type: AXMDocumentExplorerDetailPanelComponent, isStandalone: true, selector: "axm-document-explorer-detail-panel", ngImport: i0, template: "<!-- Multiple Selected -->\n@if(vm.hasMultipleSelectedItems()) {\n<div class=\"__header\" *translate=\"let t\">\n <div class=\"__title\">\n <i class=\"fa-fw fa-lg fa-solid\"></i>\n <span> {{ vm.selectedCount() }} {{ t('itemsSelected', { scope: 'common' }) | async }}</span>\n </div>\n <ax-button [look]=\"'blank'\" class=\"ax-sm ax-rounded-full\" (onClick)=\"vm.closeDetailPanel()\">\n <ax-icon icon=\"fa-solid fa-xmark\"></ax-icon>\n </ax-button>\n</div>\n<div class=\"__content\"></div>\n}\n<!-- Single Selected -->\n@else {\n<!-- Info -->\n@let nodeInfo = vm.getNodeInfo((vm.selectedNode() ?? vm.currentFolder())!);\n<div class=\"__header\">\n <div class=\"__title\">\n <i class=\"fa-fw fa-lg {{ nodeInfo.icon }} fa-solid\"></i>\n <span>{{ nodeInfo.name }}</span>\n </div>\n <ax-button [look]=\"'blank'\" class=\"ax-sm ax-rounded-full\" (onClick)=\"vm.closeDetailPanel()\">\n <ax-icon icon=\"fa-solid fa-xmark\"></ax-icon>\n </ax-button>\n</div>\n<div class=\"__content\">\n @for(section of nodeInfo.sections; track section.title) {\n <div class=\"__section\">\n <div class=\"__title\">\n <span>{{ section.title }}</span>\n </div>\n <div class=\"__content\">\n @for(detail of section.details; track detail.title) {\n <div class=\"__row\">\n <div class=\"__title\">\n <span>{{ detail.title }}</span>\n </div>\n <div class=\"__content\">\n @if(detail.format) {\n <span>{{ detail.content | format : detail.format | async }}</span>\n } @else {\n <span>{{ detail.content ?? '---' }}</span>\n }\n </div>\n </div>\n }\n </div>\n </div>\n }\n</div>\n}\n", styles: ["axm-document-explorer-detail-panel{display:flex;flex-direction:column;border-radius:.5rem;border-width:1px;--tw-shadow: 0 1px 2px 0 rgb(0 0 0 / .05);--tw-shadow-colored: 0 1px 2px 0 var(--tw-shadow-color);box-shadow:var(--tw-ring-offset-shadow, 0 0 #0000),var(--tw-ring-shadow, 0 0 #0000),var(--tw-shadow);background-color:rgb(var(--ax-sys-color-lightest-surface));color:rgb(var(--ax-sys-color-on-lightest-surface));border-color:rgb(var(--ax-sys-color-border-lightest-surface))}@media (min-width: 1024px){axm-document-explorer-detail-panel{min-width:20rem}}axm-document-explorer-detail-panel>.__header{display:flex;flex-direction:row;align-items:center;justify-content:space-between;border-bottom-width:1px;padding:1rem}axm-document-explorer-detail-panel>.__header>.__title{display:flex;width:90%;flex-direction:row;align-items:center;gap:.5rem}axm-document-explorer-detail-panel>.__header>.__title span{overflow:hidden;text-overflow:ellipsis;white-space:nowrap;text-align:start;font-weight:600;line-height:1.625}axm-document-explorer-detail-panel>.__content{display:flex;flex-direction:column}axm-document-explorer-detail-panel>.__content>:not([hidden])~:not([hidden]){--tw-divide-y-reverse: 0;border-top-width:calc(1px * calc(1 - var(--tw-divide-y-reverse)));border-bottom-width:calc(1px * var(--tw-divide-y-reverse))}axm-document-explorer-detail-panel>.__content>.__section{display:flex;flex-direction:column;padding:1rem}axm-document-explorer-detail-panel>.__content>.__section>.__title{margin-bottom:1rem;font-size:.875rem;line-height:1.25rem;font-weight:700}axm-document-explorer-detail-panel>.__content>.__section>.__content{display:flex;flex-direction:column;gap:1rem}axm-document-explorer-detail-panel>.__content>.__section>.__content>.__row{display:flex;flex-direction:column;gap:.25rem}axm-document-explorer-detail-panel>.__content>.__section>.__content>.__row>.__title{display:flex;font-size:.875rem;line-height:1.25rem;font-weight:600;opacity:.9}axm-document-explorer-detail-panel>.__content>.__section>.__content>.__row>.__content{display:flex;flex-direction:row;align-items:center;gap:.5rem}axm-document-explorer-detail-panel>.__content>.__section>.__content>.__row>.__content span{opacity:.7}\n"], dependencies: [{ kind: "ngmodule", type: CommonModule }, { kind: "pipe", type: i1.AsyncPipe, name: "async" }, { kind: "ngmodule", type: AXDecoratorModule }, { kind: "component", type: i3.AXDecoratorIconComponent, selector: "ax-icon", inputs: ["icon"] }, { kind: "ngmodule", type: AXFormatModule }, { kind: "pipe", type: i2.AXFormatPipe, name: "format" }, { kind: "ngmodule", type: AXButtonModule }, { kind: "component", type: i2$1.AXButtonComponent, selector: "ax-button", inputs: ["disabled", "size", "tabIndex", "color", "look", "text", "toggleable", "selected", "iconOnly", "type", "loadingText"], outputs: ["onBlur", "onFocus", "onClick", "selectedChange", "toggleableChange", "lookChange", "colorChange", "disabledChange", "loadingTextChange"] }, { kind: "ngmodule", type: AXTranslationModule }, { kind: "directive", type: i3$1.AXTranslatorDirective, selector: "[translate]" }], encapsulation: i0.ViewEncapsulation.None }); }
37
+ }
38
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.0.3", ngImport: i0, type: AXMDocumentExplorerDetailPanelComponent, decorators: [{
39
+ type: Component,
40
+ args: [{ selector: 'axm-document-explorer-detail-panel', standalone: true, encapsulation: ViewEncapsulation.None, imports: [
41
+ CommonModule,
42
+ AXDecoratorModule,
43
+ AXFormatModule,
44
+ AXButtonModule,
45
+ AXTranslationModule
46
+ ], template: "<!-- Multiple Selected -->\n@if(vm.hasMultipleSelectedItems()) {\n<div class=\"__header\" *translate=\"let t\">\n <div class=\"__title\">\n <i class=\"fa-fw fa-lg fa-solid\"></i>\n <span> {{ vm.selectedCount() }} {{ t('itemsSelected', { scope: 'common' }) | async }}</span>\n </div>\n <ax-button [look]=\"'blank'\" class=\"ax-sm ax-rounded-full\" (onClick)=\"vm.closeDetailPanel()\">\n <ax-icon icon=\"fa-solid fa-xmark\"></ax-icon>\n </ax-button>\n</div>\n<div class=\"__content\"></div>\n}\n<!-- Single Selected -->\n@else {\n<!-- Info -->\n@let nodeInfo = vm.getNodeInfo((vm.selectedNode() ?? vm.currentFolder())!);\n<div class=\"__header\">\n <div class=\"__title\">\n <i class=\"fa-fw fa-lg {{ nodeInfo.icon }} fa-solid\"></i>\n <span>{{ nodeInfo.name }}</span>\n </div>\n <ax-button [look]=\"'blank'\" class=\"ax-sm ax-rounded-full\" (onClick)=\"vm.closeDetailPanel()\">\n <ax-icon icon=\"fa-solid fa-xmark\"></ax-icon>\n </ax-button>\n</div>\n<div class=\"__content\">\n @for(section of nodeInfo.sections; track section.title) {\n <div class=\"__section\">\n <div class=\"__title\">\n <span>{{ section.title }}</span>\n </div>\n <div class=\"__content\">\n @for(detail of section.details; track detail.title) {\n <div class=\"__row\">\n <div class=\"__title\">\n <span>{{ detail.title }}</span>\n </div>\n <div class=\"__content\">\n @if(detail.format) {\n <span>{{ detail.content | format : detail.format | async }}</span>\n } @else {\n <span>{{ detail.content ?? '---' }}</span>\n }\n </div>\n </div>\n }\n </div>\n </div>\n }\n</div>\n}\n", styles: ["axm-document-explorer-detail-panel{display:flex;flex-direction:column;border-radius:.5rem;border-width:1px;--tw-shadow: 0 1px 2px 0 rgb(0 0 0 / .05);--tw-shadow-colored: 0 1px 2px 0 var(--tw-shadow-color);box-shadow:var(--tw-ring-offset-shadow, 0 0 #0000),var(--tw-ring-shadow, 0 0 #0000),var(--tw-shadow);background-color:rgb(var(--ax-sys-color-lightest-surface));color:rgb(var(--ax-sys-color-on-lightest-surface));border-color:rgb(var(--ax-sys-color-border-lightest-surface))}@media (min-width: 1024px){axm-document-explorer-detail-panel{min-width:20rem}}axm-document-explorer-detail-panel>.__header{display:flex;flex-direction:row;align-items:center;justify-content:space-between;border-bottom-width:1px;padding:1rem}axm-document-explorer-detail-panel>.__header>.__title{display:flex;width:90%;flex-direction:row;align-items:center;gap:.5rem}axm-document-explorer-detail-panel>.__header>.__title span{overflow:hidden;text-overflow:ellipsis;white-space:nowrap;text-align:start;font-weight:600;line-height:1.625}axm-document-explorer-detail-panel>.__content{display:flex;flex-direction:column}axm-document-explorer-detail-panel>.__content>:not([hidden])~:not([hidden]){--tw-divide-y-reverse: 0;border-top-width:calc(1px * calc(1 - var(--tw-divide-y-reverse)));border-bottom-width:calc(1px * var(--tw-divide-y-reverse))}axm-document-explorer-detail-panel>.__content>.__section{display:flex;flex-direction:column;padding:1rem}axm-document-explorer-detail-panel>.__content>.__section>.__title{margin-bottom:1rem;font-size:.875rem;line-height:1.25rem;font-weight:700}axm-document-explorer-detail-panel>.__content>.__section>.__content{display:flex;flex-direction:column;gap:1rem}axm-document-explorer-detail-panel>.__content>.__section>.__content>.__row{display:flex;flex-direction:column;gap:.25rem}axm-document-explorer-detail-panel>.__content>.__section>.__content>.__row>.__title{display:flex;font-size:.875rem;line-height:1.25rem;font-weight:600;opacity:.9}axm-document-explorer-detail-panel>.__content>.__section>.__content>.__row>.__content{display:flex;flex-direction:row;align-items:center;gap:.5rem}axm-document-explorer-detail-panel>.__content>.__section>.__content>.__row>.__content span{opacity:.7}\n"] }]
47
+ }] });
48
+
49
+ class AXMDocumentDriveComponent extends AXPBasePageComponent {
50
+ constructor() {
51
+ super(...arguments);
52
+ //#region ---------------- Services & Dependencies ----------------
53
+ this.rootConfig = RootConfig;
54
+ this.fileTypeService = inject(AXPFileTypeProviderService);
55
+ this.driveService = inject(AXMDocumentManagerService);
56
+ this.vm = inject(AXPDocumentExplorerViewModel);
57
+ this.router = inject(Router);
58
+ this.activatedRoute = inject(ActivatedRoute);
59
+ //#endregion
60
+ //#region ---------------- View Properties ----------------
61
+ this.filterItems = signal([]);
62
+ this.selectedFilter = signal('all');
63
+ this.sortItems = signal([
64
+ { key: 'name', textKey: 'actions.sort-by-name', icon: 'fa-light fa-font' },
65
+ { key: 'modified', textKey: 'actions.sort-by-date', icon: 'fa-light fa-calendar' },
66
+ { key: 'size', textKey: 'actions.sort-by-size', icon: 'fa-light fa-weight-hanging' },
67
+ ]);
68
+ this.viewsItems = signal([
69
+ { key: 'large-icons', icon: 'fa-light fa-grid' },
70
+ { key: 'small-icons', icon: 'fa-light fa-grid', break: true },
71
+ { key: 'large-tiles', icon: 'fa-grid-2' },
72
+ { key: 'small-tiles', icon: 'fa-grid-2', break: true },
73
+ { key: 'details', icon: 'fa-bars', break: true },
74
+ { key: 'list', icon: 'fa-list' },
75
+ ]);
76
+ this.selectedViewMode = computed(() => this.viewsItems().find((item) => item.key === this.vm.viewMode()) || this.viewsItems()[0]);
77
+ this.selectionMode = signal('single');
78
+ this.documentExplorer = viewChild(AXMDocumentExplorerComponent);
79
+ //#endregion
80
+ //#region ---------------- Computed Properties ----------------
81
+ this.selectedSort = computed(() => {
82
+ const items = this.sortItems();
83
+ return items.find((item) => item.key === this.vm.sortField()) || items[0];
84
+ });
85
+ //#endregion
86
+ //#region ---------------- Effects ----------------
87
+ this.#navigateEffect = effect(() => {
88
+ const navigatingFolderId = this.vm.navigatingFolderId();
89
+ if (navigatingFolderId) {
90
+ this.handleNavigateToFolder(navigatingFolderId);
91
+ }
92
+ });
93
+ this.#loadingEffect = effect(() => {
94
+ const isLoading = this.vm.isLoading();
95
+ untracked(() => {
96
+ this.layoutService.setNavigationLoading(isLoading);
97
+ });
98
+ });
99
+ }
100
+ //#endregion
101
+ //#region ---------------- Effects ----------------
102
+ #navigateEffect;
103
+ #loadingEffect;
104
+ //#endregion
105
+ //#region ---------------- Lifecycle Hooks ----------------
106
+ async ngOnInit() {
107
+ super.ngOnInit();
108
+ await this.loadFilterItems();
109
+ await this.vm.initialize({ browseMode: 'file' });
110
+ this.activatedRoute.paramMap.subscribe(async () => {
111
+ this.loadDrive();
112
+ });
113
+ }
114
+ //#endregion
115
+ //#region ---------------- Event Handlers ----------------
116
+ async handleSearchChange(event) {
117
+ console.log(event);
118
+ const result = await this.driveService.searchNodes(event.value, AXMDriveScope.Platform);
119
+ console.log(result);
120
+ }
121
+ handleCtrlKey(e) {
122
+ this.selectionMode.set('multiple');
123
+ }
124
+ handleCtrlKeyUp(e) {
125
+ this.selectionMode.set('single');
126
+ }
127
+ handleNavigateToFolder(folderId) {
128
+ this.router.navigate([`${this.sessionService.application?.name}/drive/my/${folderId}`]);
129
+ }
130
+ //#endregion
131
+ //#region ---------------- Data Loading Methods ----------------
132
+ async loadDrive() {
133
+ const folderId = this.activatedRoute.snapshot.paramMap.get('id');
134
+ if (folderId) {
135
+ await this.vm.loadFolderContents(folderId);
136
+ }
137
+ else {
138
+ const root = await this.driveService.getRoot(AXMDriveScope.Platform);
139
+ if (root.result) {
140
+ await this.router.navigate([`${this.sessionService.application?.name}/drive/my/${root.result.id}`], {
141
+ replaceUrl: true,
142
+ });
143
+ }
144
+ }
145
+ //
146
+ this.recompute();
147
+ }
148
+ async loadFilterItems() {
149
+ const types = await this.fileTypeService.items();
150
+ const items = [
151
+ { key: 'all', textKey: 'file-types.all', icon: 'fa-light fa-folder-closed' },
152
+ ...types.map((type) => ({
153
+ key: type.name,
154
+ textKey: `file-types.${type.name}`,
155
+ icon: type.icon || 'fa-light fa-file',
156
+ })),
157
+ ];
158
+ this.filterItems.set(items);
159
+ }
160
+ //#endregion
161
+ //#region ---------------- Filter Methods ----------------
162
+ setFilter(key) {
163
+ this.selectedFilter.set(key);
164
+ }
165
+ getFilterIcon() {
166
+ if (this.selectedFilter() === 'all') {
167
+ return 'fa-light fa-folder-closed';
168
+ }
169
+ const item = this.filterItems().find((item) => item.key === this.selectedFilter());
170
+ return item?.icon || 'fa-light fa-file';
171
+ }
172
+ getFilterText() {
173
+ if (this.selectedFilter() === 'all') {
174
+ return 'file-types.all';
175
+ }
176
+ const item = this.filterItems().find((item) => item.key === this.selectedFilter());
177
+ return item?.textKey || 'file-types.all';
178
+ }
179
+ //#endregion
180
+ //#region ---------------- Page Configuration Overrides ----------------
181
+ async getPrimaryMenuItems() {
182
+ if (this.vm.hasMultipleSelectedItems()) {
183
+ return [
184
+ {
185
+ name: 'deleteItems',
186
+ title: 't("deleteItems")',
187
+ icon: 'fa-light fa-trash-can',
188
+ color: 'danger',
189
+ }
190
+ ];
191
+ }
192
+ return [
193
+ {
194
+ name: 'new-folder',
195
+ title: 't("add-item")',
196
+ icon: 'fa-light fa-plus',
197
+ items: await this.vm.getFolderAddMenuItems()
198
+ },
199
+ ];
200
+ }
201
+ async getSecondaryMenuItems() {
202
+ if (this.vm.hasMultipleSelectedItems()) {
203
+ return [
204
+ {
205
+ name: 'delete',
206
+ title: 't("delete")',
207
+ icon: 'fa-light fa-trash-can',
208
+ color: 'danger',
209
+ }
210
+ ];
211
+ }
212
+ return this.vm.getFolderActionMenuItems();
213
+ }
214
+ getPageTitle() {
215
+ if (this.vm.isRoot()) {
216
+ return 'Drive';
217
+ }
218
+ return this.vm.currentFolder()?.name || '';
219
+ }
220
+ async getPageDescription() {
221
+ const count = await this.vm.itemsCount();
222
+ const size = await this.vm.availableSpace();
223
+ const formattedSize = await this.formatService.format(size, 'filesize');
224
+ return this.translateService.translateAsync('my-drive.description', {
225
+ scope: this.rootConfig.config.i18n,
226
+ params: {
227
+ count,
228
+ size: formattedSize
229
+ }
230
+ });
231
+ }
232
+ getPageBreadcrumbs() {
233
+ return [
234
+ {
235
+ title: this.translateService.translateSync('entity.home'),
236
+ icon: 'fa-solid fa-home ax-text-xs ax-me-2',
237
+ },
238
+ {
239
+ title: 'My Drive',
240
+ },
241
+ {
242
+ title: this.vm.currentFolder()?.name || '',
243
+ }
244
+ ];
245
+ }
246
+ execute(command) {
247
+ switch (command.name) {
248
+ case 'new-folder':
249
+ const folderId = command.options?.['folderId'];
250
+ if (folderId) {
251
+ this.driveService.showCreateFolderDialog(folderId);
252
+ }
253
+ break;
254
+ }
255
+ }
256
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.0.3", ngImport: i0, type: AXMDocumentDriveComponent, deps: null, target: i0.ɵɵFactoryTarget.Component }); }
257
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "19.0.3", type: AXMDocumentDriveComponent, isStandalone: true, selector: "axp-document-drive", host: { listeners: { "document:keydown.control": "handleCtrlKey($event)", "document:keyup.control": "handleCtrlKeyUp($event)" } }, providers: [
258
+ AXPDocumentExplorerViewModel,
259
+ {
260
+ provide: AXPBasePage,
261
+ useExisting: AXMDocumentDriveComponent
262
+ }
263
+ ], viewQueries: [{ propertyName: "documentExplorer", first: true, predicate: AXMDocumentExplorerComponent, descendants: true, isSignal: true }], usesInheritance: true, ngImport: i0, template: "<!-- Main Layout -->\n<axp-page-layout *translate=\"let t\">\n <axp-page-toolbar>\n <!-- Left Side Toolbar -->\n <axp-layout-prefix>\n @if(vm.hasMultipleSelectedItems() ) {\n <div class=\"ax-flex ax-gap-3 ax-items-center ax-h-10\">\n <span class=\"ax-text-xl ax-font-bold\">\n {{ vm.selectedCount() }} {{ t('itemsSelected', { scope: 'common' }) | async }}\n </span>\n <span (click)=\"vm.deselectAll()\" class=\"ax-text-sm ax-text-primary-500 ax-underline ax-cursor-pointer\">{{\n t('unselect', { scope: 'common' }) | async\n }}</span>\n </div>\n }\n <!---------->\n @else {\n <!-- Filter Dropdown -->\n <ax-button [text]=\"t(getFilterText(), { scope: rootConfig.config.i18n }) | async\">\n <ax-prefix>\n <ax-icon [icon]=\"getFilterIcon()\"></ax-icon>\n </ax-prefix>\n\n <ax-dropdown-panel>\n <ax-button-item-list class=\"ax-p-2\">\n @for(item of filterItems(); track item.key) {\n <ax-button-item (onClick)=\"setFilter(item.key)\"\n [text]=\"(t(item.textKey, { scope: rootConfig.config.i18n }) | async)!\">\n <ax-prefix>\n <ax-icon [icon]=\"item.icon\"></ax-icon>\n </ax-prefix>\n </ax-button-item>\n }\n </ax-button-item-list>\n </ax-dropdown-panel>\n </ax-button>\n <!-- Search Box -->\n <ax-search-box (onValueChanged)=\"handleSearchChange($event)\" class=\"ax-w-72 ax-hidden md:ax-flex\"\n [placeholder]=\"t('actions.search', { scope: rootConfig.config.i18n }) | async\"><ax-clear-button></ax-clear-button></ax-search-box>\n }\n </axp-layout-prefix>\n\n <!-- Right Side Toolbar -->\n <axp-layout-suffix>\n <!-- Sort Dropdown -->\n <ax-button>\n <ax-icon\n [icon]=\"'fa-light fa-arrow-' + (vm.sortDirection() === 'asc' ? 'up' : 'down') + '-wide-short'\"></ax-icon>\n <ax-dropdown-panel>\n <ax-button-item-list>\n <!-- Sort By Options -->\n @for(item of sortItems(); track item.key) {\n <ax-button-item [text]=\"(t(item.textKey, { scope: rootConfig.config.i18n }) | async)!\"\n (onClick)=\"vm.setSortField(item.key)\" [selected]=\"vm.sortField() === item.key\">\n <ax-prefix>\n <ax-icon [icon]=\"item.icon\"></ax-icon>\n </ax-prefix>\n </ax-button-item>\n }\n <ax-divider></ax-divider>\n <!-- Sort Direction Options -->\n <ax-button-item [text]=\"(t('actions.sort-ascending', { scope: rootConfig.config.i18n }) | async)!\"\n [selected]=\"vm.sortDirection() === 'asc'\" (onClick)=\"vm.setSortDirection('asc')\">\n <ax-prefix>\n <ax-icon icon=\"fa-light fa-arrow-up-wide-short\"></ax-icon>\n </ax-prefix>\n </ax-button-item>\n <ax-button-item [text]=\"(t('actions.sort-descending', { scope: rootConfig.config.i18n }) | async)!\"\n [selected]=\"vm.sortDirection() === 'desc'\" (onClick)=\"vm.setSortDirection('desc')\">\n <ax-prefix>\n <ax-icon icon=\"fa-light fa-arrow-down-wide-short\"></ax-icon>\n </ax-prefix>\n </ax-button-item>\n </ax-button-item-list>\n </ax-dropdown-panel>\n </ax-button>\n\n <!-- View Mode Toggle -->\n <ax-button>\n <ax-icon icon=\"fa-light {{ selectedViewMode().icon }}\"></ax-icon>\n <ax-dropdown-panel>\n <ax-button-item-list>\n @for(item of viewsItems(); track item.key) {\n <!-- view mode items -->\n <ax-button-item [text]=\"(t('view-modes.' + item.key, { scope: rootConfig.config.i18n }) | async)!\"\n [selected]=\"vm.isViewMode(item.key)\" (onClick)=\"vm.setViewMode(item.key)\">\n <ax-prefix>\n <ax-icon icon=\"fa-light {{ item.icon }}\"></ax-icon>\n </ax-prefix>\n </ax-button-item>\n @if(item.break) {\n <ax-divider></ax-divider>\n }\n <!-- end of view mode items -->\n }\n </ax-button-item-list>\n </ax-dropdown-panel>\n </ax-button>\n\n @if(layoutService.isLarge()) {\n <!-- Detail Panel Toggle -->\n <ax-button (onClick)=\"vm.toggleDetailPanel()\">\n <ax-icon icon=\"{{ vm.isDetailPanelOpen() ? 'fa-solid fa-square-info' : 'fa-light fa-square-info' }}\"></ax-icon>\n </ax-button>\n }\n </axp-layout-suffix>\n </axp-page-toolbar>\n\n <!-- Content Section -->\n <axp-page-content class=\"ax-overflow-auto ax-flex ax-flex-row ax-gap-4\">\n <axm-document-explorer [selectionMode]=\"selectionMode()\"></axm-document-explorer>\n @if (vm.isDetailPanelOpen() && layoutService.isLarge()) {\n <axm-document-explorer-detail-panel class=\"ax-sticky ax-top-0 ax-z-50\"></axm-document-explorer-detail-panel>\n }\n </axp-page-content>\n\n <!-- Footer Section -->\n @if(!layoutService.isSmall()) {\n <axp-page-footer>\n <axp-layout-prefix>\n <axm-folder-path-breadcrumbs></axm-folder-path-breadcrumbs>\n </axp-layout-prefix>\n </axp-page-footer>\n }\n</axp-page-layout>", styles: [""], dependencies: [{ kind: "ngmodule", type: CommonModule }, { kind: "pipe", type: i1.AsyncPipe, name: "async" }, { kind: "ngmodule", type: RouterModule }, { kind: "ngmodule", type: AXMenuModule }, { kind: "ngmodule", type: AXButtonModule }, { kind: "component", type: i2$1.AXButtonComponent, selector: "ax-button", inputs: ["disabled", "size", "tabIndex", "color", "look", "text", "toggleable", "selected", "iconOnly", "type", "loadingText"], outputs: ["onBlur", "onFocus", "onClick", "selectedChange", "toggleableChange", "lookChange", "colorChange", "disabledChange", "loadingTextChange"] }, { kind: "component", type: i2$1.AXButtonItemComponent, selector: "ax-button-item", inputs: ["color", "disabled", "text", "selected", "divided", "data", "name"], outputs: ["onClick", "onFocus", "onBlur", "disabledChange"] }, { kind: "component", type: i2$1.AXButtonItemListComponent, selector: "ax-button-item-list", inputs: ["items"], outputs: ["onItemClick"] }, { kind: "ngmodule", type: AXButtonGroupModule }, { kind: "ngmodule", type: AXDropdownButtonModule }, { kind: "ngmodule", type: AXDropdownModule }, { kind: "component", type: i2$2.AXDropdownPanelComponent, selector: "ax-dropdown-panel", inputs: ["isOpen", "fitParent", "dropdownWidth", "position", "placement", "_target", "adaptivityEnabled"], outputs: ["onOpened", "onClosed"] }, { kind: "ngmodule", type: AXTranslationModule }, { kind: "directive", type: i3$1.AXTranslatorDirective, selector: "[translate]" }, { kind: "ngmodule", type: AXDecoratorModule }, { kind: "component", type: i3.AXDecoratorIconComponent, selector: "ax-icon", inputs: ["icon"] }, { kind: "component", type: i3.AXDecoratorClearButtonComponent, selector: "ax-clear-button", inputs: ["icon"] }, { kind: "component", type: i3.AXDecoratorGenericComponent, selector: "ax-footer, ax-header, ax-content, ax-divider, ax-form-hint, ax-prefix, ax-suffix, ax-text, ax-title, ax-subtitle, ax-placeholder, ax-overlay" }, { kind: "ngmodule", type: AXLoadingModule }, { kind: "ngmodule", type: AXBreadcrumbsModule }, { kind: "ngmodule", type: AXBadgeModule }, { kind: "ngmodule", type: AXSearchBoxModule }, { kind: "component", type: i5.AXSearchBoxComponent, selector: "ax-search-box", inputs: ["disabled", "readonly", "tabIndex", "placeholder", "value", "state", "name", "id", "look", "class", "delayTime", "type"], outputs: ["valueChange", "stateChange", "onValueChanged", "onBlur", "onFocus", "readonlyChange", "disabledChange", "onKeyDown", "onKeyUp", "onKeyPress"] }, { kind: "ngmodule", type: AXFormatModule }, { kind: "ngmodule", type: AXFileModule }, { kind: "component", type: AXPPageLayoutComponent, selector: "axp-page-layout" }, { kind: "component", type: AXPThemeLayoutBlockComponent, selector: " axp-page-content, axp-page-footer, axp-page-header, axp-page-toolbar, axp-layout-content, axp-layout-page-content, axp-layout-sections, axp-layout-body, axp-layout-page-body, axp-layout-prefix, axp-layout-suffix, axp-layout-title, axp-layout-nav-button, axp-layout-description, axp-layout-title-bar, axp-layout-breadcrumbs, axp-layout-list-action, " }, { kind: "ngmodule", type: AXDateTimeModule }, { kind: "component", type: AXMDocumentExplorerComponent, selector: "axm-document-explorer", inputs: ["browseMode", "viewMode", "selectionMode", "showContextMenu"] }, { kind: "component", type: AXMFolderPathBreadcrumbsComponent, selector: "axm-folder-path-breadcrumbs" }, { kind: "component", type: AXMDocumentExplorerDetailPanelComponent, selector: "axm-document-explorer-detail-panel" }], changeDetection: i0.ChangeDetectionStrategy.OnPush, encapsulation: i0.ViewEncapsulation.None }); }
264
+ }
265
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.0.3", ngImport: i0, type: AXMDocumentDriveComponent, decorators: [{
266
+ type: Component,
267
+ args: [{ selector: 'axp-document-drive', standalone: true, imports: [
268
+ CommonModule,
269
+ RouterModule,
270
+ AXMenuModule,
271
+ AXButtonModule,
272
+ AXButtonGroupModule,
273
+ AXDropdownButtonModule,
274
+ AXDropdownModule,
275
+ AXTranslationModule,
276
+ AXDecoratorModule,
277
+ AXLoadingModule,
278
+ AXBreadcrumbsModule,
279
+ AXBadgeModule,
280
+ AXSearchBoxModule,
281
+ AXFormatModule,
282
+ AXFileModule,
283
+ AXPPageLayoutComponent,
284
+ AXPThemeLayoutBlockComponent,
285
+ AXDateTimeModule,
286
+ AXMDocumentExplorerComponent,
287
+ AXMFolderPathBreadcrumbsComponent,
288
+ AXMDocumentExplorerDetailPanelComponent,
289
+ ], changeDetection: ChangeDetectionStrategy.OnPush, encapsulation: ViewEncapsulation.None, providers: [
290
+ AXPDocumentExplorerViewModel,
291
+ {
292
+ provide: AXPBasePage,
293
+ useExisting: AXMDocumentDriveComponent
294
+ }
295
+ ], template: "<!-- Main Layout -->\n<axp-page-layout *translate=\"let t\">\n <axp-page-toolbar>\n <!-- Left Side Toolbar -->\n <axp-layout-prefix>\n @if(vm.hasMultipleSelectedItems() ) {\n <div class=\"ax-flex ax-gap-3 ax-items-center ax-h-10\">\n <span class=\"ax-text-xl ax-font-bold\">\n {{ vm.selectedCount() }} {{ t('itemsSelected', { scope: 'common' }) | async }}\n </span>\n <span (click)=\"vm.deselectAll()\" class=\"ax-text-sm ax-text-primary-500 ax-underline ax-cursor-pointer\">{{\n t('unselect', { scope: 'common' }) | async\n }}</span>\n </div>\n }\n <!---------->\n @else {\n <!-- Filter Dropdown -->\n <ax-button [text]=\"t(getFilterText(), { scope: rootConfig.config.i18n }) | async\">\n <ax-prefix>\n <ax-icon [icon]=\"getFilterIcon()\"></ax-icon>\n </ax-prefix>\n\n <ax-dropdown-panel>\n <ax-button-item-list class=\"ax-p-2\">\n @for(item of filterItems(); track item.key) {\n <ax-button-item (onClick)=\"setFilter(item.key)\"\n [text]=\"(t(item.textKey, { scope: rootConfig.config.i18n }) | async)!\">\n <ax-prefix>\n <ax-icon [icon]=\"item.icon\"></ax-icon>\n </ax-prefix>\n </ax-button-item>\n }\n </ax-button-item-list>\n </ax-dropdown-panel>\n </ax-button>\n <!-- Search Box -->\n <ax-search-box (onValueChanged)=\"handleSearchChange($event)\" class=\"ax-w-72 ax-hidden md:ax-flex\"\n [placeholder]=\"t('actions.search', { scope: rootConfig.config.i18n }) | async\"><ax-clear-button></ax-clear-button></ax-search-box>\n }\n </axp-layout-prefix>\n\n <!-- Right Side Toolbar -->\n <axp-layout-suffix>\n <!-- Sort Dropdown -->\n <ax-button>\n <ax-icon\n [icon]=\"'fa-light fa-arrow-' + (vm.sortDirection() === 'asc' ? 'up' : 'down') + '-wide-short'\"></ax-icon>\n <ax-dropdown-panel>\n <ax-button-item-list>\n <!-- Sort By Options -->\n @for(item of sortItems(); track item.key) {\n <ax-button-item [text]=\"(t(item.textKey, { scope: rootConfig.config.i18n }) | async)!\"\n (onClick)=\"vm.setSortField(item.key)\" [selected]=\"vm.sortField() === item.key\">\n <ax-prefix>\n <ax-icon [icon]=\"item.icon\"></ax-icon>\n </ax-prefix>\n </ax-button-item>\n }\n <ax-divider></ax-divider>\n <!-- Sort Direction Options -->\n <ax-button-item [text]=\"(t('actions.sort-ascending', { scope: rootConfig.config.i18n }) | async)!\"\n [selected]=\"vm.sortDirection() === 'asc'\" (onClick)=\"vm.setSortDirection('asc')\">\n <ax-prefix>\n <ax-icon icon=\"fa-light fa-arrow-up-wide-short\"></ax-icon>\n </ax-prefix>\n </ax-button-item>\n <ax-button-item [text]=\"(t('actions.sort-descending', { scope: rootConfig.config.i18n }) | async)!\"\n [selected]=\"vm.sortDirection() === 'desc'\" (onClick)=\"vm.setSortDirection('desc')\">\n <ax-prefix>\n <ax-icon icon=\"fa-light fa-arrow-down-wide-short\"></ax-icon>\n </ax-prefix>\n </ax-button-item>\n </ax-button-item-list>\n </ax-dropdown-panel>\n </ax-button>\n\n <!-- View Mode Toggle -->\n <ax-button>\n <ax-icon icon=\"fa-light {{ selectedViewMode().icon }}\"></ax-icon>\n <ax-dropdown-panel>\n <ax-button-item-list>\n @for(item of viewsItems(); track item.key) {\n <!-- view mode items -->\n <ax-button-item [text]=\"(t('view-modes.' + item.key, { scope: rootConfig.config.i18n }) | async)!\"\n [selected]=\"vm.isViewMode(item.key)\" (onClick)=\"vm.setViewMode(item.key)\">\n <ax-prefix>\n <ax-icon icon=\"fa-light {{ item.icon }}\"></ax-icon>\n </ax-prefix>\n </ax-button-item>\n @if(item.break) {\n <ax-divider></ax-divider>\n }\n <!-- end of view mode items -->\n }\n </ax-button-item-list>\n </ax-dropdown-panel>\n </ax-button>\n\n @if(layoutService.isLarge()) {\n <!-- Detail Panel Toggle -->\n <ax-button (onClick)=\"vm.toggleDetailPanel()\">\n <ax-icon icon=\"{{ vm.isDetailPanelOpen() ? 'fa-solid fa-square-info' : 'fa-light fa-square-info' }}\"></ax-icon>\n </ax-button>\n }\n </axp-layout-suffix>\n </axp-page-toolbar>\n\n <!-- Content Section -->\n <axp-page-content class=\"ax-overflow-auto ax-flex ax-flex-row ax-gap-4\">\n <axm-document-explorer [selectionMode]=\"selectionMode()\"></axm-document-explorer>\n @if (vm.isDetailPanelOpen() && layoutService.isLarge()) {\n <axm-document-explorer-detail-panel class=\"ax-sticky ax-top-0 ax-z-50\"></axm-document-explorer-detail-panel>\n }\n </axp-page-content>\n\n <!-- Footer Section -->\n @if(!layoutService.isSmall()) {\n <axp-page-footer>\n <axp-layout-prefix>\n <axm-folder-path-breadcrumbs></axm-folder-path-breadcrumbs>\n </axp-layout-prefix>\n </axp-page-footer>\n }\n</axp-page-layout>" }]
296
+ }], propDecorators: { handleCtrlKey: [{
297
+ type: HostListener,
298
+ args: ['document:keydown.control', ['$event']]
299
+ }], handleCtrlKeyUp: [{
300
+ type: HostListener,
301
+ args: ['document:keyup.control', ['$event']]
302
+ }] } });
303
+
304
+ export { AXMDocumentDriveComponent };
305
+ //# sourceMappingURL=acorex-modules-document-management-drive.component-B3BCzdVv.mjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"acorex-modules-document-management-drive.component-B3BCzdVv.mjs","sources":["../../../../libs/modules/document-management/src/lib/features/document-explorer/views/detail-panel/detail-panel.component.ts","../../../../libs/modules/document-management/src/lib/features/document-explorer/views/detail-panel/detail-panel.component.html","../../../../libs/modules/document-management/src/lib/features/drive/drive.component.ts","../../../../libs/modules/document-management/src/lib/features/drive/drive.component.html"],"sourcesContent":["import { Component, inject, ViewEncapsulation } from \"@angular/core\";\nimport { AXPDocumentExplorerViewModel } from \"../../document-explorer.viewmodel\";\nimport { AXDecoratorModule } from \"@acorex/components/decorators\";\nimport { AXFormatModule } from \"@acorex/core/format\";\nimport { CommonModule } from \"@angular/common\";\nimport { AXButtonModule } from \"@acorex/components/button\";\nimport { AXTranslationModule } from \"@acorex/core/translation\";\n\n@Component({\n selector: 'axm-document-explorer-detail-panel',\n templateUrl: './detail-panel.component.html',\n styleUrls: ['./detail-panel.component.scss'],\n standalone: true,\n encapsulation: ViewEncapsulation.None,\n imports: [\n CommonModule,\n AXDecoratorModule,\n AXFormatModule,\n AXButtonModule,\n AXTranslationModule\n ]\n})\nexport class AXMDocumentExplorerDetailPanelComponent {\n protected vm = inject(AXPDocumentExplorerViewModel);\n}\n","<!-- Multiple Selected -->\n@if(vm.hasMultipleSelectedItems()) {\n<div class=\"__header\" *translate=\"let t\">\n <div class=\"__title\">\n <i class=\"fa-fw fa-lg fa-solid\"></i>\n <span> {{ vm.selectedCount() }} {{ t('itemsSelected', { scope: 'common' }) | async }}</span>\n </div>\n <ax-button [look]=\"'blank'\" class=\"ax-sm ax-rounded-full\" (onClick)=\"vm.closeDetailPanel()\">\n <ax-icon icon=\"fa-solid fa-xmark\"></ax-icon>\n </ax-button>\n</div>\n<div class=\"__content\"></div>\n}\n<!-- Single Selected -->\n@else {\n<!-- Info -->\n@let nodeInfo = vm.getNodeInfo((vm.selectedNode() ?? vm.currentFolder())!);\n<div class=\"__header\">\n <div class=\"__title\">\n <i class=\"fa-fw fa-lg {{ nodeInfo.icon }} fa-solid\"></i>\n <span>{{ nodeInfo.name }}</span>\n </div>\n <ax-button [look]=\"'blank'\" class=\"ax-sm ax-rounded-full\" (onClick)=\"vm.closeDetailPanel()\">\n <ax-icon icon=\"fa-solid fa-xmark\"></ax-icon>\n </ax-button>\n</div>\n<div class=\"__content\">\n @for(section of nodeInfo.sections; track section.title) {\n <div class=\"__section\">\n <div class=\"__title\">\n <span>{{ section.title }}</span>\n </div>\n <div class=\"__content\">\n @for(detail of section.details; track detail.title) {\n <div class=\"__row\">\n <div class=\"__title\">\n <span>{{ detail.title }}</span>\n </div>\n <div class=\"__content\">\n @if(detail.format) {\n <span>{{ detail.content | format : detail.format | async }}</span>\n } @else {\n <span>{{ detail.content ?? '---' }}</span>\n }\n </div>\n </div>\n }\n </div>\n </div>\n }\n</div>\n}\n","import {\n ChangeDetectionStrategy,\n Component,\n computed,\n effect,\n HostListener,\n inject,\n OnInit,\n signal,\n untracked,\n viewChild,\n ViewEncapsulation,\n} from '@angular/core';\nimport { CommonModule } from '@angular/common';\n\nimport { AXBadgeModule } from '@acorex/components/badge';\nimport { AXBreadcrumbsModule } from '@acorex/components/breadcrumbs';\nimport { AXButtonModule } from '@acorex/components/button';\nimport { AXButtonGroupModule } from '@acorex/components/button-group';\nimport { AXDecoratorModule } from '@acorex/components/decorators';\nimport { AXDropdownModule } from '@acorex/components/dropdown';\nimport { AXDropdownButtonModule } from '@acorex/components/dropdown-button';\nimport { AXLoadingModule } from '@acorex/components/loading';\nimport { AXMenuModule } from '@acorex/components/menu';\nimport { AXTranslationModule } from '@acorex/core/translation';\nimport { AXPBasePage, AXPBasePageComponent, AXPPageLayoutComponent } from '@acorex/platform/themes/default';\nimport { AXSearchBoxModule } from '@acorex/components/search-box';\nimport { AXDateTimeModule } from '@acorex/core/date-time';\nimport { AXFileModule } from '@acorex/core/file';\nimport { AXFormatModule } from '@acorex/core/format';\nimport { AXPFileTypeProviderService } from '@acorex/platform/common';\nimport {\n AXPThemeLayoutBlockComponent,\n} from '@acorex/platform/themes/shared';\n\n\n\nimport { ActivatedRoute, Router, RouterModule } from '@angular/router';\nimport { RootConfig } from '../../const';\nimport { AXMDocumentExplorerComponent, AXPDocumentExplorerViewModel } from '../document-explorer';\nimport { AXMDocumentExplorerDetailPanelComponent } from '../document-explorer/views/detail-panel/detail-panel.component';\nimport { AXMDocumentManagerService, AXMFolderPathBreadcrumbsComponent } from '../shared';\nimport { AXMDriveScope, AXMDocumentSelectionMode } from '../shared/document-manager.types';\nimport { AXPActionMenuItem, AXPBreadcrumbItem, AXPExecuteCommand } from '@acorex/platform/core';\n\n@Component({\n selector: 'axp-document-drive',\n templateUrl: './drive.component.html',\n styleUrls: ['./drive.component.scss'],\n standalone: true,\n imports: [\n CommonModule,\n RouterModule,\n AXMenuModule,\n AXButtonModule,\n AXButtonGroupModule,\n AXDropdownButtonModule,\n AXDropdownModule,\n AXTranslationModule,\n AXDecoratorModule,\n AXLoadingModule,\n AXBreadcrumbsModule,\n AXBadgeModule,\n AXSearchBoxModule,\n AXFormatModule,\n AXFileModule,\n AXPPageLayoutComponent,\n AXPThemeLayoutBlockComponent,\n AXDateTimeModule,\n AXMDocumentExplorerComponent,\n AXMFolderPathBreadcrumbsComponent,\n AXMDocumentExplorerDetailPanelComponent,\n ],\n changeDetection: ChangeDetectionStrategy.OnPush,\n encapsulation: ViewEncapsulation.None,\n providers: [\n AXPDocumentExplorerViewModel,\n {\n provide: AXPBasePage,\n useExisting: AXMDocumentDriveComponent\n }\n ],\n})\nexport class AXMDocumentDriveComponent extends AXPBasePageComponent implements OnInit {\n\n //#region ---------------- Services & Dependencies ----------------\n\n protected readonly rootConfig = RootConfig;\n private readonly fileTypeService = inject(AXPFileTypeProviderService);\n private readonly driveService = inject(AXMDocumentManagerService);\n protected readonly vm = inject(AXPDocumentExplorerViewModel);\n protected readonly router = inject(Router);\n protected readonly activatedRoute = inject(ActivatedRoute);\n\n //#endregion\n\n\n //#region ---------------- View Properties ----------------\n\n protected readonly filterItems = signal<Array<{ key: string; textKey: string; icon: string }>>([]);\n public selectedFilter = signal<string>('all');\n\n protected readonly sortItems = signal([\n { key: 'name', textKey: 'actions.sort-by-name', icon: 'fa-light fa-font' },\n { key: 'modified', textKey: 'actions.sort-by-date', icon: 'fa-light fa-calendar' },\n { key: 'size', textKey: 'actions.sort-by-size', icon: 'fa-light fa-weight-hanging' },\n ]);\n\n protected readonly viewsItems = signal([\n { key: 'large-icons', icon: 'fa-light fa-grid' },\n { key: 'small-icons', icon: 'fa-light fa-grid', break: true },\n { key: 'large-tiles', icon: 'fa-grid-2' },\n { key: 'small-tiles', icon: 'fa-grid-2', break: true },\n { key: 'details', icon: 'fa-bars', break: true },\n { key: 'list', icon: 'fa-list' },\n ]);\n\n protected readonly selectedViewMode = computed(() => this.viewsItems().find((item) => item.key === this.vm.viewMode()) || this.viewsItems()[0]);\n protected readonly selectionMode = signal<AXMDocumentSelectionMode>('single');\n protected documentExplorer = viewChild(AXMDocumentExplorerComponent);\n\n //#endregion\n\n\n //#region ---------------- Computed Properties ----------------\n\n protected readonly selectedSort = computed(() => {\n const items = this.sortItems();\n return items.find((item) => item.key === this.vm.sortField()) || items[0];\n });\n\n //#endregion\n\n\n //#region ---------------- Effects ----------------\n\n #navigateEffect = effect(() => {\n const navigatingFolderId = this.vm.navigatingFolderId();\n if (navigatingFolderId) {\n this.handleNavigateToFolder(navigatingFolderId);\n }\n });\n\n #loadingEffect = effect(() => {\n const isLoading = this.vm.isLoading();\n untracked(() => {\n this.layoutService.setNavigationLoading(isLoading);\n });\n });\n\n //#endregion\n\n\n //#region ---------------- Lifecycle Hooks ----------------\n\n override async ngOnInit() {\n super.ngOnInit();\n await this.loadFilterItems();\n await this.vm.initialize({ browseMode: 'file' });\n this.activatedRoute.paramMap.subscribe(async () => {\n this.loadDrive();\n });\n }\n\n //#endregion\n\n\n //#region ---------------- Event Handlers ----------------\n\n async handleSearchChange(event: any) {\n console.log(event);\n const result = await this.driveService.searchNodes(event.value, AXMDriveScope.Platform);\n console.log(result);\n }\n\n @HostListener('document:keydown.control', ['$event'])\n handleCtrlKey(e: KeyboardEvent) {\n this.selectionMode.set('multiple');\n }\n\n @HostListener('document:keyup.control', ['$event'])\n handleCtrlKeyUp(e: KeyboardEvent) {\n this.selectionMode.set('single');\n }\n\n protected handleNavigateToFolder(folderId: string) {\n this.router.navigate([`${this.sessionService.application?.name}/drive/my/${folderId}`]);\n }\n\n //#endregion\n\n\n //#region ---------------- Data Loading Methods ----------------\n\n private async loadDrive() {\n const folderId = this.activatedRoute.snapshot.paramMap.get('id');\n if (folderId) {\n await this.vm.loadFolderContents(folderId);\n } else {\n const root = await this.driveService.getRoot(AXMDriveScope.Platform);\n if (root.result) {\n await this.router.navigate([`${this.sessionService.application?.name}/drive/my/${root.result.id}`], {\n replaceUrl: true,\n });\n }\n }\n //\n this.recompute();\n }\n\n async loadFilterItems() {\n const types = await this.fileTypeService.items();\n const items = [\n { key: 'all', textKey: 'file-types.all', icon: 'fa-light fa-folder-closed' },\n ...types.map((type) => ({\n key: type.name,\n textKey: `file-types.${type.name}`,\n icon: type.icon || 'fa-light fa-file',\n })),\n ];\n this.filterItems.set(items);\n }\n\n //#endregion\n\n\n //#region ---------------- Filter Methods ----------------\n\n protected setFilter(key: string): void {\n this.selectedFilter.set(key);\n }\n\n protected getFilterIcon(): string {\n if (this.selectedFilter() === 'all') {\n return 'fa-light fa-folder-closed';\n }\n const item = this.filterItems().find((item) => item.key === this.selectedFilter());\n return item?.icon || 'fa-light fa-file';\n }\n\n protected getFilterText(): string {\n if (this.selectedFilter() === 'all') {\n return 'file-types.all';\n }\n const item = this.filterItems().find((item) => item.key === this.selectedFilter());\n return item?.textKey || 'file-types.all';\n }\n\n //#endregion\n\n\n //#region ---------------- Page Configuration Overrides ----------------\n\n override async getPrimaryMenuItems(): Promise<AXPActionMenuItem[]> {\n if (this.vm.hasMultipleSelectedItems()) {\n return [\n {\n name: 'deleteItems',\n title: 't(\"deleteItems\")',\n icon: 'fa-light fa-trash-can',\n color: 'danger',\n }\n ];\n }\n return [\n {\n name: 'new-folder',\n title: 't(\"add-item\")',\n icon: 'fa-light fa-plus',\n items: await this.vm.getFolderAddMenuItems()\n },\n ]\n }\n\n override async getSecondaryMenuItems(): Promise<AXPActionMenuItem[]> {\n if (this.vm.hasMultipleSelectedItems()) {\n return [\n {\n name: 'delete',\n title: 't(\"delete\")',\n icon: 'fa-light fa-trash-can',\n color: 'danger',\n }\n ];\n }\n return this.vm.getFolderActionMenuItems();\n }\n\n override getPageTitle(): string {\n if (this.vm.isRoot()) {\n return 'Drive';\n }\n return this.vm.currentFolder()?.name || '';\n }\n\n override async getPageDescription(): Promise<string> {\n const count = await this.vm.itemsCount();\n const size = await this.vm.availableSpace();\n const formattedSize = await this.formatService.format(size, 'filesize');\n return this.translateService.translateAsync('my-drive.description', {\n scope: this.rootConfig.config.i18n,\n params: {\n count,\n size: formattedSize\n }\n });\n }\n\n override getPageBreadcrumbs(): AXPBreadcrumbItem[] | Promise<AXPBreadcrumbItem[]> {\n return [\n {\n title: this.translateService.translateSync('entity.home'),\n icon: 'fa-solid fa-home ax-text-xs ax-me-2',\n },\n {\n title: 'My Drive',\n },\n {\n title: this.vm.currentFolder()?.name || '',\n }\n ];\n }\n\n override execute(command: AXPExecuteCommand): void | Promise<void> {\n switch (command.name) {\n case 'new-folder':\n const folderId = command.options?.['folderId'] as string;\n if (folderId) {\n this.driveService.showCreateFolderDialog(folderId);\n }\n break;\n }\n }\n\n //#endregion\n\n}\n","<!-- Main Layout -->\n<axp-page-layout *translate=\"let t\">\n <axp-page-toolbar>\n <!-- Left Side Toolbar -->\n <axp-layout-prefix>\n @if(vm.hasMultipleSelectedItems() ) {\n <div class=\"ax-flex ax-gap-3 ax-items-center ax-h-10\">\n <span class=\"ax-text-xl ax-font-bold\">\n {{ vm.selectedCount() }} {{ t('itemsSelected', { scope: 'common' }) | async }}\n </span>\n <span (click)=\"vm.deselectAll()\" class=\"ax-text-sm ax-text-primary-500 ax-underline ax-cursor-pointer\">{{\n t('unselect', { scope: 'common' }) | async\n }}</span>\n </div>\n }\n <!---------->\n @else {\n <!-- Filter Dropdown -->\n <ax-button [text]=\"t(getFilterText(), { scope: rootConfig.config.i18n }) | async\">\n <ax-prefix>\n <ax-icon [icon]=\"getFilterIcon()\"></ax-icon>\n </ax-prefix>\n\n <ax-dropdown-panel>\n <ax-button-item-list class=\"ax-p-2\">\n @for(item of filterItems(); track item.key) {\n <ax-button-item (onClick)=\"setFilter(item.key)\"\n [text]=\"(t(item.textKey, { scope: rootConfig.config.i18n }) | async)!\">\n <ax-prefix>\n <ax-icon [icon]=\"item.icon\"></ax-icon>\n </ax-prefix>\n </ax-button-item>\n }\n </ax-button-item-list>\n </ax-dropdown-panel>\n </ax-button>\n <!-- Search Box -->\n <ax-search-box (onValueChanged)=\"handleSearchChange($event)\" class=\"ax-w-72 ax-hidden md:ax-flex\"\n [placeholder]=\"t('actions.search', { scope: rootConfig.config.i18n }) | async\"><ax-clear-button></ax-clear-button></ax-search-box>\n }\n </axp-layout-prefix>\n\n <!-- Right Side Toolbar -->\n <axp-layout-suffix>\n <!-- Sort Dropdown -->\n <ax-button>\n <ax-icon\n [icon]=\"'fa-light fa-arrow-' + (vm.sortDirection() === 'asc' ? 'up' : 'down') + '-wide-short'\"></ax-icon>\n <ax-dropdown-panel>\n <ax-button-item-list>\n <!-- Sort By Options -->\n @for(item of sortItems(); track item.key) {\n <ax-button-item [text]=\"(t(item.textKey, { scope: rootConfig.config.i18n }) | async)!\"\n (onClick)=\"vm.setSortField(item.key)\" [selected]=\"vm.sortField() === item.key\">\n <ax-prefix>\n <ax-icon [icon]=\"item.icon\"></ax-icon>\n </ax-prefix>\n </ax-button-item>\n }\n <ax-divider></ax-divider>\n <!-- Sort Direction Options -->\n <ax-button-item [text]=\"(t('actions.sort-ascending', { scope: rootConfig.config.i18n }) | async)!\"\n [selected]=\"vm.sortDirection() === 'asc'\" (onClick)=\"vm.setSortDirection('asc')\">\n <ax-prefix>\n <ax-icon icon=\"fa-light fa-arrow-up-wide-short\"></ax-icon>\n </ax-prefix>\n </ax-button-item>\n <ax-button-item [text]=\"(t('actions.sort-descending', { scope: rootConfig.config.i18n }) | async)!\"\n [selected]=\"vm.sortDirection() === 'desc'\" (onClick)=\"vm.setSortDirection('desc')\">\n <ax-prefix>\n <ax-icon icon=\"fa-light fa-arrow-down-wide-short\"></ax-icon>\n </ax-prefix>\n </ax-button-item>\n </ax-button-item-list>\n </ax-dropdown-panel>\n </ax-button>\n\n <!-- View Mode Toggle -->\n <ax-button>\n <ax-icon icon=\"fa-light {{ selectedViewMode().icon }}\"></ax-icon>\n <ax-dropdown-panel>\n <ax-button-item-list>\n @for(item of viewsItems(); track item.key) {\n <!-- view mode items -->\n <ax-button-item [text]=\"(t('view-modes.' + item.key, { scope: rootConfig.config.i18n }) | async)!\"\n [selected]=\"vm.isViewMode(item.key)\" (onClick)=\"vm.setViewMode(item.key)\">\n <ax-prefix>\n <ax-icon icon=\"fa-light {{ item.icon }}\"></ax-icon>\n </ax-prefix>\n </ax-button-item>\n @if(item.break) {\n <ax-divider></ax-divider>\n }\n <!-- end of view mode items -->\n }\n </ax-button-item-list>\n </ax-dropdown-panel>\n </ax-button>\n\n @if(layoutService.isLarge()) {\n <!-- Detail Panel Toggle -->\n <ax-button (onClick)=\"vm.toggleDetailPanel()\">\n <ax-icon icon=\"{{ vm.isDetailPanelOpen() ? 'fa-solid fa-square-info' : 'fa-light fa-square-info' }}\"></ax-icon>\n </ax-button>\n }\n </axp-layout-suffix>\n </axp-page-toolbar>\n\n <!-- Content Section -->\n <axp-page-content class=\"ax-overflow-auto ax-flex ax-flex-row ax-gap-4\">\n <axm-document-explorer [selectionMode]=\"selectionMode()\"></axm-document-explorer>\n @if (vm.isDetailPanelOpen() && layoutService.isLarge()) {\n <axm-document-explorer-detail-panel class=\"ax-sticky ax-top-0 ax-z-50\"></axm-document-explorer-detail-panel>\n }\n </axp-page-content>\n\n <!-- Footer Section -->\n @if(!layoutService.isSmall()) {\n <axp-page-footer>\n <axp-layout-prefix>\n <axm-folder-path-breadcrumbs></axm-folder-path-breadcrumbs>\n </axp-layout-prefix>\n </axp-page-footer>\n }\n</axp-page-layout>"],"names":["i2","i3","i4","i5","i6"],"mappings":"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"}
@@ -0,0 +1,20 @@
1
+ import * as i0 from '@angular/core';
2
+ import { inject, Component } from '@angular/core';
3
+ import { CommonModule } from '@angular/common';
4
+ import { AXPElementDataDirective, AXPDblClickDirective } from '@acorex/platform/core';
5
+ import { A as AXPDocumentExplorerViewModel } from './acorex-modules-document-management-acorex-modules-document-management-_BOVaDOq.mjs';
6
+
7
+ class AXMDocumentExplorerLargeIconsViewComponent {
8
+ constructor() {
9
+ this.vm = inject(AXPDocumentExplorerViewModel);
10
+ }
11
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.0.3", ngImport: i0, type: AXMDocumentExplorerLargeIconsViewComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
12
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "19.0.3", type: AXMDocumentExplorerLargeIconsViewComponent, isStandalone: true, selector: "axm-document-explorer-large-icons-view", ngImport: i0, template: "<!-- Large Icons View -->\n<div class=\"__content fa-4x\">\n @for (folder of vm.folders(); track folder.id) {\n <div\n class=\"__explorer-item\"\n [class.--selected]=\"vm.isItemSelected(folder)\"\n [axp-data]=\"folder\"\n (click)=\"vm.toggleSelect(folder)\"\n (onDblClick)=\"vm.navigateToFolder(folder.id)\"\n >\n <div class=\"__icon ax-text-yellow-400\">\n @if (vm.isLoadingFolder(folder.id)) {\n <i class=\"fa-light fa-spinner fa-spin-pulse\"></i>\n } @else {\n <i class=\"fas fa-folder-closed\"></i>\n }\n </div>\n <div class=\"__name\">{{ folder.name }}</div>\n </div>\n } @for (file of vm.files(); track file.id) { @let fileInfo = vm.getFileInfo(file.name);\n <div\n class=\"__explorer-item\"\n [class.--selected]=\"vm.isItemSelected(file)\"\n [axp-data]=\"file\"\n (click)=\"vm.toggleSelect(file)\"\n (onDblClick)=\"vm.openFile(file)\"\n >\n <div class=\"__icon\">\n <i class=\"fa-fw {{ fileInfo.icon }} fa-solid\"></i>\n </div>\n <div class=\"__name\">{{ file.name }}</div>\n </div>\n }\n</div>\n", styles: [":host{width:100%}:host .__content{display:grid;grid-template-columns:repeat(auto-fill,minmax(120px,1fr));gap:1rem}:host .__content .__explorer-item{display:flex;cursor:pointer;flex-direction:column;align-items:center;gap:.5rem;border-radius:.375rem;padding:1rem;text-align:center}:host .__content .__explorer-item:hover{background-color:rgb(var(--ax-sys-color-light-surface));color:rgb(var(--ax-sys-color-on-light-surface));border-color:rgb(var(--ax-sys-color-border-light-surface))}:host .__content .__explorer-item .__icon{flex-shrink:0}:host .__content .__explorer-item .__name{width:100%;font-size:.875rem;line-height:1.25rem;font-weight:500;display:-webkit-box;-webkit-line-clamp:3;-webkit-box-orient:vertical;overflow:hidden;min-height:3.6em}:host .__content .__explorer-item.--selected{background-color:rgb(var(--ax-sys-color-darker-surface));color:rgb(var(--ax-sys-color-on-darker-surface));border-color:rgb(var(--ax-sys-color-border-darker-surface))}\n"], dependencies: [{ kind: "ngmodule", type: CommonModule }, { kind: "directive", type: AXPElementDataDirective, selector: "[axp-data]", inputs: ["axp-data", "axp-data-path"] }, { kind: "directive", type: AXPDblClickDirective, selector: "[onDblClick]", outputs: ["onDblClick"] }] }); }
13
+ }
14
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.0.3", ngImport: i0, type: AXMDocumentExplorerLargeIconsViewComponent, decorators: [{
15
+ type: Component,
16
+ args: [{ selector: 'axm-document-explorer-large-icons-view', standalone: true, imports: [CommonModule, AXPElementDataDirective, AXPDblClickDirective], template: "<!-- Large Icons View -->\n<div class=\"__content fa-4x\">\n @for (folder of vm.folders(); track folder.id) {\n <div\n class=\"__explorer-item\"\n [class.--selected]=\"vm.isItemSelected(folder)\"\n [axp-data]=\"folder\"\n (click)=\"vm.toggleSelect(folder)\"\n (onDblClick)=\"vm.navigateToFolder(folder.id)\"\n >\n <div class=\"__icon ax-text-yellow-400\">\n @if (vm.isLoadingFolder(folder.id)) {\n <i class=\"fa-light fa-spinner fa-spin-pulse\"></i>\n } @else {\n <i class=\"fas fa-folder-closed\"></i>\n }\n </div>\n <div class=\"__name\">{{ folder.name }}</div>\n </div>\n } @for (file of vm.files(); track file.id) { @let fileInfo = vm.getFileInfo(file.name);\n <div\n class=\"__explorer-item\"\n [class.--selected]=\"vm.isItemSelected(file)\"\n [axp-data]=\"file\"\n (click)=\"vm.toggleSelect(file)\"\n (onDblClick)=\"vm.openFile(file)\"\n >\n <div class=\"__icon\">\n <i class=\"fa-fw {{ fileInfo.icon }} fa-solid\"></i>\n </div>\n <div class=\"__name\">{{ file.name }}</div>\n </div>\n }\n</div>\n", styles: [":host{width:100%}:host .__content{display:grid;grid-template-columns:repeat(auto-fill,minmax(120px,1fr));gap:1rem}:host .__content .__explorer-item{display:flex;cursor:pointer;flex-direction:column;align-items:center;gap:.5rem;border-radius:.375rem;padding:1rem;text-align:center}:host .__content .__explorer-item:hover{background-color:rgb(var(--ax-sys-color-light-surface));color:rgb(var(--ax-sys-color-on-light-surface));border-color:rgb(var(--ax-sys-color-border-light-surface))}:host .__content .__explorer-item .__icon{flex-shrink:0}:host .__content .__explorer-item .__name{width:100%;font-size:.875rem;line-height:1.25rem;font-weight:500;display:-webkit-box;-webkit-line-clamp:3;-webkit-box-orient:vertical;overflow:hidden;min-height:3.6em}:host .__content .__explorer-item.--selected{background-color:rgb(var(--ax-sys-color-darker-surface));color:rgb(var(--ax-sys-color-on-darker-surface));border-color:rgb(var(--ax-sys-color-border-darker-surface))}\n"] }]
17
+ }] });
18
+
19
+ export { AXMDocumentExplorerLargeIconsViewComponent };
20
+ //# sourceMappingURL=acorex-modules-document-management-large-icons-view.component-DvriE0YR.mjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"acorex-modules-document-management-large-icons-view.component-DvriE0YR.mjs","sources":["../../../../libs/modules/document-management/src/lib/features/document-explorer/views/large-icons/large-icons-view.component.ts","../../../../libs/modules/document-management/src/lib/features/document-explorer/views/large-icons/large-icons-view.component.html"],"sourcesContent":["import { Component, inject } from '@angular/core';\nimport { CommonModule } from '@angular/common';\nimport { AXPDblClickDirective, AXPElementDataDirective } from '@acorex/platform/core';\nimport { AXPDocumentExplorerViewModel } from '../../document-explorer.viewmodel';\n\n@Component({\n selector: 'axm-document-explorer-large-icons-view',\n templateUrl: './large-icons-view.component.html',\n styleUrls: ['./large-icons-view.component.scss'],\n standalone: true,\n imports: [CommonModule, AXPElementDataDirective, AXPDblClickDirective],\n})\nexport class AXMDocumentExplorerLargeIconsViewComponent {\n protected vm = inject(AXPDocumentExplorerViewModel);\n} ","<!-- Large Icons View -->\n<div class=\"__content fa-4x\">\n @for (folder of vm.folders(); track folder.id) {\n <div\n class=\"__explorer-item\"\n [class.--selected]=\"vm.isItemSelected(folder)\"\n [axp-data]=\"folder\"\n (click)=\"vm.toggleSelect(folder)\"\n (onDblClick)=\"vm.navigateToFolder(folder.id)\"\n >\n <div class=\"__icon ax-text-yellow-400\">\n @if (vm.isLoadingFolder(folder.id)) {\n <i class=\"fa-light fa-spinner fa-spin-pulse\"></i>\n } @else {\n <i class=\"fas fa-folder-closed\"></i>\n }\n </div>\n <div class=\"__name\">{{ folder.name }}</div>\n </div>\n } @for (file of vm.files(); track file.id) { @let fileInfo = vm.getFileInfo(file.name);\n <div\n class=\"__explorer-item\"\n [class.--selected]=\"vm.isItemSelected(file)\"\n [axp-data]=\"file\"\n (click)=\"vm.toggleSelect(file)\"\n (onDblClick)=\"vm.openFile(file)\"\n >\n <div class=\"__icon\">\n <i class=\"fa-fw {{ fileInfo.icon }} fa-solid\"></i>\n </div>\n <div class=\"__name\">{{ file.name }}</div>\n </div>\n }\n</div>\n"],"names":[],"mappings":";;;;;;MAYa,0CAA0C,CAAA;AAPvD,IAAA,WAAA,GAAA;AAQc,QAAA,IAAA,CAAA,EAAE,GAAG,MAAM,CAAC,4BAA4B,CAAC;AACtD;8GAFY,0CAA0C,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA;AAA1C,IAAA,SAAA,IAAA,CAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,IAAA,EAAA,0CAA0C,kGCZvD,okCAkCA,EAAA,MAAA,EAAA,CAAA,m8BAAA,CAAA,EAAA,YAAA,EAAA,CAAA,EAAA,IAAA,EAAA,UAAA,EAAA,IAAA,EDxBc,YAAY,EAAE,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,uBAAuB,8FAAE,oBAAoB,EAAA,QAAA,EAAA,cAAA,EAAA,OAAA,EAAA,CAAA,YAAA,CAAA,EAAA,CAAA,EAAA,CAAA,CAAA;;2FAE5D,0CAA0C,EAAA,UAAA,EAAA,CAAA;kBAPtD,SAAS;+BACI,wCAAwC,EAAA,UAAA,EAGtC,IAAI,EACP,OAAA,EAAA,CAAC,YAAY,EAAE,uBAAuB,EAAE,oBAAoB,CAAC,EAAA,QAAA,EAAA,okCAAA,EAAA,MAAA,EAAA,CAAA,m8BAAA,CAAA,EAAA;;;;;"}
@@ -0,0 +1,24 @@
1
+ import * as i0 from '@angular/core';
2
+ import { inject, Component } from '@angular/core';
3
+ import * as i1 from '@angular/common';
4
+ import { CommonModule } from '@angular/common';
5
+ import { AXPElementDataDirective, AXPDblClickDirective } from '@acorex/platform/core';
6
+ import { A as AXPDocumentExplorerViewModel } from './acorex-modules-document-management-acorex-modules-document-management-_BOVaDOq.mjs';
7
+ import * as i2 from '@acorex/core/format';
8
+ import { AXFormatModule } from '@acorex/core/format';
9
+ import { AXDateTimeModule } from '@acorex/core/date-time';
10
+
11
+ class AXMDocumentExplorerLargeTilesViewComponent {
12
+ constructor() {
13
+ this.vm = inject(AXPDocumentExplorerViewModel);
14
+ }
15
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.0.3", ngImport: i0, type: AXMDocumentExplorerLargeTilesViewComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
16
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "19.0.3", type: AXMDocumentExplorerLargeTilesViewComponent, isStandalone: true, selector: "axm-document-explorer-large-tiles-view", ngImport: i0, template: "<!-- Folders Section -->\n@if (vm.folders().length > 0) {\n<div class=\"__section fa-3x\">\n <div class=\"__header\">\n <h3 class=\"__title\">Folders</h3>\n </div>\n <div class=\"__content\">\n @for (folder of vm.folders(); track folder.id) {\n <div\n class=\"__explorer-item\"\n [class.--selected]=\"vm.isItemSelected(folder)\"\n [axp-data]=\"folder\"\n (click)=\"vm.toggleSelect(folder)\"\n (onDblClick)=\"vm.navigateToFolder(folder.id)\"\n >\n <div class=\"__icon ax-text-yellow-400\">\n @if (vm.isLoadingFolder(folder.id)) {\n <i class=\"fa-light fa-spinner fa-spin-pulse\"></i>\n } @else {\n <i class=\"fas fa-folder-closed\"></i>\n }\n </div>\n <span class=\"__name\">{{ folder.name }}</span>\n <div class=\"__info\">\n <span>{{ folder.childrenCount }} items</span>\n <span>{{ folder.modifiedAt | format : 'datetime' : { format: 'datetime' } | async }}</span>\n </div>\n </div>\n }\n </div>\n</div>\n}\n\n<!-- Files Section -->\n@if (vm.files().length > 0) {\n<div class=\"__section fa-3x\">\n <div class=\"__header\">\n <h3 class=\"__title\">Files</h3>\n </div>\n <div class=\"__content\">\n @for (file of vm.files(); track file.id) { @let fileInfo = vm.getFileInfo(file.name);\n <div\n class=\"__explorer-item\"\n [class.--selected]=\"vm.isItemSelected(file)\"\n [axp-data]=\"file\"\n (click)=\"vm.toggleSelect(file)\"\n (dblclick)=\"vm.openFile(file)\"\n >\n <div class=\"__icon\">\n <i class=\"fa-fw {{ fileInfo.icon }} fa-solid\"></i>\n </div>\n <span class=\"__name\">{{ file.name }}</span>\n <div class=\"__info\">\n <span>{{ file.size | format : 'filesize' | async }}</span>\n <span>{{ file.modifiedAt | format : 'datetime' : { format: 'datetime' } | async }}</span>\n </div>\n </div>\n }\n </div>\n</div>\n}\n", styles: [":host .__section{margin-bottom:2rem}:host .__section:last-child{margin-bottom:0}:host .__section .__header .__title{margin-bottom:1rem;font-size:1.125rem;line-height:1.75rem;font-weight:500}:host .__section .__content{display:grid;grid-template-columns:repeat(auto-fill,minmax(200px,1fr));gap:1rem}:host .__section .__content .__explorer-item{display:flex;cursor:pointer;flex-direction:column;gap:.25rem;border-radius:.5rem;border-width:1px;padding:1rem;background-color:rgb(var(--ax-sys-color-lighter-surface));color:rgb(var(--ax-sys-color-on-lighter-surface));border-color:rgb(var(--ax-sys-color-border-lighter-surface))}:host .__section .__content .__explorer-item:hover{background-color:rgb(var(--ax-sys-color-light-surface));color:rgb(var(--ax-sys-color-on-light-surface));border-color:rgb(var(--ax-sys-color-border-light-surface))}:host .__section .__content .__explorer-item .__icon{margin-bottom:.5rem}:host .__section .__content .__explorer-item .__name{overflow:hidden;text-overflow:ellipsis;white-space:nowrap;text-align:start;font-size:.875rem;line-height:1.25rem;font-weight:600}:host .__section .__content .__explorer-item .__info{display:flex;width:100%;justify-content:space-between;font-weight:600;opacity:.65}:host .__section .__content .__explorer-item .__info span{font-size:.75rem;line-height:1rem}:host .__section .__content .__explorer-item.--selected{background-color:rgb(var(--ax-sys-color-darker-surface));color:rgb(var(--ax-sys-color-on-darker-surface));border-color:rgb(var(--ax-sys-color-border-darker-surface))}\n"], dependencies: [{ kind: "ngmodule", type: CommonModule }, { kind: "pipe", type: i1.AsyncPipe, name: "async" }, { kind: "directive", type: AXPElementDataDirective, selector: "[axp-data]", inputs: ["axp-data", "axp-data-path"] }, { kind: "directive", type: AXPDblClickDirective, selector: "[onDblClick]", outputs: ["onDblClick"] }, { kind: "ngmodule", type: AXFormatModule }, { kind: "pipe", type: i2.AXFormatPipe, name: "format" }, { kind: "ngmodule", type: AXDateTimeModule }] }); }
17
+ }
18
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.0.3", ngImport: i0, type: AXMDocumentExplorerLargeTilesViewComponent, decorators: [{
19
+ type: Component,
20
+ args: [{ selector: 'axm-document-explorer-large-tiles-view', standalone: true, imports: [CommonModule, AXPElementDataDirective, AXPDblClickDirective, AXFormatModule, AXDateTimeModule], template: "<!-- Folders Section -->\n@if (vm.folders().length > 0) {\n<div class=\"__section fa-3x\">\n <div class=\"__header\">\n <h3 class=\"__title\">Folders</h3>\n </div>\n <div class=\"__content\">\n @for (folder of vm.folders(); track folder.id) {\n <div\n class=\"__explorer-item\"\n [class.--selected]=\"vm.isItemSelected(folder)\"\n [axp-data]=\"folder\"\n (click)=\"vm.toggleSelect(folder)\"\n (onDblClick)=\"vm.navigateToFolder(folder.id)\"\n >\n <div class=\"__icon ax-text-yellow-400\">\n @if (vm.isLoadingFolder(folder.id)) {\n <i class=\"fa-light fa-spinner fa-spin-pulse\"></i>\n } @else {\n <i class=\"fas fa-folder-closed\"></i>\n }\n </div>\n <span class=\"__name\">{{ folder.name }}</span>\n <div class=\"__info\">\n <span>{{ folder.childrenCount }} items</span>\n <span>{{ folder.modifiedAt | format : 'datetime' : { format: 'datetime' } | async }}</span>\n </div>\n </div>\n }\n </div>\n</div>\n}\n\n<!-- Files Section -->\n@if (vm.files().length > 0) {\n<div class=\"__section fa-3x\">\n <div class=\"__header\">\n <h3 class=\"__title\">Files</h3>\n </div>\n <div class=\"__content\">\n @for (file of vm.files(); track file.id) { @let fileInfo = vm.getFileInfo(file.name);\n <div\n class=\"__explorer-item\"\n [class.--selected]=\"vm.isItemSelected(file)\"\n [axp-data]=\"file\"\n (click)=\"vm.toggleSelect(file)\"\n (dblclick)=\"vm.openFile(file)\"\n >\n <div class=\"__icon\">\n <i class=\"fa-fw {{ fileInfo.icon }} fa-solid\"></i>\n </div>\n <span class=\"__name\">{{ file.name }}</span>\n <div class=\"__info\">\n <span>{{ file.size | format : 'filesize' | async }}</span>\n <span>{{ file.modifiedAt | format : 'datetime' : { format: 'datetime' } | async }}</span>\n </div>\n </div>\n }\n </div>\n</div>\n}\n", styles: [":host .__section{margin-bottom:2rem}:host .__section:last-child{margin-bottom:0}:host .__section .__header .__title{margin-bottom:1rem;font-size:1.125rem;line-height:1.75rem;font-weight:500}:host .__section .__content{display:grid;grid-template-columns:repeat(auto-fill,minmax(200px,1fr));gap:1rem}:host .__section .__content .__explorer-item{display:flex;cursor:pointer;flex-direction:column;gap:.25rem;border-radius:.5rem;border-width:1px;padding:1rem;background-color:rgb(var(--ax-sys-color-lighter-surface));color:rgb(var(--ax-sys-color-on-lighter-surface));border-color:rgb(var(--ax-sys-color-border-lighter-surface))}:host .__section .__content .__explorer-item:hover{background-color:rgb(var(--ax-sys-color-light-surface));color:rgb(var(--ax-sys-color-on-light-surface));border-color:rgb(var(--ax-sys-color-border-light-surface))}:host .__section .__content .__explorer-item .__icon{margin-bottom:.5rem}:host .__section .__content .__explorer-item .__name{overflow:hidden;text-overflow:ellipsis;white-space:nowrap;text-align:start;font-size:.875rem;line-height:1.25rem;font-weight:600}:host .__section .__content .__explorer-item .__info{display:flex;width:100%;justify-content:space-between;font-weight:600;opacity:.65}:host .__section .__content .__explorer-item .__info span{font-size:.75rem;line-height:1rem}:host .__section .__content .__explorer-item.--selected{background-color:rgb(var(--ax-sys-color-darker-surface));color:rgb(var(--ax-sys-color-on-darker-surface));border-color:rgb(var(--ax-sys-color-border-darker-surface))}\n"] }]
21
+ }] });
22
+
23
+ export { AXMDocumentExplorerLargeTilesViewComponent };
24
+ //# sourceMappingURL=acorex-modules-document-management-large-tiles-view.component-ByWrKvZe.mjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"acorex-modules-document-management-large-tiles-view.component-ByWrKvZe.mjs","sources":["../../../../libs/modules/document-management/src/lib/features/document-explorer/views/large-tiles/large-tiles-view.component.ts","../../../../libs/modules/document-management/src/lib/features/document-explorer/views/large-tiles/large-tiles-view.component.html"],"sourcesContent":["import { Component, inject } from '@angular/core';\nimport { CommonModule } from '@angular/common';\nimport { AXPDblClickDirective, AXPElementDataDirective } from '@acorex/platform/core';\nimport { AXPDocumentExplorerViewModel } from '../../document-explorer.viewmodel';\nimport { AXFormatModule } from '@acorex/core/format';\nimport { AXDateTimeModule } from '@acorex/core/date-time';\n\n@Component({\n selector: 'axm-document-explorer-large-tiles-view',\n templateUrl: './large-tiles-view.component.html',\n styleUrls: ['./large-tiles-view.component.scss'],\n standalone: true,\n imports: [CommonModule, AXPElementDataDirective, AXPDblClickDirective, AXFormatModule, AXDateTimeModule],\n})\nexport class AXMDocumentExplorerLargeTilesViewComponent {\n protected vm = inject(AXPDocumentExplorerViewModel);\n} ","<!-- Folders Section -->\n@if (vm.folders().length > 0) {\n<div class=\"__section fa-3x\">\n <div class=\"__header\">\n <h3 class=\"__title\">Folders</h3>\n </div>\n <div class=\"__content\">\n @for (folder of vm.folders(); track folder.id) {\n <div\n class=\"__explorer-item\"\n [class.--selected]=\"vm.isItemSelected(folder)\"\n [axp-data]=\"folder\"\n (click)=\"vm.toggleSelect(folder)\"\n (onDblClick)=\"vm.navigateToFolder(folder.id)\"\n >\n <div class=\"__icon ax-text-yellow-400\">\n @if (vm.isLoadingFolder(folder.id)) {\n <i class=\"fa-light fa-spinner fa-spin-pulse\"></i>\n } @else {\n <i class=\"fas fa-folder-closed\"></i>\n }\n </div>\n <span class=\"__name\">{{ folder.name }}</span>\n <div class=\"__info\">\n <span>{{ folder.childrenCount }} items</span>\n <span>{{ folder.modifiedAt | format : 'datetime' : { format: 'datetime' } | async }}</span>\n </div>\n </div>\n }\n </div>\n</div>\n}\n\n<!-- Files Section -->\n@if (vm.files().length > 0) {\n<div class=\"__section fa-3x\">\n <div class=\"__header\">\n <h3 class=\"__title\">Files</h3>\n </div>\n <div class=\"__content\">\n @for (file of vm.files(); track file.id) { @let fileInfo = vm.getFileInfo(file.name);\n <div\n class=\"__explorer-item\"\n [class.--selected]=\"vm.isItemSelected(file)\"\n [axp-data]=\"file\"\n (click)=\"vm.toggleSelect(file)\"\n (dblclick)=\"vm.openFile(file)\"\n >\n <div class=\"__icon\">\n <i class=\"fa-fw {{ fileInfo.icon }} fa-solid\"></i>\n </div>\n <span class=\"__name\">{{ file.name }}</span>\n <div class=\"__info\">\n <span>{{ file.size | format : 'filesize' | async }}</span>\n <span>{{ file.modifiedAt | format : 'datetime' : { format: 'datetime' } | async }}</span>\n </div>\n </div>\n }\n </div>\n</div>\n}\n"],"names":[],"mappings":";;;;;;;;;;MAca,0CAA0C,CAAA;AAPvD,IAAA,WAAA,GAAA;AAQc,QAAA,IAAA,CAAA,EAAE,GAAG,MAAM,CAAC,4BAA4B,CAAC;AACtD;8GAFY,0CAA0C,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA;kGAA1C,0CAA0C,EAAA,YAAA,EAAA,IAAA,EAAA,QAAA,EAAA,wCAAA,EAAA,QAAA,EAAA,EAAA,EAAA,QAAA,ECdvD,o5DA6DA,EAAA,MAAA,EAAA,CAAA,ygDAAA,CAAA,EAAA,YAAA,EAAA,CAAA,EAAA,IAAA,EAAA,UAAA,EAAA,IAAA,EDjDc,YAAY,EAAA,EAAA,EAAA,IAAA,EAAA,MAAA,EAAA,IAAA,EAAA,EAAA,CAAA,SAAA,EAAA,IAAA,EAAA,OAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAE,uBAAuB,EAAA,QAAA,EAAA,YAAA,EAAA,MAAA,EAAA,CAAA,UAAA,EAAA,eAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAE,oBAAoB,EAAA,QAAA,EAAA,cAAA,EAAA,OAAA,EAAA,CAAA,YAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,UAAA,EAAA,IAAA,EAAE,cAAc,EAAA,EAAA,EAAA,IAAA,EAAA,MAAA,EAAA,IAAA,EAAA,EAAA,CAAA,YAAA,EAAA,IAAA,EAAA,QAAA,EAAA,EAAA,EAAA,IAAA,EAAA,UAAA,EAAA,IAAA,EAAE,gBAAgB,EAAA,CAAA,EAAA,CAAA,CAAA;;2FAE9F,0CAA0C,EAAA,UAAA,EAAA,CAAA;kBAPtD,SAAS;AACI,YAAA,IAAA,EAAA,CAAA,EAAA,QAAA,EAAA,wCAAwC,EAGtC,UAAA,EAAA,IAAI,EACP,OAAA,EAAA,CAAC,YAAY,EAAE,uBAAuB,EAAE,oBAAoB,EAAE,cAAc,EAAE,gBAAgB,CAAC,EAAA,QAAA,EAAA,o5DAAA,EAAA,MAAA,EAAA,CAAA,ygDAAA,CAAA,EAAA;;;;;"}
@@ -0,0 +1,20 @@
1
+ import * as i0 from '@angular/core';
2
+ import { inject, Component } from '@angular/core';
3
+ import { CommonModule } from '@angular/common';
4
+ import { AXPElementDataDirective, AXPDblClickDirective } from '@acorex/platform/core';
5
+ import { A as AXPDocumentExplorerViewModel } from './acorex-modules-document-management-acorex-modules-document-management-_BOVaDOq.mjs';
6
+
7
+ class AXMDocumentExplorerListViewComponent {
8
+ constructor() {
9
+ this.vm = inject(AXPDocumentExplorerViewModel);
10
+ }
11
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.0.3", ngImport: i0, type: AXMDocumentExplorerListViewComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
12
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "19.0.3", type: AXMDocumentExplorerListViewComponent, isStandalone: true, selector: "axm-document-explorer-list-view", ngImport: i0, template: "<!-- List View -->\n<div class=\"__content fa-xl\">\n @for (folder of vm.folders(); track folder.id) {\n <div\n class=\"__explorer-item\"\n [class.--selected]=\"vm.isItemSelected(folder)\"\n [axp-data]=\"folder\"\n (click)=\"vm.toggleSelect(folder)\"\n (onDblClick)=\"vm.navigateToFolder(folder.id)\"\n >\n <div class=\"__icon ax-text-yellow-400\">\n @if (vm.isLoadingFolder(folder.id)) {\n <i class=\"fa-light fa-spinner fa-spin-pulse\"></i>\n } @else {\n <i class=\"fas fa-folder-closed\"></i>\n }\n </div>\n <div class=\"__name\">{{ folder.name }}</div>\n </div>\n } @for (file of vm.files(); track file.id) { @let fileInfo = vm.getFileInfo(file.name);\n <div\n class=\"__explorer-item\"\n [class.--selected]=\"vm.isItemSelected(file)\"\n [axp-data]=\"file\"\n (click)=\"vm.toggleSelect(file)\"\n (onDblClick)=\"vm.openFile(file)\"\n >\n <div class=\"__icon\">\n <i class=\"fa-fw {{ fileInfo.icon }} fa-solid\"></i>\n </div>\n <div class=\"__name\">{{ file.name }}</div>\n </div>\n }\n</div>\n", styles: [":host{width:100%}:host .__content{display:flex;flex-direction:column;gap:.125rem}:host .__content .__explorer-item{display:flex;cursor:pointer;align-items:center;gap:.75rem;border-radius:.375rem;padding:.5rem}:host .__content .__explorer-item:hover{background-color:rgb(var(--ax-sys-color-light-surface));color:rgb(var(--ax-sys-color-on-light-surface));border-color:rgb(var(--ax-sys-color-border-light-surface))}:host .__content .__explorer-item .__icon{width:1.5rem;flex-shrink:0}:host .__content .__explorer-item .__name{overflow:hidden;text-overflow:ellipsis;white-space:nowrap;text-align:start;font-size:.875rem;line-height:1.25rem;font-weight:500}:host .__content .__explorer-item.--selected{background-color:rgb(var(--ax-sys-color-darker-surface));color:rgb(var(--ax-sys-color-on-darker-surface));border-color:rgb(var(--ax-sys-color-border-darker-surface))}\n"], dependencies: [{ kind: "ngmodule", type: CommonModule }, { kind: "directive", type: AXPElementDataDirective, selector: "[axp-data]", inputs: ["axp-data", "axp-data-path"] }, { kind: "directive", type: AXPDblClickDirective, selector: "[onDblClick]", outputs: ["onDblClick"] }] }); }
13
+ }
14
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.0.3", ngImport: i0, type: AXMDocumentExplorerListViewComponent, decorators: [{
15
+ type: Component,
16
+ args: [{ selector: 'axm-document-explorer-list-view', standalone: true, imports: [CommonModule, AXPElementDataDirective, AXPDblClickDirective], template: "<!-- List View -->\n<div class=\"__content fa-xl\">\n @for (folder of vm.folders(); track folder.id) {\n <div\n class=\"__explorer-item\"\n [class.--selected]=\"vm.isItemSelected(folder)\"\n [axp-data]=\"folder\"\n (click)=\"vm.toggleSelect(folder)\"\n (onDblClick)=\"vm.navigateToFolder(folder.id)\"\n >\n <div class=\"__icon ax-text-yellow-400\">\n @if (vm.isLoadingFolder(folder.id)) {\n <i class=\"fa-light fa-spinner fa-spin-pulse\"></i>\n } @else {\n <i class=\"fas fa-folder-closed\"></i>\n }\n </div>\n <div class=\"__name\">{{ folder.name }}</div>\n </div>\n } @for (file of vm.files(); track file.id) { @let fileInfo = vm.getFileInfo(file.name);\n <div\n class=\"__explorer-item\"\n [class.--selected]=\"vm.isItemSelected(file)\"\n [axp-data]=\"file\"\n (click)=\"vm.toggleSelect(file)\"\n (onDblClick)=\"vm.openFile(file)\"\n >\n <div class=\"__icon\">\n <i class=\"fa-fw {{ fileInfo.icon }} fa-solid\"></i>\n </div>\n <div class=\"__name\">{{ file.name }}</div>\n </div>\n }\n</div>\n", styles: [":host{width:100%}:host .__content{display:flex;flex-direction:column;gap:.125rem}:host .__content .__explorer-item{display:flex;cursor:pointer;align-items:center;gap:.75rem;border-radius:.375rem;padding:.5rem}:host .__content .__explorer-item:hover{background-color:rgb(var(--ax-sys-color-light-surface));color:rgb(var(--ax-sys-color-on-light-surface));border-color:rgb(var(--ax-sys-color-border-light-surface))}:host .__content .__explorer-item .__icon{width:1.5rem;flex-shrink:0}:host .__content .__explorer-item .__name{overflow:hidden;text-overflow:ellipsis;white-space:nowrap;text-align:start;font-size:.875rem;line-height:1.25rem;font-weight:500}:host .__content .__explorer-item.--selected{background-color:rgb(var(--ax-sys-color-darker-surface));color:rgb(var(--ax-sys-color-on-darker-surface));border-color:rgb(var(--ax-sys-color-border-darker-surface))}\n"] }]
17
+ }] });
18
+
19
+ export { AXMDocumentExplorerListViewComponent };
20
+ //# sourceMappingURL=acorex-modules-document-management-list-view.component-B6J6Tokv.mjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"acorex-modules-document-management-list-view.component-B6J6Tokv.mjs","sources":["../../../../libs/modules/document-management/src/lib/features/document-explorer/views/list/list-view.component.ts","../../../../libs/modules/document-management/src/lib/features/document-explorer/views/list/list-view.component.html"],"sourcesContent":["import { Component, inject } from '@angular/core';\nimport { CommonModule } from '@angular/common';\nimport { AXPDblClickDirective, AXPElementDataDirective } from '@acorex/platform/core';\nimport { AXPDocumentExplorerViewModel } from '../../document-explorer.viewmodel';\n\n@Component({\n selector: 'axm-document-explorer-list-view',\n templateUrl: './list-view.component.html',\n styleUrls: ['./list-view.component.scss'],\n standalone: true,\n imports: [CommonModule, AXPElementDataDirective, AXPDblClickDirective],\n})\nexport class AXMDocumentExplorerListViewComponent {\n protected vm = inject(AXPDocumentExplorerViewModel);\n} ","<!-- List View -->\n<div class=\"__content fa-xl\">\n @for (folder of vm.folders(); track folder.id) {\n <div\n class=\"__explorer-item\"\n [class.--selected]=\"vm.isItemSelected(folder)\"\n [axp-data]=\"folder\"\n (click)=\"vm.toggleSelect(folder)\"\n (onDblClick)=\"vm.navigateToFolder(folder.id)\"\n >\n <div class=\"__icon ax-text-yellow-400\">\n @if (vm.isLoadingFolder(folder.id)) {\n <i class=\"fa-light fa-spinner fa-spin-pulse\"></i>\n } @else {\n <i class=\"fas fa-folder-closed\"></i>\n }\n </div>\n <div class=\"__name\">{{ folder.name }}</div>\n </div>\n } @for (file of vm.files(); track file.id) { @let fileInfo = vm.getFileInfo(file.name);\n <div\n class=\"__explorer-item\"\n [class.--selected]=\"vm.isItemSelected(file)\"\n [axp-data]=\"file\"\n (click)=\"vm.toggleSelect(file)\"\n (onDblClick)=\"vm.openFile(file)\"\n >\n <div class=\"__icon\">\n <i class=\"fa-fw {{ fileInfo.icon }} fa-solid\"></i>\n </div>\n <div class=\"__name\">{{ file.name }}</div>\n </div>\n }\n</div>\n"],"names":[],"mappings":";;;;;;MAYa,oCAAoC,CAAA;AAPjD,IAAA,WAAA,GAAA;AAQc,QAAA,IAAA,CAAA,EAAE,GAAG,MAAM,CAAC,4BAA4B,CAAC;AACtD;8GAFY,oCAAoC,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA;AAApC,IAAA,SAAA,IAAA,CAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,IAAA,EAAA,oCAAoC,2FCZjD,6jCAkCA,EAAA,MAAA,EAAA,CAAA,m2BAAA,CAAA,EAAA,YAAA,EAAA,CAAA,EAAA,IAAA,EAAA,UAAA,EAAA,IAAA,EDxBc,YAAY,EAAE,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,uBAAuB,8FAAE,oBAAoB,EAAA,QAAA,EAAA,cAAA,EAAA,OAAA,EAAA,CAAA,YAAA,CAAA,EAAA,CAAA,EAAA,CAAA,CAAA;;2FAE5D,oCAAoC,EAAA,UAAA,EAAA,CAAA;kBAPhD,SAAS;+BACI,iCAAiC,EAAA,UAAA,EAG/B,IAAI,EACP,OAAA,EAAA,CAAC,YAAY,EAAE,uBAAuB,EAAE,oBAAoB,CAAC,EAAA,QAAA,EAAA,6jCAAA,EAAA,MAAA,EAAA,CAAA,m2BAAA,CAAA,EAAA;;;;;"}